REPORT z_alv_dynamic_data_v4. *>********************************************************************* * This report displays data from SAP tables, views (like SE16) * * CL_SALV_TABLE - Updated 26-Nov-08 * *---------------------------------------------------------------------* * Author : Michel PIOUD * * HomePage : http://www.oocities.org/mpioud/Abap_programs.html * *>********************************************************************* * __o __o __o __o __o __o __o _ * * _(\<._ _(\<._ _(\<._ _(\<._ _(\<._ _(\<._ _(\<._ _(\ * * (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ * *********************************************************************** DATA: g_mandt TYPE mandt. SELECTION-SCREEN : BEGIN OF LINE, COMMENT 6(33) v_1 FOR FIELD p_table. "#EC NEEDED PARAMETERS p_table TYPE dd03l-tabname OBLIGATORY MEMORY ID dtb. SELECTION-SCREEN : END OF LINE, SKIP. SELECTION-SCREEN : BEGIN OF LINE, COMMENT 6(30) v_2 FOR FIELD s_mandt. "#EC NEEDED SELECT-OPTIONS s_mandt FOR g_mandt DEFAULT sy-mandt MATCHCODE OBJECT ddsef4clnt. SELECTION-SCREEN : END OF LINE, SKIP. SELECTION-SCREEN : SKIP , BEGIN OF LINE, COMMENT 6(33) v_3 FOR FIELD p_max. "#EC NEEDED PARAMETERS p_max(3) TYPE n DEFAULT '200' OBLIGATORY. SELECTION-SCREEN END OF LINE. *---------------------------------------------------------------------* AT SELECTION-SCREEN. PERFORM f_check_table. *---------------------------------------------------------------------* INITIALIZATION. v_1 = 'Table'. v_2 = 'Client'. v_3 = 'Maximum of records'. *---------------------------------------------------------------------* START-OF-SELECTION. PERFORM f_display_data. *---------------------------------------------------------------------* * Form F_DISPLAY_DATA *---------------------------------------------------------------------* FORM f_display_data. TYPE-POOLS: slis. " ALV Global Types DATA: lp_table TYPE REF TO data, " Pointer to dynamic table lo_table TYPE REF TO cl_salv_table. FIELD-SYMBOLS : <lt_data> TYPE STANDARD TABLE. " Data to display * Create internal table CREATE DATA lp_table TYPE STANDARD TABLE OF (p_table) WITH NON-UNIQUE DEFAULT KEY. ASSIGN lp_table->* TO <lt_data>. * Field MANDT exists ? SELECT SINGLE tabname INTO p_table FROM dd03l WHERE tabname = p_table AND fieldname = 'MANDT' AND as4local = 'A' AND as4vers = '0000' AND position = '0001' AND rollname IN ('MANDT','S_MANDT','SYMANDT'). IF sy-subrc EQ 0. * Read data SELECT * UP TO p_max ROWS FROM (p_table) CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF TABLE <lt_data> WHERE mandt IN s_mandt ORDER BY PRIMARY KEY. ELSE. * Field CLIENT exists ? SELECT SINGLE tabname INTO p_table FROM dd03l WHERE tabname = p_table AND fieldname = 'CLIENT' AND as4local = 'A' AND as4vers = '0000' AND position = '0001' AND rollname IN ('MANDT','S_MANDT','SYMANDT'). IF sy-subrc EQ 0. * Read data SELECT * UP TO p_max ROWS FROM (p_table) CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF TABLE <lt_data> WHERE client IN s_mandt ORDER BY PRIMARY KEY. ELSE. * Read data SELECT * UP TO p_max ROWS FROM (p_table) INTO CORRESPONDING FIELDS OF TABLE <lt_data> ORDER BY PRIMARY KEY. ENDIF. ENDIF. IF <lt_data>[] IS INITIAL. * No table entries found for specified key MESSAGE i429(mo). EXIT. ENDIF. * Create Instance CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = lo_table CHANGING t_table = <lt_data>. * Display table lo_table->display( ). ENDFORM. " F_DISPLAY_DATA *---------------------------------------------------------------------* * Form F_CHECK_TABLE *---------------------------------------------------------------------* FORM f_check_table. DATA : l_tabclass TYPE tabclass, " Table category l_viewclass TYPE viewclass. " View Type * Read table category SELECT SINGLE tabclass viewclass INTO (l_tabclass, l_viewclass) FROM dd02l WHERE tabname = p_table AND as4local = 'A' AND as4vers = '0000'. IF sy-subrc NE 0. * Table & is not active in the Dictionary MESSAGE e402(mo) WITH p_table. ELSEIF l_tabclass = 'INTTAB'. * & is a structure, not a table MESSAGE e403(mo) WITH p_table. ELSEIF l_tabclass = 'VIEW' AND l_viewclass NE 'D'. * Only use views of type "Maintenance view" MESSAGE e309(sv). ENDIF. ENDFORM. " F_CHECK_TABLE ***************** END OF PROGRAM Z_ALV_DYNAMIC_DATA_V4 ****************