SAP采购订单屏幕BADI增强(实例)

発注伝票拡張後結果画面

ef415e26a51a4a94a0b3ded7100bb4cb.png

実装
ステップ1SE11でEKKOとEKPOの定義に拡張項目を追加する
EKKOの定義に既存の構造CI_EKKODBに拡張項目を追加する

ad9ad14b4b084edbb56631a503375dd0.png

EKPOの定義に既存の構造CI_EKPODBに拡張項目を追加する

4e98949a76794f0f81f564c8038e37c3.png

ステップ2SE80で汎用グループ実装、拡張画面定義及び拡張画面項目値の引渡汎用モジュールを実装する

 4bc9dd780e5f44e2b39cf16ed86bd743.png

ヘッダ拡張項目定義

 2416eca3b3d94d369eb08a6f1bc00ac8.png

※構造ZMM0S0130はZMM0S0020をインクルードしているので構造CI_EKKODBと同じ、ZMM0S0131も 構造CI_EKPODBと同じである。

 ae704eb8a7ea4d1a9917d1eb2a6648d9.png

明細拡張項目定義

 8c9d268a52e84e9ea7decee26bd347af.png

汎用モジュールソースコード

************************************************************************
* 機能ID   : MMP008
* 機能名称 : 購買発注伝票拡張(BADI)
* 機能概要 : 購買発注項目拡張
* 作成者   : XXX
* 作成日   : 2014/03/13
************************************************************************
* 変更履歴
* 変更管理番号 移送依頼   更新日付   更新者   変更内容
* xxxxxxxxxx   xxxxxxxxxx YYYY/MM/DD 漢字名称
* B0608        RD1K906450 2014/06/08 XXX 全拡張項目を標準画面に実装(発注))
*-----------------------------------------------------------------------
FUNCTION Z_MMP008_HEAD01_POP.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"  EXPORTING
*"     REFERENCE(F_EP_ZMM0S0130) TYPE  ZMM0S0130
*"----------------------------------------------------------------------

* 拡張画面値→標準へ戻す
  F_EP_ZMM0S0130 = ZMM0S0130.

* 画面属性項目値をCHAR属性項目にセット
  F_EP_ZMM0S0130-ZZBUFISKIN = ZMM0S0130-ZZBUFISKIN_W.  "移送入部振伝票金額
  SHIFT F_EP_ZMM0S0130-ZZBUFISKIN LEFT DELETING LEADING SPACE.

  F_EP_ZMM0S0130-ZZGIKADKIN = ZMM0S0130-ZZGIKARKIN_W.  "外貨金額
  SHIFT F_EP_ZMM0S0130-ZZGIKADKIN LEFT DELETING LEADING SPACE.

  F_EP_ZMM0S0130-ZZGIKADTCD = ZMM0S0130-ZZGIKADTCD_W.  "外貨通貨
  SHIFT F_EP_ZMM0S0130-ZZGIKADTCD LEFT DELETING LEADING SPACE.

ENDFUNCTION.
************************************************************************
* 機能ID   : MMP008
* 機能名称 : 購買発注伝票拡張(BADI)
* 機能概要 : 購買発注項目拡張
* 作成者   : XXX
* 作成日   : 2014/03/13
************************************************************************
* 変更履歴
* 変更管理番号 移送依頼   更新日付   更新者   変更内容
* xxxxxxxxxx   xxxxxxxxxx YYYY/MM/DD 漢字名称
* B0608        RD1K906450 2014/06/08 XXX 全拡張項目を標準画面に実装(発注))
*-----------------------------------------------------------------------
FUNCTION Z_MMP008_HEAD01_PUSH.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"  IMPORTING
*"     REFERENCE(F_IP_ZMM0S0130) TYPE  ZMM0S0130
*"----------------------------------------------------------------------

* 標準→拡張画面で受ける
  ZMM0S0130 = F_IP_ZMM0S0130.

* 関連NOが未指定で入力ルートがSAの場合のみ関連の自動提案を行う
  IF ZMM0S0130-ZZKRENO IS INITIAL AND
     ZMM0S0130-ZZNYUROKBN = CNS_ZZNYUROKBN.
    IF W_ZZKRENO IS INITIAL.
      CALL FUNCTION 'NUMBER_GET_NEXT'
        EXPORTING
          NR_RANGE_NR             = CNS_NRRANGENR
          OBJECT                  = CNS_OBJECT
