発注伝票登録BAPI

BAPI_PO_CREATE1

概要

発注伝票を新規登録するBAPIです。パラメータの数が非常に多いのが特徴で、BAPIから発注登録画面(ME21N)とほぼ同等の内容を登録することができます。
伝票タイプが在庫転送オーダの発注伝票も登録可能です。

パラメータ

発注伝票のデータ構成に近い形でBAPIのパラメータも構成されています。
(発注ヘッダ、明細、納入日程行、勘定設定、取引先機能など)

発注登録のBAPIでは値の初期値提案機能があり、すべてのパラメータに値を設定する必要はありません。登録時にブランクの項目はマスタがあるものはマスタから初期設定されます。
(例えば、パラメータに品目コードを設定すると品目テキストは自動で初期提案されるのでBAPIに設定しなくてもよい)

このような初期提案機能があるため、項目値が未設定なのか明示的にブランクを設定しているのかを判別するために、BAPIには変更ツールバーというパラメータがあります。

発注を登録するのに必要なパラメータはその環境のカスタマイズにより異なりますが、一般的な入庫をする明細を登録するには最低限以下のパラメータ設定が必要です。
【必要なパラメータ】
発注ヘッダ、発注明細、納入日程行とそれぞれのチェックボックスのパラメータ
パラメータ一覧
種別パラメータ説明
インポートPOHEADERヘッダデータ
POHEADERXヘッダデータ (変更ツールバー)
POADDRVENDOR仕入先住所
TESTRUNテスト区分
MEMORY_UNCOMPLETEエラーがある場合に購買発注を保留
MEMORY_COMPLETEエラーがない場合に購買発注を保留
POEXPIMPHEADER貿易: ヘッダデータ
POEXPIMPHEADERX貿易: 変更ツールバー: ヘッダデータ
VERSIONSバージョン管理
NO_MESSAGING出力決定なし
NO_MESSAGE_REQメッセージ不要
NO_AUTHORITY権限チェックなし
NO_PRICE_FROM_PO最終伝票からの価格採用なし
PARK_UNCOMPLETEエラーがある場合に購買発注を未転記
PARK_COMPLETEエラーがない場合に購買発注を未転記
エクスポートEXPPURCHASEORDER購買伝票番号
EXPHEADERヘッダデータ
EXPPOEXPIMPHEADER貿易: ヘッダデータ
テーブルRETURNリターンパラメータ
POITEM明細データ
POITEMX明細データ (変更ツールバー)
POADDRDELIVERY納入先住所 (明細)
POSCHEDULE納入日程
POSCHEDULEX納入日程行 (変更ツールバー)
POACCOUNT勘定設定項目
POACCOUNTPROFITSEGMENT入出庫予定収益性セグメント
POACCOUNTX勘定設定項目 (変更ツールバー)
POCONDHEADER条件 (ヘッダ)
POCONDHEADERX条件 (ヘッダ、変更ツールバー)
POCOND条件 (明細)
POCONDX条件 (明細、変更ツールバー)
POLIMITS外注サービス: 制限
POCONTRACTLIMITS外注サービス: 基本契約制限
POSERVICES外注サービス: サービス行
POSRVACCESSVALUES外注サービス: サービス行の勘定設定配賦
POSERVICESTEXT外注サービス: サービステキスト (長)
EXTENSIONIN得意先独自の項目 (インポートパラメータ)
EXTENSIONOUT得意先独自の項目 (エクスポートパラメータ)
POEXPIMPITEM貿易: 明細データ
POEXPIMPITEMX貿易: 変更ツールバー: 明細データ
POTEXTHEADERヘッダテキスト
POTEXTITEM明細テキスト
ALLVERSIONS全バージョン (エクスポートパラメータ)
POPARTNER取引先
POCOMPONENTSコンポーネントの BAPI 構造
POCOMPONENTSXBUS2012 API のコンポーネント更新情報
POSHIPPING在庫転送オーダーの BAPI 出荷データ
POSHIPPINGXBAPI 出荷データ変更ツールバー
POSHIPPINGEXP出荷データのエクスポート構造
SERIALNUMBER発注のシリアル番号
SERIALNUMBERX発注のシリアル番号 (変更ツールバー)
INVPLANHEADER支払計画ヘッダ
INVPLANHEADERX支払計画ヘッダ (変更ツールバー)
INVPLANITEM支払計画明細
INVPLANITEMX支払計画明細 (変更ツールバー)

