1

SAP .NET Connector 3.0 を使用してインバウンド idoc を受信して​​います。ほとんどの場合は問題なく受信できますが、受信に問題がある場合があり (ディスクがいっぱい/DB 接続がダウンしているなど)、受信に失敗したことを送信者に報告する方法がないようです。

例外をスローしても、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");
}
4

1 に答える 1

1

「tRFC ステータス」と「ALE ステータス」を区別する必要があります。

サーバー機能から例外をスローすると、tRFC ステータスが「ロールバック」に設定され、トランザクション SM58 でこれを確認できるはずです。これを確認していただけますか?

ただし、それは ALE ステータスには影響しません... ALE は基本的に非同期であり、IDoc を転送する tRFC が終了するのを待ちません。したがって、ALE ステータス "03" は、"IDoc が通信層に正常に転送されたこと" のみを意味します。通信レイヤー (この場合は tRFC レイヤー) が実際に IDoc の配信に成功したか、まだ試行中であるかは、IDoc モニターに報告されません...

それを行いたい場合は、次の 2 つのオプションがあります。

  1. SAP システムで定期的にスケジュールできる ALE レポートがあります: RBDMOIND。このレポートは tRFC モニタをスキャンし、対応する TID が正常に終了したすべての IDoc をステータス "12" に設定します。(tRFC がまだ実行中であるか、または現在 "ロールバック" ステータスにある IDoc は、ステータス "03" のままです。)
  2. プログラムは、定期的に SYSTAT01 IDoc を SAP システムに送り返すことができます。この IDoc を使用して、IDoc ステータス モニタを更新できます。IDoc DOCNUM のセット、「EDI サブシステム」の情報、および各 DOCNUM の望ましいステータスを入力するだけです。次の 4 つのステータスを使用する必要があります: "11" (ディスパッチ中のエラー)、"12" (ディスパッチ OK)、"13" (再送信 OK)、"23" (再送信中のエラー) これらの SYSTAT01 IDoc を処理するには、それに応じて SAP システムをセットアップする必要があります。「EDI サブシステム」用に論理システムとパートナー プロファイルを作成する必要があります。そのパートナー プロファイルの「メッセージ タイプ」は「STATUS」で、「プロセス コード」は「STA1」である必要があります。その後、管理者は、最終的にステータス 11/23 になった IDoc の ALE モニター (WE05) をフィルタリングし、それらを手動で調べることができます。(そして、必要に応じて再送信します。)
于 2018-03-14T16:47:03.950 に答える