SAP SD客户物料批量维护功能分享
一、功能逻辑
二、功能代码
1)功能界面
导入模板
2)功能代码
*&---------------------------------------------------------------------*
*& Report ZRPFICO0016
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zrpsd0006 MESSAGE-ID 00.
************************************************************************
* A D M I N I S T R A T I O N *
************************************************************************
* Version : 1.0
* Program Name : ZRPSD0005
* Created by : wangtaojian
* Created on : 10.10.2024 10:31:10
* Description :客户物料批量导入
************************************************************************
************************************************************************
* I N C L U D E *
************************************************************************
INCLUDE zrpsd0006_top.
*INCLUDE ZRPSD0005_top.
*INCLUDE *_pbo.
*INCLUDE *_pai.
INCLUDE zrpsd0006_form.
*INCLUDE ZRPSD0005_form.
************************************************************************
* S T A R T O F S E L E C T I O N *
************************************************************************
START-OF-SELECTION.
************************************************************************
***********************************耗时处理*****************************
************************************************************************
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 1
text = '数据处理中,请等待...'.
"获取上传的数据—>
"检查 & 整合数据到ALV【红绿灯、勾选框】—>
PERFORM frm_upload_file USING p_fpath.
CHECK flg_err IS INITIAL .
PERFORM frm_check_data.
PERFORM frm_dealwith_data.
PERFORM frm_dispaly_data.
************************************************************************
* E N D O F S E L E C T I O N *
************************************************************************
*&---------------------------------------------------------------------*
*& 包含 ZRPSD0005_TOP
*&---------------------------------------------------------------------*
************************************************************************
* T A B L E S *
************************************************************************
TABLES: sscrfields.
TYPE-POOLS icon.
************************************************************************
* T Y P E S *
************************************************************************
TYPES: BEGIN OF ty_alv,
box TYPE c, "勾选框
light TYPE c LENGTH 20, "红绿灯
zmes TYPE string, "消息
kunnr TYPE knmt-kunnr,
vkorg TYPE knmt-vkorg,
vtweg TYPE knmt-vtweg,
matnr TYPE knmt-matnr,
kdmat TYPE knmt-kdmat,
zpostx TYPE knmt-zpostx,
zcust_spec TYPE knmt-zcust_spec,
zend_cust TYPE but000-partner,
zend_des TYPE knmt-zcust_spec,
END OF ty_alv.
DEFINE set_field.
gs_fcat-fieldname = &1. "字段名
gs_fcat-scrtext_s = &2. "字段名文本
gs_fcat-scrtext_m = &2.
gs_fcat-scrtext_l = &2.
gs_fcat-outputlen = &3. "输出长度
* gs_fcat-no_zero = 'X'.
* gs_fcat-just = 'C'. "对齐方式
IF gs_fcat-fieldname = 'BOX'.
gs_fcat-checkbox = 'X'.
gs_fcat-edit = 'X'.
ENDIF.
IF gs_fcat-fieldname = 'LIGHT'.
gs_fcat-icon = 'X'.
ENDIF.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
END-OF-DEFINITION.
DEFINE field_required_check.
IF &1 IS INITIAL.
<fs_alv>-light = icon_red_light.
<fs_alv>-zmes = gs_alv-zmes && &2.
ENDIF.
END-OF-DEFINITION.
************************************************************************
* I N N E R T A B L E A N D W O R K A R E A *
************************************************************************
DATA:gt_log TYPE TABLE OF ztfico011 .
DATA: gs_alv TYPE ty_alv,
gt_alv TYPE TABLE OF ty_alv.
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat,
gs_layo TYPE lvc_s_layo,
gs_stylerow TYPE lvc_s_styl, "控制单元格style
gt_stylerow TYPE lvc_t_styl.
************************************************************************
* V A R I A B L E *
************************************************************************
DATA: functxt TYPE smp_dyntxt.
DATA:flg_err TYPE c .
************************************************************************
* C O N S T A N T S *
************************************************************************
************************************************************************
* S E L E C T I O N S C R E E N *
************************************************************************
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-t01.
PARAMETERS: p_fpath TYPE rlgrap-filename.
SELECTION-SCREEN: END OF BLOCK blk1.
************************************************************************
* I N I T I A L I Z A T I O N *
************************************************************************
INITIALIZATION.
PERFORM frm_init_screen.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fpath.
PERFORM frm_get_filepath CHANGING p_fpath.
************************************************************************
* A T S E L E C T I O N S C R E E N O U T P U T *
************************************************************************
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_download_temp.
ENDCASE.
************************************************************************
* T O P O F P A G E *
************************************************************************
*&---------------------------------------------------------------------*
*& 包含 ZRPSD0005_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form frm_init_screen
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_init_screen .
functxt-icon_id = icon_export.
functxt-icon_text = TEXT-002.
sscrfields-functxt_01 = functxt.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_filepath
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- P_FPATH
*&---------------------------------------------------------------------*
FORM frm_get_filepath CHANGING c_path.
FIELD-SYMBOLS: <fs_file_table> TYPE file_table.
DATA: lt_file_table TYPE filetable,
l_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_file_table
rc = l_rc.
IF lt_file_table IS INITIAL.
MESSAGE s001 WITH TEXT-m01 DISPLAY LIKE 'E'.
RETURN.
ENDIF.
LOOP AT lt_file_table ASSIGNING <fs_file_table>.
CONCATENATE c_path <fs_file_table>-filename INTO c_path.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_download_temp
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_
*& --> TEXT_004
*&---------------------------------------------------------------------*
FORM frm_download_temp.
DATA:p_template TYPE string.
DATA:p_text TYPE string.
p_template = 'ZRPSD0006'.
p_text = '客户物料批量导入模板'.
DATA: lv_fname TYPE string,
lv_title TYPE string,
lv_path TYPE string VALUE 'D:/',
lv_fpath TYPE stri