トップ > 技術コラムNews > SAP技術情報 > 「SAP SDモジュールとは」No.4 受注伝票登録

更新日 

「SAP SDモジュールとは」No.4 受注伝票登録

1.はじめに

第3回では、その他トランザクションの説明と、カスタマイズについて説明していきました。

第4回からは、SAP SDモジュールで用いられる各BAPIを、今回については受注伝票登録BAPIの概要と使用例を説明していきます。

2.概要説明

受注伝票登録BAPI(BAPI_SALESORDER_CREATEFROMDAT2)

受注伝票の販売伝票カテゴリが「C:受注」の伝票タイプのデータ登録専用のBAPIになります。

返品受注や基本契約などの登録は、伝票カテゴリが異なるので別のBAPIを利用します。

当BAPIはパラメータが多く非常に高機能なのが特徴で、特有の組み合わせの編集を行う必要がありますが、設定値次第で多彩なデータを登録することができます。

受注伝票のテーブル構成に近い形のBAPIのパラメータ構成になっています。

(受注ヘッダ、明細、納入日程行、条件、取引先機能など)

受注登録のBAPIでは、画面とは異なりますが、値の初期値提案機能があり、すべてのパラメータに値を設定する必要はありません。

登録時にブランクの項目はマスタがあるものはマスタから初期設定されます。

(例:パラメータに品目コードを設定すると品目テキストは自動で初期提案されるのでBAPIに設定しなくてもよい)

このような初期提案機能があるため、項目値が未設定なのか明示的にブランクを設定しているのかを判別するために、

BAPIには項目ごとのチェックボックス(またはチェックリスト)というパラメータがあります。

受注を登録するのに必要なパラメータはその環境のカスタマイズにより異なりますが、一般的な出荷ありの明細を登録するには、最低でも以下のパラメータ設定が必要です。

3.パラメータ一覧

・インポートパラメータ

SALESDOCUMENTIN        販売管理伝票番号

ORDER_HEADER_IN       受注ヘッダ

ORDER_HEADER_INX                   受注ヘッダチェックリスト

SENDER                                               論理システム – 送信者

BINARY_RELATIONSHIPTYPE    バイナリ関連タイプ (専用)

INT_NUMBER_ASSIGNMENT      明細番号内部採番

BEHAVE_WHEN_ERROR                エラー処理

LOGIC_SWITCH                内部制御パラメータ

TESTRUN             テスト実行

CONVERT            変換: 取引先機能 + 受注伝票タイプ

・エクスポート

SALESDOCUMENT          生成された伝票の番号

・テーブル

RETURN               リターンメッセージ

ORDER_ITEMS_IN            受注明細

ORDER_ITEMS_INX         受注明細チェックボックス

ORDER_PARTNERS          伝票取引先

ORDER_SCHEDULES_IN                納入日程行

ORDER_SCHEDULES_INX             納入日程行チェックボックス

ORDER_CONDITIONS_IN             条件

ORDER_CONDITIONS_INX          条件チェックボックス

ORDER_CFGS_REF           選定: 参照データ

ORDER_CFGS_INST         選定: インスタンス

ORDER_CFGS_PART_OF                選定: 部分設定

ORDER_CFGS_VALUE    選定: 特性値

ORDER_CFGS_BLOB       内部選定データ (SCE)

ORDER_CFGS_VK             選定: バリアント条件キー

ORDER_CFGS_REFINST 選定: 参照明細/インスタンス

ORDER_CCARD クレジットカードデータ

ORDER_TEXT    テキスト

ORDER_KEYS     参照キーの出力テーブル

EXTENSIONIN   VBAK、VBAP、VBEP のカスタマ拡張

PARTNERADDRESSES    アドレス (組織/会社) 用 BAPI 構造

4.受注ヘッダ関連のパラメータ設定

受注ヘッダ(ORDER_HEADER_IN)には多くの項目がありますが、必須項目は販売伝票タイプ、販売組織、流通チャネル、製品部門です。

対となるパラメータとして受注ヘッダチェックリスト(ORDER_HEADER_INX)があります。

チェックリストには更新区分(I:登録、U:変更、D:削除)の設定、および更新する受注ヘッダの項目に「X」を設定します。

