*---------------------------------
* Program Name: ZMMI008
* Project :
* Program Title:批量创建修改采购信息记录 excel
* Program Type:
* Created on : 20161113
* Module :
* Transaction Code:
* Request No.:
* Function description:
*
* Reference doc.:
*----------------------------------------------------------------------*
* Modification log:
* Author Date Request No. Reason
* ---------------------------------------------------------------------* *
*----------------------------------------------------------------------*
REPORT zmmi008 NO STANDARD PAGE HEADING.
TYPE-POOLS: slis,icon.
TABLES:sscrfields.
TYPES: BEGIN OF typ_data,
lifnr TYPE lifnr, "供应商帐号
matnr TYPE matnr, "物料
ekorg TYPE ekorg, "采购组织
werks TYPE werks_d, "工厂
msg1(20) TYPE c, "信息类别
* urztp(1) TYPE c,"批准目录
* URZNR type URZNR,"证明号
meins TYPE meins, "订单单位
umren(5) TYPE c, "转换的分母
umrez(5) TYPE c, "转换的分子
aplfz(3) TYPE c, "计划交货天数
ekgrp(3) TYPE c, "采购组
norbm(13) TYPE c, "标准数量
mwskz(2) TYPE c, "税代码
"verid(4) TYPE c, "版本
netpr(11) TYPE c, "净价
WAERS TYPE string, "条件货币
peinh(5) TYPE c, ""价格单位
BPRME TYPE string,"价格计量单位
BPUMZ TYPE string,"订单价格单位转换为订单单位的分子
BPUMN TYPE string,"订单价格单位转换为订单单位的分母
inco2(28) TYPE c, "国际贸易条件
rdprf(4) TYPE c, " Rndg Prof
datab(8) TYPE c, "价格的有效开始日期
datbi(8) TYPE c, "价格的有效截止日期
UEBTO TYPE string,"超量收货
is_exist,
icon(30),
msg(200),
chkbox(1),
sel(1),
END OF typ_data.
DATA: gt_itab TYPE TABLE OF typ_data WITH HEADER LINE,
gs_itab TYPE TABLE OF typ_data WITH HEADER LINE,
wa_itab TYPE typ_data.
DATA: GV_FILENAME TYPE RLGRAP-FILENAME.
DATA: co_objid TYPE wwwdatatab-objid .
CONSTANTS : cns_excel_scol TYPE i VALUE 1, "EXCEL START COL
cns_excel_srow TYPE i VALUE 2, "EXCEL START ROW
cns_excel_ecol TYPE i VALUE 50, "EXCEL END COL
cns_excel_erow TYPE i VALUE 50000. "EXCEL END ROW
DATA:BEGIN OF iexcel OCCURS 0.
INCLUDE STRUCTURE alsmex_tabline.
DATA:END OF iexcel.
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
DATA:mode.
DATA: functxt TYPE smp_dyntxt,
g_fullpath TYPE string.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gw_fieldcat TYPE lvc_s_fcat,
g_repid TYPE sy-repid VALUE sy-repid,
gw_layo TYPE lvc_s_layo.
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
PARAMETERS:p_fname TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN:BEGIN OF BLOCK sel2 WITH FRAME TITLE text-002.
PARAMETER:kn RADIOBUTTON GROUP nn,
re RADIOBUTTON GROUP nn
* fe RADIOBUTTON GROUP nn
.
PARAMETER: p AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN:END OF BLOCK sel2.
INITIALIZATION.
functxt-icon_id = icon_export.
functxt-icon_text = '下载EXCEL模板'.
functxt-quickinfo = '下载EXCEL模板'.
sscrfields-functxt_01 = functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_get_filepath.
PERFORM frm_downm.
WHEN 'ONLI'.
IF p_fname IS INITIAL.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE '请选择文件路径!' TYPE 'E'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
PERFORM frm_get_file CHANGING p_fname.
START-OF-SELECTION.
PERFORM frm_file_read.
PERFORM frm_display.
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display .
PERFORM build_fact.
PERFORM set_layout.
PERFORM display_alv.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form BUILD_FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fact .
DEFINE def_fieldcat.
clear gw_fieldcat.
gw_fieldcat-fieldname = &1.
gw_fieldcat-reptext = &2.
gw_fieldcat-edit = &3.
gw_fieldcat-no_zero = &4.
gw_fieldcat-fix_column(1) = &5.
gw_fieldcat-just = &6.
append gw_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
REFRESH gt_fieldcat[].
gw_fieldcat-fieldname = 'CHKBOX'.
gw_fieldcat-datatype = 'CHAR'.
gw_fieldcat-intlen = 1.
gw_fieldcat-coltext = '选择'.
gw_fieldcat-checkbox = 'X'.
gw_fieldcat-edit = 'X'.
gw_fieldcat-fix_column = 'X'.
APPEND gw_fieldcat TO gt_fieldcat.
CLEAR gw_fieldcat.
def_fieldcat 'ICON' '状态' '' '' 'X' ''.
def_fieldcat 'MSG' '状态信息' '' '' '' ''.
def_fieldcat 'LIFNR' '供应商' '' '' '' ''.
def_fieldcat 'MATNR' '物料' '' '' '' ''.
def_fieldcat 'EKORG' '采购组织' '' '' '' ''.
def_fieldcat 'WERKS' '工厂' '' '' '' ''.
def_fieldcat 'MSG1' '信息类别' '' '' '' ''.
* def_fieldcat 'URZTP' '批准目录' '' '' '' ''.
* def_fieldcat 'URZNR' '证明号' '' '' '' ''.
def_fieldcat 'MEINS' '订单单位' '' '' '' ''.
def_fieldcat 'UMREN' '转换的分母' '' '' '' ''.
def_fieldcat 'UMREZ' '转换的分子' '' '' '' ''.
def_fieldcat 'APLFZ' '计划交货天数' '' '' '' ''.
def_fieldcat 'EKGRP' '采购组' '' '' '' ''.
def_fieldcat 'NORBM' '标准数量' '' '' '' ''.
def_fieldcat 'MWSKZ' '税代码' '' '' '' ''.
"def_fieldcat 'VERID' '版本' '' '' '' ''.
def_fieldcat 'NETPR' '净价' '' '' '' ''.
def_fieldcat 'WAERS' '货币' '' '' '' ''.
def_fieldcat 'PEINH' '价格单位' '' '' '' ''.
def_fieldcat 'BPRME' '价格计量单位' '' '' '' ''.
def_fieldcat 'BPUMZ' '订单价格单位转换为订单单位的分子' '' '' '' ''.
def_fieldcat 'BPUMN' '订单价格单位转换为订单单位的分母' '' '' '' ''.
"def_fieldcat 'INCO2' '国际贸易条件' '' '' '' ''.
"def_fieldcat 'RDPRF' 'Rndg Prof' '' '' '' ''.
def_fieldcat 'DATAB' '价格的有效开始日期' '' '' '' ''.
def_fieldcat 'DATBI' '价格的有效截止日期 ' '' '' '' ''.
def_fieldcat 'UEBTO' '超量收货 ' '' '' '' ''.
ENDFORM. " BUILD_FACT
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_layout .
gw_layo-zebra = 'X'.
gw_layo-cwidth_opt = 'X'.
gw_layo-box_fname = 'SEL'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
* i_callback_top_of_page = 'FM_ALV_TOP'
i_callback_program = g_repid
it_fieldcat_lvc = gt_fieldcat
is_layout_lvc = gw_layo
TABLES
t_outtab = gt_itab[].
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. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'SET_PF_STATU' EXCLUDING rt_extab.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& 包括 ZMM_020_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN_UCOMM text
* -->IN_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING in_ucomm LIKE sy-ucomm
in_selfield TYPE slis_selfield.
DATA: lw_rtn TYPE bapiret2,
lt_rtn TYPE TABLE OF bapiret2,
lt_insp TYPE TABLE OF bapi1001004_qmat,
lw_insp TYPE bapi1001004_qmat,
l_object TYPE bapi1003_key-object.
DATA myref TYPE REF TO cx_sy_arithmetic_error.
DATA err_text TYPE string.
DATA result TYPE i.
DATA:p_flag.
DATA t(200).
in_selfield-refresh = 'X'.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
CASE in_ucomm.
WHEN '&SEL'.
PERFORM frm_select.
WHEN '&DESEL'.
PERFORM frm_deselect.
WHEN '&IC1'.
IF in_selfield-fieldname = 'EBELN' .
SET PARAMETER ID 'BES' FIELD in_selfield-value.
CALL TRANSACTION 'ME23N' .
ENDIF.
WHEN '&UPLOAD'.
PERFORM frm_upload.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form FRM_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_select .
LOOP AT gt_itab. "WHERE sel = 'X'.
gt_itab-chkbox = 'X'.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_SELECT
*&---------------------------------------------------------------------*
*& Form FRM_DESELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_deselect .
LOOP AT gt_itab." WHERE sel = 'X'.
gt_itab-chkbox = ''.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_DESELECT
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_upload.
LOOP AT gt_itab INTO wa_itab WHERE chkbox = 'X' AND icon NE '@0A@'.
IF kn = 'X'.
PERFORM frm_x1 USING wa_itab.
ELSEIF re = 'X'.
PERFORM frm_x2 USING wa_itab..
ELSE.
PERFORM frm_x3 USING wa_itab.
ENDIF.
* IF SY-SUBRC = 0.
* wa_itab-msg = '完成'.
* ELSE.
* wa_itab-msg = '失败'.
* ENDIF.
MODIFY gt_itab FROM wa_itab.
CLEAR:wa_itab.
ENDLOOP.
ENDFORM. " FRM_UPLOAD
*&---------------------------------------------------------------------*
*& Form FRM_X1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_x1 USING wa_itab TYPE typ_data.
DATA:BEGIN OF it_result OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: text(200) TYPE c.
DATA END OF it_result.
DATA msg(100).
REFRESH bdc_tab.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINA-LIFNR'
wa_itab-lifnr.
PERFORM bdc_field USING 'EINA-MATNR'
wa_itab-matnr.
PERFORM bdc_field USING 'EINE-EKORG'
wa_itab-ekorg.
PERFORM bdc_field USING 'EINE-WERKS'
wa_itab-werks.
PERFORM bdc_field USING 'RM06I-NORMB'
'X'.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-UMREZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
* PERFORM bdc_field USING 'EINA-URZTP'
* wa_itab-urztp.
* PERFORM bdc_field USING 'EINA-URZNR'
* wa_itab-URZNR.
PERFORM bdc_field USING 'EINA-URZLA'
''.
PERFORM bdc_field USING 'EINA-REGIO'
''.
PERFORM bdc_field USING 'EINA-TELF1'
''.
PERFORM bdc_field USING 'EINA-MEINS'
wa_itab-meins.
PERFORM bdc_field USING 'EINA-UMREZ'
wa_itab-umrez.
PERFORM bdc_field USING 'EINA-UMREN'
wa_itab-umren.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-MWSKZ'.
* PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '/00'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KO'.
PERFORM bdc_field USING 'EINE-APLFZ'
wa_itab-aplfz.
PERFORM bdc_field USING 'EINE-EKGRP'
wa_itab-ekgrp.
PERFORM bdc_field USING 'EINE-NORBM'
wa_itab-norbm.
PERFORM bdc_field USING 'EINE-WEBRE'
'X'.
PERFORM bdc_field USING 'EINE-MWSKZ'
wa_itab-mwskz.
PERFORM bdc_field USING 'EINE-IPRKZ'
''.
PERFORM bdc_field USING 'EINE-RDPRF'
wa_itab-rdprf.
* PERFORM bdc_field USING 'EINE-MEPRF'
* '5'.
PERFORM bdc_field USING 'EINE-NETPR'
wa_itab-netpr.
PERFORM bdc_field USING 'EINE-WAERS'
wa_itab-waers.
PERFORM bdc_field USING 'EINE-PEINH'
wa_itab-peinh.
PERFORM bdc_field USING 'EINE-BPRME'
wa_itab-bprme.
PERFORM bdc_field USING 'EINE-BPUMZ'
wa_itab-BPUMZ.
PERFORM bdc_field USING 'EINE-BPUMN'
wa_itab-BPUMN.
PERFORM bdc_field USING 'EINE-UEBTO'
wa_itab-UEBTO.
"==========================New================================
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATBI'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KDAT'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONH-KOSRT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
PERFORM bdc_field USING 'KONH-KOSRT'
wa_itab-inco2.
IF wa_itab-is_exist EQ 'X'.
CALL TRANSACTION 'ME12' USING bdc_tab MODE mode MESSAGES INTO it_result.
ELSE.
CALL TRANSACTION 'ME11' USING bdc_tab MODE mode MESSAGES INTO it_result.
ENDIF.
READ TABLE it_result WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgtyp = 'A'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgid = '06' msgnr = '331'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_green_light.
ELSE.
wa_itab-msg = '失败'.
wa_itab-icon = icon_red_light.
ENDIF.
ENDIF.
ENDIF.
CLEAR: it_result[],it_result,msg.
CLEAR bdc_tab[].
ENDFORM. " FRM_X1
*&---------------------------------------------------------------------*
*& Form FRM_X2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_ITAB text
*----------------------------------------------------------------------*
FORM frm_x2 USING wa_itab TYPE typ_data.
DATA:BEGIN OF it_result OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: text(200) TYPE c.
DATA END OF it_result.
DATA msg(100).
REFRESH bdc_tab.
REFRESH bdc_tab.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINA-LIFNR'
wa_itab-lifnr..
PERFORM bdc_field USING 'EINA-MATNR'
wa_itab-matnr.
PERFORM bdc_field USING 'EINE-EKORG'
wa_itab-ekorg.
PERFORM bdc_field USING 'EINE-WERKS'
wa_itab-werks.
PERFORM bdc_field USING 'RM06I-NORMB'
''.
PERFORM bdc_field USING 'RM06I-LOHNB'
'X'.
PERFORM bdc_field USING 'RM06I-KONSI'
''.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-UMREZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
* PERFORM bdc_field USING 'EINA-URZTP'
* wa_itab-urztp.
* PERFORM bdc_field USING 'EINA-URZNR'
* wa_itab-URZNR.
PERFORM bdc_field USING 'EINA-URZLA'
''.
PERFORM bdc_field USING 'EINA-REGIO'
''.
PERFORM bdc_field USING 'EINA-TELF1'
''.
* PERFORM bdc_field USING 'EINA-MEINS'
* 'EA'.
PERFORM bdc_field USING 'EINA-UMREZ'
wa_itab-umrez.
PERFORM bdc_field USING 'EINA-UMREN'
wa_itab-umren.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-MWSKZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINE-APLFZ'
wa_itab-aplfz.
PERFORM bdc_field USING 'EINE-EKGRP'
wa_itab-ekgrp.
PERFORM bdc_field USING 'EINE-NORBM'
wa_itab-norbm.
PERFORM bdc_field USING 'EINE-WEBRE'
'X'.
PERFORM bdc_field USING 'EINE-IPRKZ'
''.
* PERFORM bdc_field USING 'EINE-VERID'
* wa_itab-verid.
PERFORM bdc_field USING 'EINE-MWSKZ'
wa_itab-mwskz.
* PERFORM bdc_field USING 'EINE-MEPRF'
* '5'.
PERFORM bdc_field USING 'EINE-NETPR'
wa_itab-netpr.
PERFORM bdc_field USING 'EINE-WAERS'
wa_itab-waers.
PERFORM bdc_field USING 'EINE-PEINH'
wa_itab-peinh.
PERFORM BDC_FIELD USING 'EINE-BPRME'
wa_itab-BPRME.
PERFORM bdc_field USING 'EINE-BPUMZ'
wa_itab-BPUMZ.
PERFORM bdc_field USING 'EINE-BPUMN'
wa_itab-BPUMN.
PERFORM bdc_field USING 'EINE-UEBTO'
wa_itab-UEBTO.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0105'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-ANGNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KO'.
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATBI'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATAB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
IF wa_itab-is_exist EQ 'X'.
CALL TRANSACTION 'ME12' USING bdc_tab MODE mode MESSAGES INTO it_result.
ELSE.
CALL TRANSACTION 'ME11' USING bdc_tab MODE mode MESSAGES INTO it_result.
ENDIF.
READ TABLE it_result WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgtyp = 'A'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgid = '06' msgnr = '331'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_green_light.
ELSE.
wa_itab-msg = '失败'.
wa_itab-icon = icon_red_light.
ENDIF.
ENDIF.
ENDIF.
CLEAR: it_result[],it_result,msg.
CLEAR bdc_tab[].
ENDFORM. "FRM_X2
*&---------------------------------------------------------------------*
*& Form FRM_X3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_ITAB text
*----------------------------------------------------------------------*
FORM frm_x3 USING wa_itab TYPE typ_data.
DATA:BEGIN OF it_result OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: text(200) TYPE c.
DATA END OF it_result.
DATA msg(100).
REFRESH bdc_tab.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINA-LIFNR'
wa_itab-lifnr.
PERFORM bdc_field USING 'EINA-MATNR'
wa_itab-matnr.
PERFORM bdc_field USING 'EINE-EKORG'
wa_itab-ekorg.
PERFORM bdc_field USING 'EINE-WERKS'
wa_itab-werks.
PERFORM bdc_field USING 'RM06I-LOHNB'
''.
PERFORM bdc_field USING 'RM06I-KONSI'
'X'.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-UMREZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
* PERFORM bdc_field USING 'EINA-URZTP'
* wa_itab-urztp.
* PERFORM bdc_field USING 'EINA-URZNR'
* wa_itab-URZNR.
PERFORM bdc_field USING 'EINA-URZLA'
''.
PERFORM bdc_field USING 'EINA-REGIO'
''.
PERFORM bdc_field USING 'EINA-TELF1'
''.
PERFORM bdc_field USING 'EINA-MEINS'
'EA'.
PERFORM bdc_field USING 'EINA-UMREZ'
'1'.
PERFORM bdc_field USING 'EINA-UMREN'
'1'.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-MWSKZ'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINE-APLFZ'
wa_itab-aplfz.
PERFORM bdc_field USING 'EINE-EKGRP'
wa_itab-ekgrp.
PERFORM bdc_field USING 'EINE-NORBM'
wa_itab-norbm.
PERFORM bdc_field USING 'EINE-WEBRE'
'X'.
PERFORM bdc_field USING 'EINE-MWSKZ'
wa_itab-mwskz.
PERFORM bdc_field USING 'EINE-IPRKZ'
''.
* PERFORM BDC_FIELD USING 'EINE-MEPRF'
* '5'.
PERFORM bdc_field USING 'EINE-NETPR'
wa_itab-netpr.
PERFORM bdc_field USING 'EINE-WAERS'
'RMB'.
PERFORM bdc_field USING 'EINE-PEINH'
wa_itab-peinh.
PERFORM bdc_field USING 'EINE-BPRME'
'EA'.
PERFORM bdc_field USING 'EINE-BPUMZ'
'1'.
PERFORM bdc_field USING 'EINE-BPUMN'
'1'.
PERFORM bdc_dynpro USING 'X' 'SAPMM06I' '0105'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-ANGNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KO'.
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATBI'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
PERFORM bdc_dynpro USING 'X' 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATAB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_field USING 'RV13A-DATAB'
wa_itab-datab.
PERFORM bdc_field USING 'RV13A-DATBI'
wa_itab-datbi.
IF wa_itab-is_exist EQ 'X'.
CALL TRANSACTION 'ME12' USING bdc_tab MODE mode MESSAGES INTO it_result.
ELSE.
CALL TRANSACTION 'ME11' USING bdc_tab MODE mode MESSAGES INTO it_result.
ENDIF.
READ TABLE it_result WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgtyp = 'A'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_red_light.
ELSE.
READ TABLE it_result WITH KEY msgid = '06' msgnr = '331'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_result-msgid
lang = '1'
no = it_result-msgnr
v1 = it_result-msgv1
v2 = it_result-msgv2
v3 = it_result-msgv3
v4 = it_result-msgv4
IMPORTING
msg = msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
wa_itab-msg = msg.
wa_itab-icon = icon_green_light.
ELSE.
wa_itab-msg = '失败'.
wa_itab-icon = icon_red_light.
ENDIF.
ENDIF.
ENDIF.
CLEAR: it_result[],it_result,msg.
CLEAR bdc_tab[].
ENDFORM. " FRM_X3
*&---------------------------------------------------------------------*
*& 包括 ZMM_020_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FM_GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_P_FNAME text
*----------------------------------------------------------------------*
FORM frm_get_file CHANGING p_p_fname.
DATA: work_rc TYPE i. "Return Code
DATA: lstr_filter TYPE string.
DATA: ltb_file_table TYPE filetable,
lwk_file_table TYPE filename.
CONCATENATE 'Excel 2003-2013(*.XLS)|*.XLS|' 'Excel(*.XLSX)|*.XLSX'
INTO lstr_filter.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select the file '
* DEFAULT_EXTENSION =
default_filename = ''
file_filter = lstr_filter
initial_directory = 'C:'
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = ltb_file_table
rc = work_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc = 0.
LOOP AT ltb_file_table INTO lwk_file_table.
MOVE lwk_file_table TO p_fname.
EXIT.
ENDLOOP.
ELSE.
MESSAGE 'File Name Get Failed' TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILE
*&---------------------------------------------------------------------*
*& Form FM_GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_get_filepath .
DATA: l_filename TYPE string,
l_path TYPE string,
l_fullpath TYPE string,
l_title TYPE string.
co_objid = 'ZMMI008'.
CONCATENATE co_objid '-' sy-datum sy-uzeit INTO l_title .
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = '模板保存为EXCEL'
default_extension = 'xlsx'
default_file_name = l_title
* file_filter = '.xls'
file_filter = 'Excel 文件 (*.XLSX)'
initial_directory = 'C:/'
* DEFAULT_FILE_NAME = p_filename
CHANGING
filename = l_filename
path = l_path
fullpath = g_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
STOP.
ENDIF.
IF g_fullpath IS INITIAL.
MESSAGE '请选择保存EXCEL文件的路径' TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILEPATH
*&---------------------------------------------------------------------*
*& Form FM_DOWNM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_downm .
DATA: ls_indcatortxt TYPE string,
p_filename TYPE sapb-sappfad.
DATA: lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
li_rc LIKE sy-subrc,
ls_errtxt TYPE string.
p_filename = g_fullpath.
ls_indcatortxt = '程序正在下载模板'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = ls_indcatortxt.
CONCATENATE co_objid '.XLSX' INTO ls_objnam.
CONDENSE ls_objnam NO-GAPS.
SELECT SINGLE relid objid FROM wwwdata
INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = co_objid.
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
CONCATENATE '模板文件:' ls_objnam '不存在,请用TCODE:SMW0进行加载' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'E'.
ENDIF.
ls_destination = g_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.
IF li_rc NE 0.
CONCATENATE '模板文件:' ls_objnam '下载失败' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'E'.
ENDIF.
ENDFORM. " FM_DOWNM
*&---------------------------------------------------------------------*
*& Form FM_FILE_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_file_read .
DATA: BEGIN OF it_header OCCURS 0,
col LIKE alsmex_tabline-col,
field(20),
END OF it_header.
FIELD-SYMBOLS: <fs>.
DATA: l_intern TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: c_row TYPE i VALUE 3, "读EXCEL第3行开始
c_col TYPE i VALUE 1, "读EXCEL第1列开始
l_index TYPE i,
l_msg(60) TYPE c,
g_mod TYPE d,
l_row(5) TYPE n,
li_len TYPE sy-tabix,
l_cstr(4).
gv_filename = p_fname.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = gv_filename
i_begin_col = c_col
i_begin_row = c_row
i_end_col = 103
i_end_row = 50000
TABLES
intern = l_intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
SORT l_intern BY row col.
l_row = c_row.
LOOP AT l_intern.
IF l_intern-row = 1.
it_header-col = l_intern-col.
CONDENSE l_intern-value.
it_header-field = l_intern-value.
APPEND it_header.
ELSE.
MOVE l_intern-col TO l_index.
* READ TABLE IT_HEADER INDEX L_INDEX.
READ TABLE it_header WITH KEY col = l_index.
IF sy-subrc = 0.
ASSIGN COMPONENT it_header-field OF STRUCTURE gs_itab TO <fs>.
IF sy-subrc = 0.
MOVE l_intern-value TO <fs>.
ENDIF.
ENDIF.
AT END OF row.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_itab-matnr
IMPORTING
output = gs_itab-matnr.
MOVE-CORRESPONDING gs_itab TO gt_itab.
APPEND gt_itab.
CLEAR: gt_itab, gs_itab.
* IT_RECORD-ROWNO = L_ROW.
* APPEND IT_RECORD.
g_mod = l_row MOD 100.
IF g_mod = 0.
* CONCATENATE C_PROGRESS0 L_ROW INTO L_MSG SEPARATED BY SPACE.
* PROGRESS_INDICATOR: L_MSG.
ENDIF.
l_row = l_row + 1.
* CLEAR IT_RECORD.
ENDAT.
ENDIF.
ENDLOOP.
IF p EQ 'X'.
mode = 'N'.
ELSE.
mode = 'A'.
ENDIF.
IF gt_itab[] IS INITIAL.
MESSAGE 'No data can be read from excel file' TYPE 'E'.
EXIT.
ELSE.
* PERFORM fm_bc_data.
ENDIF.
ENDFORM. " FM_FILE_READ
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
FORM bdc_dynpro USING dynbegin name value.
IF dynbegin = 'X'.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
APPEND bdc_tab.
ENDIF.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0322 text
* -->P_0323 text
*----------------------------------------------------------------------*
FORM bdc_field USING field_name
field_value.
CLEAR bdc_tab.
bdc_tab-fnam = field_name.
bdc_tab-fval = field_value.
APPEND bdc_tab.
ENDFORM. " BDC_FIELD
09-27
8822
09-14
05-29
4512
08-30
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交