Friday is awesome

SAPについて個人的なメモをまとめたブログです

MENU

【SAP Tips】テキストIDの定義や伝票のテキスト項目から値を取得、更新する方法

SAPの受注伝票、出荷伝票などにはテキスト項目があります。テキストとは通常の項目とは違い、テキスト形式で改行して複数行書くようなことも可能です。これら伝票のテキスト項目にはメモのように書き込んでおいて、帳票などに印字するような使い方が可能になります。SAP標準のテキストもありますが、カスタマイズしてテキストIDを追加することもできます。

新しいテキストIDを登録するには?
①Tr-Cd:VOTXNでテキストを登録したいラジオボタンをチェックして
Text Typesをクリックします。テキストIDとテキスト名称を入力し、新規登録します
②テキストIDを登録したあとは、Text Procedureで対象のオブジェクトに対して割当を
行います。Text Procedureとは、受注ヘッダ、受注明細、出荷ヘッダなど伝票種別ごとに定義されているので、どのText Procedureが適切かを確認し、テキストIDの割当を行います。
上記により、テキストIDがマスタやトランザクションデータで確認できるようになります。

アドオンでテキスト情報を取得、更新するには?
テキストの取得はSTXH、STXLテーブルにヘッダと明細の構成でありますが、一般的には、アドオン機能で伝票からテキストを取得するには、Read_textという汎用モジュールを使い、伝票にテキストを保存するにはSave_textという汎用モジュールを使います。
例えば、受注伝票テキスト項目から取得するには、汎用モジュールのパラメータに下記項目を設定して取得することが可能です。
LANGUAGE:J
OBJECT    :VBBK
ID    :0001
NAME    :1000000001

販売伝票
VBBK:ヘッダ
VBBP:明細

購買伝票

■受注伝票からテキストを取得するサンプルプログラム

REPORT z_get_text_from_sales_order.

DATA: lv_vbeln TYPE vbeln,        " 受注番号
      lt_texts TYPE TABLE OF tline, " ヘッダテキスト
      lv_text  TYPE tline.          " 取得したテキスト

PARAMETERS: p_vbeln TYPE vbeln.     " 受注番号入力パラメータ

START-OF-SELECTION.
  lv_vbeln = p_vbeln.

  " ヘッダテキストを取得
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      id                      = '0001'
      language                = sy-langu
      name                    = lv_vbeln
      object                  = 'VBBK'
    TABLES
      lines                   = lt_texts
    EXCEPTIONS
      id                      = 1
      language                = 2
      name                    = 3
      not_found               = 4
      object                  = 5
      reference_check         = 6
      wrong_access_to_archive = 7
      OTHERS                  = 8.

  IF sy-subrc = 0.
    " テキストが存在する場合、最初の行を取得
    READ TABLE lt_texts INDEX 1 INTO lv_text.
    IF sy-subrc = 0.
      WRITE: / 'Text:', lv_text.
    ELSE.
      WRITE: / 'Text not found for Sales Order', lv_vbeln.
    ENDIF.
  ELSE.
    WRITE: / 'Error reading text for Sales Order', lv_vbeln.
  ENDIF.