REPORT z_demo_3_alv_list. *---------------------------------------------------------------------* * This program is an example with 3 ALV Grid lists * * The customers are displayed in the first list * * When a line is selected, the customer's orders are displayed in * * the second list * * When a line is selected in the second list, the items orders are * * displayed in the second list * *---------------------------------------------------------------------* * Author : Michel PIOUD - Updated 16-Nov-07 * * HomePage : http://www.oocities.org/mpioud * *---------------------------------------------------------------------* * Macro definition DEFINE m_fieldcat. add 1 to ls_fieldcat-col_pos. ls_fieldcat-fieldname = &1. ls_fieldcat-ref_tabname = &2. append ls_fieldcat to lt_fieldcat. END-OF-DEFINITION. TYPE-POOLS: slis. " ALV Global types SELECTION-SCREEN : SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY. SELECTION-SCREEN END OF LINE. TYPES: * Data displayed in the first list BEGIN OF ty_kna1, kunnr TYPE kna1-kunnr, " Customer number name1 TYPE kna1-name1, " Customer name ort01 TYPE kna1-ort01, " Customer city END OF ty_kna1, * Data displayed in the second list BEGIN OF ty_vbak, vkorg TYPE vbak-vkorg, " Sales organization kunnr TYPE vbak-kunnr, " Sold-to party vbeln TYPE vbak-vbeln, " Sales document netwr TYPE vbak-netwr, " Net Value of the Sales Order END OF ty_vbak, * Data displayed in the third list BEGIN OF ty_vbap, vbeln TYPE vbap-vbeln, " Sales document posnr TYPE vbap-posnr, " Sales document item matnr TYPE vbap-matnr, " Material number arktx TYPE vbap-arktx, " Short text for sales order item kwmeng TYPE vbap-kwmeng, " Order quantity netwr TYPE vbap-netwr, " Net value of the order item END OF ty_vbap. DATA: gs_kna1 TYPE ty_kna1, gt_kna1 TYPE TABLE OF ty_kna1, gs_vbak TYPE ty_vbak, gt_vbak TYPE TABLE OF ty_vbak, gt_vbap TYPE TABLE OF ty_vbap. *---------------------------------------------------------------------* INITIALIZATION. v_1 = 'Maximum of records to read'. *---------------------------------------------------------------------* START-OF-SELECTION. PERFORM f_read_data_kna1. *---------------------------------------------------------------------* END-OF-SELECTION. PERFORM f_display_data_kna1. *---------------------------------------------------------------------* * Form f_read_data_kna1 *---------------------------------------------------------------------* FORM f_read_data_kna1. * Read customer data with a least one order SELECT kunnr name1 ort01 INTO TABLE gt_kna1 FROM kna1 AS k UP TO p_max ROWS WHERE EXISTS ( SELECT kunnr FROM vbak WHERE kunnr = k~kunnr ). ENDFORM. " F_READ_DATA_KNA1 *---------------------------------------------------------------------* * Form f_display_data_kna1 *---------------------------------------------------------------------* FORM f_display_data_kna1. DATA: ls_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv. * Build the field catalog m_fieldcat 'KUNNR' 'KNA1'. m_fieldcat 'NAME1' 'KNA1'. m_fieldcat 'ORT01' 'KNA1'. * Display the first list CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_callback_user_command = 'USER_COMMAND_KNA1' it_fieldcat = lt_fieldcat TABLES t_outtab = gt_kna1. ENDFORM. " F_DISPLAY_DATA_KNA1 *---------------------------------------------------------------------* * FORM USER_COMMAND_KNA1 * *---------------------------------------------------------------------* FORM user_command_kna1 USING u_ucomm TYPE sy-ucomm us_selfield TYPE slis_selfield."#EC CALLED CASE u_ucomm. WHEN '&IC1'. READ TABLE gt_kna1 INDEX us_selfield-tabindex INTO gs_kna1. CHECK sy-subrc EQ 0. PERFORM f_read_data_vbak. " Read data from VBAK PERFORM f_display_data_vbak. " Display orders ENDCASE. ENDFORM. " USER_COMMAND_KNA1 *---------------------------------------------------------------------* * Form f_read_data_vbak *---------------------------------------------------------------------* FORM f_read_data_vbak. SELECT vkorg kunnr vbeln netwr INTO TABLE gt_vbak FROM vbak UP TO p_max ROWS WHERE kunnr = gs_kna1-kunnr. ENDFORM. " F_READ_DATA_VBAK *---------------------------------------------------------------------* * Form f_display_data_vbak *---------------------------------------------------------------------* FORM f_display_data_vbak. DATA: ls_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv. * Build the field catalog m_fieldcat 'VKORG' 'VBAK'. m_fieldcat 'KUNNR' 'VBAK'. m_fieldcat 'VBELN' 'VBAK'. m_fieldcat 'NETWR' 'VBAK'. * Display the second list CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_callback_user_command = 'USER_COMMAND_VBAK' it_fieldcat = lt_fieldcat TABLES t_outtab = gt_vbak. ENDFORM. " F_DISPLAY_DATA_VBAK *---------------------------------------------------------------------* * FORM USER_COMMAND_VBAK * *---------------------------------------------------------------------* FORM user_command_vbak USING u_ucomm TYPE sy-ucomm us_selfield TYPE slis_selfield."#EC CALLED CASE u_ucomm. WHEN '&IC1'. READ TABLE gt_vbak INDEX us_selfield-tabindex INTO gs_vbak. CHECK sy-subrc EQ 0. PERFORM f_read_data_vbap. " Read data from VBAP PERFORM f_display_data_vbap. " Display items ENDCASE. ENDFORM. " USER_COMMAND_VBAK *---------------------------------------------------------------------* * Form f_read_data_vbap *---------------------------------------------------------------------* FORM f_read_data_vbap. SELECT vbeln posnr matnr arktx kwmeng netwr INTO TABLE gt_vbap FROM vbap WHERE vbeln = gs_vbak-vbeln. ENDFORM. " F_READ_DATA_VBAP *---------------------------------------------------------------------* * Form f_display_data_vbap *---------------------------------------------------------------------* FORM f_display_data_vbap. DATA: ls_fieldcat TYPE slis_fieldcat_alv, lt_fieldcat TYPE slis_t_fieldcat_alv. * Build the field catalog m_fieldcat 'VBELN' 'VBAP'. m_fieldcat 'POSNR' 'VBAP'. m_fieldcat 'MATNR' 'VBAP'. m_fieldcat 'ARKTX' 'VBAP'. m_fieldcat 'KWMENG' 'VBAP'. m_fieldcat 'NETWR' 'VBAP'. * Display the third list CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING it_fieldcat = lt_fieldcat TABLES t_outtab = gt_vbap. ENDFORM. " F_DISPLAY_DATA_VBAP ***************** END OF PROGRAM Z_DEMO_3_ALV_LIST ******************