*         QUANTITY                = '1'
*         SUBOBJECT               = ' '
*         TOYEAR                  = '0000'
*         IGNORE_BUFFER           = ' '
        IMPORTING
          NUMBER                  = W_ZZKRENO
*         QUANTITY                =
*         RETURNCODE              =
        EXCEPTIONS
          INTERVAL_NOT_FOUND      = 1
          NUMBER_RANGE_NOT_INTERN = 2
          OBJECT_NOT_FOUND        = 3
          QUANTITY_IS_0           = 4
          QUANTITY_IS_NOT_1       = 5
          INTERVAL_OVERFLOW       = 6
          BUFFER_OVERFLOW         = 7
          OTHERS                  = 8.
      IF SY-SUBRC IS INITIAL.
        ZMM0S0130-ZZKRENO = W_ZZKRENO.
      ELSE.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ELSE.
      ZMM0S0130-ZZKRENO = W_ZZKRENO.
    ENDIF.
  ENDIF.


* 数量金額拡張CHAR項目を画面数量金額属性Workにセット
  ZMM0S0130-ZZBUFISKIN_W = ZMM0S0130-ZZBUFISKIN.  "移送入部振伝票金額
  ZMM0S0130-ZZGIKARKIN_W = ZMM0S0130-ZZGIKADKIN.  "外貨金額
  ZMM0S0130-ZZGIKADTCD_W = ZMM0S0130-ZZGIKADTCD.  "外貨通貨

ENDFUNCTION.
************************************************************************
* 機能ID   : MMP008
* 機能名称 : 購買発注伝票拡張(BADI)
* 機能概要 : 購買発注項目拡張
* 作成者   : XXX
* 作成日   : 2014/03/13
************************************************************************
* 変更履歴
* 変更管理番号 移送依頼   更新日付   更新者   変更内容
* xxxxxxxxxx   xxxxxxxxxx YYYY/MM/DD 漢字名称
* B0608        RD1K906450 2014/06/08 XXX 全拡張項目を標準画面に実装(発注))
*-----------------------------------------------------------------------
FUNCTION Z_MMP008_INIT.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"----------------------------------------------------------------------

* 変数初期化
CLEAR : ZMM0S0130, ZMM0S0131, W_ZZKRENO.

ENDFUNCTION.
************************************************************************
* 機能ID   : MMP008
* 機能名称 : 購買発注伝票拡張(BADI)
* 機能概要 : 購買発注項目拡張
* 作成者   : XXX
* 作成日   : 2014/03/13
************************************************************************
* 変更履歴
* 変更管理番号 移送依頼   更新日付   更新者   変更内容
* xxxxxxxxxx   xxxxxxxxxx YYYY/MM/DD 漢字名称
* B0608        RD1K906450 2014/06/08 XXX 全拡張項目を標準画面に実装(発注))
*-----------------------------------------------------------------------
FUNCTION Z_MMP008_ITEM01_POP.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"  EXPORTING
*"     REFERENCE(F_EP_ZMM0S0131) TYPE  ZMM0S0131
*"----------------------------------------------------------------------

* 拡張画面値→標準へ戻す
  F_EP_ZMM0S0131 = ZMM0S0131.

* 画面属性項目値をCHAR属性項目にセット
  F_EP_ZMM0S0131-ZZDETTNK =   ZMM0S0131-ZZMEISITNK_W.    "明細単価
  SHIFT F_EP_ZMM0S0131-ZZDETTNK LEFT DELETING LEADING SPACE.

  F_EP_ZMM0S0131-ZZDETKIN =   ZMM0S0131-ZZDETCUKIN_W.    "明細金額
  SHIFT F_EP_ZMM0S0131-ZZDETKIN LEFT DELETING LEADING SPACE.

  F_EP_ZMM0S0131-ZZBUFIDTNK = ZMM0S0131-ZZBUFIDCUTNK_W.  "移送入部振明細単価
  SHIFT F_EP_ZMM0S0131-ZZBUFIDTNK LEFT DELETING LEADING SPACE.

  F_EP_ZMM0S0131-ZZBUFIDKIN = ZMM0S0131-ZZBUFIDCUKIN_W.  "移送入部振明細金額
  SHIFT F_EP_ZMM0S0131-ZZBUFIDKIN LEFT DELETING LEADING SPACE.

