SAP PP生产版本批量维护功能分享
一、功能逻辑






二、功能界面


三、功能代码
*&---------------------------------------------------------------------*
*& Report ZRPPP_0007
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zrppp_0007.
TABLES: mkal,mast,
sscrfields ,ICON.
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: gr_functions TYPE REF TO cl_salv_functions.
TYPES: BEGIN OF ty_data ,
werks TYPE mapl-werks,
matnr TYPE mapl-matnr,
verid TYPE mkal-verid,
text1 TYPE mkal-text1,
adatu TYPE mkal-adatu,
bdatu TYPE mkal-bdatu,
stlnr TYPE mast-stlnr,
stlan TYPE mast-stlan,
stlal TYPE mast-stlal,
* andat TYPE mast-andat,
datuv TYPE stko-datuv,
datuv0 TYPE stko-valid_to,
plnty TYPE mapl-plnty,
plnnr TYPE mapl-plnnr,
plnal TYPE mapl-plnal,
verwe TYPE plko-verwe,
datuv1 TYPE mapl-datuv,
datuv2 TYPE mapl-valid_to,
lgfsb TYPE marc-lgfsb,
prfg_f TYPE mkal-prfg_f,
prfg_s TYPE mkal-prfg_s,
chk1 TYPE char4, "检查字段-工艺路线
END OF ty_data .
TYPES: BEGIN OF ty_info ,
status TYPE zde_status,
msg TYPE bapi_msg,
ztype TYPE bapi_mtype,
END OF ty_info .
DATA:BEGIN OF gt_tab OCCURS 0 .
INCLUDE TYPE ty_data .
INCLUDE TYPE ty_info .
DATA:
END OF gt_tab .
DATA:BEGIN OF gt_log OCCURS 0 .
INCLUDE TYPE ty_info .
DATA: werks TYPE werks_d,
matnr TYPE matnr,
verid TYPE verid,
END OF gt_log .
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:flg_submit TYPE C .
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
s_werks FOR mkal-werks NO-EXTENSION NO INTERVALS MEMORY ID wrk OBLIGATORY ,
s_matnr FOR mkal-matnr .
SELECTION-SCREEN END OF BLOCK part1.
AT SELECTION-SCREEN OUTPUT.
IF sy-tcode = 'ZPP007A'.
SET TITLEBAR 'TITLE' WITH '生产版本批量查询' .
ENDIF.
INITIALIZATION.
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.
CLEAR: gt_log[].
* IF s_matnr[] IS INITIAL.
* MESSAGE s055(00) DISPLAY LIKE 'E' .
* RETURN.
* ENDIF.
CLEAR:gw_info .
AUTHORITY-CHECK OBJECT 'ZAOPP_WRK'
ID 'ZWERKS' FIELD s_werks-low
ID 'ZACTIVE' FIELD 'X'.
IF sy-subrc NE 0. "价格权限
MESSAGE '您没有此工厂的BOM查询权限' TYPE 'S' DISPLAY LIKE 'E' .
RETURN.
ENDIF.
PERFORM frm_get_data .
PERFORM frm_show_alv .
*&---------------------------------------------------------------------*
*& Form frm_show_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_show_alv .
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_tab[]
).
CATCH cx_salv_msg.
ENDTRY.
gr_columns = gr_table->get_columns( ).
gr_columns->set_optimize( 'X' ).
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( '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.
mcr_undisplay: 'PRFG_F',
'PRFG_S'.
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.
mcr_setcoltext: 'ZXXZSD' '消息指示灯',
'ZXXWB' '消息文本',
'WERKS' '工厂',
'MATNR'