発注ヘッダ関連のパラメータを設定する

ヘッダデータ(POHEADER)には多くの項目がありますが、必須項目は購買伝票タイプ、購買組織、会社コード、購買グループ、仕入先です。対となるパラメータとしてヘッダデータ変更ツールバー(POHEADERX)があります。

変更ツールバーには更新する発注ヘッダの項目に「X」を設定します。項目にブランクを設定したい場合も、マスタから初期値提案がされないように「X」を設定しておく必要があります。

発注ヘッダの通貨コードは仕入先マスタから提案されますが、明細金額を正しく設定するために必要なので明示的に通貨コードを設定します。取引先機能(PORTNER)は取引先機能、言語キー、仕入先コードを設定します。言語別取引先機能は内部IDではなく言語キーで指定した言語別(請求元の場合はPI)のコード値を設定する必要があります。
設定例:POHEADER
項目項目名称設定値
COMP_CODE会社コード1000
DOC_TYPE購買伝票タイプNB
VENDOR仕入先VEND0001
PURCH_ORG購買組織1000
PUR_GROUP購買グループ100
CURRENCY通貨コードJPY
設定例:POHEADERX
項目項目名称設定値
COMP_CODE会社コードX
DOC_TYPE購買伝票タイプX
VENDOR仕入先X
PURCH_ORG購買組織X
PUR_GROUP購買グループX
CURRENCY通貨コードX
設定例:POPARTNER
項目項目名称設定値
PARTNERDESC言語別取引先機能PI
LANGU言語キーJA
PARTN_NUMB仕入先コードVEND0002

発注明細関連のパラメータを設定する

発注明細(POITEM)には明細番号、品目コード、プラント、金額などを設定します。対となるパラメータとして発注明細変更ツールバー(POITEMX)があります。発注数量と納入日付の項目は発注明細のパラメータでは無く、納入日程行のパラメータの項目に設定します。

納入日程行(POSCHEDULE)には明細番号、納入日程行番号、納入日付、計画数量などの項目を設定します。対となるパラメータとして納入日程行変更ツールバー(POSCHEDULEX)があります。変更ツールバーのパラメータの使い方は、発注ヘッダと同じです。

発注明細の価格(NET_PRICE)を正味額に設定するには、価格採用(PO_PRICE)に「2」を設定します。また、価格は購買情報から自動設定したり、最終の発注伝票から自動設定することができます。さらに詳細な条件設定を行うには、条件(POCOND)のパラメータから条件タイプを指定して価格設定を行います。

発注単位の項目は、画面に表示される値でなく内部コード値で設定する必要があるので注意してください。(例えば、数量単位「個」の場合は「ST」など)
設定例:POITEM
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
MATERIAL品目コードMAT1001
PLANTプラント1000
PO_UNIT発注単位KG
ACCTASSCAT勘定設定カテゴリK
NET_PRICEBAPI の通貨額15000
PO_PRICE価格採用2
設定例:POITEMX
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
PO_ITEMX購買伝票の明細番号X
MATERIAL品目コードX
PLANTプラントX
PO_UNIT発注単位X
ACCTASSCAT勘定設定カテゴリX
NET_PRICEBAPI の通貨額X
PO_PRICE価格採用X
設定例:POSCHEDULE
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SCHED_LINE納入日程行0001
DELIVERY_DATE納入日付20140601
QUANTITY計画数量5
設定例:POSCHEDULEX
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SCHED_LINE納入日程行0001
PO_ITEMX購買伝票の明細番号X
SCHED_LINEX納入日程行X
DELIVERY_DATE納入日付X
QUANTITY計画数量X

