REPORT z_demo_alv_sort_2. *---------------------------------------------------------------------* * This program lists orders (VBAK) with sort for 'Sales organization' * * (VKORG), 'sold-to-party' (KUNNR) and 'Document number' (VBELN) * *---------------------------------------------------------------------* * Author : Michel PIOUD * * Email : HomePage : http://www.oocities.org/mpioud * *---------------------------------------------------------------------* TYPES : BEGIN OF ty_vbak, vkorg TYPE vbak-vkorg, " Sales organization kunnr TYPE vbak-kunnr, " Sold-to party vbeln TYPE vbak-vbeln, " Sales document audat TYPE vbak-audat, " Document date END OF ty_vbak. DATA : vbak TYPE vbak, gt_vbak TYPE TABLE OF ty_vbak. SELECT-OPTIONS : s_vkorg FOR vbak-vkorg, " Sales organization s_kunnr FOR vbak-kunnr, " Sold-to party s_vbeln FOR vbak-vbeln. " Sales document SELECTION-SCREEN SKIP. SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_1 FOR FIELD p_page. PARAMETERS p_page RADIOBUTTON GROUP optn. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_2 FOR FIELD p_ligne. PARAMETERS p_ligne RADIOBUTTON GROUP optn. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN : BEGIN OF LINE, COMMENT 1(35) v_3 FOR FIELD p_nthng. PARAMETERS p_nthng RADIOBUTTON GROUP optn. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN : SKIP, BEGIN OF LINE,COMMENT 5(27) v_4 FOR FIELD p_max. PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY. SELECTION-SCREEN END OF LINE. *---------------------------------------------------------------------* INITIALIZATION. v_1 = 'New page at ''Sales Org.'' break'. v_2 = 'Underline at ''Sales Org.'' break'. v_3 = 'Nothing'. v_4 = 'Maximum of records to read'. *---------------------------------------------------------------------* START-OF-SELECTION. PERFORM f_read_data. PERFORM f_display_data. *---------------------------------------------------------------------* * Form f_read_data *---------------------------------------------------------------------* FORM f_read_data. SELECT vkorg kunnr vbeln audat UP TO p_max ROWS INTO TABLE gt_vbak FROM vbak WHERE kunnr IN s_kunnr AND vbeln IN s_vbeln AND vkorg IN s_vkorg. ENDFORM. " F_READ_DATA *---------------------------------------------------------------------* * Form f_display_data *---------------------------------------------------------------------* FORM f_display_data. TYPE-POOLS: slis. " ALV Global types * Macro definition DEFINE m_fieldcat. add 1 to ls_fieldcat-col_pos. ls_fieldcat-fieldname = &1. ls_fieldcat-ref_tabname = 'VBAK'. append ls_fieldcat to lt_fieldcat. END-OF-DEFINITION. DEFINE m_sort. add 1 to ls_sort-spos. ls_sort-fieldname = &1. ls_sort-up = 'X'. ls_sort-group = &2. append ls_sort to lt_sort. END-OF-DEFINITION. DATA: ls_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv, lt_sort TYPE slis_t_sortinfo_alv, ls_sort TYPE slis_sortinfo_alv, ls_layout TYPE slis_layout_alv, ls_grid_settings TYPE lvc_s_glay. * ls_grid_settings-top_p_only = 'X'. m_fieldcat 'VKORG'. m_fieldcat 'KUNNR'. m_fieldcat 'VBELN'. m_fieldcat 'AUDAT'. IF p_page = 'X'. m_sort 'VKORG' '*'. " Sort by vkorg + Page break ELSEIF p_ligne = 'X'. m_sort 'VKORG' 'UL'. " Sort by vkorg + Underline ELSE. m_sort 'VKORG' ' '. " Sort by vkorg ENDIF. m_sort 'KUNNR' ' '. " Sort by kunnr m_sort 'VBELN' ' '. " Sort by vbeln ls_layout-colwidth_optimize = 'X'. ls_layout-zebra = 'X'. ls_layout-cell_merge = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_callback_top_of_page = 'TOP_OF_PAGE' is_layout = ls_layout i_grid_settings = ls_grid_settings it_fieldcat = lt_fieldcat it_sort = lt_sort TABLES t_outtab = gt_vbak. ENDFORM. " F_DISPLAY_DATA *---------------------------------------------------------------------* * FORM top_of_page * *---------------------------------------------------------------------* FORM top_of_page. "#EC CALLED ULINE. WRITE : sy-title(65) CENTERED, 'Page :' , sy-pagno . ULINE. ENDFORM. **************** END OF PROGRAM Z_DEMO_ALV_SORT_2 *********************