スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

発注伝票変更BAPI

BAPI_PO_CHANGE

概要

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

パラメータ

発注伝票登録BAPIとほぼ同じパラメータ構成となっています。変更モードの場合のみ存在する購買発注履歴や仕入先確認用のテーブルパラメータがあります。

基本的に発注変更BAPIでは変更したい項目のみパラメータに設定します。変更のBAPIでは後続伝票がある場合に変更不可な項目もあるため、変更可能な項目のみパラメータに設定するようにします。
パラメータ一覧
種別パラメータ説明
インポートPURCHASEORDER購買伝票番号
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エラーがない場合に購買発注を未転記
エクスポート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出荷データのエクスポート構造
POHISTORY購買発注履歴の転送構造
POHISTORY_TOTALS購買発注履歴の転送構造: 合計
POCONFIRMATION転送構造: 照会/一般 - 仕入先確認
SERIALNUMBER発注のシリアル番号
SERIALNUMBERX発注のシリアル番号 (変更ツールバー)
INVPLANHEADER支払計画ヘッダ
INVPLANHEADERX支払計画ヘッダ (変更ツールバー)
INVPLANITEM支払計画明細
INVPLANITEMX支払計画明細 (変更ツールバー)
POHISTORY_MA勘定設定レベル購買発注履歴の転送構造

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

ヘッダデータ(POHEADER)には変更したい項目を設定し、対となるパラメータのヘッダデータ変更ツールバー(POHEADERX)の変更項目に「X」を設定します。設定方法は発注登録BAPIと同様です。

取引先機能を削除するにはPOPARTNERのDELETE_INDに「X」を設定します。
設定例:POHEADER
項目項目名称設定値
PMTNTTRMS支払条件0001
設定例:POHEADERX
項目項目名称設定値
PMTNTTRMS支払条件X
設定例:POPARTNER
項目項目名称設定値
PARTNERDESC言語別取引先機能GS
LANGU言語キーJA
PARTN_NUMB仕入先コードVEND0002
DELETE_IND削除フラグX

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

発注明細(POITEM)には明細番号と変更したい項目を設定します。対となるパラメータとして発注明細変更ツールバー(POITEMX)があり、変更する項目に「X」を設定します。存在する明細番号を指定すると変更、存在しない明細番号を指定すると行追加になります。

明細を論理削除する場合は、購買伝票の削除フラグ(DELETE_IND)に「L」を設定します。明細を論理削除すると紐付く納入日程行も削除扱いになりますので、納入日程行を削除する必要はありません。

納入日程行(POSCHEDULE) の変更をする場合は、明細番号、納入日程行番号と変更したい項目を設定します。同時に納入日程行変更ツールバー(POSCHEDULEX)の変更する項目に「X」を設定します。
設定例:POITEM
項目項目名称設定値(1)設定値(2)設定値(3)
PO_ITEM購買伝票の明細番号000100002000030
DELETE_IND購買伝票の削除フラグL
SHORT_TEXTテキスト (短)品目B
MATERIAL品目コードMAT1001
PLANTプラント1000
NET_PRICEBAPI の通貨額15000
設定例:POITEMX
項目項目名称設定値(1)設定値(2)設定値(3)
PO_ITEM購買伝票の明細番号000100002000030
PO_ITEMX購買伝票の明細番号XXX
DELETE_IND購買伝票の削除フラグX
SHORT_TEXTテキスト (短)X
MATERIAL品目コードX
PLANTプラントX
NET_PRICEBAPI の通貨額X
設定例:POSCHEDULE
項目項目名称設定値(1)設定値(2)
PO_ITEM購買伝票の明細番号0002000030
SCHED_LINE納入日程行00020001
DELIVERY_DATE納入日付20140601
QUANTITY計画数量5
DELETE_IND購買伝票の削除フラグX
設定例:POSCHEDULEX
項目項目名称設定値(1)設定値(2)
PO_ITEM購買伝票の明細番号0002000030
SCHED_LINE納入日程行00020001
PO_ITEMX購買伝票の明細番号X
SCHED_LINEX納入日程行X
DELIVERY_DATE納入日付X
QUANTITY計画数量X
DELETE_IND購買伝票の削除フラグX

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

勘定設定項目(POACCOUNT)には明細番号、勘定設定の連続番号と変更したい項目を設定します。対となるパラメータとして発注明細変更ツールバー(POACCOUNTX)があり、変更する項目に「X」を設定します。

勘定設定項目を削除する場合は、削除フラグ: 購買伝票勘定設定(DELETE_IND)に「X」を設定します。
設定例:POACCOUNT
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SERIAL_NO勘定設定の連続番号01
DELETE_IND削除フラグ: 購買伝票勘定設定X
GL_ACCOUNTG/L勘定
COSTCENTER原価センタ
設定例:POACCOUNTX
項目項目名称設定値
PO_ITEM購買伝票の明細番号00010
SERIAL_NO勘定設定の連続番号01
PO_ITEMX購買伝票の明細番号
SERIAL_NOX勘定設定の連続番号
DELETE_IND削除フラグ: 購買伝票勘定設定X
GL_ACCOUNTG/L勘定
COSTCENTER原価センタ

サンプルコード

通常の汎用モジュールを実行するのと同様に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_PURCHASEORDER        TYPE BAPIMEPOHEADER-PO_NUMBER,
      LT_RETURN               TYPE TABLE OF BAPIRET2.

* パラメータに値を設定する
LV_PURCHASEORDER       = '4500001234'. " 購買伝票番号
LS_POHEADER-PMTNTTRMS  = '0001'.       " 支払条件
LS_POHEADERX-PMTNTTRMS = 'X'.          " 支払条件
*             :
*          (以下略)

CALL FUNCTION 'BAPI_PO_CHANGE'
  EXPORTING
    PURCHASEORDER        = LV_PURCHASEORDER
    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の技術情報について解説をしていきます。

このブログを気に入って頂いた方は、リンクを張っていただけると嬉しいです。

カテゴリ
最新記事
最新コメント
月別アーカイブ
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。