一、功能逻辑



二、功能界面


三、功能代码
*&---------------------------------------------------------------------*
*& Report ZRPPP_0003
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zrppp_0021.
TABLES: marc,mara,mast,stko,stpo,ztpp003_log,
sscrfields ,icon.
TYPE-POOLS:slis.
DATA: gr_table TYPE REF TO cl_salv_table.
DATA: gr_layout TYPE REF TO cl_salv_layout.
DATA: gs_program TYPE salv_s_layout_key.
DATA: gr_columns TYPE REF TO cl_salv_columns_table.
DATA: gr_column TYPE REF TO cl_salv_column_table.
DATA: gr_display TYPE REF TO cl_salv_display_settings.
DATA:BEGIN OF gt_update OCCURS 0 .
DATA:
aufnr TYPE afpo-aufnr,
posnr TYPE afpo-posnr,
vornr TYPE resb-vornr,
matnr1 TYPE resb-matnr,
maktx1 TYPE makt-maktx,
bdmng TYPE resb-bdmng,
erfme TYPE resb-erfme,
lgort TYPE resb-lgort,
sortf TYPE resb-sortf,
END OF gt_update .
TYPES: BEGIN OF ty_msg ,
status TYPE zde_status,
msg TYPE bapi_msg,
ztype TYPE bapi_mtype,
END OF ty_msg .
TYPES: BEGIN OF ty_info ,
werks TYPE afpo-dwerk,
aufnr TYPE afpo-aufnr,
auart TYPE caufv-auart,
matnr TYPE afpo-matnr,
maktx TYPE makt-maktx,
gamng TYPE afko-gamng,
gstrp TYPE afko-gstrp,
gltrp TYPE afko-gltrp,
posnr TYPE resb-posnr,
vornr TYPE resb-vornr,
matnr1 TYPE resb-matnr,
maktx1 TYPE makt-maktx,
bdmng TYPE resb-bdmng,
erfme TYPE resb-erfme,
lgort TYPE resb-lgort,
sortf TYPE resb-sortf,
END OF ty_info .
DATA:BEGIN OF gt_tab OCCURS 0 .
INCLUDE TYPE ty_msg .
INCLUDE TYPE ty_info .
DATA: rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
aplzl TYPE afvu-aplzl,
END OF gt_tab .
TYPES: BEGIN OF ty_gx ,
aufnr TYPE afpo-aufnr,
vornr TYPE afvgd-vornr,
arbpl TYPE afvgd-arbpl,
steus TYPE afvgd-steus,
ltxa1 TYPE afvgd-ltxa1,
vgw01 TYPE afvgd-vgw01,
vge01 TYPE afvgd-vge01,
vgw02 TYPE afvgd-vgw02,
vge02 TYPE afvgd-vge02,
vgw03 TYPE afvgd-vgw03,
vge03 TYPE afvgd-vge03,
ekorg TYPE afvgd-ekorg,
ekgrp TYPE afvgd-ekgrp,
matkl TYPE afvgd-matkl,
END OF ty_gx .
DATA:BEGIN OF gt_gx OCCURS 0 .
INCLUDE TYPE ty_msg .
INCLUDE TYPE ty_gx .
DATA: aufpl TYPE afko-aufpl,
END OF gt_gx .
DATA:BEGIN OF gw_info.
DATA: ztype TYPE bapi_mtype,
zmsg TYPE bapi_msg,
zauth_wrk TYPE char1, "工厂权限
* zauth_prs TYPE char1, "价格权限
END OF gw_info .
DATA:BEGIN OF gt_head OCCURS 0 .
DATA: aufnr TYPE afpo-aufnr,
ablad TYPE afpo-ablad.
INCLUDE TYPE ty_msg .
DATA: END OF gt_head .
DATA:flg_submit TYPE c .
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE TEXT-001.
PARAMETERS:rd1 RADIOBUTTON GROUP gp1 USER-COMMAND cmd DEFAULT 'X',
rd2 RADIOBUTTON GROUP gp1,
rd3 RADIOBUTTON GROUP gp1.
PARAMETERS: p_file TYPE rlgrap-filename MODIF ID g1 ."MEMORY ID p21 .
SKIP 1 .
PARAMETERS: chk1 AS CHECKBOX .
SELECTION-SCREEN END OF BLOCK part1.
*SELECTION-SCREEN PUSHBUTTON /1(20) btntxt1 USER-COMMAND but1 MODIF ID g1 .
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
AT SELECTION-SCREEN OUTPUT.
DATA(lv_title) = '组件' .
IF rd2 = 'X'.
lv_title = '工序' .
ELSEIF rd3 = 'X'.
lv_title = '抬头' .
ENDIF.
SET TITLEBAR 'TITLE' WITH lv_title .
IF rd1 = ''.
chk1 = '' .
ENDIF.
INITIALIZATION.
*btntxt1 = '模板下载' .
sscrfields-functxt_01 = '模板下载(组件批量维护)'.
sscrfields-functxt_02 = '模板下载(工序批量维护)'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_file.
AT SELECTION-SCREEN.
CHECK sscrfields-ucomm+0(2) = 'FC' .
PERFORM frm_down_model USING sscrfields-ucomm .
CLASS l_cl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS: on_user_command FOR EVENT added_function OF cl_salv_events_table
IMPORTING e_salv_function.
ENDCLASS.
CLASS l_cl_handle_events IMPLEMENTATION.
METHOD on_user_command.
PERFORM handle_user_command USING e_salv_function.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
IF p_file IS INITIAL.
MESSAGE '请选择要上传的模板文件' TYPE 'S' DISPLAY LIKE 'E'.
RETURN .
ENDIF.
IF rd1 = 'X' .
PERFORM frm_upload_file. "组件
ELSEIF rd2 = 'X' .
PERFORM frm_upload_file_1. "工序
ELSEIF rd3 = 'X' .
PERFORM frm_upload_file_2. "抬头
ENDIF.
CHECK gw_info-ztype NE 'E'.
PERFORM frm_show_alv .
*&---------------------------------------------------------------------*
*& Form frm_show_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_show_alv .
DEFINE marco_table.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = &1"gt_tab[]
).
CATCH cx_salv_msg.
ENDTRY.
END-OF-DEFINITION.
IF rd1 = 'X'. "组件
marco_table:gt_tab[] .
ELSEIF rd2 = 'X'. "工序
marco_table:gt_gx[] .
ELSEIF rd3 = 'X'. "抬头
marco_table:gt_head[] .
ENDIF.
gr_columns = gr_table->get_columns( ).
gr_columns->set_optimize( 'X' ).
DEFINE mcr_undisplay.
TRY.
gr_column ?= gr_columns->get_column( &1 ).
gr_column->set_visible( cl_salv_column_table=>false ).
gr_column->set_technical( 'X' ).
CATCH cx_salv_not_found .
ENDTRY.
END-OF-DEFINITION.
DEFINE mcr_setcoltext.
TRY.
gr_column ?= gr_columns->get_column( &1 ).
gr_column->set_short_text( &2 ).
gr_column->set_long_text( &2 ).
gr_column->set_medium_text( &2 ).
CATCH cx_salv_not_found .
ENDTRY.
END-OF-DEFINITION.
IF rd1 = 'X'. "组件
DATA(lv_title) = '组件' .
mcr_undisplay: 'ZTYPE','RSNUM','RSPOS' , 'APLZL'.
mcr_setcoltext: 'WERKS' '工厂',
'AUFNR' '生产工单',
'AUART' '生产工单类型',
'MATNR' '物料编码',
'MAKTX' '物料描述',
'GAMNG' '生产工单数量',
'GSTRP' '开始日期',
'GLTRP' '结束日期',
'POSNR' '行项目号',
'VORNR' '工序号',
'MATNR1' '组件物料编码',
'MAKTX1' '组件物料描述',
'BDMNG' '组件数量',
'ERFME' '单位',
'LGORT' '库存地'.
ELSEIF rd2 = 'X'. "工序
lv_title = '工序' .
mcr_undisplay: 'AUFPL'.
mcr_setcoltext: 'WERKS' '工厂',
'AUFNR' '生产工单号码',
'VORNR' '工序号',
'ARBPL' '工作中心',
'STEUS' '工序控制码',
'LTXA1' '工序短文本',
'VGW01' '人工工时',
'VGE01' '单位',
'VGW02' '机器工时',
'VGE02' '单位',
'VGW03' '模具工时',
'VGE03' '单位',
'EKORG' '采购组织',
'EKGRP' '采购组',
'MATKL' '物料组'.
ELSEIF rd3 = 'X'. "抬头
lv_title = '工单抬头' .
ENDIF.
TRY.
DATA lv_status TYPE sypfkey .
lv_status = 'STANDARD' .
CALL METHOD gr_table->set_screen_status
EXPORTING
report = sy-repid
pfstatus = lv_status
set_functions = gr_table->c_functions_all.
CATCH cx_sy_arithmetic_error INTO DATA(exc).
ENDTRY.
gr_layout = gr_table->get_layout( ).
gs_program-report = sy-repid.
gr_layout->set_key( gs_program ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
gr_layout->set_default( 'X' ).
* DATA lv_variant TYPE slis_vari .
* lv_variant = '/DEFAULT' .
* gr_layout->set_initial_layout( lv_variant ) .
"=====获取事件对象
DATA: lr_event TYPE REF TO cl_salv_events_table.
lr_event = gr_table->get_event( ).
"=====事件注册
DATA: lr_handle_event TYPE REF TO l_cl_handle_events.
CREATE OBJECT lr_handle_event.
SET HANDLER lr_handle_event->on_user_command FOR lr_event.
SET TITLEBAR 'TITLE' WITH lv_title .
gr_table->display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_input
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_check_input .
"检查输入
* CHECK gw_info-ztype EQ 'E'.
* MESSAGE '数据有错误,不能导入' TYPE 'S' DISPLAY LIKE gw_info-ztype .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_down_model
*&a

最低0.47元/天 解锁文章
629

被折叠的 条评论
为什么被折叠?



