所有,
当前,我们已经开发了Java客户端应用程序,可通过JCO v3.0 API与SAP进行通信。在有状态调用(其中调用了多个BAPI函数)期间,我们使用JCoContext类建立有状态会话。我们在执行JCoFunctions之前调用JCoContext.begin(),在完成所有功能之后在finally块中调用JCoContext.end()。
该问题出现在JCoContext.end()上。它可能会引发JCoException。关于为什么可能发生异常或如何处理异常的文档尚不清楚。在测试中,当将NULL目标传递给JCoContext.end()方法时,我已经观察到异常。尽管这可能发生,但绝对不会在我们的生产代码中发生。所以问题仍然存在,是否还有其他原因会引发异常?
此外,如果未调用JCoContext.end()方法,我会观察到奇怪的行为。在这些情况下,我看到后续的BAPI调用未成功完成。这向我表明,如果end()方法未成功完成,则可能会使JCo处于不良状态。因此,我们应该如何处理此处发生的异常。作为开发人员,我有什么追索权?看来,我所拥有的唯一保证就是关闭程序。
让我知道您是否有任何想法,谢谢,
保罗·曼宁
最佳答案
SAP员工在SCN论坛上回答了该问题。我在那儿交叉张贴了这个问题。链接在这里:
SAP Forum Question: SAP JCo: How to handle an Exception thrown by JCoContext.end()
概括来说,如果传入的“目标”参数为NULL或SAP JCO中存在错误,则JCoContext.end()方法仅应引发Exception。因此,您必须确保“目标”为非空。如果遇到其他问题,请向SAP提交支持票。
完了,走吧。
保罗