WebADI_配置设定02_设定接口WebADI Interface(案例)
20150829 Created By BaoXinjian
一、摘要
这是建立一个新的Integrator的第二步,也是最关键的一步!
二、锁定统计信息
1. 创建Interface
(1). Interface Name
随便写,反正oracle 会生成一个interface code, 而这个才是我们需要的,而我们需要的,oracle 偏偏不让我们看到,而且还加东西。。。生成的code 应该是integrator code + INTF1之类的
(2). Interface Type
主要是Table 和 API Procedure. 那么什么时候用Table,
i. 如果validation 特别简单(都是单行单字段的校验), 且template上的数据要进到某一张表里的话,用table.
ii. 如果validation 比较复杂(可能包含了多行组合校验,比如订单行金额是否等于头金额;
多字段组合校验,比如某个vendor,某个vendor site下不能有这种currency的invoice之类的;
duplicate校验,比如某个asset ,在base table 或 interface里已经有了,不能再用tempate导一遍之类的,
因为这些校验要写java class, 我不知怎么写(可恶的oracle 也没文档). 所以只能用Procedure 去做.
iii. 如果template的数据仅仅用来传给标准API ,用来做某种处理,不用进到某张表的话,当然不要用table, 而是用Procedure.
(3). Table Name:
表名,此表需要注册在database里,否则无法识别.
(4). Package Name
不用说了,你写的upload package的名字
(5). Procedure Name
Upload Procedure的名字
(6). API returns
Procedure/Function 传出的参数, 一般选fnd message code, 用来接收procedure中raise 出来的error.
2. 设定Interface栏位
(1). Attribute Name:
其实就是table 的字段或Procedure的传入参数名.
(2). Prompt Left:
这个要改一下, 一般格式是"Invoice Number" 这样的, 你可以只为要放到 layout header上的字段改,因为行上的字段只有Prompt above, 没有left.
(3). Data Type:
从table 或 procedure 继承下来的
(4). Enabled:
此项如果不选的话,该字段即使在template 可以显示,并且可以填东西,但数据不会参与upload. 即此字段完全无用了(适合一些无需填值的字段).
(5). Displayed:
此项如果不选的话,在定义layout时,将无法看到此项. 也就无法在template中看到。当然,就算你这选了,但layout中没选此项,也是无法看到的.
(6). Default Type/Default Value:
用来设定字段的默认值,在11i里我一般是在layout里定义的,但R12 好象主要在这里定义了,layout中的default 反而不用了,而且我在layout中定义好象也老出问题,不知是bug,还是其它原因.
(7). Sequence:
此项需后台修改表,default type 为SEQUENCE_EACH_ROW, default value 为sequence的名字,如果不在apps下的话,需要在apps下建同义词
(8). Attribute Type:
Real 表明此字段为真实的表字段或过程参数,而Custom的是我们另外建的字段,一般用来做占位列(比如一个LOV显示的是DESC,存的是ID,这个DESC一般就放在这种列里)或只读显示项,比如显示当前的database信息.
(9). Data Type:
不需改,从table 或 procedure 中继承下来的
(10). Length:
大家发现这项没有,因为这是基于procedure的interface, 而对于procedure来说,所有的传入参数都是没有length的,而如果基于table的话,则会有length. 而没有length的结果就是excel 无法做字段宽度的校验,你就需要在procedure中写这样的语句:
if length(p_vendor_name) > 50 then
raise_application_error(-20001,' Length exceeds max chars');
end if;
这样明显增加了开发的量,所以对于procedure的interface, 我们可以通过直接修改后台表来设定字段的length.
(11).Attribute Type:
无需修改
(12).Required:
此项很重要,设定字段为必填字段, 如果你在template 上没输的话,excel校验会报错,这样的话,你就不用在procedure 中写这样的语句了:
if p_vendor_name is null then
raise_application_error(-20001,' You have to enter a Vendor name');
end if;
(13).Enabled for Mapping:
设定该字段是否可建mapping, 当你的Integrator中含有Content时,这项有用,一般来说,要在layout中显示的字段这项要选,其它可选可不选。
(14).Available for summary:
这项不知道,字面看是是否允许汇总。没测过
Not Null: 这项似乎和required功能一样啊
Read Only: 设定某字段为只读字段,一般适用于Custom类型的显示字段. 或不需用户修改的有默认值的字段.
(15).Validation
这里可建table LOV, date LOV, KFF/DFF LOV, 及java类型的 LOV.
最后一部分是设Prompt above, 对于line 上的字段,此项要写一下。
User Hint最好也写一下,必填字段的一般为*Text, *Date, *Number这样的,非必填的把* 去了。有LOV的一般为* List - Text 或 List - Text 之类的.
3. 默认值的设定方式
(1). Environment Parameters
OAUSER.ID / SYSDATE / DATABASE 常用的,
另外一些sob 的, 例如sob.chartofaccountsid, sob.periodsetname, sob.setofbooksid之类的,也不知还能不能用, 还没测
(2). Constant
这个最简单,直接写个东西进去就行了。
(3). SQL
这 个也简单,写个SQL 完事,结果多行的话,取第一行。
sql 里可包含$env$.userid, $env$.appid, $env$.respid 之类的环境变量, 还有$PROFILES$.default_org_id之类的取profile options的东东。
(4). Profile Option
从字面上理解,是用来取配置文件中某个option的值,但我测了,不成功,不知是bug还是别的原因.
(5). Lookups
不知干什么的,前两天无意看到有个标准的Integrator具然包含多个Interface, 而Interface 间的联接似乎就用这个。。。
因为此项在后台叫TABLELOOKUP... 多Interface的Integrator还不知怎么做,待研究.
(6). Excel Formula
这项不需要选default type,直接在default value 中输入公式,
格式如下: =R[ ]C[ ]* R[ ]C[ ] 之类的,比如 =RC[-1]*RC[-2] , 即表示此字段的值为左边两列的乘积.
三、创建Interface和相关设定
1. 创建客制化接口,类型为Procedure,调用bxj_webadi_employee_pkg.bxj_webadi_emp_main()
2. 系统将procedure中的相关接口自动带出
3. 设定栏位的默认值Default Value
4. 设定栏位的验证Validation
Thanks and Regards
参考: 豆瓣文库 - http://www.docin.com/p-922235111.html
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建