トップ > 技術コラムNews > SAP技術情報 > 「SAP SDモジュールとは」No.6 SD概要と販売伝票について

更新日 

「SAP SDモジュールとは」No.6 SD概要と販売伝票について

1.はじめに

第5回では、受注伝票変更BAPIの概要と使用例を説明しました。
第6回では、受注伝票登録BAPIの中でも難しい使い方である、提案値を上書き/削除する方法、ロングテキストの更新方法、EXTENSION利用方法を説明していきます。

2. 受注伝票登録BAPI 価格更新受注伝票登録

受注伝票登録BAPI(BAPI_SALESORDER_CREATEFROMDAT2)

こちらのBAPIには、価格を入力する条件タイプのパラメータがあります。このパラメータは使い方が難しく、マスタ設定により意図しない値が編集される場合や、エラーが発生する場合があります。

特に、品目コードによって、条件マスタから価格が提案される明細と、提案されない明細の両方が混在する場合は注意が必要です。

これは、画面入力による受注伝票登録の時の挙動は画面を見てわかりますが、バックグラウンドで動作するBAPIでも同様のことが起こり得ます。

BAPIのパラメータとしては、マスタ提案される明細にはORDER_CONDITIONS_INXの更新区分に「U」を設定する必要があり、提案されない明細には更新区分に「I」を設定する必要があります。

LOGIC_SWITCHパラメータを設定することで、条件パラメータにより複雑な挙動をさせることができます。

 

● 価格の条件マスタ提案値を上書きする場合
価格の条件マスタ提案値を上書きする場合、BAPIの内部動作を標準の状態から変更するため、LOGIC_SWITCHのCOND_HANDLに「X」を設定します。
条件(ORDER_CONDITIONS_IN)に条件タイプや条件レート、価格条件単位等の値を設定し、条件チェックリスト(ORDER_CONDITIONS_INX)のUPDATEFLAGにブランクを設定します。
条件マスタが提案される場合は条件の更新となり、提案されない場合は条件の追加の動作になります。
ただし、条件レートに0を設定する場合は、UPDATEFLAGに「I」か「U」を明示的に設定する必要があります。

以下は設定例です。
▷ ER_CONDITIONS_IN
項目//項目名称//設定値
ITM_NUMBER//販売伝票明細//000010
COND_TYPE//条件タイプ//PR00
COND_VALUE//条件レート//725400
CURRENCY//通貨コード//JPY
COND_UNIT//条件単位//ST
COND_P_UNT//価格条件単位//100

▷ ORDER_CONDITIONS_INX
項目//項目名称//設定値
ITM_NUMBER//販売伝票明細//000010
COND_TYPE//条件タイプ//PR00
COND_VALUE//更新区分//(ブランク)
COND_VALUE//条件レート//X
CURRENCY//通貨コード//X
COND_UNIT//条件単位//X
COND_P_UNT//価格条件単位//X

▷ LOGIC_SWITCH
項目//項目名称//設定値
PRICING//価格設定タイプ//(ブランク)
ATP_WRKMOD//ATP セッション//(ブランク)
SCHEDULING//単一文字フラグ//(ブランク)
NOSTRUCTURE//チェックボックス//(ブランク)
COND_HANDL//選択: 条件行処理//X

 

● 価格の条件マスタ提案値を削除する場合
BAPIの内部動作を標準の状態から変更するため、LOGIC_SWITCHのCOND_HANDLに「X」を設定します。
条件(ORDER_CONDITIONS_IN)に明細番号、条件カウンタと条件タイプを設定し、条件チェックリスト(ORDER_CONDITIONS_INX)のUPDATEFLAGに「D」を設定します。
削除時には、条件カウンタ(COND_COUNT)パラメータの設定が必要です。
なお、条件タイプが複数レコードある場合、条件カウンタは変更元のPRCD_ELEMENTSテーブル(ECC以前のバージョンはKONVテーブル)の値ではなく、BAPI用に01から連番で振る必要があります。

以下は設定例です。
▷ ORDER_CONDITIONS_IN
項目//項目名称//設定値
ITM_NUMBER//販売伝票明細//000010
COND_TYPE//条件タイプ//PR00
COND_VALUE//条件レート//5480

▷ ORDER_CONDITIONS_INX
項目//項目名称//設定値
ITM_NUMBER//販売伝票明細//000010
COND_TYPE//条件タイプ//PR00
COND_VALUE//更新区分//D

▷ LOGIC_SWITCH
項目//項目名称//設定値
PRICING//価格設定タイプ//(ブランク)
ATP_WRKMOD//ATP セッション//(ブランク)
SCHEDULING//単一文字フラグ//(ブランク)
NOSTRUCTURE//チェックボックス//(ブランク)
COND_HANDL//選択: 条件行処理//X

3.受注伝票登録BAPI ロングテキスト登録受注伝票登録

受注伝票登録BAPI(BAPI_SALESORDER_CREATEFROMDAT2)

こちらのBAPIで、ロングテキスト項目を設定したい場合は、ORDER_TEXTパラメータを使います。

このパラメータで受注ヘッダのテキスト、受注明細のテキストを設定できます。受注変更BAPIのパラメータ設定も同様です。

 

