webadi
这是建立一个新的Integrator的第二步,也是最关键的一步!
Interface Name: 随便写,反正oracle 会生成一个interface code, 而这个才是我们需要的,而我们需要的,oracle 偏偏不让我们看到,而且还加东西。。。生成的code 应该是integrator code + INTF1之类的
Interface Type: 主要是Table 和 API Procedure. 那么什么时候用Table ,什么时候用Procedure呢? 下面是我个人的意见,仅供参考:
1. 如果validation 特别简单(都是单行单字段的校验), 且template上的数据要进到某一张表里的话,用table.
2. 如果validation 比较复杂(可能包含了多行组合校验,比如订单行金额是否等于头金额;多字段组合校验,比如某个vendor,某个vendor site下不能有这种currency的invoice之类的;duplicate校验,比如某个asset ,在base table 或 interface里已经有了,不能再用tempate导一遍之类的,因为这些校验要写java class, 我不知怎么写(可恶的oracle 也没文档). 所以只能用Procedure 去做.
3. 如果template的数据仅仅用来传给标准API ,用来做某种处理,不用进到某张表的话,当然不要用table, 而是用Procedure.
Table Name: 表名,此表需要注册在database里,否则无法识别.
Package Name: 不用说了,你写的upload package的名字
Procedure Name: Upload Procedure的名字
API returns: Procedure/Function 传出的参数, 一般选fnd message code, 用来接收procedure中raise 出来的error.
Apply 一下:
Attribute Name: 其实就是table 的字段或Procedure的传入参数名.
Prompt Left: 这个要改一下, 一般格式是"Invoice Number" 这样的, 你可以只为要放到 layout header上的字段改,因为行上的字段只有Prompt above, 没有left.
Data Type: 从table 或 procedure 继承下来的
Enabled: 此项如果不选的话,该字段即使在template 可以显示,并且可以填东西,但数据不会参与upload. 即此字段完全无用了(适合一些无需填值的字段).
Displayed: 此项如果不选的话,在定义layout时,将无法看到此项. 也就无法在template中看到。当然,就算你这选了,但layout中没选此项,也是无法看到的.
Default Type/Default Value: 用来设定字段的默认值,在11i里我一般是在layout里定义的,但R12 好象主要在这里定义了,layout中的default 反而不用了,而且我在layout中定义好象也老出问题,不知是bug,还是其它原因.
Environment Parameters: OAUSER.ID / SYSDATE / DATABASE 常用的,另外一些sob 的, 例如sob.chartofaccountsid, sob.periodsetname, sob.setofbooksid之类的,也不知还能不能用, 还没测
Constant: 这个最简单,直接写个东西进去就行了。
SQL: 这个也简单,写个SQL 完事,结果多行的话,取第一行。sql 里可包含$env$.userid, $env$.appid, $env$.respid 之类的环境变量, 还有$PROFILES$.default_org_id之类的取profile options的东东。
Profile Option: 从字面上理解,是用来取配置文件中某个option的值,但我测了,不成功,不知是bug还是别的原因.
Lookups: 不知干什么的,前两天无意看到有个标准的Integrator具然包含多个Interface, 而Interface 间的联接似乎就用这个。。。因为此项在后台叫TABLELOOKUP... 多Interface的Integrator还不知怎么做,待研究.
Excel Formula: 这项不需要选default type, 直接在default value 中输入公式,格式如下: =R[ ]C[ ]* R[ ]C[ ] 之类的,比如 =RC[-1]*RC[-2] , 即表示此字段的值为左边两列的乘积.
Sequence: 此项需后台修改表,default type 为SEQUENCE_EACH_ROW, default value 为sequence的名字,如果不在apps下的话,需要在apps下建同义词
Attribute Type: Real 表明此字段为真实的表字段或过程参数,而Custom的是我们另外建的字段,一般用来做占位列(比如一个LOV显示的是DESC,存的是ID,这个DESC一般就放在这种列里)或只读显示项,比如显示当前的database信息.
通过点后面的update, 可以修改字段的一些属性.
Data Type: 不需改,从table 或 procedure 中继承下来的
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.
Attribute Type: 无需修改
Required: 此项很重要,设定字段为必填字段, 如果你在template 上没输的话,excel校验会报错,这样的话,你就不用在procedure 中写这样的语句了:
if p_vendor_name is null then
raise_application_error(-20001,‘ You have to enter a Vendor name‘);
end if;
Enabled for Mapping: 设定该字段是否可建mapping, 当你的Integrator中含有Content时,这项有用,一般来说,要在layout中显示的字段这项要选,其它可选可不选。
Available for summary: 这项不知道,字面看是是否允许汇总。没测过
Not Null: 这项似乎和required功能一样啊
Read Only: 设定某字段为只读字段,一般适用于Custom类型的显示字段. 或不需用户修改的有默认值的字段.
下面的是建validation的部分,这里可建table LOV, date LOV, KFF/DFF LOV, 及java类型的 LOV.
最后一部分是设Prompt above , 对于line 上的字段,此项要写一下。 User Hint最好也写一下,必填字段的一般为*Text, *Date, *Number这样的,非必填的把* 去了。有LOV的一般为* List - Text 或 List - Text 之类的.
http://blog.itpub.net/10359218/viewspace-734471/