*&---------------------------------------------------------------------* *& Report Z_DRILL_DOWN_NATHAKAN *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_drill_down_nathakan. TYPE-POOLS: slis. TABLES: vbak, vbap. *********************************************************************** * C O N S T A N T S * *********************************************************************** CONSTANTS: gc_char_s TYPE c VALUE 'S', gc_char_h TYPE c VALUE 'H', gc_cmarkx TYPE c VALUE 'X', gc_cblank TYPE c VALUE ' '. *********************************************************************** * T Y P E * *********************************************************************** TYPES: BEGIN OF gtyp_list, vbeln TYPE vbak-vbeln, "Sales Document posnr TYPE vbap-posnr, "Sales Document Item pstyv TYPE vbap-pstyv, "Document category auart TYPE vbak-auart, "Document Type matnr TYPE vbap-matnr, "Material Number matkl TYPE vbap-matkl, "Material Group arktx TYPE vbap-arktx, "Short text for sales order item vgbel TYPE vbap-vgbel, "Reference document END OF gtyp_list. *********************************************************************** * D A T A * *********************************************************************** DATA: gt_item TYPE TABLE OF gtyp_list, gt_item2 TYPE TABLE OF gtyp_list, gwa_item TYPE gtyp_list. ******ALV object****** DATA: gwa_fieldcat TYPE LINE OF slis_t_fieldcat_alv, gwa_layout TYPE slis_layout_alv, gwa_htext TYPE LINE OF slis_t_listheader, gt_i_fieldcat TYPE slis_t_fieldcat_alv, gt_i_htext TYPE slis_t_listheader, gt_i_events TYPE slis_t_event, "* Internal table to capture various events in ALV gt_i_list_top TYPE slis_t_listheader. "* Internal table to display top of page *********************************************************************** * S E L E C T I O N S C R E E N * *********************************************************************** SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE title. SELECT-OPTIONS: s_vbeln FOR vbak-vbeln, "Sales Document s_auart FOR vbak-auart, "Sales Document Type s_matnr FOR vbap-matnr, "Material Number s_matkl FOR vbap-matkl, "Material Group s_vgbel FOR vbap-vgbel. "Reference document SELECTION-SCREEN END OF BLOCK b1. *********************************************************************** * I N I T I A L I Z A T I O N * *********************************************************************** INITIALIZATION. title = text-001. *********************************************************************** * A T S E L E C T I O N S C R E E N * *********************************************************************** AT SELECTION-SCREEN. *********************************************************************** * S T A R T O F S E L E C T I O N * *********************************************************************** START-OF-SELECTION. PERFORM f_get_data. *********************************************************************** * E N D O F S E L E C T I O N * *********************************************************************** END-OF-SELECTION. PERFORM f_write_list USING gt_item. *********************************************************************** * LINE-SELECTION * *********************************************************************** AT LINE-SELECTION . * PERFORM f_write_list USING gt_item2. *********************************************************************** * S U B R O U T I N E S * *********************************************************************** *&---------------------------------------------------------------------* *& Form F_GET_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_get_data . DATA: lt_vbak_vbap TYPE TABLE OF gtyp_list, lwa_vbak_vbap TYPE gtyp_list. SELECT a~vbeln b~posnr b~pstyv a~auart b~matnr b~matkl b~arktx a~vgbel FROM vbak AS a INNER JOIN vbap AS b ON a~vbeln = b~vbeln AND a~vgbel = b~vgbel INTO TABLE lt_vbak_vbap WHERE a~vbeln IN s_vbeln AND a~auart IN s_auart AND b~matnr IN s_matnr AND b~matkl IN s_matkl AND a~vgbel IN s_vgbel. SORT lt_vbak_vbap by vbeln posnr. LOOP AT lt_vbak_vbap INTO lwa_vbak_vbap. gwa_item-vbeln = lwa_vbak_vbap-vbeln. gwa_item-posnr = lwa_vbak_vbap-posnr. gwa_item-pstyv = lwa_vbak_vbap-pstyv. gwa_item-auart = lwa_vbak_vbap-auart. gwa_item-matnr = lwa_vbak_vbap-matnr. gwa_item-matkl = lwa_vbak_vbap-matkl. gwa_item-arktx = lwa_vbak_vbap-arktx. gwa_item-vgbel = lwa_vbak_vbap-vgbel. APPEND gwa_item TO gt_item. ENDLOOP. SORT gt_item BY vbeln posnr. ENDFORM. " F_GET_DATA *&---------------------------------------------------------------------* *& Form F_WRITE_LIST *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_write_list USING gt_display LIKE gt_item . REFRESH gt_i_fieldcat. * Set field catalog CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'VBELN'. gwa_fieldcat-ref_fieldname = 'VBELN'. gwa_fieldcat-ref_tabname = 'VBAK'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'POSNR'. gwa_fieldcat-ref_fieldname = 'POSNR'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'PSTYV'. gwa_fieldcat-ref_fieldname = 'PSTYV'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'AUART'. gwa_fieldcat-ref_fieldname = 'AUART'. gwa_fieldcat-ref_tabname = 'VBAK'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'MATNR'. gwa_fieldcat-ref_fieldname = 'MATNR'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'MATKL'. gwa_fieldcat-ref_fieldname = 'MATKL'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'ARKTX'. gwa_fieldcat-ref_fieldname = 'ARKTX'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. CLEAR gwa_fieldcat. gwa_fieldcat-fieldname = 'VGBEL'. gwa_fieldcat-ref_fieldname = 'VGBEL'. gwa_fieldcat-ref_tabname = 'VBAP'. APPEND gwa_fieldcat TO gt_i_fieldcat. * Set layout CLEAR gwa_layout. gwa_layout-zebra = gc_cmarkx. gwa_layout-colwidth_optimize = gc_cmarkx. * Call ALV Grid Function CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' i_callback_program = sy-repid i_callback_pf_status_set = 'PF_STATUS_SET' i_callback_user_command = 'USER_COMMAND' i_callback_top_of_page = 'TOP_OF_PAGE' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' i_structure_name = 'GTYP_LIST' * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = is_layout = gwa_layout it_fieldcat = gt_i_fieldcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = gt_display 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. " F_WRITE_LIST *&---------------------------------------------------------------------* *& Form set_status *&---------------------------------------------------------------------* * Form used to set the Custom pf-status of the List Display *----------------------------------------------------------------------* * rt_extab : *----------------------------------------------------------------------* FORM pf_status_set USING i_rt_extab TYPE slis_t_extab. "#EC CALLED DATA : x_extab TYPE slis_extab. x_extab-fcode = '&LFO'. APPEND x_extab TO i_rt_extab. * Pf-status STANDARD of program SAPLSALV is copied to ZSTANDARD of the * current program and the pushbutton for Information (okcode=&LFO) is * excluded SET PF-STATUS 'ZSTANDARD' EXCLUDING i_rt_extab . ENDFORM. "pf_status_set *&---------------------------------------------------------------------* *& Form user_command *&---------------------------------------------------------------------* * Form used to handle USER_COMMAND events *----------------------------------------------------------------------* * rf_ucomm: Function Code * rs : Internal Table containing the selection information. *----------------------------------------------------------------------* FORM user_command USING rf_ucomm LIKE sy-ucomm "#EC CALLED rs_selfield TYPE slis_selfield. CASE rf_ucomm. * Ok code for double click is &IC1 for ALV report WHEN '&IC1'. PERFORM f_drill_down USING rs_selfield . WHEN 'CANC' OR 'EXIT' OR 'BACK' . SET SCREEN 0. LEAVE SCREEN. ENDCASE. ENDFORM. "user_command *&---------------------------------------------------------------------* *& Form top_of_page *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM top_of_page. "#EC CALLED REFRESH gt_i_htext. CLEAR gwa_htext. gwa_htext-typ = gc_char_h. gwa_htext-info = text-002. "Header of Report APPEND gwa_htext TO gt_i_htext. CLEAR gwa_htext. gwa_htext-typ = gc_char_s. gwa_htext-key = text-003. "Sales Document gwa_htext-info = s_vbeln-low . APPEND gwa_htext TO gt_i_htext. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_i_htext. ENDFORM. "top_of_page *&---------------------------------------------------------------------* *& Form F_DRILL_DOWN *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_RS_SELFIELD text *----------------------------------------------------------------------* FORM f_drill_down USING p_rs_selfield TYPE slis_selfield. CLEAR gwa_item. REFRESH gt_item2. READ TABLE gt_item INTO gwa_item INDEX p_rs_selfield-tabindex. IF sy-subrc = 0 . APPEND gwa_item TO gt_item2. ENDIF. PERFORM f_write_list USING gt_item2. ENDFORM. " F_DRILL_DOWN