概要
アドオンプログラムで購買発注伝票を作成する場合使用するのがBAPI_PO_CREATE1だろう。
もちろん、バッチインプットでも出来ない事はないだろうが、カスタマイズに合わせて制御したり、
タブ移動を制御したりかなり大変なので、シンプルに作成したいのであればBAPI_PO_CREATE1を使用しよう。
この記事では、最低限これだけは入力しておけばできるであろうサンプルコードを記載するが、
カスタマイズによっては、必須項目が異なってたりする為、ご自身の環境・要件に合わせて
変更してもらいたい。
サンプルコード
DATA: wa_poheader type bapimepoheader. "購買伝票ヘッダ DATA: wa_poheaderx type bapimepoheaderx. "購買伝票ヘッダインジケータ DATA: it_poitem type table of bapimepoitem. "購買伝票明細 DATA: it_poitemx type table of bapimepoitemx. "購買伝票明細インジケータ DATA: wa_poitem like line of it_poitem. "購買伝票明細のワークエリア DATA: wa_poitemx like line of it_poitemx. "購買伝票明細インジケータのワークエリア DATA: it_bapiret2 type table of bapiret2. "エラーテーブル DATA: wa_bapiret2 like line of it_bapiret2. "エラーテーブルのワークエリア DATA: v_ebeln TYPE ebeln. "購買伝票番号 * 購買伝票ヘッダの編集処理 clear: wa_poheader. wa_poheader-comp_code = '0123'. wa_poheader-doc_type = 'NB'. wa_poheader-vendor = '0001000000'. wa_poheader-creat_date = sy-datum. wa_poheader-purch_org = 'D000'. wa_poheader-pur_group = 'X01'. wa_poheader-doc_date = sy-datum. clear: wa_poheaderx. wa_poheaderx-comp_code = 'X'. "更新するフィールドにXをつける wa_poheaderx-doc_type = 'X'. wa_poheaderx-vendor = 'X'. wa_poheaderx-creat_date = 'X'. wa_poheaderx-purch_org = 'X'. wa_poheaderx-pur_group = 'X'. wa_poheaderx-doc_date = 'X'. * 購買伝票明細の編集処理 clear: wa_poitem. wa_poitem-po_item = '00010'. wa_poitem-material = '000000000200000000'. wa_poitem-plant = 'D001'. wa_poitem-tax_code = 'V1'. wa_poitem-quantity = 1. APPEND wa_poitem to it_poitem. clear: wa_poitem. wa_poitemx-po_item = '00010'. wa_poitemx-po_itemx = 'X'. "更新するフィールドにXをつける wa_poitemx-plant = 'X'. wa_poitemx-tax_code = 'X'. wa_poitemx-material = 'X'. wa_poitemx-quantity = 'X'. APPEND wa_poitemx to it_poitemx. * BAPIの呼び出し CALL FUNCTION 'BAPI_PO_CREATE1' EXPORTING poheader = wa_poheader poheaderx = wa_poheaderx * TESTRUN = 'X' 設定時はテスト実行 IMPORTING exppurchaseorder = v_ebeln TABLES return = it_bapiret2 poitem = it_poitem poitemx = it_poitemx * poschedule = * poschedulex = . IF NOT v_ebeln IS INITIAL. * データベースのコミット CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. **** 正常時の処理記述 **** ELSE. LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type = 'E'. **** 異常時の処理記述 **** ENDLOOP. ENDIF.
最近のコメント