Inbound IF上传csv文件的代码问题

问题描述:

通过Item Inbound程序上传Item csv文件时,上传失败,提示‘Upload OIF failed’。但同一批数据却可以通过EBS Item Upload功能正常上传

原因调查:

Item Inbound程序处理逻辑如下:

1、用户整理要上传的CSV文件--&gt字符集为中文

2、通过sqlload ctl文件上传至临时In表--&gtctl中规定的字符集为中文,而In表字符集为UTF8

3、对In表数据进行验证,验证通过的数据插入临时Out表--&gtOut表字符集为UTF8

4、根据Out表的数据生成要插入标准接口表的csv文件--&gt由于没有指定生成文件的字符集,csv文件字符集取默认值UTF8

5、通过sqlload ctl文件将csv文件插入标准接口表--&gtctl中规定字符集为中文,标准接口表字符集为UTF8

这个处理流程中4、5之间的字符集转换逻辑为CSV(UTF8)--&gtCtl(中文)--&gt标准接口(UTF8),这将导致字符代码转换错误,使得插入标准接口的(中文)字符发生乱码甚至超过接口表定义的项目长度而报错。

注:EBS Data Upload Function之所以能正常上传是因为:初始化的时候,Oracle Form标准功能已将上传csv文件的字符集转换成了UTF8。

对应方法:

方法一、修改4、5之间ctl文件中规定的字符集,由中文改成UTF8。

方法二、修改4~5之间的处理流程为:程序将Out表的数据直接插入EBS标准接口表。这样就无需根据Out表数据生成csv文件,也无需通过Ctl文件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24856894/viewspace-677793/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24856894/viewspace-677793/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值