● ORDER_TEXTのパラメータ
受注登録時はDOC_NUMBERに0000000000を設定します。受注ヘッダのテキストを設定する場合は、ITM_NUMBERに000000を設定し、
明細テキストの場合は明細番号を入力します。TEXT_ID にはロングテキストのIDの設定をします。
テキストを改行する場合は、タグ列に「*」を設定します。テキストはSAPスクリプト対応のため「*」以外のコマンドも設定可能です。
ロングテキスト変更時はFUNCTIONに「005」、削除時は「003」を設定します。マスタから初期提案されたテキストも変更可能です。

以下は2行の場合の設定例です。
▷ ORDER_TEXT
項目//項目名称//設定値(1)//設定値(2)
DOC_NUMBER//販売伝票//0000000000//0000000000
ITM_NUMBER//販売伝票明細//000000//000000
TEXT_ID//テキスト ID//0001//0001
LANGU//言語キー//J//J
FORMAT_COL//タグ列//*//*
TEXT_LINE//テキスト行//1行目のテキスト//2行目のテキスト
FUNCTION//機能//(ブランク)// (ブランク)

4. 受注伝票登録BAPI  EXTENSIONIN利用方法

受注伝票登録BAPI(BAPI_SALESORDER_CREATEFROMDAT2)

こちらのBAPIで、拡張項目を設定したい場合は、EXTENSIONINパラメータを使います。

EXTENSIONINを使う場合は、事前にBAPI用の構造に拡張項目をAppendしておく必要があります。

例えば、受注伝票ヘッダテーブル(VBAK)にZZADDHEAD1というアドオン項目を追加した場合、BAPIのEXTENSIONIN用のBAPE_VBAK、

BAPE_VBAKXの2つの構造と、内部処理用のVBAKKOZの構造にそれぞれ同じ項目名の項目(ZZADDHEAD1)を追加する必要があります。

 

● EXTENSIONINのパラメータ
EXTENSIONINのパラメータ設定は、STRUCTUREにBAPI拡張項目用の構造名を設定し、
VALUEPART1にBAPE_VBAK等の構造の値を1つの文字列項目の値として設定します。
拡張項目のデータが長い場合は、VALUEPART2~VALUEPART4に続きの値を設定します。

以下は設定例です。
▷ EXTENSIONIN構造
項目//項目名称//設定値(1)//設定値(2)
STRUCTURE//拡張の構造名//BAPE_VBAK//BAPE_VBAKX
VALUEPART1//データ部分//0000APPENDTEST//0000000000IX
VALUEPART2//データ部分//(ブランク)// (ブランク)
VALUEPART3//データ部分//(ブランク)// (ブランク)
VALUEPART4//データ部分//(ブランク)// (ブランク)

例:EXTENSIONINから自動設定されたBAPE_VBAK構造
項目//項目名称//設定値
VBELN//販売伝票番号//0000000000
.APPEND//(ブランク)// (ブランク)
ZZTEST1//追加項目1// APPENDTEST

例:EXTENSIONINから自動設定されたBAPE_VBAKX構造
項目//項目名称//設定値
VBELN//販売伝票番号//0000000000
UPDATEFLAG//更新区分//I
.APPEND//(ブランク)// (ブランク)
ZZADDHEAD1//追加項目1//X

5.まとめ

上記のように、受注伝票登録BAPIでは、細かく編集する必要はありますが、画面上から受注伝票を登録するときと同じ値を登録したいときに、

カスタマイズによる提案値から上書きを行ったり、複数行のロングテキストを登録したり、追加のカスタマイズによって作ったAPPEND項目に値を入れて保存するようなこともできます。

特に顧客特有の要件があっても、これらの機能を活用し、ある程度標準の処理内でカバーすることが可能になっております。

BAPIコールのコードについては、当コラムの第4回、受注伝票登録BAPIの末尾にございます。

当記事のパラメータに関しても、パラメータの項目値を編集した上で、

通常の受注伝票登録BAPIのパラメータに加えて編集することで、登録が可能となっております。

6. 参考

受注伝票登録、変更BAPI以外に、受注の前段階のフローで用いるBAPIも提供されております。

受注伝票と比べると、使用する機会はかなり少ないですが、参考までに、引合伝票と見積伝票のBAPIを紹介します。

 

● 引合伝票
▷ 登録
引合伝票登録BAPI(BAPI_INQUIRY_CREATEFROMDATA2)
受注伝票よりもややパラメータは少なくなっております。受注伝票の元となる伝票となっているため、
登録できる項目としては受注伝票のBAPIと似ている部分もあります。
また、引合伝票のBAPIに関しましても、コミットは明示的に行う必要がありますので注意が必要です。

▷ 変更
引合伝票変更BAPI(BAPI_CUSTOMERINQUIRY_CHANGE)
受注伝票と同様、変更用のBAPIも用意されております。

 

● 見積伝票
▷ 登録
見積伝票登録BAPI(BAPI_QUOTATION_CREATEFROMDATA2)
受注伝票よりもややパラメータは少なくなっております。見積伝票に関しましても、受注伝票の元となる伝票となっているため、
登録できる項目としては受注伝票のBAPIと似ている部分もあります。
また、見積伝票のBAPIに関しましても、コミットは明示的に行う必要がありますので注意が必要です。

▷ 変更
見積伝票変更BAPI(BAPI_CUSTOMERQUOTATION_CHANGE)
受注伝票や引合伝票と同様、変更用のBAPIも用意されております。

 

LINEで送る
Pocket

SAP案件紹介や独立前相談

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

60秒で無料登録

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

メルマガ登録

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

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

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

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