*&---------------------------------------------------------------------*
*& Report ZMMR036
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZMMR036B.
INCLUDE ZMMR036B_TOP.
*INCLUDE ZMMR036_top.
INCLUDE ZMMR036B_SCR.
*INCLUDE ZMMR036_scr.
INCLUDE ZMMR036B_FRM.
*INCLUDE ZMMR036_frm.
INITIALIZATION.
"下载模板按钮
* 工具栏添加下载模板按钮
CLEAR g_function_key.
g_function_key-icon_id = icon_read_file.
g_function_key-icon_text = '供应商导入模版下载'.
g_function_key-quickinfo = '供应商导入模版下载'.
sscrfields-functxt_01 = g_function_key.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN OUTPUT *
*----------------------------------------------------------------------*
*显示注释
AT SELECTION-SCREEN OUTPUT.
* MOVE '1、请选择正确的模板填写数据' TO T1.
* MOVE '1、请严格按照模板要求填写数据' TO t2.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
* 下载数据导入模板
IF sscrfields-ucomm = 'FC01'.
PERFORM frm_excel_down.
sscrfields-ucomm = ''.
ENDIF.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* 选择文件搜索帮助
PERFORM frm_set_file_f4 USING p_file.
START-OF-SELECTION.
* 文件必输校验
PERFORM frm_file_obligatory.
* 批量导入数据
if r_1 eq 'X' .
PERFORM frm_upload_data. "模版阶梯纵向
ENDIF .
IF R_2 EQ 'X' .
PERFORM frm_upload_data2. "模版阶梯横向
ENDIF .
END-OF-SELECTION.
* alv显示
* PERFORM frm_display_data.
perform frm_display_alv2 .
*&---------------------------------------------------------------------*
*& 包含 ZMMR036_TOP
*&---------------------------------------------------------------------*
TABLES sscrfields.
INCLUDE <list>.
INCLUDE <icon>.
DATA: g_function_key TYPE smp_dyntxt . "功能按钮
DATA: lv_msg TYPE string.
DATA: gs_bdcdata LIKE bdcdata,
gs_messtab LIKE bdcmsgcoll.
DATA: gt_bdcdata LIKE TABLE OF bdcdata. "OCCURS 0 WITH HEADER LINE.
DATA: gwa_messtab LIKE bdcmsgcoll.
DATA: gt_messtab LIKE TABLE OF bdcmsgcoll." O
DATA: l_option TYPE ctu_params.
DATA: wa_eina TYPE eina,
wa_eine TYPE eine,
wa_eina_new TYPE eina,
wa_eine_new TYPE eine.
DATA: it_head TYPE STANDARD TABLE OF mestxh,
it_line TYPE STANDARD TABLE OF mestxl.
DATA: it_eina TYPE STANDARD TABLE OF eina WITH HEADER LINE,
it_eine TYPE STANDARD TABLE OF eine.
DATA: return TYPE STANDARD TABLE OF bapireturn WITH HEADER LINE.
DATA: l_netpr LIKE ekpo-netpr.
DATA: l_komv TYPE komv,
l_ekpo TYPE ekpo.
DATA: BEGIN OF gs_alv ,
matnr LIKE eina-matnr, "物料
lifnr LIKE eina-lifnr, " 供应商编号
vkorg LIKE eine-ekorg, "采购组织
werks LIKE eine-werks, " 工厂
* netpr LIKE eine-netpr," 净价
netpr TYPE string,
mwskz LIKE eine-mwskz , "税率
* peinh LIKE eine-peinh, " 价格单位
peinh TYPE string, " 价格单位
waers LIKE eine-waers , "币种
* lifab LIKE wa_eina-lifab , "
* lifbi LIKE wa_eina-lifbi , "
lifab TYPE string , "
lifbi TYPE string , "
kstbm LIKE konm-kstbm , "等级
kbetr LIKE konm-kbetr , "等级价格
p TYPE c,
w TYPE c,
mark TYPE c,
light(4),
result TYPE c LENGTH 100,
END OF gs_alv .
DATA : gt_alv LIKE TABLE OF gs_alv .
DATA: gt_fieldcat TYPE TABLE OF slis_fieldcat_alv.
DATA: gs_fieldcat TYPE slis_fieldcat_alv.
DATA: gs_layout TYPE slis_layout_alv .
DATA: gv_c TYPE c ."有效期重叠控制
DATA: ls_alv LIKE gs_alv .
DATA: lt_alv LIKE TABLE OF gs_alv .
DATA: ls_alv2 LIKE gs_alv .
DATA: lt_alv2 LIKE TABLE OF gs_alv .
*&---------------------------------------------------------------------*
*& 包含 ZMMR036_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK blk02 WITH FRAME TITLE TEXT-005.
PARAMETERS p_file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk02.
*SELECTION-SCREEN BEGIN OF BLOCK blk03 WITH FRAME TITLE TEXT-006.
PARAMETERS : r_1 RADIOBUTTON GROUP g1 .
PARAMETERS : r_2 RADIOBUTTON GROUP g1 DEFAULT 'X' .
*SELECTION-SCREEN BEGIN OF BLOCK blk03 WITH FRAME TITLE TEXT-006.
PARAMETERS : r_3 RADIOBUTTON GROUP g2 .
PARAMETERS : r_4 RADIOBUTTON GROUP g2 .
PARAMETERS : cb_1 AS CHECKBOX .
*PARAMETERS : cb_2 AS CHECKBOX .
*&---------------------------------------------------------------------*
*& 包含 ZMMR036_FRM
*&---------------------------------------------------------------------*
FORM frm_file_obligatory .
IF p_file IS INITIAL.
MESSAGE '请选择导入的文件' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_upload_data .
* 局部变量的定义
DATA:lt_excel TYPE TABLE OF alsmex_tabline. "参照类型有标准的调整为ZALSMEX_TABLINE_LINE。
DATA: ls_excel TYPE alsmex_tabline.
*** IF RB1 = 'X'.
CLEAR gt_alv.
* 选择文件后做后续处理
CHECK p_file IS NOT INITIAL.
* 把文件的数据变成内表
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 16
i_end_row = 5000
"SHEET_NAME = '新增修改扩展'
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
* 处理内表数据
CLEAR ls_excel.
LOOP AT lt_excel INTO ls_excel.
CASE ls_excel-col.
WHEN 1.
gs_alv-lifnr = ls_excel-value."供应商代码 (4)
WHEN 3.
gs_alv-matnr = ls_excel-value."物料代码(4)
WHEN 5.
gs_alv-vkorg = ls_excel-value."采购组织(4)
WHEN 6.
gs_alv-werks = ls_excel-value."工厂 (4)
WHEN 7.
gs_alv-netpr = ls_excel-value."净价 (4)
WHEN 8.
gs_alv-waers = ls_excel-value."币种(4)WHEN 1.
WHEN 9.
gs_alv-peinh = ls_excel-value."价格系数(4)WHEN 1.
WHEN 10.
gs_alv-mwskz = ls_excel-value."税码(4)WHEN 1.
WHEN 11.
gs_alv-lifab = ls_excel-value."有效开始日期 (4)WHEN 1.
WHEN 12.
gs_alv-lifbi = ls_excel-value."有效结束日期 (4)WHEN 1.
WHEN 13.
gs_alv-p = ls_excel-value."采购
WHEN 14.
gs_alv-w = ls_excel-value."委外
WHEN 15.
gs_alv-kstbm = ls_excel-value."阶梯数量
WHEN 16.
gs_alv-kbetr = ls_excel-value."阶梯价
ENDCASE.
AT END OF row.
APPEND gs_alv TO gt_alv.
CLEAR gs_alv.
ENDAT.
ENDLOOP .
* 下面是供应商导入程序
* LOOP AT lt_excel INTO ls_excel.
* CASE ls_excel-col.
* WHEN 1.
* gs_alv-partner = ls_excel-value."SAP 供应商号码 (10)
* IF gs_alv-partner IS NOT INITIAL.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = gs_alv-partner
* IMPORTING
* output = gs_alv-partner.
* ENDIF.
*
*
*
* WHEN 2.
* gs_alv-bukrs = ls_excel-value."公司代码 (4)
* WHEN 3.
* gs_alv-ekorg = ls_excel-value."采购组织代码 (4)
* WHEN 4.
* gs_alv-bu_group = ls_excel-value."分组(4)
* WHEN 5.
* gs_alv-name_org1 = ls_excel-value."供应商名称 1 (40)
* WHEN 6.
* gs_alv-name_org2 = ls_excel-value."供应商名称 2(40)
* WHEN 7.
* gs_alv-name_org3 = ls_excel-value."供应商名称 3 (40)
* WHEN 8.
* gs_alv-name_org4 = ls_excel-value."供应商名称 4 (40)
* WHEN 9.
* gs_alv-bu_