abapsydney wrote:Dynamic ALV table
qhjn wrote:网上的一个例子,希望对你有帮助。 REPORT ZDE_DYNAMIC_ALV. *Type pools declaration for ALV TYPE-POOLS: SLIS. " ALV Global Types *data declaration for dynamic internal table and alv DATA: L_STRUCTURE TYPE REF TO DATA, L_TABLE TYPE REF TO DATA, STRUC_DESC TYPE REF TO CL_ABAP_STRUCTDESCR, LT_LAYOUT TYPE SLIS_LAYOUT_ALV, LS_LVC_FIELDCATALOGUE TYPE LVC_S_FCAT, LT_LVC_FIELDCATALOGUE TYPE LVC_T_FCAT, LS_FIELDCATALOGUE TYPE SLIS_FIELDCAT_ALV, LT_FIELDCATALOGUE TYPE SLIS_T_FIELDCAT_ALV. *field symbols declaration FIELD-SYMBOLS : <IT_TABLE> TYPE STANDARD TABLE, <DYN_STR> TYPE ANY, <STR_COMP> TYPE ABAP_COMPDESCR. *declarations for grid title DATA : T1(30), T2(10), T3(50). *selection screen declaration for table input PARAMETERS : P_TABLE LIKE DD02L-TABNAME. *initialization event INITIALIZATION. *start of selection event START-OF-SELECTION. *texts for grid title T1 = 'Dynamic ALV display for table'. T2 = P_TABLE. CONCATENATE T1 T2 INTO T3 SEPARATED BY SPACE. * Dynamic creation of a structure CREATE DATA L_STRUCTURE TYPE (P_TABLE). ASSIGN L_STRUCTURE->* TO <DYN_STR>. * Fields Structure STRUC_DESC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( <DYN_STR> ). LOOP AT STRUC_DESC->COMPONENTS ASSIGNING <STR_COMP>. * Build Fieldcatalog LS_LVC_FIELDCATALOGUE-FIELDNAME = <STR_COMP>-NAME. LS_LVC_FIELDCATALOGUE-REF_TABLE = P_TABLE. APPEND LS_LVC_FIELDCATALOGUE TO LT_LVC_FIELDCATALOGUE. * Build Fieldcatalog LS_FIELDCATALOGUE-FIELDNAME = <STR_COMP>-NAME. LS_FIELDCATALOGUE-REF_TABNAME = P_TABLE. APPEND LS_FIELDCATALOGUE TO LT_FIELDCATALOGUE. ENDLOOP. * Create internal table dynamic CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE EXPORTING IT_FIELDCATALOG = LT_LVC_FIELDCATALOGUE IMPORTING EP_TABLE = L_TABLE. ASSIGN L_TABLE->* TO <IT_TABLE>. * Read data from the table selected. SELECT * FROM (P_TABLE) INTO CORRESPONDING FIELDS OF TABLE <IT_TABLE>. * ALV Layout LT_LAYOUT-ZEBRA = 'X'. LT_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. LT_LAYOUT-WINDOW_TITLEBAR = T3. *ALV output CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING IS_LAYOUT = LT_LAYOUT IT_FIELDCAT = LT_FIELDCATALOGUE TABLES T_OUTTAB = <IT_TABLE> EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2.