ENDFUNCTION.
************************************************************************
* 機能ID   : MMP008
* 機能名称 : 購買発注伝票拡張(BADI)
* 機能概要 : 購買発注項目拡張
* 作成者   : XXX
* 作成日   : 2014/03/13
************************************************************************
* 変更履歴
* 変更管理番号 移送依頼   更新日付   更新者   変更内容
* xxxxxxxxxx   xxxxxxxxxx YYYY/MM/DD 漢字名称
* B0608        RD1K906450 2014/06/08 XXX 全拡張項目を標準画面に実装(発注))
*-----------------------------------------------------------------------
FUNCTION Z_MMP008_ITEM01_PUSH.
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*"  IMPORTING
*"     REFERENCE(F_IP_ZMM0S0131) TYPE  ZMM0S0131
*"----------------------------------------------------------------------

* 標準→拡張画面で受ける
  ZMM0S0131 = F_IP_ZMM0S0131.

* 数量金額拡張CHAR項目を画面数量金額属性Workにセット
  ZMM0S0131-ZZMEISITNK_W   = ZMM0S0131-ZZDETTNK.    "明細単価
  ZMM0S0131-ZZDETCUKIN_W   = ZMM0S0131-ZZDETKIN.    "明細金額
  ZMM0S0131-ZZBUFIDCUTNK_W = ZMM0S0131-ZZBUFIDTNK.  "移送入部振明細単価
  ZMM0S0131-ZZBUFIDCUKIN_W = ZMM0S0131-ZZBUFIDKIN.  "移送入部振明細金額

ENDFUNCTION.

PBO、PAIメソッド実装する

9fd8cf78a6f740ada4f553e99c47061e.png

グローバル変数定義

 e85187e38a8b4cf9b6121cbab445acb5.png

FUNCTION-POOL ZMMP008.                      "MESSAGE-ID ..

* 画面用TABLES定義
TABLES :
ZMM0S0130,  " ヘッダ
ZMM0S0131.  " 明細

CONSTANTS CNS_NRRANGENR  TYPE INRI-NRRANGENR VALUE '01'.     "番号範囲番号
CONSTANTS CNS_OBJECT     TYPE INRI-OBJECT    VALUE 'ZCM001'. "番号範囲OBJ
CONSTANTS CNS_ZZNYUROKBN TYPE ZENYUROKBN     VALUE 'SA'.     "入力ルート区分

*----------------------------------------------------------------------*
* 変数宣言(DATA)
*----------------------------------------------------------------------*
DATA : OK-CODE  TYPE SY-UCOMM.          " INCLUDE LMEVIEWSF01用 OKCODE
DATA W_ZZKRENO TYPE ZEKRENO.     "関連No

INCLUDE LMEVIEWSF01.             " 標準部品

汎用モジュールの実装箇所

fa980967547942e988c95f22511c80f6.png

ステップ3SE18で拡張BADI(ME_GUI_PO_CUST)実装、拡張画面項目値の引渡メソッドを実装する

 c6519836449b41e296697b1c21342215.png

変数定義

 6eca51c4bb754fc3b6ee042f5562f25c.png

