SHDB - ooxxvv/MySAPnotes GitHub Wiki
PageOutline {{{#!comment -------------------- 以上的部份是固定的,不要變動 ----- --------------------------------------- 在建立連結時,請標明連結的頁面類型,例如:wiki:WikiStart,而不要只用 WikiStart ----- }}}
SHDB
- Transaction Recorder/ Recording Overview
Features
-
畫面操作的記錄檔。
-
可自動產生 Program
-
會包含兩個固定的函式 (PERFORM)
-
可選擇執行方式
-
Generate session -> 不直接執行,由 SM35 管理所產生的 session 。
-
Call transaction -> 直接執行。
Program
- 用來自動建立可呼叫此 BDC 的程式(Report) 。
- 自動產生的程式預設會以 Dataset 做為要輸入的資料來源,可以在程式中修改
- 程式會自動產生 Selection Screen ,可讓使用者決定和 Session 相關的選項,無法在程式中修改。
{{{#!abap
*此為將SHDB所自動產生的程式碼簡化範例
REPORT zjoey_test_20061124 NO STANDARD PAGE HEADING LINE-SIZE 255. *--------程式固定自動代入,不可刪除 INCLUDE bdcrecx1. *--------程式自動產生讓使用者輸入Dataset的輸入格 PARAMETERS/ dataset(132) LOWER CASE. *--------程式自動產生要存放輸入資料的Structure DATA/ BEGIN OF record OCCURS 0, matnr_001(018), mbrsh_002(001), mtart_003(004), kzsel_01_004(001), kzsel_02_005(001), maktx_006(040), meins_007(003), mtpos_mara_008(004), maktx_009(040), END OF record.
START-OF-SELECTION. *--------將要輸入的資料存入 Internal Table 中 PERFORM input_record.
*--------程式自動產生,用來處理使用者輸入的Dataset
- PERFORM open_dataset USING dataset.
*--------程式自動產生,不可刪除 PERFORM open_group.
LOOP AT record. *--------將Internal Table 中的資料輸入至系統中 PERFORM bdc_input_field. ENDLOOP.
*--------程式自動產生,不可刪除 PERFORM close_group.
*--------程式自動產生,用來處理使用者輸入的Dataset
- PERFORM close_dataset USING dataset.
&--------------------------------------------------------------------- *& Form bdc_input_field &---------------------------------------------------------------------
- text ----------------------------------------------------------------------
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM bdc_input_field . *--------此為系統自動產生,呼叫BDC的程式碼,不可刪除 PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RMMG1-MATNR'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'RMMG1-MATNR' record-matnr_001. PERFORM bdc_field USING 'RMMG1-MBRSH' record-mbrsh_002. PERFORM bdc_field USING 'RMMG1-MTART' record-mtart_003. PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'. PERFORM bdc_field USING 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(02)'. PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'. PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)' record-kzsel_01_004. PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(02)' record-kzsel_02_005. PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'MAKT-MAKTX' record-maktx_006. PERFORM bdc_field USING 'BDC_CURSOR' 'MARA-MEINS'. PERFORM bdc_field USING 'MARA-MEINS' record-meins_007. PERFORM bdc_field USING 'MARA-MTPOS_MARA' record-mtpos_mara_008. PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. PERFORM bdc_field USING 'BDC_CURSOR' 'MAKT-MAKTX'. PERFORM bdc_field USING 'MAKT-MAKTX' record-maktx_009. PERFORM bdc_transaction USING 'MM01'.
ENDFORM. " bdc_input_field &--------------------------------------------------------------------- *& Form input_record &---------------------------------------------------------------------
- text ----------------------------------------------------------------------
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM input_record . *--------將要輸入的資料存入 Internal Table 中 record-matnr_001='TEST002'. record-mbrsh_002='A'. record-mtart_003='FERT'. record-kzsel_01_004='X'. record-kzsel_02_005='X'. record-maktx_006='XXXXXXXXXX'. record-meins_007='PC'. record-mtpos_mara_008='ZMUS'. record-maktx_009='XXXXXXXXXX'. APPEND record. ENDFORM. " input_record
}}}
Function Module
- 用來自動建立可呼叫此 BDC 的 Function Module
{{{#!abap
*此為呼叫SHDB 自動產生的Function Module 的程式碼範例
REPORT zjoey_test_20061124 NO STANDARD PAGE HEADING LINE-SIZE 255. *------宣告要存放輸入資料的Internal Table , 建議全部都 LIKE BDCDATA-FVAL DATA/ BEGIN OF record OCCURS 0, matnr_001 LIKE bdcdata-fval, mbrsh_002 LIKE bdcdata-fval, mtart_003 LIKE bdcdata-fval, kzsel_01_004 LIKE bdcdata-fval, kzsel_02_005 LIKE bdcdata-fval, maktx_006 LIKE bdcdata-fval, meins_007 LIKE bdcdata-fval, mtpos_mara_008 LIKE bdcdata-fval, maktx_009 LIKE bdcdata-fval, END OF record.
*** End generated data section ***
START-OF-SELECTION. *--------將要輸入的資料存入 Internal Table 中 PERFORM input_record.
LOOP AT record. *--------將Internal Table 中的資料輸入至系統中 PERFORM bdc_input_field. ENDLOOP.
&--------------------------------------------------------------------- *& Form bdc_input_field &---------------------------------------------------------------------
- text ----------------------------------------------------------------------
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM bdc_input_field . *--------呼叫 SHDB 所產生的 Function CALL FUNCTION 'ZJOEY_TEST_BDC' EXPORTING ctu ='X' mode ='N' UPDATE ='L'
- GROUP =
- USER =
- KEEP =
- HOLDDATE = nodata ='/' matnr_001 =record-matnr_001 mbrsh_002 =record-mbrsh_002 mtart_003 =record-mtart_003 kzsel_01_004 =record-kzsel_01_004 kzsel_02_005 =record-kzsel_02_005 maktx_006 =record-maktx_006 meins_007 =record-meins_007 mtpos_mara_008 =record-mtpos_mara_008 maktx_009 =record-maktx_009
- IMPORTING
- SUBRC =
- TABLES
- MESSTAB = . ENDFORM. " bdc_input_field &--------------------------------------------------------------------- *& Form input_record &---------------------------------------------------------------------
- text ----------------------------------------------------------------------
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM input_record . *--------將要輸入的資料存入 Internal Table 中 record-matnr_001='TEST001'. record-mbrsh_002='A'. record-mtart_003='FERT'. record-kzsel_01_004='X'. record-kzsel_02_005='X'. record-maktx_006='XXXXXXXXXX'. record-meins_007='PC'. record-mtpos_mara_008='ZMUS'. record-maktx_009='XXXXXXXXXX'. APPEND record. ENDFORM. " input_record
}}}
{{{#!comment
TCODE
TABLE
FUNCTION, PROGRAM & CLASS
USER EXIST
}}}