***INCLUDE ZREUSEALV .
*&------------------------------------------------------------------*
*& PROGRAM VARIANS:
*&------------------------------------------------------------------*
DATA: w_col_pos TYPE i.
*&------------------------------------------------------------------*
*& TABLES:
*&------------------------------------------------------------------*
TYPE-POOLS: slis.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
ws_fieldgroups_tab TYPE slis_t_sp_group_alv,
ws_layout TYPE slis_layout_alv,
ws_sortfields_tab TYPE slis_t_sortinfo_alv,
it_events TYPE slis_t_event.
DATA: ws_fieldcat LIKE LINE OF it_fieldcat,
ws_events LIKE LINE OF it_events.
*---------------------------------------------------------------------*
* FORM print_report_alv *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM print_report_alv TABLES it_comp.
PERFORM fill_eventcat_alv.
PERFORM fill_layout_alv.
PERFORM start_list_viewer TABLES it_comp.
ENDFORM. " PRINT_REPORT_ALV
*---------------------------------------------------------------------*
* FORM SUB_FILL_FIELDCAT_ALV *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TABNAME *
* --> FIELDNAME *
*---------------------------------------------------------------------*
FORM sub_fill_fieldcat_alv USING tabname
ref_tabname fieldname fieldlabel.
w_col_pos = w_col_pos + 1.
CLEAR ws_fieldcat.
IF ref_tabname <> space.
ws_fieldcat-ref_tabname = ref_tabname.
ENDIF.
ws_fieldcat-fieldname = fieldname.
IF fieldlabel <> space.
ws_fieldcat-seltext_l = fieldlabel.
ws_fieldcat-seltext_m = fieldlabel.
ws_fieldcat-seltext_s = fieldlabel.
ws_fieldcat-ddictxt = 'M'.
ws_fieldcat-reptext_ddic = fieldlabel.
ENDIF.
ws_fieldcat-key = space.
ws_fieldcat-do_sum = space.
ws_fieldcat-col_pos = w_col_pos.
ws_fieldcat-no_out = space.
ws_fieldcat-hotspot = space.
ws_fieldcat-tabname = tabname.
APPEND ws_fieldcat TO it_fieldcat.
ENDFORM. "sub_fill_fieldcat_alv
*---------------------------------------------------------------------*
* FORM SUB_FILL_FIELDCAT_ALV *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TABNAME *
* --> FIELDNAME *
*---------------------------------------------------------------------*
FORM sub_fill_fieldcat_alv1 USING tabname
ref_tabname ref_fieldname
fieldname fieldlabel.
w_col_pos = w_col_pos + 1.
CLEAR ws_fieldcat.
IF ref_tabname <> space.
ws_fieldcat-ref_tabname = ref_tabname.
ENDIF.
IF ref_fieldname <> space.
ws_fieldcat-ref_fieldname = ref_fieldname.
ENDIF.
ws_fieldcat-fieldname = fieldname.
IF fieldlabel <> space.
ws_fieldcat-seltext_l = fieldlabel.
ws_fieldcat-seltext_m = fieldlabel.
ws_fieldcat-seltext_s = fieldlabel.
ws_fieldcat-reptext_ddic = fieldlabel.
ENDIF.
ws_fieldcat-key = space.
ws_fieldcat-do_sum = space.
ws_fieldcat-col_pos = w_col_pos.
ws_fieldcat-no_out = space.
ws_fieldcat-hotspot = space.
ws_fieldcat-tabname = tabname.
APPEND ws_fieldcat TO it_fieldcat.
ENDFORM. "sub_fill_fieldcat_alv1
*---------------------------------------------------------------------*
* FORM SUB_FILL_FIELDCAT_ALV *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TABNAME *
* --> FIELDNAME *
*---------------------------------------------------------------------*
FORM sub_fill_fieldcat_alv2 USING tabname
ref_tabname ref_fieldname
fieldname fieldlabel
p_decimal.
w_col_pos = w_col_pos + 1.
CLEAR ws_fieldcat.
IF ref_tabname <> space.
ws_fieldcat-ref_tabname = ref_tabname.
ENDIF.
IF ref_fieldname <> space.
ws_fieldcat-ref_fieldname = ref_fieldname.
ENDIF.
ws_fieldcat-fieldname = fieldname.
IF fieldlabel <> space.
ws_fieldcat-seltext_l = fieldlabel.
ws_fieldcat-seltext_m = fieldlabel.
ws_fieldcat-seltext_s = fieldlabel.
ws_fieldcat-reptext_ddic = fieldlabel.
ENDIF.
ws_fieldcat-key = space.
ws_fieldcat-do_sum = space.
ws_fieldcat-col_pos = w_col_pos.
ws_fieldcat-no_out = space.
ws_fieldcat-hotspot = space.
ws_fieldcat-tabname = tabname.
ws_fieldcat-decimals_out = p_decimal.
APPEND ws_fieldcat TO it_fieldcat.
ENDFORM. "sub_fill_fieldcat_alv2
*---------------------------------------------------------------------*
* FORM fill_eventcat_alv *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_eventcat_alv.
REFRESH it_events.
CLEAR ws_events.
ws_events-name = 'TOP_OF_PAGE'.
ws_events-form = 'TOP_OF_PAGE'.
APPEND ws_events TO it_events.
ENDFORM. "fill_eventcat_alv
*---------------------------------------------------------------------*
* FORM fill_layout_alv *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM fill_layout_alv.
CLEAR ws_layout.
ws_layout-colwidth_optimize = 'X'.
ENDFORM. "fill_layout_alv
*---------------------------------------------------------------------*
* FORM START_LIST_VIEWER *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM start_list_viewer TABLES it_comp.
DATA: lv_pgm LIKE sy-repid.
lv_pgm = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_pgm
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
i_callback_user_command = 'PROCESS_USER_COMMAND'
is_layout = ws_layout
it_fieldcat = it_fieldcat
i_default = 'X'
i_save = 'A'
it_events = it_events
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 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.
REFRESH it_fieldcat .
ENDFORM. "start_list_viewer
*&---------------------------------------------------------------------*
*& Form print_report_alv1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_MARC text
*----------------------------------------------------------------------*
FORM print_report_alv1 TABLES it_comp.
PERFORM fill_eventcat_alv.
PERFORM fill_layout_alv.
PERFORM start_list_viewer1 TABLES it_comp.
ENDFORM. " print_report_alv1
*---------------------------------------------------------------------*
* FORM START_LIST_VIEWER1 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM start_list_viewer1 TABLES it_comp.
DATA: lv_pgm LIKE sy-repid.
DATA: grid_settings TYPE lvc_s_glay.
lv_pgm = sy-repid.
grid_settings-coll_top_p = 'X'.
* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_pgm
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* i_callback_user_command = 'PROCESS_USER_COMMAND'
i_grid_settings = grid_settings
is_layout = ws_layout
it_fieldcat = it_fieldcat
i_default = 'X'
i_save = 'A'
it_events = it_events
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 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.
ENDFORM. "start_list_viewer1
alv
最新推荐文章于 2025-08-14 22:49:54 发布