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信息.

通过点后面的update, 可以修改字段的一些属性.

(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

posted on 2012-11-02 19:55  东方瀚海  阅读(1276)  评论(3编辑  收藏  举报