Sap-abap-user-exits

提供:Dev Guides
移動先:案内検索

SAP ABAP-ユーザー出口

標準のSAP抽出プログラムが、許可や時間チェックなど、予期されるデータや必要な機能を提供しない場合、抽出でユーザー出口が使用されます。 ユーザー出口は、一般に販売管理(SD)モジュールで使用されます。 SAPは、販売、輸送、出荷、および請求の分野で多くの出口を提供しています。 ユーザー出口は、標準SAPがすべての要件を満たすことができない場合にいくつかの変更を行うように設計されています。

各販売エリアで利用可能な出口にアクセスできるようにするには、次のパスを使用してIMGに移動します。IMG→販売管理→システム修正→ユーザー出口。 SDの領域の各出口のドキュメントについて詳しく説明しています。

たとえば、販売伝票処理(契約、見積、または受注)でユーザExitを検索する場合は、上記のパスに従って、ノードSales→User ExitsのユーザExitを展開し続けます。 アイコン文書をクリックして、販売伝票処理で利用可能なすべてのユーザー出口を確認します。

S.No. User Exit & Description
1

USEREXIT_FIELD_MODIFICATION

画面属性を変更するために使用されます。

2

USEREXIT_SAVE_DOCUMENT

ユーザーが[保存]をクリックしたときに操作を実行するのに役立ちます。

3

USEREXIT_SAVE_DOCUMENT_PREPARE

入力フィールドを確認したり、フィールドに値を入力したり、ユーザーにポップアップを表示したり、ドキュメントを確認したりするのに非常に便利です。

4

USEREXIT_MOVE_FIELD_TO_VBAK

ユーザーヘッダーの変更がヘッダー作業領域に移動されるときに使用されます。

5

USEREXIT_MOVE_FIELD_TO_VBAP

ユーザーアイテムの変更がSAPアイテムの作業領域に移動されるときに使用されます。

ユーザー出口は、カスタマー出口と同じ目的を果たしますが、SDモジュールでのみ使用できます。 出口は、汎用モジュールの呼び出しとして実装されます。 ユーザー出口は、SAP標準プログラムの変更です。

REPORT ZUSEREXIT1.
TABLES:
   TSTC, TSTCT,
   TADIR, TRDIR, TFDIR, ENLFDIR,
   MODSAPT, MODACT.

DATA:
   JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE,
   field1(30),
   v_devclass LIKE TADIR-devclass.

PARAMETERS:
   P_TCODE LIKE TSTC-tcode OBLIGATORY.

SELECT SINGLE *
   FROM TSTC
   WHERE tcode EQ P_TCODE.

IF SY-SUBRC EQ 0.
   SELECT SINGLE *
   FROM TADIR

   WHERE pgmid = 'R3TR' AND
         object = 'PROG' AND
         obj_name = TSTC-pgmna.

   MOVE TADIR-devclass TO v_devclass.

   IF SY-SUBRC NE 0.
   SELECT SINGLE *
      FROM TRDIR
      WHERE name = TSTC-pgmna.

   IF TRDIR-subc EQ 'F'.
      SELECT SINGLE*
         FROM TFDIR
         WHERE pname = TSTC-pgmna.

      SELECT SINGLE *
         FROM ENLFDIR
         WHERE funcname = TFDIR-funcname.

      SELECT SINGLE *
         FROM TADIR
         WHERE pgmid = 'R3TR' AND
               object = 'FUGR' AND
               obj_name EQ ENLFDIR-area.
         MOVE TADIR-devclass TO v_devclass.
      ENDIF.
   ENDIF.

   SELECT*
      FROM TADIR
      INTO TABLE JTAB

      WHERE pgmid = 'R3TR' AND
            object = 'SMOD' AND
            devclass = v_devclass.

   SELECT SINGLE *
      FROM TSTCT
      WHERE sprsl EQ SY-LANGU AND
            tcode EQ P_TCODE.

   FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
   WRITE:/(19) 'Transaction Code - ',
      20(20) P_TCODE,
      45(50) TSTCT-ttext.
   SKIP.

   IF NOT JTAB[] IS INITIAL.
      WRITE:/(95) SY-ULINE.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.

      WRITE:/1 SY-VLINE,
            2 'Exit Name',
            21 SY-VLINE ,
            22 'Description',
            95 SY-VLINE.

      WRITE:/(95) SY-ULINE.
      LOOP AT JTAB.
         SELECT SINGLE * FROM MODSAPT
         WHERE sprsl = SY-LANGU AND
               name = JTAB-obj_name.

         FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
         WRITE:/1 SY-VLINE,
               2 JTAB-obj_name HOTSPOT ON,
               21 SY-VLINE ,
               22 MODSAPT-modtext,
               95 SY-VLINE.
      ENDLOOP.

      WRITE:/(95) SY-ULINE.
      DESCRIBE TABLE JTAB.
      SKIP.
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE:/'No of Exits:' , SY-TFILL.

   ELSE.
      FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
      WRITE:/(95) 'User Exit doesn’t exist'.
   ENDIF.
ELSE.

   FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
   WRITE:/(95) 'Transaction Code Does Not Exist'.
ENDIF.

AT LINE-SELECTION.
   GET CURSOR FIELD field1.
   CHECK field1(4) EQ 'JTAB'.
   SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
   CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.

処理中に、トランザクションコード「ME01」を入力し、F8(実行)ボタンを押します。 上記のコードは、次の出力を生成します-

image:/sap_abap/transaction_code_me01.jpg[トランザクションコード「ME01」