CNS_APPL	Constant	Private	Type	STRING40	                                                            	'PO'
CNS_ELEMENT_HEAD	Constant	Private	Type	STRING40	shmtable_s 内の 40 文字文字列	'HEADER'
CNS_ELEMENT_ITEM	Constant	Private	Type	STRING40	shmtable_s 内の 40 文字文字列	'ITEM'
CNS_SCNAME_HEAD	Constant	Private	Type	MEPO_SUBSCRIBERS-NAME	                                                            	'HEADERSCREEN01'
CNS_SCNAME_ITEM	Constant	Private	Type	MEPO_SUBSCRIBERS-NAME	                                                            	'ITEMSCREEN01'
CNS_PROGRAM	Constant	Private	Type	MEPO_SUBSCRIBERS-PROGRAM	                                                            	'SAPLZMMP008'
CNS_DYNPRO_HEAD	Constant	Private	Type	MEPO_SUBSCRIBERS-DYNPRO	                                                            	'9000'
CNS_DYNPRO_ITEM	Constant	Private	Type	MEPO_SUBSCRIBERS-DYNPRO	                                                            	'9010'
CNS_STRUCT_HEAD	Constant	Private	Type	MEPO_SUBSCRIBERS-STRUCT_NAME	                                                            	'ZMM0S0130'
CNS_STRUCT_ITEM	Constant	Private	Type	MEPO_SUBSCRIBERS-STRUCT_NAME	                                                            	'ZMM0S0131'
CNS_POSITION_HEAD	Constant	Private	Type	MEPO_SUBSCRIBERS-POSITION	                                                            	11
CNS_POSITION_ITEM	Constant	Private	Type	MEPO_SUBSCRIBERS-POSITION	                                                            	99
CNS_HEIGHT_HEAD	Constant	Private	Type	MEPO_SUBSCRIBERS-HEIGHT	                                                            	7
CNS_HEIGHT_ITEM	Constant	Private	Type	MEPO_SUBSCRIBERS-HEIGHT	                                                            	7
STR_ZMM0S0130	Instance Attribute	Private	Type	ZMM0S0130	                                                            	                                                                                                                                    
STR_ZMM0S0131	Instance Attribute	Private	Type	ZMM0S0131	                                                            	                                                                                                                                    
STR_ZMM0S0130_PBO	Instance Attribute	Private	Type	ZMM0S0130	                                                            	                                                                                                                                    
STR_ZMM0S0130_PAI	Instance Attribute	Private	Type	ZMM0S0130	                                                            	                                                                                                                                    
STR_ZMM0S0131_PBO	Instance Attribute	Private	Type	ZMM0S0131	                                                            	                                                                                                                                    
STR_ZMM0S0131_PAI	Instance Attribute	Private	Type	ZMM0S0131	                                                            	                                                                                                                                    

メソッドソースコード

*======================================================================================
*画面を開く  
*======================================================================================
METHOD IF_EX_ME_GUI_PO_CUST~SUBSCRIBE.

    DATA: L_STR_SUBSCRIBER LIKE LINE OF RE_SUBSCRIBERS.    " MEPO: 独自の画面の公開

*   APPLICATIONがPOの場合のみ処理を行う
    CHECK IM_APPLICATION = CNS_APPL.

*   画面設定判定
    CASE IM_ELEMENT.
      WHEN CNS_ELEMENT_HEAD.   " ヘッダ
*       ヘッダ画面設定
        CLEAR RE_SUBSCRIBERS[].
        L_STR_SUBSCRIBER-NAME        = CNS_SCNAME_HEAD.    " ビュー名
        L_STR_SUBSCRIBER-DYNPRO      = CNS_DYNPRO_HEAD.    " DYNPRO
        L_STR_SUBSCRIBER-PROGRAM     = CNS_PROGRAM.        " プログラム名
        L_STR_SUBSCRIBER-STRUCT_NAME = CNS_STRUCT_HEAD.    " テーブル名
        L_STR_SUBSCRIBER-LABEL       = TEXT-001.           " ラベル=ヘッダ
        L_STR_SUBSCRIBER-POSITION    = CNS_POSITION_HEAD.  " ポジション(タブの位置)
        L_STR_SUBSCRIBER-HEIGHT      = CNS_HEIGHT_HEAD.    " 高さ

      WHEN CNS_ELEMENT_ITEM.   " 明細
*       明細画面設定
        L_STR_SUBSCRIBER-NAME        = CNS_SCNAME_ITEM.    " ビュー名
        L_STR_SUBSCRIBER-DYNPRO      = CNS_DYNPRO_ITEM.    " DYNPRO
        L_STR_SUBSCRIBER-PROGRAM     = CNS_PROGRAM.        " プログラム名
        L_STR_SUBSCRIBER-STRUCT_NAME = CNS_STRUCT_ITEM.    " テーブル名
        L_STR_SUBSCRIBER-LABEL       = TEXT-002.           " ラベル=明細
        L_STR_SUBSCRIBER-POSITION    = CNS_POSITION_ITEM.  " ポジション(タブの位置)
        L_STR_SUBSCRIBER-HEIGHT      = CNS_HEIGHT_ITEM.    " 高さ

      WHEN OTHERS.
        " 処理なし
    ENDCASE.

    APPEND L_STR_SUBSCRIBER TO RE_SUBSCRIBERS.

  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~SUBSCRIBE

*======================================================================================
*支払条件の制御
*======================================================================================
  METHOD IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS.

    CONSTANTS L_CNS_ZZMETA TYPE C LENGTH 2 VALUE 'ZZ'. " FIELDNAME(頭2桁) アドオン項目判定用
    DATA L_STR_MAPPING LIKE LINE OF CH_MAPPING.

