메뉴 건너뛰기

SAP 한국 커뮤니티



REPORT z_alv_dynamic_data_v2

노름마치 2007.11.05 12:43 조회 수 : 2968

REPORT z_alv_dynamic_data_v2.
*>*********************************************************************
* This report displays data from SAP tables, views (like SE16)        *
* FM : REUSE_ALV_GRID_DISPLAY - V6.20                                 *
*---------------------------------------------------------------------*
* Author : Michel PIOUD                                               *
* Email : mpioud@yahoo.fr  HomePage : http://www.geocities.com/mpioud *
*>*********************************************************************
*    __o      __o      __o      __o      __o      __o      __o      _ *
*  _(<._   _(<._   _(<._   _(<._   _(<._   _(<._   _(<._   _( *
* (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ (_) (_)/ *
***********************************************************************
DATA:
  g_tabclass TYPE tabclass.            " Table category


SELECTION-SCREEN :
BEGIN OF LINE, COMMENT 1(35) v_1 FOR FIELD p_table.         "#EC NEEDED
PARAMETERS p_table TYPE dd03l-tabname OBLIGATORY MEMORY ID dtb.
SELECTION-SCREEN END OF LINE.


SELECTION-SCREEN :
BEGIN OF LINE, COMMENT 1(35) v_2 FOR FIELD p_max.           "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.


*---------------------------------------------------------------------*
AT SELECTION-SCREEN.


* Read table category
  SELECT SINGLE tabclass
           INTO g_tabclass
           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 g_tabclass = 'INTTAB'.
*   & is a structure, not a table
    MESSAGE e403(mo) WITH p_table.
  ENDIF.


*---------------------------------------------------------------------*
INITIALIZATION.


  v_1 = 'Table'.
  v_2 = '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
    ls_layout TYPE slis_layout_alv.


  FIELD-SYMBOLS :
    <lt_data> TYPE 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>.


* Read data
  SELECT * FROM (p_table) UP TO p_max ROWS
    INTO CORRESPONDING FIELDS OF TABLE <lt_data>
   ORDER BY PRIMARY KEY.


  IF <lt_data>[] IS INITIAL.
*   No table entries found for specified key
    MESSAGE i429(mo).
    EXIT.
  ENDIF.


  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_structure_name = p_table
      is_layout        = ls_layout
    TABLES
      t_outtab         = <lt_data>.


ENDFORM.                               " F_DISPLAY_DATA
************** END OF PROGRAM Z_ALV_DYNAMIC_DATA_V2 *******************