我正在使用SAP .NET Connector 3.0来接收入站idoc。我可以在大多数情况下将它们弄好,但有时收到时会出现问题(磁盘已满/数据库连接断开等),并且似乎没有办法向收件人报告收据失败。< / p>
抛出异常仍会导致SAP中idoc的状态为“3”(良好)。
是否有人知道如何向来电者报告收据不成功?
示例...
[RfcServerFunction(Name = "IDOC_INBOUND_ASYNCHRONOUS")]
public void ReceiveInboundIdocAsync(RfcServerContext context, IRfcFunction function)
{
throw new Exception("SM59 still reports status 3 for this idoc");
}
答案 0 :(得分:1)
您需要区分“tRFC状态”和“ALE状态”。
如果从服务器功能中抛出异常,则应将tRFC状态设置为“Rolled Back”,并且您应该能够在事务SM58中验证这一点。你能检查一下吗?
然而,这不会影响ALE状态...... ALE基本上是异步的,并且不会等待传输IDoc的tRFC完成。因此,ALE状态“03”仅表示“IDoc成功转移到通信层”。通信层(在这种情况下是tRFC层)是否实际上已成功交付IDoc或仍在尝试,不会报告回IDoc监视器......
如果你想这样做,你有两个选择: