基本タイプの定義と使用で必要な手順を完了している必要があります。
手順
- SAPメニュー ツール IDocインタフェース/ALE 開発 IDoc インバウンド処理 ビジネスワークフロー開発 ビジネスオブジェクトビルダ(SWO1)を選択します。オブジェクトタイプを入力し、を選択します。
- オブジェクトタイプの新しいメソッドを定義します。メソッドにカーソルを置き、を選択します。
- メソッドの技術的な実装として汎用モジュールを作成した場合は、その汎用モジュールをテンプレートとして入力します。メソッドの名前を入力し、エントリを保存します。
同期メソッドの場合、確認のためにメソッドによって使用されるイベントを定義する必要はありません。
- 新しいメソッドにカーソルを置き、[プログラム]を選択します。
- 処理をプログラムします。
- プログラムコードを保存し、ABAPエディタを終了します()。
- ビジネスオブジェクトビルダで、メソッドのリリースステータスを実装済みに変更します。メソッドにカーソルを置き、編集?を選択します。リリースステータスを変更しますか?オブジェクトタイプコンポーネント?実装されています。
- を選択します。
結果
結果
指定されたABAPプログラムを使用してメソッドを実装しました。ここで、このメソッドと対応するオブジェクトタイプを参照するタスクを作成する必要があります。
INCLUDE <OBJECT>. " Workflow-Makros zur Objektdefinitionbegin_data object. " Do not change.. DATA is generated * only private members may be inserted into structure private data: " begin of private, " to declare private attributes remove comments and " insert private attributes here... " end of private, begin of key, idocnumber like edidc-docnum, end of key. end_data object. " Do not change.. DATA is generated... BEGIN_METHOD inputBackgroundTest changing container.CALL FUNCTION 'IDOC_INPUT_WF_TESTER' EXPORTING idocnumber = object-key-idocnumberEXCEPTIONS OTHERS = 01. END_METHOD.
転送されたパラメータはIDOCNUMBER、オブジェクトタイプIDOCTESTがスーパータイプIDOCAPPLからキー項目として継承したものです。
フォワードナビゲーション(ダブルクリック)を使用して、汎用モジュールIDOC_INPUT_WF_TESTERを登録することができます。汎用モジュールはIDocからデータを読み取り、エラーが発生した場合にイベントを生成します(汎用モジュールSWE_EVENT_CREATEを呼び出すことにより)。FORMルーチンREAD_IDOC_TESTERでは、セグメント構造を使用してIDocテーブルのデータがアプリケーションテーブルに変換される方法を確認できます。
アプリケーションの略語 |
V(販売・流通) |
処理タイプ |
通常、すぐに開始します |
例
FUNCTION IDOC_INPUT_WF_TESTER. *---------------------------------------------------------*Globale Schnittstelle: * IMPORTING idocnumber LIKE EDIDC-DOCNUM*--------------------------------------------------------- INCLUDE <CNTN01>. " Workflow-Makros zur ContainerdefinitionDATA: i_edids LIKE edi_ds OCCURS 1 WITH HEADER LINE,event_id like swedumevid-evtid,status like edids-status,cidocnumber like sweinstcou-objkey,errorcode like sy-subrc. "Für Test der Ausnahmebehandlungswc_container ev_container. * initialize SET/GET parameters and internal tablesPERFORM INITIALIZE_ORGANIZATIONAL_DATA. CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_PROCESS' EXPORTING document_number = idocnumber IMPORTING idoc_control = idoc_contrl EXCEPTIONS document_foreign_lock = 01 document_not_exist = 02 document_number_invalid = 03 document_is_already_open = 04. CALL FUNCTION 'EDI_SEGMENTS_GET_ALL' EXPORTING document_number = idocnumber TABLES idoc_containers = idoc_data EXCEPTIONS document_number_invalid = 01 end_of_document = 02. PERFORM READ_IDOC_TESTER. PERFORM CALL_VA01_IDOC_ORDERSusing errorcode. PERFORM WRITE_STATUS_RECORD TABLES i_edids "Status schreibenUSING errorcode. CALL FUNCTION 'EDI_DOCUMENT_CLOSE_PROCESS' EXPORTING document_number = idocnumber IMPORTING idoc_control = idoc_contrl EXCEPTIONS document_not_open = 01 failure_in_db_write = 02 parameter_error = 03 status_set_missing = 04. IF errorcode <> 0.cidocnumber = idocnumber. CALL FUNCTION 'SWE_EVENT_CREATE' EXPORTING objtype = 'IDOCTEST'objkey = cidocnumber event = 'InputErrorOccurred'start_recfb_synchron = 'X' "synchroner AufrufIMPORTING event_id = event_id TABLES event_container = ev_container EXCEPTIONS objtype_not_found = 1 others = 2. COMMIT WORK.ENDIF.ENDFUNCTION. FORM INITIALIZE_ORGANIZATIONAL_DATA...* Formroutine wie im Abschnitt * Funktionsbaustein anlegen (direkter Eingang) ENDFORM. " INITIALIZE_ORGANIZATIONAL_DATA FORM READ_IDOC_TESTER....* Formroutine und aufgerufene Routinen wie im Abschnitt * Funktionsbaustein anlegen (direkter Eingang) ENDFORM. " READ_IDOC_TESTER FORM CALL_VA01_IDOC_ORDERS using errorcode. * call transaction first dynproPERFORM DYNPRO_START.* call transaction double-line entryPERFORM DYNPRO_DETAIL2.* incotermsPERFORM DYNPRO_HEAD_300.* call transaction item datasPERFORM DYNPRO_POSITION.PERFORM DYNPRO_SET USING 'BDC_OKCODE' 'SICH'.* call transaction VA01CALL TRANSACTION 'VA01' USING BDCDATAMODE 'N'UPDATE 'S'MESSAGES INTO XBDCMSGCOLL. errorcode = SY-SUBRC. " remember returncode for status update ENDFORM. " CALL_VA01_IDOC_ORDERS FORM DYNPRO_START....* Formroutine und aufgerufene Routinen wie im Abschnitt * Funktionsbaustein anlegen (direkter Eingang) ENDFORM. " DYNPRO_START FORM WRITE_STATUS_RECORD TABLES i_edids STRUCTURE edi_dsUSING errorcode. * fill status recordI_EDIDS-DOCNUM = IDOC_CONTRL-DOCNUM.I_EDIDS-LOGDAT = SY-DATUM.IF errorcode = 0.I_EDIDS-STATUS = BELEG_GEBUCHT. "value 53GET PARAMETER ID 'AUN' FIELD BELEGNUMMER.I_EDIDS-STAMID = 'V1'.I_EDIDS-STAMNO = '311'.I_EDIDS-STAPA1 = 'Terminauftrag'.I_EDIDS-STAPA2 = BELEGNUMMER.ELSE.I_EDIDS-STATUS = BELEG_NICHT_GEBUCHT. "value 51I_EDIDS-STAMID = SY-MSGID.I_EDIDS-STAMNO = SY-MSGNO.I_EDIDS-STAPA1 = SY-MSGV1.I_EDIDS-STAPA2 = SY-MSGV2.I_EDIDS-STAPA3 = SY-MSGV3.I_EDIDS-STAPA4 = SY-MSGV4.ENDIF. CALL FUNCTION 'EDI_DOCUMENT_STATUS_SET' EXPORTING document_number = idoc_contrl-docnum idoc_status = i_edids IMPORTING idoc_control = idoc_contrl EXCEPTIONS document_number_invalid = 01 other_fields_invalid = 02 status_invalid = 03. ENDFORM. " WRITE_STATUS_RECORD Globale Daten von IDOC_INPUT_WF_TESTER data:idoc_data LIKE edidd occurs 10 WITH HEADER LINE,idoc_contrl LIKE edidc occurs 1 WITH HEADER LINE.* weitere Daten wie im Abschnitt * Funktionsbaustein anlegen (direkter Eingang)