項目にブランクを設定したい場合は、マスタから初期値提案がされないようにチェックリストの項目に「X」を設定します。

受注先の項目は受注ヘッダではなく取引先機能(ORDER_PARTNERS)のパラメータにあります。

取引先機能パラメータは、取引先機能、BPマスタの得意先コード、明細番号の入力が必要です。

ヘッダの取引先の場合は明細番号に「000000」を設定します。取引先機能には、受注先、出荷先、支払人などが設定可能で、受注先は必須なので最低1レコード必要です。

販売伝票タイプと取引先機能のIDは、画面に表示される値でなく内部コード値で設定する必要があるので注意が必要です。

(例:伝票タイプ「OR」の場合は「TA」、受注先「SP」の場合は「AG」など)

  • 設定例:ORDER_HEADER_IN

項目//項目名称//設定値

DOC_TYPE//販売伝票タイプ//TA

SALES_ORG//販売組織//1000

DISTR_CHAN//流通チャネル//00

DIVISION//製品部門//00

  • 設定例:ORDER_HEADER_INX

項目//項目名称// 設定値

UPDATEFLAG//更新区分//I

DOC_TYPE//販売伝票タイプ//X

SALES_ORG//販売組織//X

DISTR_CHAN//流通チャネル//X

DIVISION//製品部門//X

  • 設定例:ORDER_PARTNERS (4レコード)

項目//項目名称// 設定値(1)//設定値(2)//設定値(3)//設定値(4)

PARTN_ROLE//取引先機能//AG//WE//RE//RG

PARTN_NUMB//得意先コード//CUST0001//CUST0123//CUST0001//CUST0001

ITM_NUMBER//明細番号//000000//000000//000000//000000

5.受注明細関連のパラメータ設定

受注明細(ORDER_ITEMS_IN)には明細番号、品目コード、プラント、販売単位などを設定します。

対となるパラメータとして受注明細チェックリスト(ORDER_ITEMS_INX)があります。

受注数量や納入日付の項目は、納入日程行のパラメータに設定します。

納入日程行(ORDER_SCHEDULES_IN)には明細番号、納入日程行番号、納入日程日付、受注数量などの項目を設定します。

対となるパラメータとして納入日程行チェックリスト(ORDER_SCHEDULES_INX)があります。チェックリストパラメータの使い方は、受注ヘッダと同じです。

納入日程行は、出荷計画のカスタマイズや利用可能在庫確認に依存して日程の再計算が行われたものが優先されるので、

BAPIで入力した納入日程がそのまま伝票に保存されない場合もあります。

販売単位の項目は、画面に表示される値でなく内部コード値で設定する必要があるので注意してください。

(例:数量単位「個」の場合は「ST」など)

  • 設定例:ORDER_ITEMS_IN

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

MATERIAL//品目コード//MAT0001

PLANT//プラント//1000

SALES_UNIT//販売単位//ST

  • 設定例:ORDER_ITEMS_INX

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

UPDATEFLAG//更新区分//I

MATERIAL//品目コード//X

PLANT//プラント//X

SALES_UNIT//販売単位//X

  • 設定例:ORDER_SCHEDULES_IN

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

SCHED_LINE//納入日程行//0001

REQ_DATE//納入日程日付//20230428

REQ_QTY//受注数量//3

  • 設定例:ORDER_SCHEDULES_INX

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

SCHED_LINE//納入日程行//0001

UPDATEFLAG//更新区分//I

REQ_DATE//納入日程日付//X

REQ_QTY//受注数量//X

6.価格のパラメータ設定

明細の価格は、条件(ORDER_CONDITIONS_IN)に設定します。

主な設定項目は、明細番号、条件タイプ、条件レート、通貨コード、条件単位、価格条件単位です。

対となるパラメータとして条件チェックリスト(ORDER_CONDITIONS_INX)があります。

チェックリストパラメータの使い方は受注ヘッダと同じですが、条件マスタから価格が提案されている場合は、

更新区分=Uを設定することで、マスタの金額の変更もできます。

条件レートの項目は、内部形式(※)でなく外部形式(実際の金額と同じ桁)で設定する必要があるので注意する必要があります。