勘定設定項目のパラメータを設定する

発注明細に勘定設定カテゴリを入力した場合、勘定設定項目(POACCOUNT)のパラメータの入力が必要となります。対となるパラメータとして勘定設定項目変更ツールバー(POACCOUNTX)があります。

発注明細で指定した勘定設定カテゴリに応じて勘定設定に必要な項目を設定します。
(例えば、発注明細の勘定設定カテゴリが「K」の場合は原価センタを設定する)
設定例:POACCOUNT
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SERIAL_NO勘定設定の連続番号01
GL_ACCOUNTG/L勘定0000123456
COSTCENTER原価センタA001
設定例:POACCOUNTX
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SERIAL_NO勘定設定の連続番号PR00
PO_ITEMX購買伝票の明細番号X
SERIAL_NOX勘定設定の連続番号X
GL_ACCOUNTG/L勘定X
COSTCENTER原価センタX

サンプルコード

通常の汎用モジュールを実行するのと同様にCALL FUNCTIONで実行します。発注登録のBAPIの内部ではコミットされないため、正常終了時は明示的にコミットを実行する必要があります。

BAPIは例外を発生させない仕様なので、エラー判定はRETURNパラメータにメッセージタイプが「E」のレコードが1件以上あるかどうかで判定をします。
DATA: LS_POHEADER             TYPE BAPIMEPOHEADER,
      LS_POHEADERX            TYPE BAPIMEPOHEADERX,
      LT_POITEM               TYPE TABLE OF BAPIMEPOITEM,
      LT_POITEMX              TYPE TABLE OF BAPIMEPOITEMX,
      LT_POPARTNER            TYPE TABLE OF BAPIEKKOP,
      LT_POSCHEDULE           TYPE TABLE OF BAPIMEPOSCHEDULE,
      LT_POSCHEDULEX          TYPE TABLE OF BAPIMEPOSCHEDULX,
      LT_POACCOUNT            TYPE TABLE OF BAPIMEPOACCOUNT,
      LT_POACCOUNTX           TYPE TABLE OF BAPIMEPOACCOUNTX,
      LV_EXPPURCHASEORDER     TYPE BAPIMEPOHEADER-PO_NUMBER,
      LT_RETURN               TYPE TABLE OF BAPIRET2.

* パラメータに値を設定する
LS_POHEADER-DOC_TYPE = 'NB'. " 購買伝票タイプ
*             :
*          (以下略)

CALL FUNCTION 'BAPI_PO_CREATE1'
  EXPORTING
    POHEADER             = LS_POHEADER
    POHEADERX            = LS_POHEADERX
  IMPORTING
    EXPPURCHASEORDER     = LV_EXPPURCHASEORDER
  TABLES
    RETURN               = LT_RETURN
    POITEM               = LT_POITEM
    POITEMX              = LT_POITEMX
    POPARTNER            = LT_POPARTNER
    POSCHEDULE           = LT_POSCHEDULE
    POSCHEDULEX          = LT_POSCHEDULEX
    POACCOUNT            = LT_POACCOUNT
    POACCOUNTX           = LT_POACCOUNTX
  .

* エラーメッセージの取得
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.

* エラーメッセージがない場合
IF SY-SUBRC <> 0.
  COMMIT WORK AND WAIT.
ELSE.
  ROLLBACK WORK.
ENDIF.
関連記事

コメントの投稿

非公開コメント

プロフィール

Z*

Author:Z*

このブログではSAPの技術情報について解説をしていきます。

2017年:ブログをリニューアルしました。(旧Zの高速道路)

カテゴリ
最新記事
最新コメント
月別アーカイブ
検索フォーム
リンク