*&---------------------------------------------------------------------*
*& Report ZMMR030
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmmr030 .
DATA : BEGIN OF itab OCCURS 0 ,
lineno ( 5 ) TYPE c ,
matnr LIKE eord -matnr ,
werks LIKE eord -werks ,
vdatu LIKE eord -vdatu ,
bdatu LIKE eord -bdatu ,
lifnr LIKE eord -lifnr ,
ekorg LIKE eord -ekorg ,
feskz LIKE rm06w -feskz ,
autet LIKE eord -autet ,
reswk LIKE eord -reswk ,
END OF itab .
DATA : row_count TYPE i .
DATA : BEGIN OF i_log ,
lineno ( 5 ) TYPE c ,
matnr LIKE eord -matnr ,
werks LIKE eord -werks ,
message1 ( 100 ) TYPE c .
INCLUDE STRUCTURE bdcmsgcoll .
DATA : END OF i_log .
DATA :it_log LIKE i_log OCCURS 0 WITH HEADER LINE .
DATA : it_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE ,
it_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE .
CONSTANTS :
c_begin_row TYPE i VALUE 1 , "Beginning row of excel file
c_begin_col TYPE i VALUE 1 , "Beginning column of excel file
c_end_row TYPE i VALUE 9999 , "Ending row of excel file
c_end_col TYPE i VALUE 10 . "Ending column of excel file
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1 .
PARAMETERS : pc_file ( 80 ) .
SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2 .
PARAMETERS : p_chk1 RADIOBUTTON GROUP 1 . "InterCompany
PARAMETERS : p_chk2 DEFAULT 'X' RADIOBUTTON GROUP 1 . "External
SELECTION-SCREEN END OF BLOCK b2 .
INITIALIZATION .
t1 = '选择文件' .
t2 = '选择类型' .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pc_file .
PERFORM sub_find USING pc_file .
START-OF-SELECTION .
PERFORM uploaddata . "从PC中上传文件到内表中
DESCRIBE TABLE itab LINES row_count .
IF p_chk2 = 'X' .
LOOP AT itab .
PERFORM get_bdc_external USING itab -lineno itab -matnr itab -werks itab -lifnr itab -vdatu itab -bdatu itab -ekorg itab -feskz itab -autet .
ENDLOOP .
ENDIF .
IF p_chk1 = 'X' .
LOOP AT itab .
PERFORM get_bdc_intercompany USING itab -lineno itab -matnr itab -werks itab -lifnr itab -vdatu itab -bdatu itab -ekorg itab -feskz itab -autet itab -reswk .
ENDLOOP .
ENDIF .
IF sy -subrc = 0 .
PERFORM showlog .
ELSE .
MESSAGE 'FALSE' TYPE 'I' .
ENDIF .
*&---------------------------------------------------------------------*
*& Form sub_find
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PC_FILE text
*----------------------------------------------------------------------*
FORM sub_find USING pc_file .
* Data for open dialog
DATA : l_filetab TYPE filetable ,
l_rc TYPE i .
CLEAR l_filetab .
REFRESH l_filetab .
* Open dialog
CALL METHOD cl_gui_frontend_services =>file_open_dialog
EXPORTING
* WINDOW_TITLE = 'SAP Custom - Open File'
* DEFAULT_EXTENSION =
default_filename = '*.xls'
* FILE_FILTER = '*.xls'
initial_directory = 'D:\'
multiselection = ''
CHANGING
file_table = l_filetab
rc = l_rc
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4 .
* Get file path
CHECK l_rc EQ 1 .
READ TABLE l_filetab INDEX 1 INTO pc_file .
ENDFORM . "sub_find
*&---------------------------------------------------------------------*
*& 2.RFORM uploaddata. "从PC中上传文件到内表中
*&---------------------------------------------------------------------*
FORM uploaddata .
DATA : BEGIN OF i_excel OCCURS 0 .
INCLUDE STRUCTURE alsmex_tabline .
DATA : END OF i_excel .
DATA : l_answer ( 1 ) TYPE c .
DATA : l_column TYPE i .
FIELD-SYMBOLS : <fs> .
DATA : l_pathname LIKE rlgrap -filename .
MOVE pc_file TO l_pathname .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = l_pathname
i_begin_col = c_begin_col
i_begin_row = c_begin_row
i_end_col = c_end_col
i_end_row = c_end_row
TABLES
intern = i_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3 .
IF sy -subrc <> 0 .
MESSAGE ID sy -msgid TYPE sy -msgty NUMBER sy -msgno
WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
ELSE .
IF i_excel[] IS INITIAL .
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
* DEFAULTOPTION = 'Y'
diagnosetext1 = 'No data in excel'
* DIAGNOSETEXT2 = ' '
* DIAGNOSETEXT3 = ' '
textline1 = 'No data in excel'
* TEXTLINE2 = ' '
titel = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
answer = l_answer .
ELSE .
DELETE i_excel WHERE row = '0001' .
SORT i_excel BY row col .
LOOP AT i_excel .
MOVE i_excel -col TO l_column .
ASSIGN COMPONENT l_column OF STRUCTURE itab TO <fs> .
MOVE i_excel - value TO <fs> .
AT END OF row .
APPEND itab .
CLEAR itab .
ENDAT .
ENDLOOP .
ENDIF .
ENDIF .
ENDFORM . "uploaddata
*&---------------------------------------------------------------------*
*& Form get_bdc_external
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_bdc_external USING lineno matnr werks lifnr vdatu bdatu ekorg feskz autet .
DATA : msg_1 ( 50 ) TYPE c VALUE '当前上传' .
DATA : msg_2 ( 50 ) TYPE c VALUE '行' .
DATA : msg_3 ( 50 ) TYPE c VALUE ',共' .
DATA : msg_4 ( 4 ) TYPE c .
msg_4 = row_count .
CONCATENATE msg_1 lineno INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CONCATENATE msg_1 msg_3 INTO msg_1 .
CONCATENATE msg_1 msg_4 INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = msg_1 .
PERFORM bdc_dynpro USING 'SAPLMEOR' '0200' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-MATNR' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-MATNR' matnr . "物料号
PERFORM bdc_field USING 'EORD-WERKS' werks . "工厂
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-VDATU(01)' vdatu .
PERFORM bdc_field USING 'EORD-BDATU(01)' bdatu .
PERFORM bdc_field USING 'EORD-LIFNR(01)' lifnr . "供应商代号
PERFORM bdc_field USING 'EORD-EKORG(01)' ekorg . "采购组织
PERFORM bdc_field USING 'RM06W-FESKZ(01)' feskz . "定货源
PERFORM bdc_field USING 'EORD-AUTET(01)' autet . "mrp
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '=BU' .
CALL TRANSACTION 'ME01' USING it_bdc
MODE 'N' "A前台显示、N后台运行
UPDATE 'S'
MESSAGES INTO it_bdcmsg .
it_log -matnr = matnr .
it_log -werks = werks .
it_log -lineno = lineno .
LOOP AT it_bdcmsg .
MESSAGE ID it_bdcmsg -msgid
TYPE it_bdcmsg -msgtyp
NUMBER it_bdcmsg -msgnr
WITH it_bdcmsg -msgv1 it_bdcmsg -msgv2 it_bdcmsg -msgv3 it_bdcmsg -msgv4
INTO it_log -message1 .
it_log -msgtyp = it_bdcmsg -msgtyp .
it_log -dynumb = it_bdcmsg -dynumb .
it_log -tcode = it_bdcmsg -tcode .
it_log -msgnr = it_bdcmsg -msgnr .
it_log -msgid = it_bdcmsg -msgid .
APPEND it_log .
ENDLOOP .
CLEAR : it_bdc ,it_bdc[] ,it_bdcmsg , it_bdcmsg[] .
ENDFORM . "get_bdc_external
*&---------------------------------------------------------------------*
*& Form get_bdc_intercompany
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_bdc_intercompany USING lineno matnr werks lifnr vdatu bdatu ekorg feskz autet reswk .
DATA : msg_1 ( 50 ) TYPE c VALUE '当前上传' .
DATA : msg_2 ( 50 ) TYPE c VALUE '行' .
DATA : msg_3 ( 50 ) TYPE c VALUE ',共' .
DATA : msg_4 ( 4 ) TYPE c .
msg_4 = row_count .
CONCATENATE msg_1 lineno INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CONCATENATE msg_1 msg_3 INTO msg_1 .
CONCATENATE msg_1 msg_4 INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = msg_1 .
PERFORM bdc_dynpro USING 'SAPLMEOR' '0200' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-MATNR' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-MATNR' matnr . "物料号
PERFORM bdc_field USING 'EORD-WERKS' werks . "工厂
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-VDATU(01)' vdatu .
PERFORM bdc_field USING 'EORD-BDATU(01)' bdatu .
PERFORM bdc_field USING 'EORD-LIFNR(01)' lifnr . "供应商代号
PERFORM bdc_field USING 'EORD-EKORG(01)' ekorg . "采购组织
PERFORM bdc_field USING 'EORD-RESWK(01)' reswk . "工厂
PERFORM bdc_field USING 'RM06W-FESKZ(01)' feskz . "定货源
PERFORM bdc_field USING 'EORD-AUTET(01)' autet . "mrp
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '=BU' .
CALL TRANSACTION 'ME01' USING it_bdc
MODE 'N' "A前台显示、N后台运行
UPDATE 'S'
MESSAGES INTO it_bdcmsg .
it_log -matnr = matnr .
it_log -werks = werks .
it_log -lineno = lineno .
LOOP AT it_bdcmsg .
MESSAGE ID it_bdcmsg -msgid
TYPE it_bdcmsg -msgtyp
NUMBER it_bdcmsg -msgnr
WITH it_bdcmsg -msgv1 it_bdcmsg -msgv2 it_bdcmsg -msgv3 it_bdcmsg -msgv4
INTO it_log -message1 .
it_log -msgtyp = it_bdcmsg -msgtyp .
it_log -dynumb = it_bdcmsg -dynumb .
it_log -tcode = it_bdcmsg -tcode .
it_log -msgnr = it_bdcmsg -msgnr .
it_log -msgid = it_bdcmsg -msgid .
ENDLOOP .
APPEND it_log .
CLEAR : it_bdc ,it_bdc[] ,it_bdcmsg , it_bdcmsg[] .
ENDFORM . "get_bdc_intercompany
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro .
CLEAR it_bdc .
it_bdc - program = program .
it_bdc - dynpro = dynpro .
it_bdc -dynbegin = 'X' .
APPEND it_bdc .
ENDFORM . "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval .
"IF FVAL <> NODATA.
CLEAR it_bdc .
it_bdc -fnam = fnam .
it_bdc -fval = fval .
APPEND it_bdc .
"ENDIF.
ENDFORM . "bdc_field
*&---------------------------------------------------------------------*
*& Form showlog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM showlog .
DATA :alv_fieldcat TYPE slis_t_fieldcat_alv .
DATA :wa_alv_fieldcat TYPE LINE OF slis_t_fieldcat_alv .
DATA :alv_layout TYPE slis_layout_alv .
DATA : l_cellcolor TYPE slis_specialcol_alv .
alv_layout -colwidth_optimize = 'X' . "自动列宽
* ALV_LAYOUT-NO_MIN_LINESIZE = ''.
* ALV_LAYOUT-BOX_FIELDNAME = 'SET'.
" alv_layout-info_fieldname = 'LINECOLOR'."设置行颜色
" alv_layout-coltab_fieldname = 'COLTAB'."设置单元格颜色
CLEAR wa_alv_fieldcat .
REFRESH alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'TCODE' .
wa_alv_fieldcat -seltext_m = 'T-CODE' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'LINENO' .
wa_alv_fieldcat -seltext_m = '行号' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MATNR' .
wa_alv_fieldcat -seltext_m = '物料号' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'WERKS' .
wa_alv_fieldcat -seltext_m = '工厂' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGTYP' .
wa_alv_fieldcat -seltext_m = 'MSGTYP' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'DYNUMB' .
wa_alv_fieldcat -seltext_m = 'DYNUMB' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGNR' .
wa_alv_fieldcat -seltext_m = 'MSGNR' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGID' .
wa_alv_fieldcat -seltext_m = 'MESGID' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MESSAGE1' .
wa_alv_fieldcat -seltext_m = '信息内容' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy -repid
is_layout = alv_layout
it_fieldcat = alv_fieldcat
i_grid_title = '运行日志' "标题
" IT_EVENT_EXIT = GIT_EVENT_EXIT "重要
" I_CALLBACK_USER_COMMAND = 'FRM_UCOMM' "调用用户点击事件
" I_CALLBACK_PF_STATUS_SET = 'SET_PF' "设置打印按钮
TABLES
t_outtab = it_log[]
EXCEPTIONS
program_error = 1
OTHERS = 2 .
IF sy -subrc <> 0 .
MESSAGE ID sy -msgid TYPE sy -msgty NUMBER sy -msgno
WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
ENDIF .
ENDFORM . "showlog
*& Report ZMMR030
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zmmr030 .
DATA : BEGIN OF itab OCCURS 0 ,
lineno ( 5 ) TYPE c ,
matnr LIKE eord -matnr ,
werks LIKE eord -werks ,
vdatu LIKE eord -vdatu ,
bdatu LIKE eord -bdatu ,
lifnr LIKE eord -lifnr ,
ekorg LIKE eord -ekorg ,
feskz LIKE rm06w -feskz ,
autet LIKE eord -autet ,
reswk LIKE eord -reswk ,
END OF itab .
DATA : row_count TYPE i .
DATA : BEGIN OF i_log ,
lineno ( 5 ) TYPE c ,
matnr LIKE eord -matnr ,
werks LIKE eord -werks ,
message1 ( 100 ) TYPE c .
INCLUDE STRUCTURE bdcmsgcoll .
DATA : END OF i_log .
DATA :it_log LIKE i_log OCCURS 0 WITH HEADER LINE .
DATA : it_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE ,
it_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE .
CONSTANTS :
c_begin_row TYPE i VALUE 1 , "Beginning row of excel file
c_begin_col TYPE i VALUE 1 , "Beginning column of excel file
c_end_row TYPE i VALUE 9999 , "Ending row of excel file
c_end_col TYPE i VALUE 10 . "Ending column of excel file
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1 .
PARAMETERS : pc_file ( 80 ) .
SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2 .
PARAMETERS : p_chk1 RADIOBUTTON GROUP 1 . "InterCompany
PARAMETERS : p_chk2 DEFAULT 'X' RADIOBUTTON GROUP 1 . "External
SELECTION-SCREEN END OF BLOCK b2 .
INITIALIZATION .
t1 = '选择文件' .
t2 = '选择类型' .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pc_file .
PERFORM sub_find USING pc_file .
START-OF-SELECTION .
PERFORM uploaddata . "从PC中上传文件到内表中
DESCRIBE TABLE itab LINES row_count .
IF p_chk2 = 'X' .
LOOP AT itab .
PERFORM get_bdc_external USING itab -lineno itab -matnr itab -werks itab -lifnr itab -vdatu itab -bdatu itab -ekorg itab -feskz itab -autet .
ENDLOOP .
ENDIF .
IF p_chk1 = 'X' .
LOOP AT itab .
PERFORM get_bdc_intercompany USING itab -lineno itab -matnr itab -werks itab -lifnr itab -vdatu itab -bdatu itab -ekorg itab -feskz itab -autet itab -reswk .
ENDLOOP .
ENDIF .
IF sy -subrc = 0 .
PERFORM showlog .
ELSE .
MESSAGE 'FALSE' TYPE 'I' .
ENDIF .
*&---------------------------------------------------------------------*
*& Form sub_find
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PC_FILE text
*----------------------------------------------------------------------*
FORM sub_find USING pc_file .
* Data for open dialog
DATA : l_filetab TYPE filetable ,
l_rc TYPE i .
CLEAR l_filetab .
REFRESH l_filetab .
* Open dialog
CALL METHOD cl_gui_frontend_services =>file_open_dialog
EXPORTING
* WINDOW_TITLE = 'SAP Custom - Open File'
* DEFAULT_EXTENSION =
default_filename = '*.xls'
* FILE_FILTER = '*.xls'
initial_directory = 'D:\'
multiselection = ''
CHANGING
file_table = l_filetab
rc = l_rc
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4 .
* Get file path
CHECK l_rc EQ 1 .
READ TABLE l_filetab INDEX 1 INTO pc_file .
ENDFORM . "sub_find
*&---------------------------------------------------------------------*
*& 2.RFORM uploaddata. "从PC中上传文件到内表中
*&---------------------------------------------------------------------*
FORM uploaddata .
DATA : BEGIN OF i_excel OCCURS 0 .
INCLUDE STRUCTURE alsmex_tabline .
DATA : END OF i_excel .
DATA : l_answer ( 1 ) TYPE c .
DATA : l_column TYPE i .
FIELD-SYMBOLS : <fs> .
DATA : l_pathname LIKE rlgrap -filename .
MOVE pc_file TO l_pathname .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = l_pathname
i_begin_col = c_begin_col
i_begin_row = c_begin_row
i_end_col = c_end_col
i_end_row = c_end_row
TABLES
intern = i_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3 .
IF sy -subrc <> 0 .
MESSAGE ID sy -msgid TYPE sy -msgty NUMBER sy -msgno
WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
ELSE .
IF i_excel[] IS INITIAL .
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
* DEFAULTOPTION = 'Y'
diagnosetext1 = 'No data in excel'
* DIAGNOSETEXT2 = ' '
* DIAGNOSETEXT3 = ' '
textline1 = 'No data in excel'
* TEXTLINE2 = ' '
titel = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
answer = l_answer .
ELSE .
DELETE i_excel WHERE row = '0001' .
SORT i_excel BY row col .
LOOP AT i_excel .
MOVE i_excel -col TO l_column .
ASSIGN COMPONENT l_column OF STRUCTURE itab TO <fs> .
MOVE i_excel - value TO <fs> .
AT END OF row .
APPEND itab .
CLEAR itab .
ENDAT .
ENDLOOP .
ENDIF .
ENDIF .
ENDFORM . "uploaddata
*&---------------------------------------------------------------------*
*& Form get_bdc_external
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_bdc_external USING lineno matnr werks lifnr vdatu bdatu ekorg feskz autet .
DATA : msg_1 ( 50 ) TYPE c VALUE '当前上传' .
DATA : msg_2 ( 50 ) TYPE c VALUE '行' .
DATA : msg_3 ( 50 ) TYPE c VALUE ',共' .
DATA : msg_4 ( 4 ) TYPE c .
msg_4 = row_count .
CONCATENATE msg_1 lineno INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CONCATENATE msg_1 msg_3 INTO msg_1 .
CONCATENATE msg_1 msg_4 INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = msg_1 .
PERFORM bdc_dynpro USING 'SAPLMEOR' '0200' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-MATNR' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-MATNR' matnr . "物料号
PERFORM bdc_field USING 'EORD-WERKS' werks . "工厂
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-VDATU(01)' vdatu .
PERFORM bdc_field USING 'EORD-BDATU(01)' bdatu .
PERFORM bdc_field USING 'EORD-LIFNR(01)' lifnr . "供应商代号
PERFORM bdc_field USING 'EORD-EKORG(01)' ekorg . "采购组织
PERFORM bdc_field USING 'RM06W-FESKZ(01)' feskz . "定货源
PERFORM bdc_field USING 'EORD-AUTET(01)' autet . "mrp
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '=BU' .
CALL TRANSACTION 'ME01' USING it_bdc
MODE 'N' "A前台显示、N后台运行
UPDATE 'S'
MESSAGES INTO it_bdcmsg .
it_log -matnr = matnr .
it_log -werks = werks .
it_log -lineno = lineno .
LOOP AT it_bdcmsg .
MESSAGE ID it_bdcmsg -msgid
TYPE it_bdcmsg -msgtyp
NUMBER it_bdcmsg -msgnr
WITH it_bdcmsg -msgv1 it_bdcmsg -msgv2 it_bdcmsg -msgv3 it_bdcmsg -msgv4
INTO it_log -message1 .
it_log -msgtyp = it_bdcmsg -msgtyp .
it_log -dynumb = it_bdcmsg -dynumb .
it_log -tcode = it_bdcmsg -tcode .
it_log -msgnr = it_bdcmsg -msgnr .
it_log -msgid = it_bdcmsg -msgid .
APPEND it_log .
ENDLOOP .
CLEAR : it_bdc ,it_bdc[] ,it_bdcmsg , it_bdcmsg[] .
ENDFORM . "get_bdc_external
*&---------------------------------------------------------------------*
*& Form get_bdc_intercompany
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_bdc_intercompany USING lineno matnr werks lifnr vdatu bdatu ekorg feskz autet reswk .
DATA : msg_1 ( 50 ) TYPE c VALUE '当前上传' .
DATA : msg_2 ( 50 ) TYPE c VALUE '行' .
DATA : msg_3 ( 50 ) TYPE c VALUE ',共' .
DATA : msg_4 ( 4 ) TYPE c .
msg_4 = row_count .
CONCATENATE msg_1 lineno INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CONCATENATE msg_1 msg_3 INTO msg_1 .
CONCATENATE msg_1 msg_4 INTO msg_1 .
CONCATENATE msg_1 msg_2 INTO msg_1 .
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = msg_1 .
PERFORM bdc_dynpro USING 'SAPLMEOR' '0200' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-MATNR' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-MATNR' matnr . "物料号
PERFORM bdc_field USING 'EORD-WERKS' werks . "工厂
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM bdc_field USING 'EORD-VDATU(01)' vdatu .
PERFORM bdc_field USING 'EORD-BDATU(01)' bdatu .
PERFORM bdc_field USING 'EORD-LIFNR(01)' lifnr . "供应商代号
PERFORM bdc_field USING 'EORD-EKORG(01)' ekorg . "采购组织
PERFORM bdc_field USING 'EORD-RESWK(01)' reswk . "工厂
PERFORM bdc_field USING 'RM06W-FESKZ(01)' feskz . "定货源
PERFORM bdc_field USING 'EORD-AUTET(01)' autet . "mrp
PERFORM bdc_dynpro USING 'SAPLMEOR' '0205' .
PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)' .
PERFORM bdc_field USING 'BDC_OKCODE' '=BU' .
CALL TRANSACTION 'ME01' USING it_bdc
MODE 'N' "A前台显示、N后台运行
UPDATE 'S'
MESSAGES INTO it_bdcmsg .
it_log -matnr = matnr .
it_log -werks = werks .
it_log -lineno = lineno .
LOOP AT it_bdcmsg .
MESSAGE ID it_bdcmsg -msgid
TYPE it_bdcmsg -msgtyp
NUMBER it_bdcmsg -msgnr
WITH it_bdcmsg -msgv1 it_bdcmsg -msgv2 it_bdcmsg -msgv3 it_bdcmsg -msgv4
INTO it_log -message1 .
it_log -msgtyp = it_bdcmsg -msgtyp .
it_log -dynumb = it_bdcmsg -dynumb .
it_log -tcode = it_bdcmsg -tcode .
it_log -msgnr = it_bdcmsg -msgnr .
it_log -msgid = it_bdcmsg -msgid .
ENDLOOP .
APPEND it_log .
CLEAR : it_bdc ,it_bdc[] ,it_bdcmsg , it_bdcmsg[] .
ENDFORM . "get_bdc_intercompany
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro .
CLEAR it_bdc .
it_bdc - program = program .
it_bdc - dynpro = dynpro .
it_bdc -dynbegin = 'X' .
APPEND it_bdc .
ENDFORM . "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval .
"IF FVAL <> NODATA.
CLEAR it_bdc .
it_bdc -fnam = fnam .
it_bdc -fval = fval .
APPEND it_bdc .
"ENDIF.
ENDFORM . "bdc_field
*&---------------------------------------------------------------------*
*& Form showlog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM showlog .
DATA :alv_fieldcat TYPE slis_t_fieldcat_alv .
DATA :wa_alv_fieldcat TYPE LINE OF slis_t_fieldcat_alv .
DATA :alv_layout TYPE slis_layout_alv .
DATA : l_cellcolor TYPE slis_specialcol_alv .
alv_layout -colwidth_optimize = 'X' . "自动列宽
* ALV_LAYOUT-NO_MIN_LINESIZE = ''.
* ALV_LAYOUT-BOX_FIELDNAME = 'SET'.
" alv_layout-info_fieldname = 'LINECOLOR'."设置行颜色
" alv_layout-coltab_fieldname = 'COLTAB'."设置单元格颜色
CLEAR wa_alv_fieldcat .
REFRESH alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'TCODE' .
wa_alv_fieldcat -seltext_m = 'T-CODE' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'LINENO' .
wa_alv_fieldcat -seltext_m = '行号' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MATNR' .
wa_alv_fieldcat -seltext_m = '物料号' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'WERKS' .
wa_alv_fieldcat -seltext_m = '工厂' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGTYP' .
wa_alv_fieldcat -seltext_m = 'MSGTYP' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'DYNUMB' .
wa_alv_fieldcat -seltext_m = 'DYNUMB' .
wa_alv_fieldcat -no_zero = 'X' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGNR' .
wa_alv_fieldcat -seltext_m = 'MSGNR' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MSGID' .
wa_alv_fieldcat -seltext_m = 'MESGID' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CLEAR wa_alv_fieldcat .
wa_alv_fieldcat -fieldname = 'MESSAGE1' .
wa_alv_fieldcat -seltext_m = '信息内容' .
APPEND wa_alv_fieldcat TO alv_fieldcat .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy -repid
is_layout = alv_layout
it_fieldcat = alv_fieldcat
i_grid_title = '运行日志' "标题
" IT_EVENT_EXIT = GIT_EVENT_EXIT "重要
" I_CALLBACK_USER_COMMAND = 'FRM_UCOMM' "调用用户点击事件
" I_CALLBACK_PF_STATUS_SET = 'SET_PF' "设置打印按钮
TABLES
t_outtab = it_log[]
EXCEPTIONS
program_error = 1
OTHERS = 2 .
IF sy -subrc <> 0 .
MESSAGE ID sy -msgid TYPE sy -msgty NUMBER sy -msgno
WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
ENDIF .
ENDFORM . "showlog