SAP PI 的一些常见问题以及解决方法

问题 1:
Message Monitoring(SXI_MONITOR)的 ERROR_LOG  HTTP_RESP_STATUS_CODE_NOT_OK 或者HTTP 相关错误?
解答:
这些错误一般由于XI PIPE LINE 服务UAVALIABLE,一般发生在ADAPTER Engine向 Integration Engine管道发送消息做后续处理时,integration Engine无法响应,解决办法一般可以查看SICF  /default_host/sap/xi/engine 状态,OK之后重新发送消息(此类问题经常遇见)
问题2
“HOLDING” message 的解决办法?
解答:
Holding message发生于 QOS 为 EOIO的场景中,一般由于上一条消息因为MAPPING 错误或者INBOUND Adapter出现问题导致消息发送失败,这是如果不能及时CANCEL这条失败的消息,后续同一队列的消息就会被堵在队列中。
所以一般情况下当发生EOIO 类型消息的错误时我们都要在RWB里面检查是否有HOLDING状态的消息,如果有,一定要先把错误消息CANCELLED掉,然后将队列中最早的一条消息RESTART,问题就可以解决了。
问题3
如何解决Message Mapping错误?
解答:
MESSAGE MAPPING一般占据了整个PI 运维的错误的80%以上,而且这类错误一般我们在制度流程中只能CANCELLED掉并且通知原系统用户重新发消息
如果正常的情况下MAPPING比较简单我们还可以通过SXI_MONITOR的ERROR LOG查出错误的根源,但是在更为复杂的mapping当中,我们一般情况下在消息监控
日志中就没办法找到MAPPING错误的原因了,这种情况下我们必须通过ESR的MAPPING TEST机制和相应的DISPLAY QUEUE功能去做MAPPING 测试,可以激活MAPPING 测试的DEBUG级别
这样对于GRAPHIC mapping就可以很快找到错误的原因,对于更高级别的UDF 尤其是COMPLEX mapping 这种方法不好使,只能在相应的UDF 代码中 打 TRACE 跟踪程序。
需要提到的是,一般我们不可能在生产系统做MAPPING TEST,由于MAPPING PROGRAM实在ESR里面的,因此用开发系统测试MAPPING是最好的选择。
问题4
消息已经发到PI并且在在SXI_MONITOR 里面已经MAPPING 成功,一切迹象显示消息成功发送,但是目标系统(ECC)并没收到消息
解答:
此类问题出现在目标系统通过ALE方式接收消息,在这种情况下一般由于消息堵在底层TRFC传输层,我遇到的一些情况比如同时大量接收消息PI内存不够用的情况下,或者目标系统不可达的情况下,就会出现这种问题
一般这种问题不会通过RWB的ALERT 机制通知运维工程师,所以当出现这种情况我们需要在SM58,SMQ1,SMQ2中分别检查是否有消息堵在队列中并且释放(手工执行相应的LUW即可),我们可以通过Solution Manager的监控功能
来监控SM58,SMQ1,SMQ2中的队列状态,或者自己开发ABAP程序并且BACKGROUND SCHEDULE也行。
问题5
JDBC ADAPTER SENDER方不POLL消息怎么办,表现出来的迹象就是Communication Channel正常,但是很久没有POLL消息了
解达:
手工重启Communication Channel并且可以利用PI的ATP机制强制CC每一个小时重启一次。
问题6
当我们改变SLD的值的时候(比如添加了SOFTWARE COMPONENT VERSION)在ID,IR里面并没有更新相应的值
解答:
这种情况下我们应该在IR或ID里面清空SLD缓存
IR –> Menu –> Environment –> Clear SLD Data Cache
ID –> Menu –> Environment –> Clear SLD Data Cache
问题7(引用SAP SCN作者原文)
RWB 打不开或者提示一些权限问题
解答:
SU01 –> user = XIRWBUSER –>Unlock
问题8
PI ABAP 用户和JAVA 用户的映射关系
解答:
在PI配置中,最麻烦的莫过于我们需要同时处理两套应用服务器引擎,ABAP和J2EE并且需要明白他们各自组件的功能和通讯协作机制,因此搞明白
ABAP和J2EE的用户映射机制非常重要,在PI中,ABAP端的用户帐号->J2EE 用户帐号,ABAP 角色->J2EE 用户组,另外还有一个东西是ABAP端没有但是J2EE端
存在的就是J2EE中的用户角色,这部分在SLD权限管理中很重要,因此一个帐号在J2EE有个相应权限组后还需要具备同名的权限,否则就会出现很多权限问题,
这类问题尤其出现在与SLD的配置以及通信相关的场景中。PI 大部分组件都需要和SLD交互并获取其中的信息。
问题9(引用SAP SCN作者原文)
但遇到消息:Error Category = XI_J2EE_MESSAGING_SYSTEM and error code = HTTP_TRANSMISSION_ERROR
Answer 17:
1. The file size is big (probably more then 10 MB so reduce the file size or extend the file size constraint in XI and extend the time out limit for the adapters in XI.) It’s always better to have the file size in between 1 MB to 5 MB. If size less then 1MB or more then 5MB then performance decrease.
问题10
IR/ID的JNPL富客户端无法启动?总提示客户端无法创建之类的信息?
解答:
此类问题很诡异,其表现的情况就是在我自己的电脑出现这个问题,在别人电脑上就没这个问题,一般普遍认为自己RP值过低。
这类问题由于EXCHANGE PROFILE相应的启动JAVA客户端的HEAP最小值设得太大,比如1G,但你本身计算机的可用内存又没那么多,
所以JAVA在创建其JNPL的时候无法分配指定的堆内存数量导致客户端无法创建,解决办法是将EXCHANGE PROFILE的HEAP min调小点就可以了。

问题11:
处理如下错误信息
Interface mapping Object ID ***** Software Component ****** does not exist in runtime cache
解答:
刷新  SXI_Cache and CPACache./
TCODE :SXI_CACHE 并点击 “start complete cache refresh”
问题12:
如何测试ALERT
解答:
执行 ABAP REPORT RSALERTTEST. //测试
执行 ABAP REPORT  SXMSALERT_LOGREADER.//查看日志
问题13:
如何在SAP PI 端查看监控ECC端通过ALE/IDOC发出的消息
解答:
TCODE :IDX5 像使用WE02在ECC端一样。
问题14:
当ECC端IDOC做修改的时候,如何改变PI对应配置
TCODE:IDX2 直接删了以前的那条IDOC元数据,重新导入修改过的IDOC数据。
问题15:
当同步消息调用返回如下错误信息的时候:
TOO_MANY_RECEIVERS_CASE_BE,如何处理?
解答:
同步消息不允许有多于一个RECEIVER,不然怎么同步调用啊?所以检查RECEIVER DETERMINATION OF INTEGRATION DIRECTORY.
问题16:
如何在IDOC端配置EOIO类型的QOS?
解答:
IDOC 中的EOIO配置需要在WE20 PARTERNER PROFILE中配置,如下图所示:
image
问题17:
在有的SAP 标准程序当中运行生成EDI IDOC的时候暴出如下提示:IDOC TYPE CAN NOT DETERMINED.
这类问题需要调式对应的ABAP程序看看生成的IDOC相应的信息,我所遇见的这样的一个问题一个是在PAYMENT RUN里面无法生成EDI消息,报错星系就是类似
IDOC TYPE CAN NOT DETERMINED,调试ABAP发现IDOC 里面有个字段是TEST,于是勾选WE20 PARTERNER PROFILE里的OUTBOUND MESSAGE TEST选项卡,问题解决。