第一步 录制屏幕
1)Tcode: SHDB
2)click 'New recording'
3)输入记录名,如:ZSAFETYSTOCK 和要录制的tcode,如mm02,选择一些必要的参数,点击'Start recording'
4)录制完后保存,选中录制的记录,单击'Program',系统会帮你产生一个程序.
第二步 修改产生的程序.
我将程序使用的批输入传输方法改为调用Tcode方法
修改的地方,我已用红色标出
PARAMETERS: p_filenm LIKE rlgrap-filename. "修改此处
start-of-selection.
PERFORM upload_from_pc. "修改此处,为了在用户PC上导入文件
loop at itab_record into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
record-MATNR_001.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(12)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(12)'
record-KZSEL_12_002.
perform bdc_dynpro using 'SAPLMGMM' '0080'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-WERKS'
record-WERKS_003.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
*perform bdc_field using 'MAKT-MAKTX'
* record-MAKTX_004.
*perform bdc_field using 'MARC-BESKZ'
* record-BESKZ_005.
*perform bdc_field using 'MARC-LGPRO'
* record-LGPRO_006.
*perform bdc_field using 'MARC-LGFSB'
* record-LGFSB_007.
*perform bdc_field using 'MARC-DZEIT'
* record-DZEIT_008.
*perform bdc_field using 'MARC-WEBAZ'
* record-WEBAZ_009.
*perform bdc_field using 'MARC-FHORI'
* record-FHORI_010.
perform bdc_field using 'BDC_CURSOR'
'MARC-EISBE'.
perform bdc_field using 'MARC-EISBE'
record-EISBE_011.
perform bdc_transaction using 'MM02' record-MATNR_001.
clear record.
endloop.
*增加如下两个FORM
*----------------------------------------------------------------------
* AT SELECTION SCREEN
*----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filenm.
PERFORM query_filename USING p_filenm.
FORM query_filename USING t_filenm.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = 'C:/'
mask = ',*.*,'
mode = 'O'
IMPORTING
filename = t_filenm
EXCEPTIONS
inv_insys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc = 0.
p_filenm = t_filenm.
ENDIF.
ENDFORM. " query_filename
FORM upload_from_pc.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_filenm "Insert your code here
filetype = 'DAT'
TABLES
data_tab = itab_record
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
MESSAGE e001(zmsg) WITH '文件格式错误'.
STOP.
ENDIF.
ENDFORM. "UPLOAD_FROM_PC
1)Tcode: SHDB
2)click 'New recording'
3)输入记录名,如:ZSAFETYSTOCK 和要录制的tcode,如mm02,选择一些必要的参数,点击'Start recording'
4)录制完后保存,选中录制的记录,单击'Program',系统会帮你产生一个程序.
第二步 修改产生的程序.
我将程序使用的批输入传输方法改为调用Tcode方法
修改的地方,我已用红色标出
PARAMETERS: p_filenm LIKE rlgrap-filename. "修改此处
start-of-selection.
PERFORM upload_from_pc. "修改此处,为了在用户PC上导入文件
loop at itab_record into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
record-MATNR_001.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(12)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(12)'
record-KZSEL_12_002.
perform bdc_dynpro using 'SAPLMGMM' '0080'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-WERKS'
record-WERKS_003.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
*perform bdc_field using 'MAKT-MAKTX'
* record-MAKTX_004.
*perform bdc_field using 'MARC-BESKZ'
* record-BESKZ_005.
*perform bdc_field using 'MARC-LGPRO'
* record-LGPRO_006.
*perform bdc_field using 'MARC-LGFSB'
* record-LGFSB_007.
*perform bdc_field using 'MARC-DZEIT'
* record-DZEIT_008.
*perform bdc_field using 'MARC-WEBAZ'
* record-WEBAZ_009.
*perform bdc_field using 'MARC-FHORI'
* record-FHORI_010.
perform bdc_field using 'BDC_CURSOR'
'MARC-EISBE'.
perform bdc_field using 'MARC-EISBE'
record-EISBE_011.
perform bdc_transaction using 'MM02' record-MATNR_001.
clear record.
endloop.
*增加如下两个FORM
*----------------------------------------------------------------------
* AT SELECTION SCREEN
*----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_filenm.
PERFORM query_filename USING p_filenm.
FORM query_filename USING t_filenm.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = 'C:/'
mask = ',*.*,'
mode = 'O'
IMPORTING
filename = t_filenm
EXCEPTIONS
inv_insys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc = 0.
p_filenm = t_filenm.
ENDIF.
ENDFORM. " query_filename
FORM upload_from_pc.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_filenm "Insert your code here
filetype = 'DAT'
TABLES
data_tab = itab_record
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
OTHERS = 8.
IF sy-subrc NE 0.
MESSAGE e001(zmsg) WITH '文件格式错误'.
STOP.
ENDIF.
ENDFORM. "UPLOAD_FROM_PC