*   項目カタログのFIELDNAME頭2桁が"ZZ"の場合、支払条件のメタ項目を設定する
    LOOP AT CH_MAPPING[] INTO L_STR_MAPPING.
      IF L_STR_MAPPING-FIELDNAME+000(002) = L_CNS_ZZMETA.
        L_STR_MAPPING-METAFIELD = MMMFD_PMNTTRMS.         " 支払条件(METAFIELD)

        MODIFY CH_MAPPING[] FROM L_STR_MAPPING.
      ENDIF.
    ENDLOOP.

*   ソートテーブルCH_MAPPING[]の最初の1件目に強制カーソル指定されるため1件目にダミーレコードを挿入
    CLEAR L_STR_MAPPING.
    L_STR_MAPPING-METAFIELD  = MMMFD_PMNTTRMS.         " 支払条件(METAFIELD)
    INSERT L_STR_MAPPING INTO CH_MAPPING[] INDEX 1.

  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS

*======================================================================================
*DBデータ=>モデル
*======================================================================================
  METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL.
    DATA L_REF_PO_HEAD    TYPE REF TO IF_PURCHASE_ORDER_MM.          " 参照変数(IF_PURCHASE_ORDER_MM)
    DATA L_STR_MEPOHEADER TYPE MEPOHEADER.                           " GET_DATA用 MEPOHEADER
    DATA L_REF_PO_ITEM    TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM.     " 参照変数(IF_PURCHASE_ORDER_ITEM_MM)
    DATA L_STR_MEPOITEM   TYPE MEPOITEM.                             " GET_DATA用 MEPOITEM

    CASE IM_NAME.

*     ヘッダ
      WHEN CNS_SCNAME_HEAD.
        L_REF_PO_HEAD   ?= IM_MODEL.                              " IM_MODELをCAST
        L_STR_MEPOHEADER = L_REF_PO_HEAD->GET_DATA( ).            " IF_PURCHASE_ORDER_MM~GET_DATAでヘッダ項目取得
        MOVE-CORRESPONDING L_STR_MEPOHEADER TO STR_ZMM0S0130_PBO. " 拡張画面用構造に設定
        STR_ZMM0S0130_PBO-WAERS_W = L_STR_MEPOHEADER-WAERS.

*     明細
      WHEN CNS_SCNAME_ITEM.
        L_REF_PO_ITEM   ?= IM_MODEL.                              " IM_MODELをCAST
        L_STR_MEPOITEM = L_REF_PO_ITEM->GET_DATA( ).              " IF_PURCHASE_ORDER_MM~GET_DATAでヘッダ項目取得
        MOVE-CORRESPONDING L_STR_MEPOITEM TO STR_ZMM0S0131_PBO.   " 拡張画面用構造に設定
*
      WHEN OTHERS.
        " 処理なし
    ENDCASE.
  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL

*======================================================================================
*モデル=>DBデータ
*======================================================================================
  METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL.

    DATA :
      L_REF_PO_HEAD    TYPE REF TO IF_PURCHASE_ORDER_MM,         " 参照変数(IF_PURCHASE_ORDER_MM)
      L_STR_MEPOHEADER TYPE MEPOHEADER,                          " GET_DATA用 MEPOHEADER
      L_REF_PO_ITEM    TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM,    " 参照変数(IF_PURCHASE_ORDER_ITEM_MM)
      L_STR_MEPOITEM   TYPE MEPOITEM.                            " GET_DATA用 MEPOITEM

    CASE IM_NAME.

*     ヘッダ
      WHEN CNS_SCNAME_HEAD.
        L_REF_PO_HEAD   ?= IM_MODEL.                             " IM_MODELをCAST
        L_STR_MEPOHEADER = L_REF_PO_HEAD->GET_DATA( ).           " IF_PURCHASE_ORDER_MM~GET_DATAでヘッダ項目取得
        MOVE-CORRESPONDING STR_ZMM0S0130 TO L_STR_MEPOHEADER.    " 拡張画面用構造の値を設定
        CALL METHOD L_REF_PO_HEAD->SET_DATA( L_STR_MEPOHEADER ). " IF_PURCHASE_ORDER_MM~GET_DATAでヘッダ値更新


