采购信息记录批导完美版
*&---------------------------------------------------------------------*
*& 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_sort1 = ls_excel-value."搜索项目1 (20)
* WHEN 10.
* gs_alv-bu_sort2 = ls_excel-value."搜索项目2 (20)
* WHEN 11.
* gs_alv-street = ls_excel-value."供应商地址 1 (35)
* WHEN 12.
* gs_alv-post_code1 = ls_excel-value."邮政编码 (6)
* WHEN 13.
* gs_alv-regio = ls_excel-value."地区(3)
* WHEN 14.
* gs_alv-city1 = ls_excel-value."城市(40)
* WHEN 15.
* gs_alv-land1 = ls_excel-value."国家 (2)
* WHEN 16.
* gs_alv-langu = ls_excel-value."语言
* WHEN 17.
* gs_alv-tel_number = ls_excel-value."电话
* WHEN 18.
* gs_alv-mob_number = ls_excel-value."移动电话
* WHEN 19.
* gs_alv-fax_number = ls_excel-value."传真
* WHEN 20.
* gs_alv-smtp_addr = ls_excel-value."Email
* WHEN 21.
* gs_alv-kunnr = ls_excel-value."客户
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = gs_alv-kunnr
* IMPORTING
* output = gs_alv-kunnr.
*
* WHEN 22.
* gs_alv-taxnum = ls_excel-value."税号(18)
* WHEN 23.
* gs_alv-akont = ls_excel-value."统驭科目
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* input = gs_alv-akont
* IMPORTING
* output = gs_alv-akont.
* WHEN 24.
* gs_alv-zterm = ls_excel-value."付款条件
* WHEN 25.
* gs_alv-reprf = ls_excel-value."检查双重发票
* WHEN 26.
* gs_alv-waers = ls_excel-value."订单币别
* WHEN 27.
* gs_alv-zterm2 = ls_excel-value."付款条件
* WHEN 28.
* gs_alv-webre = ls_excel-value."基于收货的发票校验
* WHEN 29.
* gs_alv-telf1 = ls_excel-value."供应商业务员
* WHEN 30.
* gs_alv-verkf = ls_excel-value."供应商业务员电话
* WHEN 31.
* gs_alv-ktonr = ls_excel-value."伙伴功能:L1
** WHEN 32.
** gs_alv-verkf = ls_excel-value.
** WHEN 33.
** gs_alv-telf1 = ls_excel-value.
** WHEN 34.
** gs_alv-ktonr = ls_excel-value.
** WHEN 35.
** gs_alv-ekgrp = ls_excel-value.
* WHEN OTHERS.
* ENDCASE.
* AT END OF row.
* APPEND gs_alv TO gt_alv.
* CLEAR gs_alv.
* ENDAT.
* ENDLOOP.
*
* LOOP AT gt_alv INTO gs_alv.
* SELECT COUNT(*)
* FROM lfa1
* WHERE lifnr = gs_alv-partner.
* IF sy-subrc EQ 0.
* CONCATENATE '供应商编号:' gs_alv-partner '已经存在' INTO gs_alv-remark.
* gs_alv-icon_a = '@[email protected] '.
* MODIFY gt_alv FROM gs_alv.
* ENDIF.
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_EXCEL_DOWN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_excel_down .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FILE_F4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_P_FILE text
*&---------------------------------------------------------------------*
FORM frm_set_file_f4 USING i_file TYPE rlgrap-filename.
* 局部变量-文件名定义
DATA l_filename TYPE rlgrap-filename.
CLEAR l_filename.
* 选择文件搜索帮助
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = i_file
mask = ',*.xlsx,*.XLSX,*.xls,*.XLS.'
mode = '0'
title = TEXT-002
IMPORTING
filename = l_filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
* 如果选择了文件
IF sy-subrc = 0 AND l_filename IS NOT INITIAL.
p_file = l_filename.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_data .
* alv相关变量定义
DATA:lt_fcat TYPE lvc_t_fcat,
ls_layo TYPE lvc_s_layo.
* FIELDCAT字段填充
CLEAR lt_fcat[].
PERFORM frm_fill_fcat TABLES lt_fcat.
* 布局设置
CLEAR ls_layo.
ls_layo-zebra = 'X'. "斑马线
ls_layo-cwidth_opt = 'X'. "最优宽
ls_layo-box_fname = 'SEL'. "选择模式
* ALV显示数据
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = ls_layo
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
it_fieldcat_lvc = lt_fcat[]
i_save = 'A'
TABLES
t_outtab = gt_alv[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
* 数据显示失败
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
* 设定状态栏
*----------------------------------------------------------------------*
FORM frm_set_status USING extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
* DATA: BEGIN OF ls_code,
* code LIKE sy-ucomm,
* END OF ls_code.
* DATA: lt_code LIKE TABLE OF ls_code.
* ls_code-code = 'INSERT'.
* APPEND ls_code TO lt_code.
* ls_code-code = 'CHANGE'.
* APPEND ls_code TO lt_code.
*
* SET PF-STATUS 'ZSTANDARD_FULLSCREEN' EXCLUDING lt_code.
* SET TITLEBAR 'TI_1000'.
ENDFORM. " FRM_SET_STATUS
FORM frm_user_command USING i_ucomm LIKE sy-ucomm
i_selfield TYPE slis_selfield.
IF sy-ucomm EQ 'IMPORT' .
ENDIF .
* CASE i_ucomm.
* WHEN 'BACK'.
* LEAVE TO SCREEN 0.
*
* WHEN 'EXIT'.
* LEAVE PROGRAM.
*
* WHEN 'IMPORT'. "采购信息记录创建
* LOOP AT gt_alv INTO gs_alv.
* PERFORM frm_data_import.
* ENDLOOP .
* WHEN 'CHANGE'.
* PERFORM frm_data_change. "供应商信息修改
*
* WHEN 'INSERT'.
* PERFORM frm_data_insert. "已存在供应商扩展
*
* WHEN 'INSERT2'.
* " PERFORM FRM_DATA_INSERT2. "客户扩展供应商
*** WHEN 'EXPORT'. "------------------------------------20160722注销,采用系统标准电子表格。
*** PERFORM FRM_DATA_EXPORT.
* WHEN OTHERS.
* ENDCASE.
ENDFORM. " FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form FRM_FILL_FCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
* -->P_LT_FCAT text
*&---------------------------------------------------------------------*
FORM frm_fill_fcat TABLES t_fcat TYPE lvc_t_fcat.
"局部变量的定义
DATA ls_fcat TYPE lvc_s_fcat.
DEFINE m_fieldcat.
CLEAR ls_fcat.
ls_fcat-fieldname = &1.
ls_fcat-coltext = &2.
ls_fcat-outputlen = &3.
ls_fcat-no_zero = &4.
IF ls_fcat-fieldname = 'ICON_A'.
ls_fcat-icon = 'X'.
ENDIF.
APPEND ls_fcat TO t_fcat.
END-OF-DEFINITION.
* m_fieldcat 'ICON_A ' '指示灯 ' '' ''.
m_fieldcat 'MATNR' '物料' '' ''.
m_fieldcat 'LIFNR' '供应商代码 ' '' ''.
m_fieldcat 'VKORG' '采购组织 ' '' ''.
m_fieldcat 'WERKS' '工厂 ' '' ''.
m_fieldcat 'NETPR' '净价 ' '' ''.
m_fieldcat 'MWSKZ' '税率 ' '' ''.
m_fieldcat 'PEINH' '价格单位 ' '' ''.
m_fieldcat 'WAERS' '币种' '' ''.
m_fieldcat 'LIFAB' '有效开始日期' '' ''.
m_fieldcat 'LIFBI' '有效结束日期 ' '' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_IMPORT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_data_import .
CLEAR :wa_eina,wa_eine,wa_eina_new,wa_eine_new,it_head,it_line,it_eina,it_eine,return,l_netpr,l_komv,l_ekpo.
* **供应商主数据加前导零
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_alv-lifnr
IMPORTING
output = gs_alv-lifnr.
wa_eina-lifnr = gs_alv-lifnr. " 供应商编号
wa_eina-matnr = gs_alv-matnr. "物料
wa_eine-ekorg = gs_alv-vkorg. "采购组织
wa_eine-werks = gs_alv-werks. " 工厂
wa_eine-esokz = '0'. " 0 标准采购 3 委外
wa_eine-netpr = gs_alv-netpr. " 净价
wa_eine-waers = gs_alv-waers ."币种
* wa_eine-ekgrp = 'D01'. ” 采购组
wa_eine-norbm = '1'. "标准采购订单数量
wa_eine-aplfz = '1'. "计划交货时间
* wa_eine-effpr = gs_alv-abmpr. "采购信息记录中的有效价格
wa_eine-mwskz = gs_alv-mwskz. " 税码
wa_eine-peinh = gs_alv-peinh. " 价格单位
wa_eine-webre = 'X' ." 基于收货的发票校验
* wa_eina-lifab = gs_alv-lifab. "有效开始日期 没用
* wa_eina-lifbi = gs_alv-lifbi. "有效结束日期 没用
" 报价单号
* CONCATENATE 'ZSDP201创建' INTO WA_EINA-IDNLF.
CALL FUNCTION 'ME_INITIALIZE_INFORECORD'.
CALL FUNCTION 'ME_DIRECT_INPUT_INFORECORD'
EXPORTING
activity = 'V' "V 修改,H创建
i_eina = wa_eina
i_eine = wa_eine
i_no_suppose = ''
i_vorga = 'A'
* I_NO_SUPPOSE = 'X'"重要
* I_VORGA = 'B'
* i_skip_nr_check = '1'
IMPORTING
e_eina = wa_eina_new
e_eine = wa_eine_new
TABLES
t_head = it_head
t_line = it_line
EXCEPTIONS
textname_invalid = 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.
CALL FUNCTION 'ME_POST_INFORECORD'
EXPORTING
i_matnr = wa_eina-matnr
o_matnr = wa_eina-matnr
TABLES
t_eina_i = it_eina.
*APPEND wa_eine_new to it_eine.
CALL FUNCTION 'ME_UPDATE_INFORECORD_COND'
TABLES
reine = it_eine.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
READ TABLE it_eina INDEX 1.
* WRITE:/ icon_green_light AS ICON, l_tabix,'行','采购信息记录创建成功,信息记录号:',it_eina-infnr.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv2 .
DEFINE append_field.
gs_fieldcat-fieldname = &1.
gs_fieldcat-seltext_l = &2.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR: gs_fieldcat.
END-OF-DEFINITION.
append_field 'LIGHT' '指示灯 ' .
append_field 'RESULT' '处理结果 ' .
append_field: 'MATNR' '编号' .
append_field 'LIFNR' '供应商代码 '.
append_field 'VKORG' '采购组织 '.
append_field 'WERKS' '工厂 '.
append_field 'NETPR' '净价 ' .
append_field 'MWSKZ' '税率 ' .
append_field 'PEINH' '价格单位 ' .
append_field 'WAERS' '币种' .
append_field 'LIFAB' '有效开始日期' .
append_field 'LIFBI' '有效结束日期 ' .
append_field 'P' '采购' .
append_field 'W' '委外' .
append_field 'KSTBM' '阶梯数量' .
append_field 'KBETR' '阶梯价格' .
gs_layout-box_fieldname = 'MARK'.
gs_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_STATUS_SET2'
i_callback_user_command = 'FRM_USER_COMMAND2'
*
* I_GRID_SETTINGS =
is_layout = gs_layout
it_fieldcat = gt_fieldcat
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM frm_status_set2 USING ut_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
ENDFORM.
FORM frm_user_command2 USING uv_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield.
IF sy-ucomm EQ 'IMPORT' .
* LOOP AT gt_alv into gs_alv .
* PERFORM frm_data_import .
* ENDLOOP .
CLEAR gv_c .
IF cb_1 EQ 'X'.
gv_c = 'X' .
ENDIF .
lt_alv = gt_alv .
SORT lt_alv BY matnr lifnr vkorg werks p w.
DELETE ADJACENT DUPLICATES FROM lt_alv COMPARING matnr lifnr vkorg werks p w .
LOOP AT lt_alv INTO ls_alv WHERE mark EQ 'X' .
IF r_3 EQ 'X' .
PERFORM frm_data_import_bdc . "新增加
ELSE .
PERFORM frm_data_import_bdc2 ."修改
ENDIF .
CLEAR ls_alv.
ENDLOOP .
* 更新结果
SORT lt_alv BY matnr lifnr vkorg werks p w.
LOOP AT gt_alv INTO gs_alv .
CLEAR ls_alv .
READ TABLE lt_alv INTO ls_alv WITH KEY matnr = gs_alv-matnr
lifnr = gs_alv-lifnr
vkorg = gs_alv-vkorg
werks = gs_alv-werks
p = gs_alv-p
w = gs_alv-w
BINARY SEARCH .
gs_alv-light = ls_alv-light .
gs_alv-result = ls_alv-result .
MODIFY gt_alv FROM gs_alv .
ENDLOOP .
ENDIF .
us_selfield-refresh = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_IMPORT_BDC
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_data_import_bdc .
* *设置方式
l_option-dismode = 'N'.
* l_option-dismode = 'E'.
l_option-updmode = 'S'.
l_option-defsize = 'X'.
l_option-nobinpt = 'X'.
l_option-racommit = 'X'." ne.
CLEAR:gt_bdcdata,gt_bdcdata[].
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0100'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINE-EKORG' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM frm_bdc_field USING 'EINA-LIFNR' ls_alv-lifnr. " 供应商编号
PERFORM frm_bdc_field USING 'EINA-MATNR' ls_alv-matnr. "物料
PERFORM frm_bdc_field USING 'EINE-EKORG' ls_alv-vkorg . "采购组织
PERFORM frm_bdc_field USING 'EINE-WERKS' ls_alv-werks . " 工厂
IF ls_alv-p EQ 'X' .
PERFORM frm_bdc_field USING 'RM06I-NORMB' 'X' . "标准采购
ENDIF .
IF ls_alv-w EQ 'X' .
PERFORM frm_bdc_field USING 'RM06I-LOHNB' 'X' . "标准采购
ENDIF .
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0101'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINA-MAHN1' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=EINE' .
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0102'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINE-MWSKZ' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=KO' .
PERFORM frm_bdc_field USING 'EINE-APLFZ' '10' .
PERFORM frm_bdc_field USING 'EINE-NORBM' '1' .
PERFORM frm_bdc_field USING 'EINE-MWSKZ' ls_alv-mwskz. " 税码
PERFORM frm_bdc_field USING 'EINE-NETPR' ls_alv-netpr . " 净价
PERFORM frm_bdc_field USING 'EINE-WAERS' ls_alv-waers . "币种
PERFORM frm_bdc_field USING 'EINE-PEINH' ls_alv-peinh . " 价格单位
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0201'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'RV13A-DATAB' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=SICH' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab .
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi .
CLEAR : gt_messtab[] .
CALL TRANSACTION 'ME11' USING gt_bdcdata
OPTIONS FROM l_option
MESSAGES INTO gt_messtab.
READ TABLE gt_messtab INTO gs_messtab WITH KEY msgid = '06' msgnr = '331'.
IF sy-subrc <> 0.
LOOP AT gt_messtab INTO gwa_messtab.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = gwa_messtab-msgid
msgnr = gwa_messtab-msgnr
msgv1 = gwa_messtab-msgv1
msgv2 = gwa_messtab-msgv2
msgv3 = gwa_messtab-msgv3
msgv4 = gwa_messtab-msgv4
IMPORTING
message_text_output = lv_msg.
IF ls_alv-result IS INITIAL.
ls_alv-result = lv_msg.
ELSE.
CONCATENATE lv_msg '/' ls_alv-result INTO ls_alv-result.
ENDIF.
CLEAR: gwa_messtab.
ENDLOOP.
ls_alv-light = '@[email protected]'.
ELSE.
ls_alv-light = '@[email protected]'.
ls_alv-result = '处理成功!'.
ENDIF.
MODIFY lt_alv FROM ls_alv TRANSPORTING light result .
CLEAR: ls_alv.
ENDFORM.
FORM frm_bdc_dynpro USING program dynpro.
CLEAR: gs_bdcdata.
gs_bdcdata-program = program.
gs_bdcdata-dynpro = dynpro.
gs_bdcdata-dynbegin = 'X'.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.
FORM frm_bdc_field USING fnam fval.
CLEAR gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DATA_IMPORT_BDC2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_data_import_bdc2 .
* * *设置方式
l_option-dismode = 'N'.
* l_option-dismode = 'E'.
l_option-updmode = 'S'.
l_option-defsize = 'X'.
l_option-nobinpt = 'X'.
l_option-racommit = 'X'." ne.
CLEAR:gt_bdcdata,gt_bdcdata[].
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0100'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINE-EKORG' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM frm_bdc_field USING 'EINA-LIFNR' ls_alv-lifnr. " 供应商编号
PERFORM frm_bdc_field USING 'EINA-MATNR' ls_alv-matnr. "物料
PERFORM frm_bdc_field USING 'EINE-EKORG' ls_alv-vkorg . "采购组织
PERFORM frm_bdc_field USING 'EINE-WERKS' ls_alv-werks . " 工厂
IF ls_alv-p EQ 'X' .
PERFORM frm_bdc_field USING 'RM06I-NORMB' 'X' . "标准采购
ENDIF .
IF ls_alv-w EQ 'X' .
PERFORM frm_bdc_field USING 'RM06I-LOHNB' 'X' . "标准采购
ENDIF .
IF ls_alv-p IS INITIAL AND ls_alv-w IS INITIAL .
MESSAGE '信息记录类别为空' TYPE 'E' .
EXIT .
ENDIF .
"
"陶经理
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0101'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINA-MAHN1' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=EINE' .
"税码
PERFORM frm_bdc_dynpro USING 'SAPMM06I' '0102'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'EINE-MWSKZ' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=KO' .
PERFORM frm_bdc_field USING 'EINE-MWSKZ' ls_alv-mwskz .
PERFORM frm_bdc_dynpro USING 'SAPLV14A' '0102' .
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'VAKE-DATAB(01)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=NEWD' .
* PERFORM frm_bdc_dynpro USING 'SAPLV13A' '0201' .
* PERFORM frm_bdc_field USING 'BDC_CURSOR' 'RV13A-DATAB' .
* PERFORM frm_bdc_field USING 'BDC_OKCODE' '/00' .
* PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
* PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0201'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'KONP-KSCHL(01)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=PSTF' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
PERFORM frm_bdc_field USING 'RV130-SELKZ(01)' 'X' .
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'KONM-KBETR(07)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '/00' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
CLEAR lt_alv2[] .
LOOP AT gt_alv INTO gs_alv WHERE matnr = ls_alv-matnr
AND lifnr = ls_alv-lifnr
AND vkorg = ls_alv-vkorg
AND werks = ls_alv-werks
AND p = ls_alv-p
AND w = ls_alv-w .
APPEND gs_alv TO lt_alv2 .
CLEAR gs_alv .
ENDLOOP .
SORT lt_alv2 BY lifnr matnr vkorg werks kstbm p w.
DATA lv_lines TYPE i .
DESCRIBE TABLE lt_alv2 LINES lv_lines .
DATA: ls_str TYPE string .
DATA lv_tabix TYPE sy-tabix .
LOOP AT lt_alv2 INTO ls_alv2 .
CLEAR lv_tabix .
lv_tabix = sy-tabix .
ls_str = ls_alv2-kstbm .
IF lv_tabix EQ 1 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(01)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 2 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(02)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 3 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(03)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 4 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(04)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 5 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(05)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 6 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(06)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 7 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(07)' ls_str ."结束有效日
ENDIF .
CLEAR : ls_alv2 ,ls_str .
ENDLOOP .
LOOP AT lt_alv2 INTO ls_alv2 .
CLEAR lv_tabix .
lv_tabix = sy-tabix .
ls_str = ls_alv2-kbetr .
IF lv_tabix EQ 1 .
PERFORM frm_bdc_field USING 'KONM-KBETR(01)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 2 .
PERFORM frm_bdc_field USING 'KONM-KBETR(02)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 3 .
PERFORM frm_bdc_field USING 'KONM-KBETR(03)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 4 .
PERFORM frm_bdc_field USING 'KONM-KBETR(04)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 5 .
PERFORM frm_bdc_field USING 'KONM-KBETR(05)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 6 .
PERFORM frm_bdc_field USING 'KONM-KBETR(06)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 7 .
PERFORM frm_bdc_field USING 'KONM-KBETR(07)' ls_str ."结束有效日
ENDIF .
CLEAR : ls_alv2 ,ls_str .
ENDLOOP .
"价格系数
PERFORM frm_bdc_field USING 'RV13A-KPEIN(01)' ls_alv-peinh ."价格单位
IF lv_lines < 8 .
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'KONM-KSTBM(01)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=SICH' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
ENDIF .
"8~阶梯处理
IF lv_lines >= 8 .
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'KONM-KBETR(01)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=NEWP' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'KONM-KBETR(07)' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=SICH' .
PERFORM frm_bdc_field USING 'RV13A-DATAB' ls_alv-lifab . "开始有效日
PERFORM frm_bdc_field USING 'RV13A-DATBI' ls_alv-lifbi ."结束有效日
LOOP AT lt_alv2 INTO ls_alv2 .
CLEAR lv_tabix .
lv_tabix = sy-tabix .
ls_str = ls_alv2-kstbm .
IF lv_tabix EQ 8 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(02)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 9 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(03)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 10 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(04)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 11 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(05)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 12 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(06)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 13 .
PERFORM frm_bdc_field USING 'KONM-KSTBM(07)' ls_str ."结束有效日
ENDIF .
CLEAR : ls_alv2 ,ls_str .
ENDLOOP .
LOOP AT lt_alv2 INTO ls_alv2 .
CLEAR lv_tabix .
lv_tabix = sy-tabix .
ls_str = ls_alv2-kbetr .
IF lv_tabix EQ 8 .
PERFORM frm_bdc_field USING 'KONM-KBETR(02)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 9 .
PERFORM frm_bdc_field USING 'KONM-KBETR(03)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 10 .
PERFORM frm_bdc_field USING 'KONM-KBETR(04)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 11 .
PERFORM frm_bdc_field USING 'KONM-KBETR(05)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 12 .
PERFORM frm_bdc_field USING 'KONM-KBETR(06)' ls_str ."结束有效日
ENDIF .
IF lv_tabix EQ 13 .
PERFORM frm_bdc_field USING 'KONM-KBETR(07)' ls_str ."结束有效日
ENDIF .
CLEAR : ls_alv2 ,ls_str .
ENDLOOP .
ENDIF .
IF gv_c EQ 'X' .
PERFORM frm_bdc_dynpro USING 'SAPMV13A' '0121'.
PERFORM frm_bdc_field USING 'BDC_CURSOR' 'RV13A-DATAB' .
PERFORM frm_bdc_field USING 'BDC_OKCODE' '=BSTA' .
ENDIF .
CLEAR : gt_messtab[] .
CALL TRANSACTION 'ME12' USING gt_bdcdata
OPTIONS FROM l_option
MESSAGES INTO gt_messtab.
READ TABLE gt_messtab INTO gs_messtab WITH KEY msgid = '06' msgnr = '335'.
IF sy-subrc <> 0.
LOOP AT gt_messtab INTO gwa_messtab.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = gwa_messtab-msgid
msgnr = gwa_messtab-msgnr
msgv1 = gwa_messtab-msgv1
msgv2 = gwa_messtab-msgv2
msgv3 = gwa_messtab-msgv3
msgv4 = gwa_messtab-msgv4
IMPORTING
message_text_output = lv_msg.
IF ls_alv-result IS INITIAL.
ls_alv-result = lv_msg.
ELSE.
CONCATENATE lv_msg '/' ls_alv-result INTO ls_alv-result.
ENDIF.
CLEAR: gwa_messtab.
ENDLOOP.
ls_alv-light = '@[email protected]'.
ELSE.
ls_alv-light = '@[email protected]'.
ls_alv-result = '处理成功!'.
ENDIF.
MODIFY lt_alv FROM ls_alv TRANSPORTING light result .
CLEAR: ls_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA2
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_upload_data2 .
* * 局部变量的定义
DATA:lt_excel TYPE TABLE OF alsmex_tabline. "参照类型有标准的调整为ZALSMEX_TABLINE_LINE。
DATA: ls_excel TYPE alsmex_tabline.
DATA: kstbm2 LIKE konm-kstbm ."等级
DATA: kbetr2 LIKE konm-kbetr . "等级价格
DATA: kstbm3 LIKE konm-kstbm ."等级
DATA: kbetr3 LIKE konm-kbetr . "等级价格
DATA: kstbm4 LIKE konm-kstbm ."等级
DATA: kbetr4 LIKE konm-kbetr . "等级价格
DATA: kstbm5 LIKE konm-kstbm ."等级
DATA: kbetr5 LIKE konm-kbetr . "等级价格
DATA: kstbm6 LIKE konm-kstbm ."等级
DATA: kbetr6 LIKE konm-kbetr . "等级价格
DATA: kstbm7 LIKE konm-kstbm ."等级
DATA: kbetr7 LIKE konm-kbetr . "等级价格
DATA: kstbm8 LIKE konm-kstbm ."等级
DATA: kbetr8 LIKE konm-kbetr . "等级价格
DATA: kstbm9 LIKE konm-kstbm ."等级
DATA: kbetr9 LIKE konm-kbetr . "等级价格
DATA: kstbm10 LIKE konm-kstbm ."等级
DATA: kbetr10 LIKE konm-kbetr . "等级价格
DATA: kstbm11 LIKE konm-kstbm ."等级
DATA: kbetr11 LIKE konm-kbetr . "等级价格
DATA: kstbm12 LIKE konm-kstbm ."等级
DATA: kbetr12 LIKE konm-kbetr . "等级价格
DATA: kstbm13 LIKE konm-kstbm ."等级
DATA: kbetr13 LIKE konm-kbetr . "等级价格
DATA: kstbm14 LIKE konm-kstbm ."等级
DATA: kbetr14 LIKE konm-kbetr . "等级价格
*** 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 = 42
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."阶梯价
WHEN 17.
kstbm2 = ls_excel-value."阶梯数量
WHEN 18.
kbetr2 = ls_excel-value."阶梯价
WHEN 19.
kstbm3 = ls_excel-value."阶梯数量
WHEN 20.
kbetr3 = ls_excel-value."阶梯价
WHEN 21.
kstbm4 = ls_excel-value."阶梯数量
WHEN 22.
kbetr4 = ls_excel-value."阶梯价
WHEN 23.
kstbm5 = ls_excel-value."阶梯数量
WHEN 24.
kbetr5 = ls_excel-value."阶梯价
WHEN 25.
kstbm6 = ls_excel-value."阶梯数量
WHEN 26.
kbetr6 = ls_excel-value."阶梯价
WHEN 27.
kstbm7 = ls_excel-value."阶梯数量
WHEN 28.
kbetr7 = ls_excel-value."阶梯价
WHEN 29.
kstbm8 = ls_excel-value."阶梯数量
WHEN 30.
kbetr8 = ls_excel-value."阶梯价
WHEN 31.
kstbm9 = ls_excel-value."阶梯数量
WHEN 32.
kbetr9 = ls_excel-value."阶梯价
WHEN 33.
kstbm10 = ls_excel-value."阶梯数量
WHEN 34.
kbetr10 = ls_excel-value."阶梯价
WHEN 35.
kstbm11 = ls_excel-value."阶梯数量
WHEN 36.
kbetr11 = ls_excel-value."阶梯价
WHEN 37.
kstbm12 = ls_excel-value."阶梯数量
WHEN 38.
kbetr12 = ls_excel-value."阶梯价
WHEN 39.
kstbm13 = ls_excel-value."阶梯数量
WHEN 40.
kbetr13 = ls_excel-value."阶梯价
WHEN 41.
kstbm14 = ls_excel-value."阶梯数量
WHEN 42.
kbetr14 = ls_excel-value."阶梯价
ENDCASE.
AT END OF row.
APPEND gs_alv TO gt_alv.
IF kstbm2 <> 0 .
gs_alv-kstbm = kstbm2 .
gs_alv-kbetr = kbetr2 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm3 <> 0 .
gs_alv-kstbm = kstbm3 .
gs_alv-kbetr = kbetr3 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm4 <> 0 .
gs_alv-kstbm = kstbm4 .
gs_alv-kbetr = kbetr4 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm5 <> 0 .
gs_alv-kstbm = kstbm5 .
gs_alv-kbetr = kbetr5 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm6 <> 0 .
gs_alv-kstbm = kstbm6 .
gs_alv-kbetr = kbetr6 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm7 <> 0 .
gs_alv-kstbm = kstbm7 .
gs_alv-kbetr = kbetr7 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm8 <> 0 .
gs_alv-kstbm = kstbm8 .
gs_alv-kbetr = kbetr8 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm9 <> 0 .
gs_alv-kstbm = kstbm9 .
gs_alv-kbetr = kbetr9 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm10 <> 0 .
gs_alv-kstbm = kstbm10 .
gs_alv-kbetr = kbetr10 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm11 <> 0 .
gs_alv-kstbm = kstbm11 .
gs_alv-kbetr = kbetr11 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm12 <> 0 .
gs_alv-kstbm = kstbm12 .
gs_alv-kbetr = kbetr12 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm13 <> 0 .
gs_alv-kstbm = kstbm13 .
gs_alv-kbetr = kbetr13 .
APPEND gs_alv TO gt_alv.
ENDIF .
IF kstbm14 <> 0 .
gs_alv-kstbm = kstbm14 .
gs_alv-kbetr = kbetr14 .
APPEND gs_alv TO gt_alv.
ENDIF .
CLEAR gs_alv.
CLEAR : kstbm2 , kbetr2 ,kstbm3 , kbetr3 ,kstbm4 , kbetr4 ,kstbm5 , kbetr5 ,kstbm6 , kbetr6 ,
kstbm7 , kbetr7 ,kstbm8 , kbetr8 ,kstbm9 , kbetr9 ,kstbm10 , kbetr10 ,kstbm11 , kbetr11 ,
kstbm12 , kbetr12 ,kstbm13 , kbetr13 ,kstbm14 , kbetr14 .
ENDAT.
ENDLOOP .
ENDFORM.