SAP技術者のサンプルコード置き場

ABAPの動作確認をしたコードと簡単な説明を置いておきます。

SD伝票カテゴリ値は、IF_SD_DOC_CATEGORYの属性値でわかりやすく

こんにちは。 受注伝票のユーザEXITやコピールーチン等で、伝票タイプほど厳密ではなく、 「受注」「無償」「返品」などの分類で処理を分岐させたい場合、伝票カテゴリ(例としてVBAK-VBTYP)を使用する場合があるのですが、 「受注」なら'C'、「無償受注」なら’I'、出荷なら「J」などと値が決まっています(ドメイン:VBTYPLのドメイン値)

となると、ABAPコードでは、

IF VBAK-VBTYP = 'C'. "受注

と書きます。ただし、いざ'C'とだけしか書いていないとわからない場合がありますよね。 そのためコメントでこの’C'の意味を書くことが多いのですが、 インターフェース:IF_SD_DOC_CATEGORYの属性値で書けばコメントを書かずともわかりやすくなります。 先ほどのコードは、

IF VBAK-VBTYP =IF_SD_DOC_CATEGORY=>ORDER.

と書き表すことができます。属性名がそのまま意味をあらわしているのでわかりやすいですよね。

IF_SD_DOC_CATEGORYの属性値と、ドメイン:VBTYPLのドメイン値を比較した一覧を下記に表示します。 一部項目のありなしや値が異なるものがあります。 VBTYPLの値は互換性のため削ることができず、新たに作成されたIF_SD_DOC_CATEGORYで内容を整理した可能性がありますが、詳細は不明です。

f:id:free_croud:20201017011701p:plain
リスト1/2

f:id:free_croud:20201017011820p:plain
リスト2/2

こんなの'C'でコードすればいいならその方がタイプ量が減っていいのに、と思う方もいると思います。 ただ、私の設計書では以降IF_SD_DOC_CATALOGを使って書こうと思っていますので、私の設計書が当たった皆さんは申し訳ございませんが、 都度IF_SD_DOC_CATALOGの属性値を書いていただければ幸いです(笑)。

以上です、ありがとうございました。