最近参与了一个项目,是跟用友U8做财务凭证的接口。使用IDOC异步的方式,U8调用PI webservice,然后把数据抛给PI, PI把数据转换成IDOC的格式给到PLP.
先看下idoc的结构:
这个每个E1FISEG就会对应FI 凭证的一个Item;因为U8里面没有Profit center、post key的概念,所以这些字段是在用户那边hard code之后发出来的。
SAP这边做的很少,创建新的partner no.
1. 在创建partner no.之前先创建新的logical system; BD54; 当然这部操作只针对要创建logical system 类型的partner no. 倘若是VENDOR, CUSTOME这类的partner profile创建是不需要的。
2. 定义partner profile.
inbound message type这里选FIDCC1, 这里都是standard 配置。
配置好之后,U8发送过来的idoc在PLP这端报错,‘Cross-system company code 0502 does not exist’; 而同样的Message type和idoc结构,从PEP发送过来就没问题;
原因就是这个global company code不同引起的。
对比一下PEP发出的outbound idoc 这里的BUKRS 502;到了PLP之后idoc会自动转换为0502
后台配置
define global company code.
assign global code to local company code.
这样的话,对方系统就需要发送502 company code, 然后到了接收方后系统会自动map成0502;
U8发出的数据里面BUKRS 是0502,所以到了PLP后,系统无法根据0502去map。 结果就到cross system company code doesnt exist.
解决方法:只需要把U8发出来的BUKRS 修改为502即可;
===========================================================