*&---------------------------------------------------------------------*
*& Report YH_BDC_MM01_V1
*&
*&---------------------------------------------------------------------*
REPORT YH_BDC_MM01_V1 NO STANDARD PAGE HEADING MESSAGE-ID zm001.
TABLES : T100.
DATA: BEGIN OF inputdata_Str ,
matnr(18),
MBRSH(1),
mtart(04),
maktx(40),
meins(03),
END OF inputdata_Str,
basicdatatab like inputdata_Str OCCURS 100 WITH HEADER LINE.
DATA:bdcdata LIKE BDCDATA OCCURS 0 WITH HEADER LINE,"定义BDC内表
msgtab LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,"定义消息内表
L_MSTRING(480). "消息字符串
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETERS: filenam1(128) TYPE c.
SELECTION-SCREEN END OF BLOCK blk1.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filenam1.
PERFORM. choose_input_file USING filenam1.
AT SELECTION-SCREEN.
PERFORM. check_file_whether_exist USING filenam1.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM. get_data_from_file TABLES basicdatatab USING filenam1.
loop at basicdatatab into inputdata_Str.
PERFORM. proces_update_data USING inputdata_Str.
CLEAR bdcdata[]. "清空BDCDATA的所有数据
endloop.
PERFORM. list_return_message.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form choose_input_file
*&---------------------------------------------------------------------*
FORM. choose_input_file USING pfile.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = '*.xls'
def_path = 'D:\'
mask = ',*.xls.'
mode = 'O'
title = 'Choose Input file'(002)
IMPORTING
filename = pfile
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
ENDFORM. " choose_input_file
*&---------------------------------------------------------------------*
*& Form check_file_whether_exist
*&---------------------------------------------------------------------*
FORM. check_file_whether_exist USING filename.
DATA: inputfile TYPE string,
result TYPE c.
inputfile = filename.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = inputfile
RECEIVING
result = result
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.
IF result IS INITIAL.
MESSAGE e000 WITH 'File' inputfile ' does not exist'.
ENDIF.
ENDFORM. " check_file_whether_exist
*&---------------------------------------------------------------------*
*& Form proces_update_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM. proces_update_data USING record like basicdatatab.
perform. bdc_dynpro using 'SAPLMGMM' '0060'.
perform. bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform. bdc_field using 'BDC_OKCODE'
'/00'.
perform. bdc_field using 'RMMG1-MATNR'
record-MATNR.
perform. bdc_field using 'RMMG1-MBRSH'
record-MBRSH.
perform. bdc_field using 'RMMG1-MTART'
record-MTART.
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)'
'X'.
perform. bdc_field using 'MSICHTAUSW-KZSEL(02)'
'X'.
perform. bdc_dynpro using 'SAPLMGMM' '4004'.
perform. bdc_field using 'BDC_OKCODE'
'/00'.
perform. bdc_field using 'MAKT-MAKTX'
record-MAKTX.
perform. bdc_field using 'BDC_CURSOR'
'MARA-MEINS'.
perform. bdc_field using 'MARA-MEINS'
record-MEINS.
perform. bdc_field using 'MARA-MTPOS_MARA'
'NORM'.
perform. bdc_dynpro using 'SAPLMGMM' '4004'.
perform. bdc_field using 'BDC_OKCODE'
'/00'.
perform. bdc_field using 'BDC_CURSOR'
'MAKT-MAKTX'.
perform. bdc_field using 'MAKT-MAKTX'
record-MAKTX.
perform. bdc_dynpro using 'SAPLSPO1' '0300'.
perform. bdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION'MM01' USING bdcdata MODE 'N' MESSAGES INTO msgtab.
ENDFORM. " proces_update_data
*&---------------------------------------------------------------------*
*& Form list_return_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM. list_return_message .
***输出系统消息
WRITE : / '消息类型', 20 '消息内容'.
LOOP AT msgtab.
SELECT single *
FROM T100
WHERE SPRSL = msgtab-MSGSPRA
AND ARBGB = msgtab-MSGID
AND MSGNR = msgtab-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH msgtab-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH msgtab-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH msgtab-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH msgtab-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH msgtab-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH msgtab-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH msgtab-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH msgtab-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / msgtab-MSGTYP, 20 L_MSTRING.
ELSE.
WRITE: / msgtab.
ENDIF.
ENDLOOP.
ENDFORM. " list_return_message
*&---------------------------------------------------------------------*
*& Form get_data_from_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM. get_data_from_file tables datatab USING inputfile .
DATA: filename LIKE rlgrap-filename,
datacont LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,
maxcolno TYPE i.
FIELD-SYMBOLS TYPE ANY.
REFRESH datatab. CLEAR datatab.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE datatab TO .
IF sy-subrc NE 0.
maxcolno = sy-index - 1.
EXIT.
ENDIF.
ENDDO.
filename = inputfile.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = filename
i_begin_col = 1
i_begin_row = 3
i_end_col = maxcolno
i_end_row = 1000
TABLES
intern = datacont
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
LOOP AT datacont.
AT NEW row.
CLEAR datatab.
ENDAT.
ASSIGN COMPONENT datacont-col OF STRUCTURE datatab TO .
= datacont-value.
AT END OF row.
APPEND datatab. CLEAR datatab.
ENDAT.
ENDLOOP.
ENDFORM. " get_data_from_file
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
FORM. BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
FORM. BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13547743/viewspace-680397/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13547743/viewspace-680397/