本节描述当启动或运行 ABAP 扩展模块时可能会遇到的问题。它包括三个方面的故障诊断:
例如,一个传送文件创建表的数据元素,另一个传送包为该数据元素创建表。如果首先未创建表,则系统返回错误。
如果连接器成功登录到 SAP 应用程序,但 SAP 应用程序中连接器的日志为空:
要检查号码范围,转至 SNRO 并在“号码范围对象”字段中输入 YXR_LOG。单击“号码范围”按钮,单击“显示间隔”按钮,并记下号范围对象号。打开连接器日志并记下第一个条目的号码。如果此号码高于号码范围对象号,则需要将连接器日志中的日志条目号修改为一个更高的号码。有关更多信息,请参阅验证传送对象的号码范围。
在 Windows 上升级至 IBM CrossWorlds SAP 连接器版本 4.2.7 之后,在以下情况下,事件保留在事件表中,且连接器不会选取和处理这些事件:
此问题是由 SAP 在其 java API(SAPJCo)中所作的更改引起的。
要修正此问题,装入仅更改由 IBM WebSphere Business Integration mySAP.com 适配器提供的事件请求和事件返回功能模块的补丁传送包。在不具有名称空间(/CWLD/)基础结构的 4.0 和 4.5 SAP 系统中装入此补丁传送包。
以下子节对事件处理问题提供了建议。
如果 ABAP 扩展模块不处理预订业务对象,则执行以下操作:
如果您的连接器不从 SAP 应用程序中选取事件:
如果您已让多个连接器预订同一业务对象,则一个连接器可能正在处理错误的事件。
检查 SAP 应用程序中连接器的事件表以查看 该事件的状态是否为 L(已锁定)。如果状态为 L,则很可能是在 SAP 应用程序而不是在连接器中发生问题。
如果事件未成功到达目标位置,则将状态从 R 更改为 Q(已排队)。连接器在下一个轮询时间间隔选取状态为 Q 的事件。要将状态从 R 更改为 Q,转至事件表、选择该事件并单击“编辑”按钮。在显示的窗口中,将“事件状态”字段从 R 更改为 Q。
如果业务对象未能成功处理,则检查 SAP 应用程序中的连接器日志。失败事件的条目以红色出现。使用重新处理工具重新处理事件,该工具使您能够像您逐步执行事务一样在代码中设置断点。
注意: 不要在生产环境中使用重新处理工具,因为它会导致 WebSphere Business Integration 系统和 SAP 应用程序不同步。
当前事件表和将来的事件表可能会在一次添加许多事件时遇到死锁情况。如果由于数据库调整而未使用为事件表提供的索引,则会发行这种情况。调整通常在非高峰期间发生,这时事件表中只有很少的事件或没有事件。当数据库表没有或只有很少条目时,不使用索引来读取表效率会更高。要避免死锁情况,在运行数据库调整实用程序时排除当前事件表和将来的事件表。
大对象可能需要进行额外更改才能成功处理。在将数据传递至 SAP 应用程序之前,将把 ABAP 扩展模块对象转换为平面结构,或者在从 SAP 应用程序接收数据时将该对象从平面结构转换。有关更多信息,请参阅业务对象至平面结构的转换。此平面结构保持在内存中,对象实例的每个属性为该结构中的一行。对于每个属性,将在连接器和 SAP 应用程序之间传递 373 个字节的数据。属性数乘以 373 将给出平面结构的近似大小。另外,对象的实例也在内存中。因此,具有许多子对象(段)的对象可能需要在连接器的 Java 进程的启动脚本中对 Java 堆大小作出更改,以避免内存不够错误。
Windows |
---|
在 start_SAP.bat 脚本中,将 -mx128m Java 堆大小选项参数缺省值更改为足够处理平面结构和对象实例的值。大于运行 Java 进程的机器上可用内存的值也会导致内存不够错误。128m 表示最大 Java 堆大小为 128 MB。 |
Unix