※例:日本円(JPY)の場合、プログラム上は1/100の数値になっています。1234円は12.34と格納されます。

  • 設定例:ORDER_CONDITIONS_IN

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

COND_TYPE//条件タイプ//PR00

COND_VALUE//条件レート//135

CURRENCY//通貨コード//JPY

COND_UNIT//条件単位//ST

COND_P_UNT//価格条件単位//1

  • 設定例:ORDER_CONDITIONS_INX

項目//項目名称//設定値

ITM_NUMBER//販売伝票明細//000010

COND_TYPE//条件タイプ//PR00

UPDATEFLAG//更新区分//I

COND_VALUE//条件レート//X

CURRENCY//通貨コード//X

COND_UNIT//条件単位//X

COND_P_UNT//価格条件単位//X

7.サンプルコード

通常の汎用モジュールを実行するのと同様にCALL FUNCTIONで実行します。

受注登録のBAPIの内部ではコミットされないため、正常終了時は明示的にコミットを、失敗時はロールバックを実行する必要があります。

BAPIは例外を発生させない仕様なので、エラー判定はRETURNパラメータにメッセージタイプが「E」のレコードが1件以上あるかどうかで判定をします。

DATA: LSTR_ORDER_HEADER_IN      TYPE BAPISDHD1,

LSTR_ORDER_HEADER_INX     TYPE BAPISDHD1X,

LT_ORDER_ITEMS_IN       TYPE TABLE OF BAPISDITM,

LT_ORDER_ITEMS_INX      TYPE TABLE OF BAPISDITMX,

LT_ORDER_PARTNERS       TYPE TABLE OF BAPIPARNR,

LT_ORDER_SCHEDULES_IN   TYPE TABLE OF BAPISCHDL,

LT_ORDER_SCHEDULES_INX  TYPE TABLE OF BAPISCHDLX,

LT_ORDER_CONDITIONS_IN  TYPE TABLE OF BAPICOND,

LT_ORDER_CONDITIONS_INX TYPE TABLE OF BAPICONDX,

LV_SALESDOCUMENT        TYPE VBAK-VBELN,

LT_RETURN               TYPE TABLE OF BAPIRET2.

 

* パラメータに値を設定する

LSTR_ORDER_HEADER_IN-DOC_TYPE = ‘TA’. ” 販売伝票タイプ

*             :

*          (以下略)

 

CALL FUNCTION ‘BAPI_SALESORDER_CREATEFROMDAT2’

EXPORTING

ORDER_HEADER_IN      = LSTR_ORDER_HEADER_IN

ORDER_HEADER_INX     = LSTR_ORDER_HEADER_INX

IMPORTING

SALESDOCUMENT        = LV_SALESDOCUMENT

TABLES

RETURN               = LT_RETURN

ORDER_ITEMS_IN       = LT_ORDER_ITEMS_IN

ORDER_ITEMS_INX      = LT_ORDER_ITEMS_INX

ORDER_PARTNERS       = LT_ORDER_PARTNERS

ORDER_SCHEDULES_IN   = LT_ORDER_SCHEDULES_IN

ORDER_SCHEDULES_INX  = LT_ORDER_SCHEDULES_INX

ORDER_CONDITIONS_IN  = LT_ORDER_CONDITIONS_IN

ORDER_CONDITIONS_INX = LT_ORDER_CONDITIONS_INX

.

* エラーメッセージの取得

READ TABLE LT_RETURN WITH KEY TYPE = ‘E’ TRANSPORTING NO FIELDS.

 

* エラーメッセージがない場合

IF SY-SUBRC <> 0.

COMMIT WORK AND WAIT.

ELSE.

ROLLBACK WORK.

ENDIF.

(サンプルコードは以上です。)

 

受注伝票登録BAPIは、このような使い方になっております。

 

LINEで送る
Pocket

SAP案件紹介や独立前相談

ほとんどのSAPコンサルタントの方は、独立すると、まずは当社へご登録いただいております。

60秒で無料登録

案件情報やSAP技術情報を
気軽に受け取る

メルマガ登録

つの情報を送るだけで案件紹介へ

    御氏名
    メールアドレス
    電話番号
    生年月日

    つの情報を送るだけで案件紹介へ

      御氏名
      メールアドレス
      電話番号
      生年月日