*     明細
      WHEN CNS_SCNAME_ITEM.
        L_REF_PO_ITEM   ?= IM_MODEL.                             " IM_MODELをCAST
        L_STR_MEPOITEM   = L_REF_PO_ITEM->GET_DATA( ).           " IF_PURCHASE_ORDER_ITEM_MM~GET_DATAでヘッダ項目取得
        MOVE-CORRESPONDING STR_ZMM0S0131 TO L_STR_MEPOITEM.      " 拡張画面用構造の値を設定
        CALL METHOD L_REF_PO_ITEM->SET_DATA( L_STR_MEPOITEM ).   " IF_PURCHASE_ORDER_ITEM_MM~GET_DATAでヘッダ値更新

      WHEN OTHERS.
        " 処理なし
    ENDCASE.
  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL

*======================================================================================
*拡張画面=>モデル
*======================================================================================
  METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP.
    DATA :
      L_REF_PO_HEAD    TYPE REF TO IF_PURCHASE_ORDER_MM,         " 参照変数(IF_PURCHASE_ORDER_MM)
      L_STR_MEPOHEADER TYPE MEPOHEADER,                          " GET_DATA用 MEPOHEADER
      L_REF_PO_ITEM    TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM,    " 参照変数(IF_PURCHASE_ORDER_ITEM_MM)
      L_STR_MEPOITEM   TYPE MEPOITEM.                            " GET_DATA用 MEPOITEM

    CASE IM_NAME.

*     ヘッダ
      WHEN CNS_SCNAME_HEAD.

*       PAI値受取(ヘッダ)
        CALL FUNCTION 'Z_MMP008_HEAD01_POP'
          IMPORTING
            F_EP_ZMM0S0130 = STR_ZMM0S0130_PAI.  "拡張画面WORK→標準WORKに取得

*       PBO≠PAIの場合、RE_CHANGED(変更あり)を設定
        IF STR_ZMM0S0130_PAI <> STR_ZMM0S0130_PBO.
          STR_ZMM0S0130 = STR_ZMM0S0130_PAI.
          RE_CHANGED = MMPUR_YES.
        ELSE.
          " 処理なし
        ENDIF.


*     明細
      WHEN CNS_SCNAME_ITEM.
*     PAI値受取(明細)
        CALL FUNCTION 'Z_MMP008_ITEM01_POP'
          IMPORTING
            F_EP_ZMM0S0131 = STR_ZMM0S0131_PAI.

*       PBO≠PAIの場合、RE_CHANGED(変更あり)を設定
        IF STR_ZMM0S0131_PAI <> STR_ZMM0S0131_PBO.
          STR_ZMM0S0131 = STR_ZMM0S0131_PAI.
          RE_CHANGED = MMPUR_YES.
        ELSE.
          " 処理なし
        ENDIF.


      WHEN OTHERS.
        " 処理なし
    ENDCASE.
  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP

*======================================================================================
*モデル=>拡張画面
*======================================================================================
  METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP.

*   画面判定
    CASE IM_NAME.
      WHEN CNS_SCNAME_HEAD.   " ヘッダ
*       PBO値受渡(ヘッダ)
        CALL FUNCTION 'Z_MMP008_HEAD01_PUSH'
          EXPORTING
            F_IP_ZMM0S0130 = STR_ZMM0S0130_PBO.   "標準WORK→拡張画面WORK

      WHEN CNS_SCNAME_ITEM.   " 明細
*        PBO値受渡(明細)
        CALL FUNCTION 'Z_MMP008_ITEM01_PUSH'
          EXPORTING
            F_IP_ZMM0S0131 = STR_ZMM0S0131_PBO.



      WHEN OTHERS.
        " 処理なし
    ENDCASE.

  ENDMETHOD.                    "IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP
SE24でBADI(ME_PROCESS_PO_CUST)のIF(IF_EX_ME_PROCESS_PO_CUST)を実装して、変数初期化する。

※つまり、BADIを定義しなくても SE24で直ちにIFを利用してクラスを定義して同じメソッドを実装できる。

ここまで、実装完了。

補足:正常の場合、画面が定義されてから、BADIの IF_EX_ME_GUI_PO_CUST~SUBSCRIBE.実装されたら 且つ IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS.も実装されて、標準購買伝票に拡張画面が表示されます。表示できない場合、下記定義追加必要。

補足:BAPIコールする場合、BAPIの拡張構造も更新する必要です。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值