如何使用SMOD和CMOD進行SD的使用者增強

dicksonjyl560101發表於2020-03-10

如何使用SMOD和CMOD進行SD的使用者增強

 

 

1、關於增強的簡單介紹

1.1 SMOD包含具體的增強,而CMOD是包含一組SMOD編寫的增強. 

1.2 User exits (Function module exits)是sap提供出口,它的命名規則如下:

EXIT_<program name><3 digit suffix> 

示例:

sd的VA01事務,對應的程式是SAPMV45A ,你會在程式裡查到(用CALL CUSTOMER-FUNCTION字串)如下程式碼:

CALL CUSTOMER-FUNCTION '003'

  exporting

    xvbak   = vbak

    xvbuk   = vbuk

    xkomk   = tkomk

  importing

    lvf_subrc = lvf_subrc

  tables

    xvbfa = xvbfa

    xvbap = xvbap

    xvbup = xvbup.

則exit calls function module的名稱就是:EXIT_SAPMV45A_003

 

 

2、先試用SMOD建立一個SAP增強

 

2.1、選擇一個增強,如:SDVFX001 ,點選修改,進入sap增強維護螢幕;

2.2、點選“元件”按鈕,進入元件維護屏;

2.3、將游標移到“功能模組名”,輸入模組名,如:EXIT_SAPLV60B_001;

2.4、選擇“程式碼修改”按鈕進入函式模組;

2.5、雙擊函式模組的包含單元,進入包含單元加入自定義程式碼並啟用儲存;

 

 

3、使用CMOD建立增強專案

 

3.1、輸入自定義的專案名,點選“建立”;

3.2、進入增強專案,選擇“配置增強”,進入增強配置螢幕;

3.3、輸入增強名如:SDVFX001

3.4、儲存,並退出;

 

 

4、使用CMOD將增強專案啟用,便大工告成。

 

如何查詢

*判斷是否存在相應增強的定義(SMOD)

    select single name from modsapa into mod0-name

           where name   = 'PPCO0002'.

  if sy-subrc = 0.

  endif.

  select single * from tadir into ps_tadir_db

                             where pgmid      =   'R3TR'

                             and   object        =  'SMOD'

                             and   obj_name   =  'PPCO0002'.

 

*判斷是否存在相應增強專案的定義(CMOD)

          SELECT SINGLE name FROM MODATTR into mod0-name

                 WHERE NAME   = 'PPCO0002'..

 

*提取增強的定義的元件 (可以用此反查增強定義)

  select * from modsap

         where name = 'PPCO0002'.

 

*判斷該增強是否移植到BADI實現

*Enhancement & has already been migrated in Business Add-In definition

  select single migrated badi_def       into (migrated, exit_name)

        from modsapa where name = modname.

  if sy-subrc = 0 and migrated = seex_true.

    message s621 with modname exit_name.

    check mode ne 'CHAM'.

  endif.

 

MODTYP 型別:

E : 功能退出

S : 螢幕

T : 表

C : GUI程式碼

 

SAP增強存在MODSAP表內

 

*獲取增強元件的參見函式MOD_SAP_MEMBER_TEXT

*獲得退出功能模組的資訊

      select single * from tftit

             where "SPRAS" = '1' AND "FUNCNAME" = 'EXIT_SAPLCORE_001'

      if sy-subrc = 0.

      endif.

 

*值得學習的函式

MOD_KUN_ACTIVATE(會操作相關報表)

 

 

https://mp.weixin.qq.com/s/aCzXtfJeT-QTTQvPl6Lz0g

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2679353/,如需轉載,請註明出處,否則將追究法律責任。

相關文章