Structure set_table_for_first_display

Hi abappers,
I want fill the ALV with the data of my table internal TAB2:
LOOP AT TAB1.
    MOVE TAB1-CAMPO+2(9) TO STCD1_OLD.
    MOVE TAB1-CAMPO+11(9) TO STCD1_NEW.
    SELECT SINGLE * FROM KNA1 WHERE STCD1 EQ STCD1_OLD.
    IF SY-SUBRC = 0.
      MOVE KNA1-KUNNR TO TAB2-KUNNR.
      MOVE KNA1-KTOKD TO TAB2-KTOKD.
      MOVE KNA1-LAND1 TO TAB2-LAND1.
      MOVE KNA1-NAME1 TO TAB2-NAME1.
        MOVE KNA1-STCD1 TO TAB2-STCD1_OLD.
        MOVE STCD1_NEW TO TAB2-STCD1_NEW.
      MOVE KNA1-STCEG TO TAB2-STCEG.
      MOVE KNA1-STCD4 TO TAB2-STCD4.
      MOVE KNA1-YYCTC TO TAB2-YYCTC.
      MOVE KNA1-AUFSD TO TAB2-AUFSD.
      MOVE KNA1-CASSD TO TAB2-CASSD.
      MOVE KNA1-LOEVM TO TAB2-LOEVM.
      MOVE KNA1-SPERR TO TAB2-SPERR.
      MOVE KNA1-SPERZ TO TAB2-SPERZ.
      APPEND TAB2.
    ELSE.
      WRITE: / TEXT-100, STCD1_OLD.
    ENDIF.
ENDLOOP.
    CALL METHOD go_grid->set_table_for_first_display
      EXPORTING i_structure_name = 'XXXXXXXX'
      CHANGING  it_outtab        = TAB2[].
But when I want call method, I don´t know the structure, and I can not pass the structure fo KNA1, because 2 fields are different STCD1_OLD and STCD1_NEW.
Can you help me, please?
Cordial greetings.

Then you will not use the structure parameter, instead fill a field catalog and pass that. Here is an example.
REPORT ZRICH_0001.
TABLES: MARA.
DATA: BEGIN OF I_ALV OCCURS 0,
      MATNR TYPE MARA-MATNR,
      MAKTX TYPE MAKT-MAKTX,
      END OF I_ALV.
DATA: ALV_CONTAINER  TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: ALV_GRID       TYPE REF TO CL_GUI_ALV_GRID.
DATA: FIELDCAT  TYPE LVC_T_FCAT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
  PERFORM GET_DATA.
  CALL SCREEN 100.
*      Module  status_0100  OUTPUT
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.
* Create Controls
  CREATE OBJECT ALV_CONTAINER
         EXPORTING
               CONTAINER_NAME    = 'ALV_CONTAINER'.
  CREATE OBJECT ALV_GRID
         EXPORTING
               I_PARENT          =  ALV_CONTAINER.
*  ALV Specific. Data selection.
*  Populate Field Catalog
  PERFORM GET_FIELDCATALOG.
  CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
      CHANGING
           IT_OUTTAB       = I_ALV[]
           IT_FIELDCATALOG = FIELDCAT[].
ENDMODULE.
*      Module  USER_COMMAND_0100  INPUT
MODULE USER_COMMAND_0100 INPUT.
  CASE SY-UCOMM.
    WHEN 'BACK' OR 'CANC'.
      IF NOT ALV_CONTAINER IS INITIAL.
        CALL METHOD ALV_CONTAINER->FREE.
        CLEAR: ALV_CONTAINER.
        FREE : ALV_CONTAINER.
      ENDIF.
      IF SY-SUBRC = 0.
        SET SCREEN 0.
        LEAVE SCREEN.
      ELSE.
        LEAVE PROGRAM.
      ENDIF.
    WHEN 'EXIT'.
      IF NOT ALV_CONTAINER IS INITIAL.
        CALL METHOD ALV_CONTAINER->FREE.
        CLEAR: ALV_CONTAINER.
        FREE : ALV_CONTAINER.
      ENDIF.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.
* FORM GET_DATA
FORM GET_DATA.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE I_ALV
        FROM MARA
          INNER JOIN MAKT
            ON MARA~MATNR = MAKT~MATNR
               WHERE MARA~MATNR IN S_MATNR
                 AND MAKT~SPRAS = SY-LANGU.
  SORT I_ALV ASCENDING BY MATNR.
ENDFORM.
*      Form  Get_Fieldcatalog - Set Up Columns/Headers
FORM GET_FIELDCATALOG.
  DATA: LS_FCAT TYPE LVC_S_FCAT.
  REFRESH: FIELDCAT.
  CLEAR: LS_FCAT.
  LS_FCAT-REPTEXT    = 'Material Number'.
  LS_FCAT-COLTEXT    = 'Material Number'.
  LS_FCAT-FIELDNAME  = 'MATNR'.
  LS_FCAT-REF_TABLE  = 'I_ALV'.
  LS_FCAT-OUTPUTLEN  = '18'.
  LS_FCAT-COL_POS    = 1.
  APPEND LS_FCAT TO FIELDCAT.
  CLEAR: LS_FCAT.
  LS_FCAT-REPTEXT    = 'Material Description'.
  LS_FCAT-COLTEXT    = 'Material Description'.
  LS_FCAT-FIELDNAME  = 'MAKTX'.
  LS_FCAT-REF_TABLE  = 'I_ALV'.
  LS_FCAT-OUTPUTLEN  = '40'.
  LS_FCAT-COL_POS    = 2.
  APPEND LS_FCAT TO FIELDCAT.
ENDFORM.
Regards,
Rich Heilman

Similar Messages

  • How to print / save Structural Graphics

    I want to print structural graphics displayed by a standard report. The print button there does not print anything.
    Any clues on how I can print / save the structural graphics?
    More information: FM standard is using to show the graphics is:    
        CALL FUNCTION 'PD_STRUCTURAL_GRAPHICS'
          EXPORTING
            context_id           = 'GENERAL'
            index                = ls_node-id
            load_pd_toolbox      = 'X'
            load_pd_profiles     = 'X'
          EXCEPTIONS
            no_objects_available = 1
            OTHERS               = 2.
    That internally calls GRAPH_STRUCTURAL.
    Report that we are using to test: RHXSTR00
    Thanks in adv.

    Hi,
    Why don't you use the function "excel inplace" in the ALV?  With the ALV you have some buttons "SORT/TOTAL/FILTER... and you have PRINT and EXCEL INPLACE"?
    Do you use the method   call method g_grid->set_table_for_first_display in order to display your data alv?
    Best regards

  • Create a deep structure for dynamic internal table

    Hi All,
    I am creating a dynamic table using method cl_alv_table_create=>create_dynamic_table.
    The normal structure gets created. but now I want to creat a Deep structure for having information of colors also for each column. So I want to add a COLTAB type LVC_T_SCOL for colors information .
    How should I create this using above method?
    Rgds,
    Madhuri

    I created a zcelltab structure as below. But while creating dynamic internal table, I received the error  with
    'Type "ZCELLTAB" is unknown 68 ZCELLTAB-CELLTAB
    Here is the code.
    DATA: BEGIN OF ZCELLTAB,
             CELLTAB LIKE LVC_S_STYL,
         END OF ZCELLTAB.
    FIELD-SYMBOLS <T_CELLTAB> TYPE LVC_T_STYL.
    DATA : LT_CELLTAB TYPE LVC_T_STYL.
    DATA:  WA_CELLTAB TYPE LINE OF LVC_T_STYL.
    DATA: GT_FCAT1 TYPE LVC_T_FCAT,
               GW_FCAT1 TYPE LVC_S_FCAT,
                GT_FCAT2 TYPE LVC_T_FCAT,
                GW_FCAT2  TYPE LVC_S_FCAT.
    After filling the FCAT1, I added the field in FCAT2  like below
      GT_FCAT2[ ] = GT_FCAT1[ ].
      G_TABIX = G_TABIX + 1.
      GW_FCAT2-INTTYPE = 'C'.
      MOVE G_TABIX TO GW_FCAT2-COL_POS.
      GW_FCAT2-OUTPUTLEN = '10'.
      GW_FCAT2-FIELDNAME = 'T_CELLTAB'.
      GW_FCAT2-TABNAME = 'ZCELLTAB'.
      GW_FCAT2-REF_FIELD = 'CELLTAB'.
      GW_FCAT2-REF_TABLE = 'ZCELLTAB'.
      APPEND GW_FCAT2 TO GT_FCAT2
      CLEAR GW_FCAT2.
    While calling the below method, the error with
    CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
         EXPORTING
          IT_FIELDCATALOG = GT_FCAT2
        IMPORTING
          EP_TABLE        = GT_REQ.
      ASSIGN GT_REQ->* TO <F_TAB>.
      CREATE DATA GWA_REQ LIKE LINE OF <F_TAB>.
      ASSIGN GWA_REQ->* TO <F_WA>.
    LOOP AT ITAB.
    ASSIGN COMPONENT 'MATNR'  OF STRUCTURE <F_WA> TO <F_VAL>
    <F_VAL> = ITAB-MATNR.
    IF ITAB-MATNR IS INITIAL.
    ASSIGN COMPONENT 'T_CELLTAB' OF STRUCTURE <F_WA> TO <T_CELLTAB>
            CLEAR WA_CELLTAB.
            WA_CELLTAB-FIELDNAME = 'MATNR'.
            WA_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
            INSERT WA_CELLTAB INTO TABLE <T_CELLTAB>.
    ENDIF.
    APPEND <F_WA> TO <F_TAB>
    ENDLOOP.
    CALL METHOD GR_GRID->SET_TABLE_FOR_FIRST_DISPLAY
            EXPORTING
              I_CONSISTENCY_CHECK  = G_CONSISTENCY_CHECK
              IT_TOOLBAR_EXCLUDING = G_EXCLUDE
              I_SAVE               = G_SAVE
           I_DEFAULT            = 'X'
              IS_LAYOUT            = G_LAYOUT
            CHANGING
              IT_OUTTAB            = <F_TAB>
              IT_FIELDCATALOG      = F_CAT1.
    Please let me know where I was wrong.
    Should I remove the T_CELLTAB as the field name is not mentioned in the structure 'ZCELLTAB'.
    Thanks,
    Kumar.
    Edited by: venn e on May 7, 2010 4:10 PM

  • Dynamic structure in OO ALV

    Hi
    I want to use OO ALV in which the output tab(that contains data to be displayed) doesn't have a fixed structure. Some of the fields in the structure are avialable at design time but some of them would only be available at runtime; also the number of dynamic fields will vary time to time. Could you give some clue on how to create such a structure with some fixed and some vaiable fields and use it to define the line type of the output table at runtime?
    Thanks in advance.
    Sudip

    *&      Module  STATUS_3005  OUTPUT
          text
    MODULE STATUS_3005 OUTPUT.
    DATA: LR_DYN_TABLE TYPE REF TO DATA,
            LR_WA_DYN_TABLE TYPE REF TO DATA,
            LR_DOCK_CTNR TYPE REF TO CL_GUI_DOCKING_CONTAINER,
            LR_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
            IT_FIELDCAT1 TYPE LVC_T_FCAT, "with cell color
            IT_FIELDCAT2 TYPE LVC_T_FCAT, "without cell color
            WA_FIELDCAT1 LIKE LINE OF IT_FIELDCAT1,
            WA_CELLCOLORS TYPE LINE OF LVC_T_SCOL,
            WA_IS_LAYOUT TYPE LVC_S_LAYO.
      FIELD-SYMBOLS:<IT_DYN_TABLE> TYPE STANDARD TABLE,
                    <WA_DYN_TABLE> TYPE ANY,
                    <IT_CELLCOLORS> TYPE LVC_T_SCOL,
                    <W_FIELD> TYPE ANY.
      SET PF-STATUS 'ZTOOL'.
      BREAK-POINT.
      IF LR_DOCK_CTNR IS INITIAL.
        PERFORM BUILD_FIELDCATALOG1 USING 'VBELN' 'LIPS' 'C' '10' 'Delivery No' 'Delivery No'.
        PERFORM BUILD_FIELDCATALOG1 USING 'POSNR' 'LIPS' 'N' '6' 'Item No' 'Item No'.
        PERFORM BUILD_FIELDCATALOG1 USING 'MATNR' 'LIPS' 'C' '18' 'Material No' 'Material No'.
        PERFORM BUILD_FIELDCATALOG1 USING 'MATKL' 'LIPS' 'C' '9' 'Material Group' 'Material Group'.
        PERFORM BUILD_FIELDCATALOG1 USING 'VKORG' 'LIKP' 'C' '4' 'Sales org' 'Sales org'.
        PERFORM BUILD_FIELDCATALOG1 USING 'WERKS' 'LIPS' 'C' '4' 'Plant' 'Plant'.
        PERFORM BUILD_FIELDCATALOG1 USING 'LGORT' 'LIPS' 'C' '4' 'STOR Loc' 'STOR Loc'.
        PERFORM BUILD_FIELDCATALOG1 USING 'WADAT' 'LIKP' 'D' '8' 'Planned Goods movement date' 'Planned Goods movement date'.
        PERFORM BUILD_FIELDCATALOG1 USING 'LFIMG' 'LIPS' 'C' '17' 'Delivered Qty' 'Delivered Qty'.
        PERFORM BUILD_FIELDCATALOG1 USING 'MEINS' 'LIPS' 'C' '3' 'Unit of Measure' 'Unit of Measure'.
        PERFORM BUILD_FIELDCATALOG1 USING 'NETPR' 'LIPS' 'C' '16' 'Net Price' 'Net Price'.
        IT_FIELDCAT2[] = IT_FIELDCAT1[].
        WA_FIELDCAT1-FIELDNAME = 'T_CELLCOLORS'.
        WA_FIELDCAT1-REF_FIELD = 'COLTAB'.
        WA_FIELDCAT1-REF_TABLE = 'CALENDAR_TYPE'.
        APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
        CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
          EXPORTING
            IT_FIELDCATALOG           = IT_FIELDCAT1
          IMPORTING
            EP_TABLE                  = LR_DYN_TABLE
          EXCEPTIONS
            GENERATE_SUBPOOL_DIR_FULL = 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.
        ASSIGN LR_DYN_TABLE->* TO <IT_DYN_TABLE>.
        CREATE DATA LR_WA_DYN_TABLE LIKE LINE OF <IT_DYN_TABLE>.
        ASSIGN LR_WA_DYN_TABLE->* TO <WA_DYN_TABLE>.
      LOOP AT IG_LIPS INTO WG_LIPS.
          READ TABLE IG_LIKP INTO WG_LIKP WITH KEY VBELN = WG_LIPS-VBELN.
          ASSIGN COMPONENT 'VBELN' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-VBELN.
          ASSIGN COMPONENT 'POSNR' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-POSNR.
          ASSIGN COMPONENT 'MATNR' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-MATNR.
          ASSIGN COMPONENT 'MATKL' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-MATKL.
          ASSIGN COMPONENT 'VKORG' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIKP-VKORG.
          ASSIGN COMPONENT 'WERKS' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-WERKS.
          ASSIGN COMPONENT 'LGORT' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-LGORT.
          ASSIGN COMPONENT 'WADAT' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIKP-WADAT.
          ASSIGN COMPONENT 'LFIMG' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-LFIMG.
          ASSIGN COMPONENT 'MEINS' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-MEINS.
          ASSIGN COMPONENT 'NETPR' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
          <W_FIELD> = WG_LIPS-NETPR.
          APPEND <WA_DYN_TABLE> TO <IT_DYN_TABLE>.
        ENDLOOP.
    Color cells based on your criteria. In this example, a test on
    FIELD2 is used to decide on color.
        LOOP AT <IT_DYN_TABLE> INTO <WA_DYN_TABLE>.
          ASSIGN COMPONENT 'POSNR' OF STRUCTURE <WA_DYN_TABLE> TO <W_FIELD>.
    Get access to internal table used to color cells.
          ASSIGN COMPONENT 'T_CELLCOLORS' OF STRUCTURE <WA_DYN_TABLE> TO <IT_CELLCOLORS>.
          CLEAR WA_CELLCOLORS.
          WA_CELLCOLORS-FNAME = 'POSNR'.
          IF <W_FIELD> = '000010'.
            WA_CELLCOLORS-COLOR-COL = '7'.
          ELSE.
            WA_CELLCOLORS-COLOR-COL = '5'.
          ENDIF.
          APPEND WA_CELLCOLORS TO <IT_CELLCOLORS>.
          MODIFY <IT_DYN_TABLE> FROM <WA_DYN_TABLE>.
        ENDLOOP.
    Set up for ALV display.
        CREATE OBJECT LR_DOCK_CTNR
        EXPORTING
        SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT
        RATIO = '95'.
        CREATE OBJECT LR_ALV_GRID
        EXPORTING I_PARENT = LR_DOCK_CTNR.
    Set ALV controls for cell coloring table.
        WA_IS_LAYOUT-CTAB_FNAME = 'T_CELLCOLORS'.
    Display.
        CALL METHOD LR_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
            IS_LAYOUT       = WA_IS_LAYOUT
          CHANGING
            IT_OUTTAB       = <IT_DYN_TABLE>
            IT_FIELDCATALOG = IT_FIELDCAT2.
      ELSE. "grid already prepared
    Refresh display.
        CALL METHOD LR_ALV_GRID->REFRESH_TABLE_DISPLAY
          EXPORTING
            I_SOFT_REFRESH = ' '
          EXCEPTIONS
            FINISHED       = 1
            OTHERS         = 2.
      ENDIF.
    ENDMODULE.                 " STATUS_3005  OUTPUT
    *&      Module  USER_COMMAND_3005  INPUT
          text
    MODULE USER_COMMAND_3005 INPUT.
      BREAK-POINT.
      CASE G_OK_CODE.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_3005  INPUT
    FORM BUILD_FIELDCATALOG1 USING FP_FNAME FP_TNAME FP_DTYPE FP_LEN FP_CTEXT FP_STEXT.
      DATA: WA_FIELDCAT1 LIKE LINE OF IT_FIELDCAT1.
      CLEAR WA_FIELDCAT1.
      WA_FIELDCAT1-FIELDNAME = FP_FNAME.
      WA_FIELDCAT1-TABNAME = FP_TNAME.
      WA_FIELDCAT1-INTTYPE = FP_DTYPE.
      WA_FIELDCAT1-OUTPUTLEN = FP_LEN.
      WA_FIELDCAT1-COLTEXT = FP_CTEXT.
      WA_FIELDCAT1-SELTEXT = FP_STEXT.
      APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    ENDFORM.                    " BUILD_FIELDCATALOG1

  • ALV Tree and set_table_for_first_display problem

    I am trying to create an alv tree.  I have some sample code that uses the sflight table and this works fine however when i replace sflight with my internal structure and table it crashes at set_table_for_first_display with a "Field symbol has not been assigned" error.
    This is part of the original code that works.  *This isn't all the code just the relevant parts.
    DATA: gt_sflight      TYPE sflight OCCURS 0,   " Output-Table
               gt_fieldcatalog TYPE lvc_t_fcat,            " Field Catalog
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'sflight'
        CHANGING
          ct_fieldcat      = gt_fieldcatalog.
    *  change fieldcatalog
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
        CASE ls_fieldcatalog-fieldname.
          WHEN 'CARRID' OR 'CONNID' OR 'FLDATE'.
            ls_fieldcatalog-no_out = 'X'.
            ls_fieldcatalog-key    = ''.
          WHEN 'PRICE' OR 'SEATSOCC' OR 'SEATSMAX' OR 'PAYMENTSUM'.
            ls_fieldcatalog-do_sum = 'X'.
        ENDCASE.
        MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
      ENDLOOP.
    SELECT * FROM sflight INTO TABLE gt_sflight.
    create hierarchy
      CALL METHOD tree1->set_table_for_first_display
        EXPORTING
          it_list_commentary = lt_list_commentary
          i_logo             = l_logo
          i_background_id    = 'ALV_BACKGROUND'
          i_save             = 'A'
          is_variant         = ls_variant
        CHANGING
          it_sort            = gt_sort
          it_outtab          = gt_sflight
          it_fieldcatalog    = gt_fieldcatalog.
    Here is the code when I replace gt_sflight with my internal table.
    DATA: gt_detailed      TYPE ZDT_REPORT1_DETAIL_STRUC occurs 0 ,   " Output-Table
               gt_fieldcatalog TYPE lvc_t_fcat,         " Field Catalog
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'ZDT_REPORT1_DETAIL_STRUC'
        CHANGING
          ct_fieldcat      = gt_fieldcatalog
        EXCEPTIONS
          inconsistent_interface = 1
          program_error = 2
          OTHERS = 3.
        IF sy-subrc <> 0.
    *--Exception handling
        ENDIF.
    "* change fieldcatalog
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
        CASE ls_fieldcatalog-fieldname.
          WHEN 'COMP_DESC' OR 'SUBC_DESC'.
            ls_fieldcatalog-no_out = 'X'.
            ls_fieldcatalog-key    = ''.
          WHEN 'DOWNTIME'.
            ls_fieldcatalog-do_sum = 'X'.
        ENDCASE.
        MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
      ENDLOOP.
    " Select statement to fill gt_detailed
    * create hierarchy
      CALL METHOD tree1->set_table_for_first_display
        EXPORTING
          it_list_commentary = lt_list_commentary
          i_logo             = l_logo
          i_background_id    = 'ALV_BACKGROUND'
          i_save             = 'A'
          is_variant         = ls_variant
        CHANGING
          it_sort            = gt_sort
          it_outtab          = gt_detailed
          it_fieldcatalog    = gt_fieldcatalog.
    When it runs like this it crashes at set_table_for_first_display

    The code I am using as an example is BCALV_TREE_SIMPLE_DEMO.  If I have no data in my table it doesn't error when I call set_table_for_first_display.
    But it looks like I might have to use that one instead because from what I understand you can use  cl_gui_alv_tree_simple when the input table has all the required columns such as sflight but you use cl_gui_alv_tree when you need an internal table.

  • CALL METHOD GRID4- SET_TABLE_FOR_FIRST_DISPLAY

    Hi All,
    I would like to know how to display 5 internal table same time in a single output screen. I have attached the program for your reference.
    Presently I am able to get i_final1 and i_final2 output on the screen. I need to display on the same screen grid 3 and grid 4. Is it possible to display.
    *& REPORT  Z_READ_PROFILE
    REPORT  Z_READ_PROFILE.
    TABLES: TCATS, TCATST, TCATX_GRID.
    DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT3 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT3 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT4 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT4 TYPE LVC_T_FCAT.
    DATA: DOCK TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
          GRID1 TYPE REF TO CL_GUI_ALV_GRID,
          GRID2 TYPE REF TO CL_GUI_ALV_GRID,
          GRID3 TYPE REF TO CL_GUI_ALV_GRID,
          GRID4 TYPE REF TO CL_GUI_ALV_GRID,
          DOC1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          DOC3 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          DOC4 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          CON22 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
          LI_FIELDCAT1 TYPE LVC_T_FCAT.
    SELECTION-SCREEN: BEGIN OF BLOCK B1.
    PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
                 P_PROF2 LIKE TCATS-VARIANT.
    SELECTION-SCREEN: END OF BLOCK B1.
    DATA: BEGIN OF I_DD03P OCCURS 0.
           INCLUDE STRUCTURE DD03P.
    DATA: END OF I_DD03P.
    DATA: BEGIN OF I_FIELDS1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS1.
    DATA: BEGIN OF I_FIELDS2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS2.
    DATA: BEGIN OF I_FINAL1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL1.
    DATA: BEGIN OF I_FINAL2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL2.
    DATA: BEGIN OF ENTRYLIST OCCURS 0,
           MFELD      TYPE FAWFLDNAM,
           VISIBLE    TYPE FAWCUST,
           REQUIRED   TYPE FAWCUST,
           READONLY   TYPE FAWCUST,
           HIDE       TYPE FAWCUST,
           PROF1      LIKE TCATS-VARIANT,
          END OF ENTRYLIST.
    DATA: BEGIN OF WORKLIST OCCURS 0.
           INCLUDE STRUCTURE FIELD_SELECTION.
    DATA: END OF WORKLIST.
    DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID1.
    DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID2.
    PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS1.
    PERFORM GET_COMPONENTS1.
    ENDIF.
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS2.
    PERFORM GET_COMPONENTS2.
    ENDIF.
    PERFORM COMPARE_TABLES.
    CALL SCREEN 100.
    *&      FORM  GET_FIELDS
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS1.
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF1
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE VISIBLE  EQ SPACE
                      AND   REQUIRED EQ SPACE
                      AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF1              TO I_FIELDS1-PROFILE.
      MOVE ENTRYLIST-MFELD      TO I_FIELDS1-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE  TO I_FIELDS1-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED   TO I_FIELDS1-OBLIGAT.
      MOVE ENTRYLIST-READONLY   TO I_FIELDS1-DISPLAY.
      MOVE ENTRYLIST-HIDE       TO I_FIELDS1-NOTACT.
    APPEND I_FIELDS1.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS
    *&      FORM  GET_FIELDS2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS2 .
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF2
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE  VISIBLE  EQ SPACE
                       AND   REQUIRED EQ SPACE
                       AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF2                TO I_FIELDS2-PROFILE.
      MOVE ENTRYLIST-MFELD        TO I_FIELDS2-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE    TO I_FIELDS2-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED     TO I_FIELDS2-OBLIGAT.
      MOVE ENTRYLIST-READONLY     TO I_FIELDS2-DISPLAY.
      MOVE ENTRYLIST-HIDE         TO I_FIELDS2-NOTACT.
    APPEND I_FIELDS2.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS2
    *&      FORM  COMPARE_TABLES
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM COMPARE_TABLES .
    CLEAR: I_FIELDS1, I_FIELDS2.
    SORT : I_FIELDS1, I_FIELDS2.
    DATA: L_TABLE LIKE DD03L-TABNAME,
          L_FIELD LIKE DD03L-FIELDNAME.
    LOOP AT I_FIELDS1.
       READ TABLE I_FIELDS2 WITH KEY  MFIELD   = I_FIELDS1-MFIELD
                                      INPUT    = I_FIELDS1-INPUT
                                      OBLIGAT  = I_FIELDS1-OBLIGAT
                                      DISPLAY  = I_FIELDS1-DISPLAY
                                      NOTACT   = I_FIELDS1-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS1-PROFILE  TO I_FINAL1-PROFILE.
    SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL1-TEXT.
    ENDIF.
      MOVE I_FIELDS1-MFIELD   TO I_FINAL1-MFIELD.
      MOVE I_FIELDS1-INPUT    TO I_FINAL1-INPUT.
      MOVE I_FIELDS1-OBLIGAT  TO I_FINAL1-OBLIGAT.
      MOVE I_FIELDS1-DISPLAY  TO I_FINAL1-DISPLAY.
      MOVE I_FIELDS1-NOTACT   TO I_FINAL1-NOTACT.
      APPEND I_FINAL1.
    ENDIF.
    ENDLOOP.
    SORT : I_FIELDS1, I_FIELDS2.
    LOOP AT I_FIELDS2.
       READ TABLE I_FIELDS1 WITH KEY  MFIELD   = I_FIELDS2-MFIELD
                                      INPUT    = I_FIELDS2-INPUT
                                      OBLIGAT  = I_FIELDS2-OBLIGAT
                                      DISPLAY  = I_FIELDS2-DISPLAY
                                      NOTACT   = I_FIELDS2-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS2-PROFILE  TO I_FINAL2-PROFILE.
    SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL2-TEXT.
    ENDIF.
      MOVE I_FIELDS2-MFIELD   TO I_FINAL2-MFIELD.
      MOVE I_FIELDS2-INPUT    TO I_FINAL2-INPUT.
      MOVE I_FIELDS2-OBLIGAT  TO I_FINAL2-OBLIGAT.
      MOVE I_FIELDS2-DISPLAY  TO I_FINAL2-DISPLAY.
      MOVE I_FIELDS2-NOTACT   TO I_FINAL2-NOTACT.
      APPEND I_FINAL2.
    ENDIF.
    ENDLOOP.
    ENDFORM.                    " COMPARE_TABLES
    *&      MODULE  STATUS_0100  OUTPUT
          TEXT
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS SPACE.
      SET TITLEBAR 'T001'.
    PERFORM FIELDCAT_FINAL1.
    PERFORM FIELDCAT_FINAL2.
    CREATE OBJECT DOCK
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '600'
          SIDE                        = '1'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC  NE 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT DOC1
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '1000'
          SIDE                        = '4'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID1 EXPORTING I_PARENT = DOCK.
      CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'I_FINAL1'
        CHANGING
          IT_OUTTAB                     = I_FINAL1[]
          IT_FIELDCATALOG               = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID2 EXPORTING I_PARENT = DOC1.
      CALL METHOD GRID2->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'I_FINAL2'
        CHANGING
          IT_OUTTAB                     = I_FINAL2[]
          IT_FIELDCATALOG               = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CREATE OBJECT DOC3
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '600'
          SIDE                        = '1'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC  NE 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT DOC4
        EXPORTING
          REPID                       = SY-REPID
          DYNNR                       = '100'
          EXTENSION                   = '1000'
          SIDE                        = '4'
        EXCEPTIONS
          CNTL_ERROR                  = 1
          CNTL_SYSTEM_ERROR           = 2
          CREATE_ERROR                = 3
          LIFETIME_ERROR              = 4
          LIFETIME_DYNPRO_DYNPRO_LINK = 5
          OTHERS                      = 6
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID3 EXPORTING I_PARENT = DOC3.
      CALL METHOD GRID3->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'TCATX_GRID'
        CHANGING
          IT_OUTTAB                     = I_TCATX_GRID1[]
         IT_FIELDCATALOG               = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT GRID4 EXPORTING I_PARENT = DOC4.
      CALL METHOD GRID4->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME              = 'TCATX_GRID'
        CHANGING
          IT_OUTTAB                     = I_TCATX_GRID2[]
         IT_FIELDCATALOG               = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          INVALID_PARAMETER_COMBINATION = 1
          PROGRAM_ERROR                 = 2
          TOO_MANY_LINES                = 3
          OTHERS                        = 4.
      IF SY-SUBRC NE  0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      MODULE  USER_COMMAND_0100  INPUT
          TEXT
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      FORM  FIELDCAT_FINAL1
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL1 .
    IF IT_CT1_FIELDCAT1[] IS INITIAL.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT1-COL_POS = 0.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT1-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL1
    *&      FORM  FIELDCAT_FINAL2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL2 .
    IF IT_CT1_FIELDCAT2[] IS INITIAL.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT2-COL_POS = 0.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT2-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL2
    *&      Form  GET_COMPONENTS1
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS1 .
    CLEAR  : I_TCATX_GRID1.
    REFRESH: I_TCATX_GRID1.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
                                      WHERE PROFIL EQ P_PROF1.
    ENDFORM.                    " GET_COMPONENTS1
    *&      Form  GET_COMPONENTS2
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS2 .
    CLEAR  : I_TCATX_GRID2.
    REFRESH: I_TCATX_GRID2.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
                                      WHERE PROFIL EQ P_PROF2.
    ENDFORM.                    " GET_COMPONENTS2
    Thanks & Regards,
    Nagaraj Kalbavi

    Hi Uwe,
    As per your suggestion I have updated my program with splitter. Now I am able to get 3 internal Table but 4th one is not displaying. What could be the reason. I have attached my program for your reference.
    & REPORT  ZTEST_NAG&
    REPORT  ZTEST_NAG.
    TABLES: TCATS, TCATST, TCATX_GRID.
    DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
    DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
    DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
    data: go_docking       TYPE REF TO cl_gui_docking_container,
          go_splitter      TYPE REF TO cl_gui_splitter_container,
          go_splitter_2    TYPE REF TO cl_gui_splitter_container,
          go_cell_top      TYPE REF TO cl_gui_container,
          go_cell_bottom   TYPE REF TO cl_gui_container,
          go_cell_left     TYPE REF TO cl_gui_container,
          go_cell_right    TYPE REF TO cl_gui_container,
          go_grid1         TYPE REF TO cl_gui_alv_grid,
          go_grid2         TYPE REF TO cl_gui_alv_grid,
          go_grid3         TYPE REF TO cl_gui_alv_grid,
          go_grid4         TYPE REF TO cl_gui_alv_grid.
    SELECTION-SCREEN: BEGIN OF BLOCK B1.
    PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
                 P_PROF2 LIKE TCATS-VARIANT.
    SELECTION-SCREEN: END OF BLOCK B1.
    DATA: BEGIN OF I_DD03P OCCURS 0.
           INCLUDE STRUCTURE DD03P.
    DATA: END OF I_DD03P.
    DATA: BEGIN OF I_FIELDS1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS1.
    DATA: BEGIN OF I_FIELDS2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FIELDS2.
    DATA: BEGIN OF I_FINAL1 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL1.
    DATA: BEGIN OF I_FINAL2 OCCURS 0,
           PROFILE  LIKE TCATS-VARIANT,
           TEXT     LIKE TCATST-TEXT,
           MFIELD   TYPE FAWFLDNAM,
           INPUT    LIKE RSFAC-INPUT,
           OBLIGAT  LIKE RSFAC-OBLIGAT,
           DISPLAY  LIKE RSFAC-DISPLAY,
           NOTACT   LIKE RSFAC-NOTACT,
          END OF I_FINAL2.
    DATA: BEGIN OF ENTRYLIST OCCURS 0,
           MFELD      TYPE FAWFLDNAM,
           VISIBLE    TYPE FAWCUST,
           REQUIRED   TYPE FAWCUST,
           READONLY   TYPE FAWCUST,
           HIDE       TYPE FAWCUST,
           PROF1      LIKE TCATS-VARIANT,
          END OF ENTRYLIST.
    DATA: BEGIN OF WORKLIST OCCURS 0.
           INCLUDE STRUCTURE FIELD_SELECTION.
    DATA: END OF WORKLIST.
    DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID1.
    DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
            PROFIL        LIKE TCATX_GRID-PROFIL,
            TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
            COL           LIKE TCATX_GRID-COL,
            OBLIGAT       LIKE TCATX_GRID-OBLIGAT,
          END OF I_TCATX_GRID2.
    PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS1.
    PERFORM GET_COMPONENTS1.
    ENDIF.
    IF NOT P_PROF1 IS INITIAL .
    PERFORM GET_FIELDS2.
    PERFORM GET_COMPONENTS2.
    ENDIF.
    PERFORM COMPARE_TABLES.
    CALL SCREEN 100.
    *&      FORM  GET_FIELDS
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS1.
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF1
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE VISIBLE  EQ SPACE
                      AND   REQUIRED EQ SPACE
                      AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF1              TO I_FIELDS1-PROFILE.
      MOVE ENTRYLIST-MFELD      TO I_FIELDS1-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE  TO I_FIELDS1-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED   TO I_FIELDS1-OBLIGAT.
      MOVE ENTRYLIST-READONLY   TO I_FIELDS1-DISPLAY.
      MOVE ENTRYLIST-HIDE       TO I_FIELDS1-NOTACT.
    APPEND I_FIELDS1.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS
    *&      FORM  GET_FIELDS2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM GET_FIELDS2 .
    CLEAR  : ENTRYLIST, WORKLIST.
    REFRESH: ENTRYLIST, WORKLIST.
    CALL FUNCTION 'CATS_GET_INFLUENCES'
      EXPORTING
        VARIANT                   = P_PROF2
      TABLES
        ENTRYLIST_SELECTION       = ENTRYLIST
        WORKLIST_SELECTION        = WORKLIST
    IF SY-SUBRC EQ 0.
    LOOP AT ENTRYLIST WHERE  VISIBLE  EQ SPACE
                       AND   REQUIRED EQ SPACE
                       AND   READONLY EQ SPACE.
    MOVE 'X' TO ENTRYLIST-HIDE.
    MODIFY ENTRYLIST TRANSPORTING HIDE.
    ENDLOOP.
    LOOP AT ENTRYLIST.
      MOVE P_PROF2                TO I_FIELDS2-PROFILE.
      MOVE ENTRYLIST-MFELD        TO I_FIELDS2-MFIELD.
      IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
        MOVE ENTRYLIST-VISIBLE    TO I_FIELDS2-INPUT.
      ENDIF.
      MOVE ENTRYLIST-REQUIRED     TO I_FIELDS2-OBLIGAT.
      MOVE ENTRYLIST-READONLY     TO I_FIELDS2-DISPLAY.
      MOVE ENTRYLIST-HIDE         TO I_FIELDS2-NOTACT.
    APPEND I_FIELDS2.
    ENDLOOP.
    ENDIF.
    ENDFORM.                    " GET_FIELDS2
    *&      FORM  COMPARE_TABLES
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM COMPARE_TABLES .
    CLEAR: I_FIELDS1, I_FIELDS2.
    SORT : I_FIELDS1, I_FIELDS2.
    DATA: L_TABLE LIKE DD03L-TABNAME,
          L_FIELD LIKE DD03L-FIELDNAME.
    LOOP AT I_FIELDS1.
       READ TABLE I_FIELDS2 WITH KEY  MFIELD   = I_FIELDS1-MFIELD
                                      INPUT    = I_FIELDS1-INPUT
                                      OBLIGAT  = I_FIELDS1-OBLIGAT
                                      DISPLAY  = I_FIELDS1-DISPLAY
                                      NOTACT   = I_FIELDS1-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS1-PROFILE  TO I_FINAL1-PROFILE.
    SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL1-TEXT.
    ENDIF.
      MOVE I_FIELDS1-MFIELD   TO I_FINAL1-MFIELD.
      MOVE I_FIELDS1-INPUT    TO I_FINAL1-INPUT.
      MOVE I_FIELDS1-OBLIGAT  TO I_FINAL1-OBLIGAT.
      MOVE I_FIELDS1-DISPLAY  TO I_FINAL1-DISPLAY.
      MOVE I_FIELDS1-NOTACT   TO I_FINAL1-NOTACT.
      APPEND I_FINAL1.
    ENDIF.
    ENDLOOP.
    SORT : I_FIELDS1, I_FIELDS2.
    LOOP AT I_FIELDS2.
       READ TABLE I_FIELDS1 WITH KEY  MFIELD   = I_FIELDS2-MFIELD
                                      INPUT    = I_FIELDS2-INPUT
                                      OBLIGAT  = I_FIELDS2-OBLIGAT
                                      DISPLAY  = I_FIELDS2-DISPLAY
                                      NOTACT   = I_FIELDS2-NOTACT.
    IF SY-SUBRC NE 0.
      MOVE I_FIELDS2-PROFILE  TO I_FINAL2-PROFILE.
    SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
    CALL FUNCTION 'BUS_DDFIELD_GET'
      EXPORTING
        I_TABNM               = L_TABLE
        I_FLDNM               = L_FIELD
       I_LANGU               =  SY-LANGU
      IMPORTING
        E_DD03P               = I_DD03P
    EXCEPTIONS
       FIELD_NOT_FOUND       = 1
       OTHERS                = 2
    IF SY-SUBRC EQ 0.
        MOVE I_DD03P-DDTEXT        TO I_FINAL2-TEXT.
    ENDIF.
      MOVE I_FIELDS2-MFIELD   TO I_FINAL2-MFIELD.
      MOVE I_FIELDS2-INPUT    TO I_FINAL2-INPUT.
      MOVE I_FIELDS2-OBLIGAT  TO I_FINAL2-OBLIGAT.
      MOVE I_FIELDS2-DISPLAY  TO I_FINAL2-DISPLAY.
      MOVE I_FIELDS2-NOTACT   TO I_FINAL2-NOTACT.
      APPEND I_FINAL2.
    ENDIF.
    ENDLOOP.
    ENDFORM.                    " COMPARE_TABLES
    *&      MODULE  STATUS_0100  OUTPUT
          TEXT
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS SPACE.
      SET TITLEBAR 'T001'.
    PERFORM FIELDCAT_FINAL1.
    PERFORM FIELDCAT_FINAL2.
    CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Create splitter container
      CREATE OBJECT go_splitter
        EXPORTING
          parent            = go_docking
          rows              = 1
          columns           = 2
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_left.
      CALL METHOD go_splitter->get_container
        EXPORTING
          row       = 1
          column    = 2
        RECEIVING
          container = go_cell_right.
    Create 2nd splitter container
      CREATE OBJECT go_splitter_2
        EXPORTING
          parent            = go_cell_left
          rows              = 2
          columns           = 1
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc   ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD go_splitter_2->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = go_cell_top.
      CALL METHOD go_splitter_2->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = go_cell_bottom.
    Create ALV grids
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_cell_top
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent          = go_cell_right
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT go_grid3
        EXPORTING
          i_parent          = go_cell_bottom
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CREATE OBJECT go_grid4
        EXPORTING
          i_parent          = go_cell_left
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CALL METHOD go_grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'I_FINAL1'
        CHANGING
          it_outtab        = I_FINAL1[]
          IT_FIELDCATALOG  = IT_CT1_FIELDCAT1[]
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'I_FINAL2'
        CHANGING
          it_outtab        = I_FINAL2[]
          IT_FIELDCATALOG  = IT_CT1_FIELDCAT2[]
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid3->set_table_for_first_display
        EXPORTING
          i_structure_name = 'TCATX_GRID'
        CHANGING
          it_outtab        = I_TCATX_GRID1[]    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL METHOD go_grid4->set_table_for_first_display
        EXPORTING
          i_structure_name = 'TCATX_GRID'
        CHANGING
          it_outtab        = I_TCATX_GRID2[]    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc ne 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
         CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc ne  0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      MODULE  USER_COMMAND_0100  INPUT
          TEXT
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      FORM  FIELDCAT_FINAL1
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL1 .
    IF IT_CT1_FIELDCAT1[] IS INITIAL.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT1-COL_POS = 0.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT1-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT1-COL_POS = 1.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT1-COL_POS = 2.
    ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
    CLEAR ST_CT1_FIELDCAT1.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL1
    *&      FORM  FIELDCAT_FINAL2
          TEXT
    -->  P1        TEXT
    <--  P2        TEXT
    FORM FIELDCAT_FINAL2 .
    IF IT_CT1_FIELDCAT2[] IS INITIAL.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
    ST_CT1_FIELDCAT2-COL_POS = 0.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
    ST_CT1_FIELDCAT2-KEY = 'X'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
    ST_CT1_FIELDCAT2-COL_POS = 1.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
    ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
    ST_CT1_FIELDCAT2-COL_POS = 2.
    ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
    ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
    APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
    CLEAR ST_CT1_FIELDCAT2.
    ENDIF.
    ENDFORM.                    " FIELDCAT_FINAL2
    *&      Form  GET_COMPONENTS1
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS1 .
    CLEAR  : I_TCATX_GRID1.
    REFRESH: I_TCATX_GRID1.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
                                      WHERE PROFIL EQ P_PROF1.
    ENDFORM.                    " GET_COMPONENTS1
    *&      Form  GET_COMPONENTS2
          text
    -->  p1        text
    <--  p2        text
    FORM GET_COMPONENTS2 .
    CLEAR  : I_TCATX_GRID2.
    REFRESH: I_TCATX_GRID2.
    SELECT * FROM TCATX_GRID
             INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
                                      WHERE PROFIL EQ P_PROF2.
    ENDFORM.                    " GET_COMPONENTS2
    Thanks & Regards,
    Nagaraj Kalbavi

  • ALV to select more than one column by row using set_table_for_first_display

    Hello everyone,
    I am developing an application (ALV OO) to select more than 1 column by row ( one ). This is an a holiday application so the idea is:
    -One column will be the day, and the row will be the user.
    So I am trying to select more than one day by user (that would be the row).
    I am using the method set_table_for_first_display but when it shows the alv, doesn't let me to select more than one column with a click of the mouse.
    Does anybody know if I can do this (select more than one column, by row) in somehow?
    Please let me know if you need more clarification about this.
    Thanks in advance
    Diego

    Hi Diego,
    it's all in the documentation.
    set different selection modes through the value of the field u201CSEL_MODEu201D in the layout structure.
    SPACE
    same as 'B'
    see 'B'
    Default setting
    'A'
    Column and row selection
    Multiple columns
    Multiple rows
    The user selects the rows through pushbuttons at the left border of the grid control.
    'B'
    Simple selection, list box
    Multiple columns
    Multiple rows
    'C'
    Multiple selection, list box
    Multiple columns
    Multiple rows
    'D'
    Cell selection
    Multiple columns
    Multiple rows
    Any cells
    The user selects the rows through pushbuttons at the left border of the grid control
    Beyond setting this option, you can set u201CNO_ROWMARKu201D option to hide the mark column which is normally visible when the selection mode allows multiple row selection.
    One point to notice here is that if you set your ALV Grid as to be editable, it may override your selection mode regardless of your layout settings.
    This is from SDN Community Contribution "An Easy Reference for ALV Grid Control" By: Serdar ŞİMŞEKLER
    Sorry, no link,. it's on my disk.
    Regards,
    Clemens

  • To create a deep structure for dynamic internal table.

    Hello
    My ALV has fields which are defined dynamically during execution.
    so, i did it in the following way,
    Declared Field symbolds, DREF and fieldcatalog as,
    FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
                  <fs_dyntable>.
    DATA:   dref_dyntab    TYPE REF TO data,
            dref_dynwa     TYPE REF TO data.
    DATA: ts_fieldcatalog TYPE lvc_t_fcat.
    DATA: wa_fieldcatalog TYPE lvc_s_fcat.
    Updated Fieldcatalog dynamically as,
    *function module to read segment structure
        CALL FUNCTION 'SEGMENT_READ'
          EXPORTING
            segmenttyp           = v_segment_name
          TABLES
            segmentstructure     = ts_seg_structure
          EXCEPTIONS
            no_authority         = 1
            segment_not_existing = 2
            OTHERS               = 3.
        IF sy-subrc <> 0.
          CASE sy-subrc.
            WHEN '1'.
              MESSAGE e024.
              STOP.
            WHEN '2'.
              MESSAGE e025 WITH v_segment_name.
              STOP.
            WHEN OTHERS.
              MESSAGE e023.
          ENDCASE.
        ENDIF.
    *FETCH FIELDS FROM STRUCTURE OF SEGMENT AND CREATE FIELDCATALOG FOR
    EACH FIELD OF SEGMENT (DYNAMIC FIELD CATALOG)
        LOOP AT ts_seg_structure INTO wa_seg_structure.
          ADD 1 TO v_counter.
          wa_fieldcatalog-fieldname = wa_seg_structure-fieldname.
          wa_fieldcatalog-col_pos   = v_counter.
          wa_fieldcatalog-ref_table = wa_seg_structure-segtyp.
          APPEND wa_fieldcatalog TO ts_fieldcatalog.
          CLEAR wa_fieldcatalog.
        ENDLOOP.
    and generated dynamic internal table using fieldcatalog as,
    *--Method to get the structure of table using fieldcatalog.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ts_fieldcatalog
        IMPORTING
    *--Variable of type REF TO DATA.
          ep_table        = dref_dyntab.
      IF sy-subrc <> 0.
        MESSAGE e023.
      ENDIF.
    *--Dynamic internal tables required when show segments selected
      IF p_selseg IS NOT INITIAL.
        ASSIGN dref_dyntab->* TO <t_dyntable>.
    *--Create dynamic work area and assign to FS
      CREATE DATA dref_dynwa LIKE LINE OF <t_dyntable>.
        ASSIGN dref_dynwa->* TO <fs_dyntable>.
    And then i populated this <t_dyntable> which is being passed as data-table to method
    CL_GUI_ALV_GRID => SET_TABLE_FOR_FIRST_DISPLAY
    for ALV grid Display along with above used filedcatalog ts_fieldcatalog.
    Things are fine till here, but now i have the requirement to edit selected rows of the ALV display..
    As you might be aware, we need a field
            TS_STYLEROW  TYPE lvc_t_styl, (i.e, a field of type 'h' and we can say as an internal table inside an internal table or else as a deep structure)
    in the output internal table <t_dyntable> to meet our requirement.
    My issue is about declaring one such field of type 'h' in this dynamically created internal table ''<t_dyntable>".
    I tried in the following way by adding one such field to fieldcatalog :
    *Field for Styling
      ADD 1 TO v_counter.
      wa_fieldcatalog-fieldname   = 'TS_STYLEROW'.
      wa_fieldcatalog-tabname     = 'TS_STYLE'.
      wa_fieldcatalog-col_pos     = v_counter.
      wa_fieldcatalog-no_out      = 'X'.
      wa_fieldcatalog-inttype     = 'h'.      " I even mentioned this
      APPEND wa_fieldcatalog TO ts_fieldcatalog.
      CLEAR  wa_fieldcatalog.
    But this is creating a field of type 'C' in the table <t_dyntable> instead of what i was expecting
    Guyz and respected,
    Please advice me with the solution or ur ideas....
    Note : The overall requirement is create a deep structure for dynamically generated internal table.
    Your help is highly appreciated and unforgettable..!!!!!!!

    hi,
    Dynamic append
    Dynamic internal table
    Dynamic internal table
    dynamic columns in ALV
    Variant for dynamic selection
    thanks

  • ALV report with dynamic columns, and repeated structure rows

    Hey Guys,
    I've done some ALV programming, but most of the reports were straight forward. This one is a little interesting. So here go the questions...
    Q1: Regarding Columns:
    What is the best way to code a report with columns being dynamic. This is one of the parameters the user is going to enter in his input.
    Q2: Regarding Rows:
    I want to repeat a structure(say it contains f1, f2, f3) multiple time in rows. What is the best way to do it? The labels for these fields have to appear in the first column.
    Below is the visual representation of the questions.
    Jan 06  , Feb 06, Mar 06....(dynamic)
       material 1
    Current Stock
    current required
    $Value of stock
       material 2
    Current Stock
    current required
    $Value of stock
       material 3
    Current Stock
    current required
    $Value of stock
    Thanks for your help.
    Sumit.

    Hi Sumit,
    Just check this sample from one of the SAP site
    ABAP Code Sample for Dynamic Table for ALV with Cell Coloring
    Applies To:
    ABAP / ALV Grid
    Article Summary
    ABAP Code Sample that uses dynamic programming techniques to build a dynamic internal table for display in an ALV Grid with Cell Coloring.
    Code Sample
    REPORT zcdf_dynamic_table.
    * Dynamic ALV Grid with Cell Coloring.
    * Build a field catalog dynamically and provide the ability to color
    * the cells.
    * To test, copy this code to any program name and create screen 100
    * as described in the comments. After the screen is displayed, hit
    * enter to exit the screen.
    * Tested in 4.6C and 6.20
    * Charles Folwell - [email protected] - Feb 2, 2005
    DATA:
    r_dyn_table TYPE REF TO data,
    r_wa_dyn_table TYPE REF TO data,
    r_dock_ctnr TYPE REF TO cl_gui_docking_container,
    r_alv_grid TYPE REF TO cl_gui_alv_grid,
    t_fieldcat1 TYPE lvc_t_fcat, "with cell color
    t_fieldcat2 TYPE lvc_t_fcat, "without cell color
    wa_fieldcat LIKE LINE OF t_fieldcat1,
    wa_cellcolors TYPE LINE OF lvc_t_scol,
    wa_is_layout TYPE lvc_s_layo.
    FIELD-SYMBOLS:
    <t_dyn_table> TYPE STANDARD TABLE,
    <wa_dyn_table> TYPE ANY,
    <t_cellcolors> TYPE lvc_t_scol,
    <w_field> TYPE ANY.
    START-OF-SELECTION.
    * Build field catalog based on your criteria.
    wa_fieldcat-fieldname = 'FIELD1'.
    wa_fieldcat-inttype = 'C'.
    wa_fieldcat-outputlen = '10'.
    wa_fieldcat-coltext = 'My Field 1'.
    wa_fieldcat-seltext = wa_fieldcat-coltext.
    APPEND wa_fieldcat TO t_fieldcat1.
    wa_fieldcat-fieldname = 'FIELD2'.
    wa_fieldcat-inttype = 'C'.
    wa_fieldcat-outputlen = '10'.
    wa_fieldcat-coltext = 'My Field 2'.
    wa_fieldcat-seltext = wa_fieldcat-coltext.
    APPEND wa_fieldcat TO t_fieldcat1.
    * Before adding cell color table, save fieldcatalog to pass
    * to ALV call. The ALV call needs a fieldcatalog without
    * the internal table for cell coloring.
    t_fieldcat2[] = t_fieldcat1[].
    * Add cell color table.
    * CALENDAR_TYPE is a structure in the dictionary with a
    * field called COLTAB of type LVC_T_SCOL. You can use
    * any structure and field that has the type LVC_T_SCOL.
    wa_fieldcat-fieldname = 'T_CELLCOLORS'.
    wa_fieldcat-ref_field = 'COLTAB'.
    wa_fieldcat-ref_table = 'CALENDAR_TYPE'.
    APPEND wa_fieldcat TO t_fieldcat1.
    * Create dynamic table including the internal table
    * for cell coloring.
    CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
    it_fieldcatalog = t_fieldcat1
    IMPORTING
    ep_table = r_dyn_table
    EXCEPTIONS
    generate_subpool_dir_full = 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.
    * Get access to new table using field symbol.
    ASSIGN r_dyn_table->* TO <t_dyn_table>.
    * Create work area for new table.
    CREATE DATA r_wa_dyn_table LIKE LINE OF <t_dyn_table>.
    * Get access to new work area using field symbol.
    ASSIGN r_wa_dyn_table->* TO <wa_dyn_table>.
    * Get data into table from somewhere. Field names are
    * known at this point because field catalog is already
    * built. Read field names from the field catalog or use
    * COMPONENT <number> in a DO loop to access the fields. A
    * simpler hard coded approach is used here.
    ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.
    <w_field> = 'ABC'.
    ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.
    <w_field> = 'XYZ'.
    APPEND <wa_dyn_table> TO <t_dyn_table>.
    ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table> TO <w_field>.
    <w_field> = 'TUV'.
    ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.
    <w_field> = 'DEF'.
    APPEND <wa_dyn_table> TO <t_dyn_table>.
    * Color cells based on your criteria. In this example, a test on
    * FIELD2 is used to decide on color.
    LOOP AT <t_dyn_table> INTO <wa_dyn_table>.
    ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table> TO <w_field>.
    * Get access to internal table used to color cells.
    ASSIGN COMPONENT 'T_CELLCOLORS'
    OF STRUCTURE <wa_dyn_table> TO <t_cellcolors>.
    CLEAR wa_cellcolors.
    wa_cellcolors-fname = 'FIELD2'.
    IF <w_field> = 'DEF'.
    wa_cellcolors-color-col = '7'.
    ELSE.
    wa_cellcolors-color-col = '5'.
    ENDIF.
    APPEND wa_cellcolors TO <t_cellcolors>.
    MODIFY <t_dyn_table> FROM <wa_dyn_table>.
    ENDLOOP.
    * Display screen. Define screen 100 as empty, with next screen
    * set to 0 and flow logic of:
    * PROCESS BEFORE OUTPUT.
    * MODULE initialization.
    * PROCESS AFTER INPUT.
    CALL SCREEN 100.
    * MODULE initialization OUTPUT
    MODULE initialization OUTPUT.
    * Set up for ALV display.
    IF r_dock_ctnr IS INITIAL.
    CREATE OBJECT r_dock_ctnr
    EXPORTING
    side = cl_gui_docking_container=>dock_at_left
    ratio = '90'.
    CREATE OBJECT r_alv_grid
    EXPORTING i_parent = r_dock_ctnr.
    * Set ALV controls for cell coloring table.
    wa_is_layout-ctab_fname = 'T_CELLCOLORS'.
    * Display.
    CALL METHOD r_alv_grid->set_table_for_first_display
    EXPORTING
    is_layout = wa_is_layout
    CHANGING
    it_outtab = <t_dyn_table>
    it_fieldcatalog = t_fieldcat2.
    ELSE. "grid already prepared
    * Refresh display.
    CALL METHOD r_alv_grid->refresh_table_display
    EXPORTING
    i_soft_refresh = ' '
    EXCEPTIONS
    finished = 1
    OTHERS = 2.
    ENDIF.
    ENDMODULE. " initialization OUTPUT
    Regards
    vijay

  • Dynamic Table - Deep Structure

    Hi Gurus,
    this is my first posting, so be patient!
    I want to create a deep structure dynamic table via method
    cl_alv_table_create=>create_dynamic_table, is this possible? Are there tricks to make it happen?
    Background: i wanna create an alv with dynamic fieldcatalalog, in this case i want to colour special fields, which is done by lvc_s_layo-?csp_fieldname? in combination with a field in my internal table which is typed ?lvc_t_scol?. Is this possible under 6.2.43
    thanxs for your replies
    juergen
    - ?i dont actually know by rote the correct fieldnames of lvc_xxxxx?

    Hi Jurgen, I took on the challenge.  This program provides a dynamic table with the ability to set the colors of the cells.
    Create the structure ZCDF_CELL_COLOR in the dictionary as described in the program.
    Create screen 100 as empty, with next screen set to 0, and the following flow logic:
    PROCESS BEFORE OUTPUT.
      MODULE initialization.
    PROCESS AFTER INPUT.
    REPORT  zcdf_dynamic_table.
    * Dynamic ALV Grid with Cell Coloring
    DATA:
      r_dyn_table      TYPE REF TO data,
      r_wa_dyn_table   TYPE REF TO data,
      r_dock_ctnr      TYPE REF TO cl_gui_docking_container,
      r_alv_grid       TYPE REF TO cl_gui_alv_grid,
      t_fieldcat1      TYPE lvc_t_fcat, "with cell color
      t_fieldcat2      TYPE lvc_t_fcat, "without cell color
      wa_fieldcat      LIKE LINE OF t_fieldcat1,
      wa_cellcolors    TYPE LINE OF lvc_t_scol,
      wa_is_layout     TYPE lvc_s_layo.
    FIELD-SYMBOLS:
      <t_dyn_table>    TYPE STANDARD TABLE,
      <wa_dyn_table>   TYPE ANY,
      <t_cellcolors>   TYPE lvc_t_scol,
      <w_field>        TYPE ANY.
    START-OF-SELECTION.
    * Build field catalog based on your criteria.
      wa_fieldcat-fieldname = 'FIELD1'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '10'.
      wa_fieldcat-coltext   = 'My Field 1'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.
      APPEND wa_fieldcat TO t_fieldcat1.
      wa_fieldcat-fieldname = 'FIELD2'.
      wa_fieldcat-inttype   = 'C'.
      wa_fieldcat-outputlen = '10'.
      wa_fieldcat-coltext   = 'My Field 2'.
      wa_fieldcat-seltext   = wa_fieldcat-coltext.
      APPEND wa_fieldcat TO t_fieldcat1.
    * Before adding cell color table,
    *  save fieldcatalog to pass
    *  to ALV call.
      t_fieldcat2[] = t_fieldcat1[].
    * Add cell color table.
    *  ZCDF_CELL_COLOR is a structure in the
    *   dictionary with one
    *   field called T_CELL_COLOR of type LVC_T_SCOL.
      wa_fieldcat-fieldname = 'T_CELLCOLORS'.
      wa_fieldcat-ref_field = 'T_CELL_COLOR'.
      wa_fieldcat-ref_table = 'ZCDF_CELL_COLOR'.
      APPEND wa_fieldcat TO t_fieldcat1.
    * Create dynamic table.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog           = t_fieldcat1
        IMPORTING
          ep_table                  = r_dyn_table
        EXCEPTIONS
          generate_subpool_dir_full = 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.
    * Get access to new table using field symbol.
      ASSIGN r_dyn_table->* TO <t_dyn_table>.
    * Create work area for new table.
      CREATE DATA r_wa_dyn_table LIKE LINE OF <t_dyn_table>.
    * Get access to new work area using field symbol.
      ASSIGN r_wa_dyn_table->* TO <wa_dyn_table>.
    * Get data into table from somewhere.  Field names are
    *  known at this point because field catalog is already
    *  built.  Read field names from the field catalog or use
    *  COMPONENT <number> in a DO loop to access the fields. 
    *  A simpler hard coded approach is used here.
      ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table>
        TO <w_field>.
      <w_field> = 'ABC'.
      ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table>
        TO <w_field>.
      <w_field> = 'XYZ'.
      APPEND <wa_dyn_table> TO <t_dyn_table>.
      ASSIGN COMPONENT 'FIELD1' OF STRUCTURE <wa_dyn_table>
        TO <w_field>.
      <w_field> = 'TUV'.
      ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table>
        TO <w_field>.
      <w_field> = 'DEF'.
      APPEND <wa_dyn_table> TO <t_dyn_table>.
    * Color cells based on your criteria. 
    *  In this example, a test on
    *  FIELD2 is used to decide on color.
      LOOP AT <t_dyn_table> INTO <wa_dyn_table>.
        ASSIGN COMPONENT 'FIELD2' OF STRUCTURE <wa_dyn_table>
          TO <w_field>.
        ASSIGN COMPONENT 'T_CELLCOLORS'
          OF STRUCTURE <wa_dyn_table> TO <t_cellcolors>.
        CLEAR wa_cellcolors.
        wa_cellcolors-fname     = 'FIELD2'.
        IF <w_field> = 'DEF'.
          wa_cellcolors-color-col = '7'.
        ELSE.
          wa_cellcolors-color-col = '5'.
        ENDIF.
        APPEND wa_cellcolors TO <t_cellcolors>.
        MODIFY <t_dyn_table> FROM <wa_dyn_table>.
      ENDLOOP.
      CALL SCREEN 100.
    *  MODULE initialization OUTPUT
    MODULE initialization OUTPUT.
    * Set up for ALV display.
      IF r_dock_ctnr IS INITIAL.
        CREATE OBJECT r_dock_ctnr
               EXPORTING
                  side  =  
                    cl_gui_docking_container=>dock_at_left
                  ratio = '90'.
        CREATE OBJECT r_alv_grid
               EXPORTING i_parent = r_dock_ctnr.
    *   Set ALV controls.
        wa_is_layout-ctab_fname = 'T_CELLCOLORS'.
    *   Display.
        CALL METHOD r_alv_grid->set_table_for_first_display
          EXPORTING
            is_layout       = wa_is_layout
          CHANGING
            it_outtab       = <t_dyn_table>
            it_fieldcatalog = t_fieldcat2.
      ELSE.     "grids already prepared
    *   Refresh display.
        CALL METHOD r_alv_grid->refresh_table_display
          EXPORTING
            i_soft_refresh = ' '
          EXCEPTIONS
            finished       = 1
            OTHERS         = 2.
      ENDIF.
    ENDMODULE.                 " initialization  OUTPUT

  • Generic function displaying alv grid for undefined structure

    Hi experts,
    I'm doing my first steps on abap development (Totally noob).
    I'm writing some little reports based on simple selections (1 or 2 tables).
    In every report, I've defined a structure (internal table) that i'm displaying with an ALV Grid.
    In every report, I need to create a catalog for my structure in order to make the alv grid working.
    What I would like to do is :
    Create a function that receives a undefined structure (for all my reports) as a parameter.
    This function sould create the catalog for the coresponding structure and call the alv grid function to display the data's contained in this structure.
    The goal is : In every report, I would like to use this function to show the selected data's without taking care of catalogs, alv grid, etc...
    Is it possible ?
    I really don't see how I can do that... Does anybody already tried something like that ?
    Thank you for your help
    Regards
    Quentin

    Hi,
    In this method Pass the structure name-
    CALL METHOD gh_grid->set_table_for_first_display
    EXPORTING
    I_BUFFER_ACTIVE =
    I_BYPASSING_BUFFER =
    I_CONSISTENCY_CHECK =
    I_STRUCTURE_NAME = "<- here pass the structure
    IS_VARIANT =
    I_SAVE =
    I_DEFAULT = 'X'
    IS_LAYOUT = "<-Layout variable if using layout
    IS_PRINT =
    IT_SPECIAL_GROUPS =
    IT_TOOLBAR_EXCLUDING =
    IT_HYPERLINK =
    IT_ALV_GRAPHICS =
    IT_EXCEPT_QINFO =
    CHANGING
    it_outtab = gt_line[]
    it_fieldcatalog = gt_fieldcat
    IT_SORT =
    IT_FILTER =
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4

  • How to create tree structure in abap

    hi,
       I am mohan. Please send the how to create the tree structure. how to insert the child nodes in  root node. actually our requirement is we have list transaction codes. We are planning to put all transaction codes in tree level.
    please tell me how to do the program in tree structure.

    Hi Mohan,
    Check the following program on ALV tree.
    REPORT zalvtree.
    CLASS cl_gui_column_tree DEFINITION LOAD.
    CLASS cl_gui_cfw DEFINITION LOAD.
    DATA: go_grid TYPE REF TO cl_gui_alv_grid.
    DATA: ro_grid TYPE REF TO cl_gui_alv_grid.
    DATA tree1  TYPE REF TO cl_gui_alv_tree.
    DATA mr_toolbar TYPE REF TO cl_gui_toolbar.
    DATA : gt_checked TYPE lvc_t_chit,
           gs_checked LIKE LINE OF gt_checked,
           l_part_key TYPE lvc_nkey,
           gt_node TYPE lvc_s_chit-nodekey.
    INCLUDE <icon>.
    INCLUDE zamit_alv_tree_toolbar_event.
    INCLUDE zbcalv_tree_event_receiver.
    *DATA: toolbar_event_receiver TYPE REF TO lcl_toolbar_event_receiver.
    DATA: gt_sflight      TYPE sflight OCCURS 0,      "Output-Table
          gt_fieldcatalog TYPE lvc_t_fcat, "Fieldcatalog
          ok_code LIKE sy-ucomm.           "OK-Code
    START-OF-SELECTION.
    END-OF-SELECTION.
      CALL SCREEN 100.
    *&      Module  PBO  OUTPUT
          process before output
    MODULE pbo OUTPUT.
      SET PF-STATUS 'MAIN100'.
      IF tree1 IS INITIAL.
        PERFORM init_tree.
    else.
                  CALL METHOD me->refresh_table_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.
      ENDIF.
      CALL METHOD cl_gui_cfw=>flush.
    ENDMODULE.                             " PBO  OUTPUT
    *&      Module  PAI  INPUT
          process after input
    MODULE pai INPUT.
      CASE ok_code.
        WHEN 'EXIT' OR 'BACK' OR 'CANC'.
          PERFORM exit_program.
    *mrk
        WHEN 'MOVE'.
          PERFORM check_selection.
        WHEN 'MBAK'.
          PERFORM another_selection.
        WHEN 'ALL'.
          PERFORM select_all.
        WHEN 'CLEAR'.
          PERFORM clear_all.
        WHEN 'DELETE'.
          PERFORM delete_all.
        WHEN 'EXPAND'.
          PERFORM expand_all.
        WHEN 'COLLAPSE'.
          PERFORM collapse_all.
        WHEN OTHERS.
          CALL METHOD cl_gui_cfw=>dispatch.
      ENDCASE.
      CLEAR ok_code.
      CALL METHOD cl_gui_cfw=>flush.
    ENDMODULE.                             " PAI  INPUT
    *&      Form  build_fieldcatalog
          build fieldcatalog for structure sflight
    FORM build_fieldcatalog.
    get fieldcatalog
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'SFLIGHT'
        CHANGING
          ct_fieldcat      = gt_fieldcatalog.
    change fieldcatalog
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
        CASE ls_fieldcatalog-fieldname.
          WHEN 'CARRID' OR 'CONNID' OR 'FLDATE'.
            ls_fieldcatalog-no_out = 'X'.
            ls_fieldcatalog-key    = ''.
          WHEN 'PRICE' OR 'SEATSOCC' OR 'SEATSMAX' OR 'PAYMENTSUM'.
            ls_fieldcatalog-do_sum = 'X'.
        ENDCASE.
        MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
      ENDLOOP.
    ENDFORM.                               " build_fieldcatalog
    *&      Form  build_hierarchy_header
          build hierarchy-header-information
         -->P_L_HIERARCHY_HEADER  strucxture for hierarchy-header
    FORM build_hierarchy_header CHANGING
                                   p_hierarchy_header TYPE treev_hhdr.
      p_hierarchy_header-heading = 'Hierarchy Header'.          "#EC NOTEXT
      p_hierarchy_header-tooltip =
                             'This is the Hierarchy Header !'.  "#EC NOTEXT
      p_hierarchy_header-width = 30.
      p_hierarchy_header-width_pix = ''.
    ENDFORM.                               " build_hierarchy_header
    *&      Form  exit_program
          free object and leave program
    FORM exit_program.
      CALL METHOD tree1->free.
      LEAVE PROGRAM.
    ENDFORM.                               " exit_program
    *&      Form  check_selection
          text
    -->  p1        text
    <--  p2        text
    FORM check_selection .
    create container for alv-tree
      DATA: l_tree_container_name(30) TYPE c,
            l_custom_container2 TYPE REF TO cl_gui_custom_container.
      l_tree_container_name = 'TREE2'.
      IF sy-batch IS INITIAL.
        CREATE OBJECT l_custom_container2
          EXPORTING
                container_name = l_tree_container_name
          EXCEPTIONS
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc <> 0.
          MESSAGE x208(00) WITH 'ERROR'.                        "#EC NOTEXT
        ENDIF.
      ENDIF.
      CREATE OBJECT go_grid
        EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
          i_parent          = l_custom_container2
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      PERFORM load_data_into_grid.
    *data: lt_nodes type LVC_T_NKEY,
         ls_nodes like line of lt_nodes,
         ls_checked like line of gt_checked.
    *loop at gt_checked into ls_checked.
    ls_nodes = ls_checked-nodekey.
    append ls_nodes to lt_nodes.
    *endloop.
    *CALL METHOD tree1->unselect_nodes
    EXPORTING
       it_node_key                  = lt_nodes
    EXCEPTIONS
       CNTL_SYSTEM_ERROR            = 1
       DP_ERROR                     = 2
       MULTIPLE_NODE_SELECTION_ONLY = 3
       ERROR_IN_NODE_KEY_TABLE      = 4
       FAILED                       = 5
       others                       = 6
    *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.                    " check_selection
    *&      Form  another_selection
          text
    -->  p1        text
    <--  p2        text
    FORM another_selection .
    create container for alv-tree
      DATA: l_tree_container_name(30) TYPE c,
            l_custom_container2 TYPE REF TO cl_gui_custom_container.
      l_tree_container_name = 'TREE2'.
      IF sy-batch IS INITIAL.
        CREATE OBJECT l_custom_container2
          EXPORTING
                container_name = l_tree_container_name
          EXCEPTIONS
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc <> 0.
          MESSAGE x208(00) WITH 'ERROR'.                        "#EC NOTEXT
        ENDIF.
      ENDIF.
      CREATE OBJECT ro_grid
        EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
          i_parent          = l_custom_container2
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      PERFORM load_data_into_grid1.
      DATA: lt_unsel TYPE lvc_t_nkey,
            ls_unsel LIKE LINE OF lt_unsel.
      LOOP AT gt_checked INTO gs_checked.
        ls_unsel = gs_checked-nodekey.
        APPEND ls_unsel TO lt_unsel.
      ENDLOOP.
      CALL METHOD tree1->unselect_nodes
        EXPORTING
          it_node_key                  = lt_unsel
        EXCEPTIONS
          cntl_system_error            = 1
          dp_error                     = 2
          multiple_node_selection_only = 3
          error_in_node_key_table      = 4
          failed                       = 5
          OTHERS                       = 6.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *CALL METHOD tree1->unselect_all
    EXCEPTIONS
       CNTL_SYSTEM_ERROR = 1
       FAILED            = 2
       others            = 3
    *IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ENDIF.
      DATA: text TYPE lvc_value,
       item TYPE lvc_t_layi,
       node TYPE lvc_s_layn,
       inode TYPE lvc_nkey.
      FIELD-SYMBOLS: <wa> TYPE ANY.
      DATA: l_dref_wa LIKE LINE OF gt_sflight.
      ASSIGN l_dref_wa TO <wa>.
      READ TABLE gt_checked INTO gs_checked WITH KEY nodekey = 3.
      inode = gs_checked-nodekey.
      CALL METHOD tree1->get_outtab_line
        EXPORTING
          i_node_key     = inode
        IMPORTING
          e_outtab_line  = <wa>
          e_node_text    = text
          et_item_layout = item
          es_node_layout = node
        EXCEPTIONS
          node_not_found = 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.
      DATA: lt_layout TYPE lvc_t_laci,
            layout LIKE LINE OF lt_layout.
      layout-chosen = 'X'.
      layout-fieldname = tree1->c_hierarchy_column_name.
    ls_item_layout-chosen = 'X'.           "To give default checkbox value checked
      layout-class   = cl_gui_column_tree=>item_class_checkbox.
      layout-editable = 'X'.
    LAYOUT-U_CHOSEN = 'X'.
      APPEND layout TO lt_layout.
      CALL METHOD tree1->change_node
        EXPORTING
          i_node_key     = inode
          i_outtab_line  = <wa>
       IS_NODE_LAYOUT =
          it_item_layout =  lt_layout
       I_NODE_TEXT    =
       I_U_NODE_TEXT  =
        EXCEPTIONS
          node_not_found = 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.
    *CALL METHOD tree1->change_item
    EXPORTING
       i_node_key     = inode
       i_fieldname    = gs_checked-FIELDNAME
       i_data         = <wa>
       I_U_DATA       = ''
       IS_ITEM_LAYOUT = layout
    EXCEPTIONS
       NODE_NOT_FOUND = 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.
    *loop at lt_unsel into ls_unsel.
    *CALL METHOD tree1->update_checked_items
    EXPORTING
       i_node_key    = ls_unsel
       i_fieldname   = ''
       i_checked     = ''
    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.
    *endif.
    ENDFORM.                    " another_selection
    *&      Form  select_all
          text
    -->  p1        text
    <--  p2        text
    FORM select_all .
      CONSTANTS: c_x(1) TYPE c VALUE 'X'.
    *********Check box modifications.
      CALL METHOD tree1->delete_all_nodes
        EXCEPTIONS
          failed            = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    clear l_part_key.
    create hierarchy
      PERFORM create_hierarchy USING c_x.
      CALL METHOD tree1->expand_node
        EXPORTING
          i_node_key          = gt_node
       I_LEVEL_COUNT       = 1
          i_expand_subtree    = 'X'
        EXCEPTIONS
          failed              = 1
          illegal_level_count = 2
          cntl_system_error   = 3
          node_not_found      = 4
          cannot_expand_leaf  = 5
          OTHERS              = 6
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    add own functioncodes to the toolbar
    perform change_toolbar.
    register events
    perform register_events.
    adjust column_width
    call method tree1->COLUMN_OPTIMIZE.
    ENDFORM.                    " select_all
    *&      Form  clear_all
          text
    -->  p1        text
    <--  p2        text
    FORM clear_all .
      CONSTANTS: c_x(1) TYPE c VALUE space.
    *********Check box modifications.
      CALL METHOD tree1->delete_all_nodes
        EXCEPTIONS
          failed            = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    create hierarchy
      PERFORM create_hierarchy USING c_x.
      CALL METHOD tree1->expand_node
        EXPORTING
          i_node_key          = gt_node
       I_LEVEL_COUNT       = 1
          i_expand_subtree    = 'X'
        EXCEPTIONS
          failed              = 1
          illegal_level_count = 2
          cntl_system_error   = 3
          node_not_found      = 4
          cannot_expand_leaf  = 5
          OTHERS              = 6
      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.                    " clear_all
    *&      Form  delete_all
          text
    -->  p1        text
    <--  p2        text
    FORM delete_all .
    *********Check box modifications.
      CALL METHOD tree1->delete_all_nodes
        EXCEPTIONS
          failed            = 1
          cntl_system_error = 2
          OTHERS            = 3.
      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.                    " delete_all
    *&      Form  expand_all
          text
    -->  p1        text
    <--  p2        text
    FORM expand_all .
      CALL METHOD tree1->expand_node
        EXPORTING
          i_node_key          = gt_node
       I_LEVEL_COUNT       = 1
          i_expand_subtree    = 'X'
        EXCEPTIONS
          failed              = 1
          illegal_level_count = 2
          cntl_system_error   = 3
          node_not_found      = 4
          cannot_expand_leaf  = 5
          OTHERS              = 6
      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.                    " expand_all
    *&      Form  collapse_all
          text
    -->  p1        text
    <--  p2        text
    FORM collapse_all .
      CALL METHOD tree1->collapse_all_nodes
        EXCEPTIONS
          failed            = 1
          cntl_system_error = 2
          OTHERS            = 3.
      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.                    " collapse_all
    *&      Form  load_data_into_grid
          text
    -->  p1        text
    <--  p2        text
    FORM load_data_into_grid .
      DATA:
      For parameter IS_VARIANT
          l_layout TYPE disvariant,
      gs_layout TYPE lvc_s_layo.
      DATA gi_sflight TYPE TABLE OF zsflight.
    Load data into the grid and display them
      l_layout-report = sy-repid.
      gs_layout-grid_title = 'Amits Test Program'.
      gs_layout-sel_mode = 'A'.
      SELECT *
       FROM zsflight
       INTO TABLE gi_sflight.
      CALL METHOD go_grid->set_table_for_first_display
        EXPORTING
          i_structure_name = 'SFLIGHT'
          is_layout        = gs_layout
          is_variant       = l_layout
          i_save           = 'A'
        CHANGING
          it_outtab        = gi_sflight.
    ENDFORM.                    " load_data_into_grid
    *&      Form  load_data_into_grid
          text
    -->  p1        text
    <--  p2        text
    FORM load_data_into_grid1.
      DATA:
      For parameter IS_VARIANT
          l_layout TYPE disvariant,
      gs_layout TYPE lvc_s_layo.
      DATA gi_sflight TYPE TABLE OF zapempl.
    Load data into the grid and display them
      l_layout-report = sy-repid.
      gs_layout-grid_title = 'Rams Test Program'.
      gs_layout-sel_mode = 'A'.
      SELECT *
       FROM zapempl
       INTO TABLE gi_sflight.
      CALL METHOD ro_grid->set_table_for_first_display
        EXPORTING
          i_structure_name = 'ZAPEMPL'
          is_layout        = gs_layout
          is_variant       = l_layout
          i_save           = 'A'
        CHANGING
          it_outtab        = gi_sflight.
    ENDFORM.                    " load_data_into_grid1
    *&      Form  build_header
          build table for html_header
    -->  p1        text
    <--  p2        text
    FORM build_comment USING
          pt_list_commentary TYPE slis_t_listheader
          p_logo             TYPE sdydo_value.
      DATA: ls_line TYPE slis_listheader.
    LIST HEADING LINE: TYPE H
      CLEAR ls_line.
      ls_line-typ  = 'H'.
    LS_LINE-KEY:  NOT USED FOR THIS TYPE
      ls_line-info = 'ALV-tree-demo: flight-overview'.          "#EC NOTEXT
      APPEND ls_line TO pt_list_commentary.
    STATUS LINE: TYPE S
      CLEAR ls_line.
      ls_line-typ  = 'S'.
      ls_line-key  = 'valid until'.                             "#EC NOTEXT
      ls_line-info = 'January 29 1999'.                         "#EC NOTEXT
      APPEND ls_line TO pt_list_commentary.
      ls_line-key  = 'time'.
      ls_line-info = '2.00 pm'.                                 "#EC NOTEXT
      APPEND ls_line TO pt_list_commentary.
    ACTION LINE: TYPE A
      CLEAR ls_line.
      ls_line-typ  = 'A'.
    LS_LINE-KEY:  NOT USED FOR THIS TYPE
      ls_line-info = 'actual data'.                             "#EC NOTEXT
      APPEND ls_line TO pt_list_commentary.
      p_logo = 'ENJOYSAP_LOGO'.
    ENDFORM.                    "build_comment
    *&      Form  create_hierarchy
          text
    -->  p1        text
    <--  p2        text
    FORM create_hierarchy USING p_x.
      DATA: ls_sflight TYPE sflight,
            lt_sflight TYPE sflight OCCURS 0.
    get data
      SELECT * FROM sflight INTO TABLE lt_sflight
                            UP TO 200 ROWS .
      SORT lt_sflight BY carrid connid fldate.
    add data to tree
      DATA: l_carrid_key TYPE lvc_nkey,
            l_connid_key TYPE lvc_nkey,
            l_last_key TYPE lvc_nkey.
           l_part_key TYPE lvc_nkey
      PERFORM add_carrid_line USING    ls_sflight
                              CHANGING l_part_key.
      gt_node = l_part_key.
      LOOP AT lt_sflight INTO ls_sflight.
        ON CHANGE OF ls_sflight-carrid.
          PERFORM add_carrid_line USING    ls_sflight
                                           l_part_key
                                  CHANGING l_carrid_key.
          PERFORM add_connid_line USING    ls_sflight
                                           l_carrid_key
                                  CHANGING l_connid_key.
          PERFORM add_complete_line USING  ls_sflight
                                         l_connid_key
                                         p_x
                                CHANGING l_last_key.
          CONTINUE.
        ENDON.
        ON CHANGE OF ls_sflight-connid.
          PERFORM add_connid_line USING    ls_sflight
                                           l_carrid_key
                                  CHANGING l_connid_key.
          PERFORM add_complete_line USING  ls_sflight
                                         l_connid_key
                                         p_x
                                CHANGING l_last_key.
          CONTINUE.
        ENDON.
        PERFORM add_complete_line USING  ls_sflight
                                         l_connid_key
                                         p_x
                                CHANGING l_last_key.
      ENDLOOP.
    calculate totals
      CALL METHOD tree1->update_calculations.
    this method must be called to send the data to the frontend
      CALL METHOD tree1->frontend_update.
    ENDFORM.                               " create_hierarchy
    *&      Form  add_carrid_line
          add hierarchy-level 1 to tree
         -->P_LS_SFLIGHT  sflight
         -->P_RELEATKEY   relatkey
        <-->p_node_key    new node-key
    FORM add_carrid_line USING     ps_sflight TYPE sflight
                                   p_relat_key TYPE lvc_nkey
                         CHANGING  p_node_key TYPE lvc_nkey.
      DATA: l_node_text TYPE lvc_value,
            ls_sflight TYPE sflight.
    set item-layout
      DATA: lt_item_layout TYPE lvc_t_layi,
            ls_item_layout TYPE lvc_s_layi.
      ls_item_layout-t_image = '@3P@'.
      ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
      ls_item_layout-style   =
                            cl_gui_column_tree=>style_intensifd_critical.
      APPEND ls_item_layout TO lt_item_layout.
    add node
      l_node_text =  ps_sflight-carrid.
      CALL METHOD tree1->add_node
        EXPORTING
          i_relat_node_key = p_relat_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          i_node_text      = l_node_text
          is_outtab_line   = ls_sflight
          it_item_layout   = lt_item_layout
        IMPORTING
          e_new_node_key   = p_node_key.
    ENDFORM.                               " add_carrid_line
    *&      Form  add_connid_line
          add hierarchy-level 2 to tree
         -->P_LS_SFLIGHT  sflight
         -->P_RELEATKEY   relatkey
        <-->p_node_key    new node-key
    FORM add_connid_line USING     ps_sflight TYPE sflight
                                   p_relat_key TYPE lvc_nkey
                         CHANGING  p_node_key TYPE lvc_nkey.
      DATA: l_node_text TYPE lvc_value,
            ls_sflight TYPE sflight.
    set item-layout
      DATA: lt_item_layout TYPE lvc_t_layi,
            ls_item_layout TYPE lvc_s_layi.
      ls_item_layout-t_image = '@3Y@'.
      ls_item_layout-style   =
                            cl_gui_column_tree=>style_intensified.
      ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
      APPEND ls_item_layout TO lt_item_layout.
    add node
      l_node_text =  ps_sflight-connid.
      CALL METHOD tree1->add_node
        EXPORTING
          i_relat_node_key = p_relat_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          i_node_text      = l_node_text
          is_outtab_line   = ls_sflight
          it_item_layout   = lt_item_layout
        IMPORTING
          e_new_node_key   = p_node_key.
    ENDFORM.                               " add_connid_line
    *&      Form  add_cmplete_line
          add hierarchy-level 3 to tree
         -->P_LS_SFLIGHT  sflight
         -->P_RELEATKEY   relatkey
        <-->p_node_key    new node-key
    FORM add_complete_line USING   ps_sflight TYPE sflight
                                   p_relat_key TYPE lvc_nkey
                                   p_x
                         CHANGING  p_node_key TYPE lvc_nkey.
      DATA: l_node_text TYPE lvc_value.
    set item-layout
      DATA: lt_item_layout TYPE lvc_t_layi,
            ls_item_layout TYPE lvc_s_layi.
      ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
      ls_item_layout-chosen = p_x.           "To give default checkbox value checked
      ls_item_layout-class   = cl_gui_column_tree=>item_class_checkbox.
      ls_item_layout-editable = 'X'.
      APPEND ls_item_layout TO lt_item_layout.
      l_node_text =  ps_sflight-fldate.
      CALL METHOD tree1->add_node
        EXPORTING
          i_relat_node_key = p_relat_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          is_outtab_line   = ps_sflight
          i_node_text      = l_node_text
          it_item_layout   = lt_item_layout
        IMPORTING
          e_new_node_key   = p_node_key.
    ENDFORM.                               " add_complete_line
    *&      Form  register_events
          text
    -->  p1        text
    <--  p2        text
    FORM register_events.
    define the events which will be passed to the backend
      DATA: lt_events TYPE cntl_simple_events,
            l_event TYPE cntl_simple_event.
    define the events which will be passed to the backend
      l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_header_click.
      APPEND l_event TO lt_events.
      l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
      APPEND l_event TO lt_events.
      CALL METHOD tree1->set_registered_events
        EXPORTING
          events                    = lt_events
        EXCEPTIONS
          cntl_error                = 1
          cntl_system_error         = 2
          illegal_event_combination = 3.
      IF sy-subrc <> 0.
        MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
      ENDIF.
    set Handler
      DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
      CREATE OBJECT l_event_receiver.
      SET HANDLER l_event_receiver->handle_node_ctmenu_request
                                                            FOR tree1.
      SET HANDLER l_event_receiver->handle_node_ctmenu_selected
                                                            FOR tree1.
      SET HANDLER l_event_receiver->handle_item_ctmenu_request
                                                            FOR tree1.
      SET HANDLER l_event_receiver->handle_item_ctmenu_selected
                                                            FOR tree1.
      SET HANDLER l_event_receiver->handle_checkbox_change FOR tree1.
    ENDFORM.                               " register_events
    *&      Form  change_toolbar
          text
    -->  p1        text
    <--  p2        text
    FORM change_toolbar.
    DATA: toolbar_event_receiver TYPE REF TO lcl_toolbar_event_receiver.
    get toolbar control
      CALL METHOD tree1->get_toolbar_object
        IMPORTING
          er_toolbar = mr_toolbar.
      CHECK NOT mr_toolbar IS INITIAL.
    add seperator to toolbar
      CALL METHOD mr_toolbar->add_button
        EXPORTING
          fcode     = ''
          icon      = ''
          butn_type = cntb_btype_sep
          text      = ''
          quickinfo = 'This is a Seperator'.                    "#EC NOTEXT
    add Standard Button to toolbar (for Delete Subtree)
      CALL METHOD mr_toolbar->add_button
        EXPORTING
          fcode     = 'DELETE'
          icon      = '@18@'
          butn_type = cntb_btype_button
          text      = ''
          quickinfo = 'Delete subtree'.                         "#EC NOTEXT
    add Dropdown Button to toolbar (for Insert Line)
      CALL METHOD mr_toolbar->add_button
        EXPORTING
          fcode     = 'INSERT_LC'
          icon      = '@17@'
          butn_type = cntb_btype_dropdown
          text      = ''
          quickinfo = 'Insert Line'.                            "#EC NOTEXT
    set event-handler for toolbar-control
      CREATE OBJECT toolbar_event_receiver.
      SET HANDLER toolbar_event_receiver->on_function_selected
                                                          FOR mr_toolbar.
      SET HANDLER toolbar_event_receiver->on_toolbar_dropdown
                                                          FOR mr_toolbar.
    ENDFORM.                               " change_toolbar
    *&      Form  init_tree
          text
    -->  p1        text
    <--  p2        text
    FORM init_tree.
    create fieldcatalog for structure sflight
      PERFORM build_fieldcatalog.
    create container for alv-tree
      DATA: l_tree_container_name(30) TYPE c,
            l_custom_container TYPE REF TO cl_gui_custom_container.
      l_tree_container_name = 'TREE1'.
      IF sy-batch IS INITIAL.
        CREATE OBJECT l_custom_container
          EXPORTING
                container_name = l_tree_container_name
          EXCEPTIONS
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc <> 0.
          MESSAGE x208(00) WITH 'ERROR'.                        "#EC NOTEXT
        ENDIF.
      ENDIF.
    create tree control
      CREATE OBJECT tree1
        EXPORTING
            parent              = l_custom_container
            node_selection_mode = cl_gui_column_tree=>node_sel_mode_multiple "node_sel_mode_single
            item_selection      = 'X'
            no_html_header      = ''
            no_toolbar          = ''
        EXCEPTIONS
            cntl_error                   = 1
            cntl_system_error            = 2
            create_error                 = 3
            lifetime_error               = 4
            illegal_node_selection_mode  = 5
            failed                       = 6
            illegal_column_name          = 7.
      IF sy-subrc <> 0.
        MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT
      ENDIF.
    create Hierarchy-header
      DATA l_hierarchy_header TYPE treev_hhdr.
      PERFORM build_hierarchy_header CHANGING l_hierarchy_header.
    create info-table for html-header
      DATA: lt_list_commentary TYPE slis_t_listheader,
            l_logo             TYPE sdydo_value.
      PERFORM build_comment USING
                     lt_list_commentary
                     l_logo.
    repid for saving variants
      DATA: ls_variant TYPE disvariant.
      ls_variant-report = sy-repid.
    create emty tree-control
      CALL METHOD tree1->set_table_for_first_display
        EXPORTING
          is_hierarchy_header = l_hierarchy_header
          it_list_commentary  = lt_list_commentary
          i_logo              = l_logo
          i_background_id     = 'ALV_BACKGROUND'
          i_save              = 'A'
          is_variant          = ls_variant
        CHANGING
          it_outtab           = gt_sflight "table must be emty !!
          it_fieldcatalog     = gt_fieldcatalog.
      CONSTANTS: c_s(1) TYPE c VALUE space.
    create hierarchy
      PERFORM create_hierarchy USING c_s.
    add own functioncodes to the toolbar
      PERFORM change_toolbar.
    register events
      PERFORM register_events.
    adjust column_width
    call method tree1->COLUMN_OPTIMIZE.
    ENDFORM.                    " init_tree
    Award points if found useful.
    Regards
    Indrajit

  • 2 container with 2 structures

    I have two containers with two different structures. but i have always the structure from the first container in the second container, how can this be solved that i have 2 different structures in two containers.
    container 1 :
      IF g_custom_container1 IS INITIAL.
        CREATE OBJECT g_custom_container1
        EXPORTING
                  container_name   = 'CCCONTAINER1'.
        CREATE OBJECT grid1
        EXPORTING
                  i_parent         = g_custom_container1.
      CALL METHOD grid1->set_table_for_first_display
      EXPORTING
                i_structure_name   = 'structure1'
                is_layout           = gs_layout
      CHANGING
                it_outtab          = lt_tab
                it_fieldcatalog    = lt_fct
      EXCEPTIONS
              invalid_parameter_combination = 1
              program_error                 = 2
              too_many_lines                = 3
              OTHERS                        = 4.
    endif.
    container 2:
      IF g_custom_container2 IS INITIAL.
        CREATE OBJECT g_custom_container2
        EXPORTING
                  container_name   = 'CCCONTAINER2'.
        CREATE OBJECT grid2
        EXPORTING
                  i_parent         = g_custom_container2.
      CALL METHOD grid2->set_table_for_first_display
      EXPORTING
                i_structure_name       = 'structure2'
                is_layout              =  gs_layout
                it_toolbar_excluding   =  pt_exclude
      CHANGING
                it_outtab              = lt_itab2
                it_fieldcatalog        = lt_fct
      EXCEPTIONS
              invalid_parameter_combination = 1
              program_error                 = 2
              too_many_lines                = 3
              OTHERS                        = 4.
    endif.

    see here..
    CALL METHOD grid1->set_table_for_first_display
    EXPORTING
    i_structure_name = 'structure1'  "use Caps should be STRUCTURE1
    is_layout = gs_layout
    CHANGING
    it_outtab = lt_tab
    it_fieldcatalog = lt_fct       "Both the places you are using same
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    CALL METHOD grid2->set_table_for_first_display
    EXPORTING
    i_structure_name = 'structure2'  "use CAPS
    is_layout = gs_layout
    it_toolbar_excluding = pt_exclude
    CHANGING
    it_outtab = lt_itab2
    it_fieldcatalog = lt_fct   "Same as above
    for that reason you are getting the same in the output.

  • [Function] Declare a internal table with structure name (entry parameter)

    Hi all,
    I'm explaining my problem :
    I want to create a function with two parameters in entry :
    (IMPORT)  - structure_name with type DD02L-TABNAME
    (TABLES) - t_outtab with empty type
    t_outtab will be in structure_name type.
    Now, in my source function, I want to retrieve all contain of t_outtab in another internal table or field-symbol. I don't know in advance the used structures in my function entries.
    I don't manage to get this contain, cause I can't do :
    DATA : internal_table TYPE structure_name*
    OR
    DATA : internal_table TYPE (structure_name)
    OR used field-symbol
    DATA : internal_table TYPE <fs>*  where <fs> had structure name value.
    To do more later :
    *DATA : line LIKE LINE OF internal_table. *
    *internal_table][ = t_outtab][. *
    And work with this table.
    _ I tried different solutions like : _
    Get the structure of the table.
      ref_table_des ?= cl_abap_typedescr=>describe_by_name( I_STRUCTURE_NAME ).
      idetails[] = ref_table_des->components[].
    Get the first structure table of result table
    LOOP AT idetails INTO xdetails.
        CLEAR: xfc.
        xfc-fieldname = xdetails-name .
        xfc-datatype = xdetails-type_kind.
        xfc-inttype = xdetails-type_kind.
        xfc-intlen = xdetails-length.
        xfc-decimals = xdetails-decimals.
        APPEND xfc TO ifc.
    ENDLOOP.
    Create dynamic internal table and assign to FS
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ifc
        IMPORTING
          ep_table        = dy_table.
      ASSIGN dy_table->* TO <dyn_table>.
    Create dynamic work area and assign to FS
      CREATE DATA dy_line LIKE LINE OF <dyn_table>.
      ASSIGN dy_line->* TO <dyn_wa>.
    and retrieve to <dyn_table>[] = t_outtab[].
    the but I don't try the solution. If someone have an idea.
    Thanks and regards.
    Romain
    Edited by: Romain L on May 14, 2009 11:35 AM

    Hi,
    We can acheive this using dynamic internal tables.
    Please find sample below.
    *Creating Dynamic internal table 
      PARAMETERS : p_table(10) TYPE C.
      DATA: w_tabname TYPE w_tabname,            
            w_dref TYPE REF TO data,             
            w_grid TYPE REF TO cl_gui_alv_grid. 
      FIELD-SYMBOLS: <t_itab> TYPE ANY TABLE. 
      w_tabname = p_table. 
      CREATE DATA w_dref TYPE TABLE OF (w_tabname).
      ASSIGN w_dref->* TO <t_itab>.
    * Populating Dynamic internal table 
      SELECT *
        FROM (w_tabname) UP TO 20 ROWS
        INTO TABLE <t_itab>.
    * Displaying dynamic internal table using Grid. 
      CREATE OBJECT w_grid
        EXPORTING i_parent = cl_gui_container=>screen0. 
      CALL METHOD w_grid->set_table_for_first_display
        EXPORTING
          i_structure_name = w_tabname
        CHANGING
          it_outtab        = <t_itab>. 
      CALL SCREEN 100.
    * Scenario 2: 
    *Create a dynamic internal table with the specified number of columns. 
    * Creating Dynamic internal table
    TYPE-POOLS: slis.
    FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,  u201C Dynamic internal table name
                   <fs_dyntable>,                     u201C Field symbol to create work area
                   <fs_fldval> type any.              u201C Field symbol to assign values 
    PARAMETERS: p_cols(5) TYPE c.                     u201C Input number of columns
    DATA:   t_newtable TYPE REF TO data,
            t_newline  TYPE REF TO data,
            t_fldcat   TYPE slis_t_fldcat_alv,
            t_fldcat   TYPE lvc_t_fcat,
            wa_it_fldcat TYPE lvc_s_fcat,
            wa_colno(2) TYPE n,
            wa_flname(5) TYPE c. 
    * Create fields .
      DO p_cols TIMES.
        CLEAR wa_it_fldcat.
        move sy-index to wa_colno.
        concatenate 'COL'
                    wa_colno
               into wa_flname.
        wa_it_fldcat-fieldname = wa_flname.
        wa_it_fldcat-datatype = 'CHAR'.
        wa_it_fldcat-intlen = 10.
        APPEND wa_it_fldcat TO t_fldcat.
      ENDDO. 
    * Create dynamic internal table and assign to FS
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = t_fldcat
        IMPORTING
          ep_table        = t_newtable. 
      ASSIGN t_newtable->* TO <t_dyntable>. 
    * Create dynamic work area and assign to FS
      CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
      ASSIGN t_newline->* TO <fs_dyntable>.
    *Populating Dynamic internal table 
      DATA: fieldname(20) TYPE c.
      DATA: fieldvalue(10) TYPE c.
      DATA: index(3) TYPE c. 
      DO p_cols TIMES. 
        index = sy-index.
        MOVE sy-index TO wa_colno.
        CONCATENATE 'COL'
                    wa_colno
               INTO wa_flname. 
    * Set up fieldvalue
        CONCATENATE 'VALUE' index INTO
                    fieldvalue.
        CONDENSE    fieldvalue NO-GAPS. 
        ASSIGN COMPONENT  wa_flname
            OF STRUCTURE <fs_dyntable> TO <fs_fldval>.
        <fs_fldval> =  fieldvalue. 
      ENDDO. 
    * Append to the dynamic internal table
      APPEND <fs_dyntable> TO <t_dyntable>.
    * Displaying dynamic internal table using Grid. 
    DATA: wa_cat LIKE LINE OF fs_fldcat. 
      DO p_cols TIMES.
        CLEAR wa_cat.
        MOVE sy-index TO wa_colno.
        CONCATENATE 'COL'
                    wa_colno
               INTO wa_flname. 
        wa_cat-fieldname = wa_flname.
        wa_cat-seltext_s = wa_flname.
        wa_cat-outputlen = '10'.
        APPEND wa_cat TO fs_fldcat.
      ENDDO. 
    * Call ABAP List Viewer (ALV)
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          it_fieldcat = fs_fldcat
        TABLES
          t_outtab    = <t_dyntable>.
    Thanks,
    Jyothi
    Edited by: Jyothi on May 14, 2009 11:42 AM
    Edited by: Jyothi on May 14, 2009 11:43 AM

  • ALV GRID - Use standard structure and modiy it - Is it possible ?

    Hello,
    I'm using:
          CREATE OBJECT r_container_mat
            EXPORTING
              container_name = 'CONTAINER_MAT'.
          CREATE OBJECT r_grid_mat
            EXPORTING
              i_parent = r_container_mat.
          CALL METHOD r_grid_mat->set_table_for_first_display
            EXPORTING
              i_structure_name = 'ZPPSTRA'
            CHANGING
              it_outtab        = it_table.
    All run ok and my question is:
    There's a filed on structure ZPPSTRA type char1 (is X or space) and I would show as a checkbox.
    Second: there's some field that I don't want show.
    How to do these modification ?
    thank you

    Hi Roberto,   
                      Use the below given code. Hope this will help in your requirement. And change the corresponding fields whatever you need according to your requirement. this is specifically for using the ALV reports.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'LIFNR' 'VENDOR CODE' '15'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'NAME1' 'VENDOR NAME' '20'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT '' 'VENDOR ACCOUNT GROUP' '25'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'ORT01' 'ADDRESS' '15'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'NAME4' 'LOCATION' '20'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'AS_ON_CREDIT' 'DEBIT' '16'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'AS_ON_DEBIT' 'CREDIT' '16'.
    PERFORM F_FILL_FIELDS TABLES T_FIELDCAT
    USING ITAB_OUTPUT 'BALENCE' 'BALANCES' '16'.
    * SUBTOUTINE FOR CALLING ALV
    PERFORM F_REPORTDISPLAY TABLES ITAB_OUTPUT
                                    T_FIELDCAT.
    * SUBROUTINE FOR FILLING FIELD CATALOG.
    FORM F_FILL_FIELDS TABLES P_T_FIELDCAT LIKE T_FIELDCAT
                                USING P_TABNAME
                                      P_FIELDNAME
                                      P_SELTEXT_L
                                      P_LENGTH.
      WA_FIELDCAT-TABNAME   = P_TABNAME .
      WA_FIELDCAT-FIELDNAME = P_FIELDNAME .
      WA_FIELDCAT-SELTEXT_L = P_SELTEXT_L .
      WA_FIELDCAT-OUTPUTLEN = P_LENGTH .
      APPEND WA_FIELDCAT TO P_T_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "F_FILL_FIELDS
    Regards,
    Amit
    Edited by: akg.amit on Nov 23, 2010 8:49 AM

Maybe you are looking for

  • 11g R2 RAC - Grid Infrastructure installation - "root.sh" fails on node#2

    Hi there, I am trying to create a two node 11g R2 RAC on OEL 5.5 (32-bit) using VMWare virtual machines. I have correctly configured both nodes. Cluster Verification utility returns on following error \[which I believe can be ignored]: Checking daemo

  • Premiere Elements 11 application fail

    Recently purchased Premiere Elements 11 as an upgrade to Elements 9 installed on my windows 7, core i5 PC. The application seemed to install OK but the desktop short cut failed as did trying to activate from c:/programs/adobe. I uninstalled and downl

  • Page cannot be displayed in portal

    Hi All, We have a SRM box to which the portal is connected.When we go to procurement - > Requistion - > Shopping cart status report in the portal we get a message saying that page cannot displayed which is sporadic.I tried troubleshooting by looking

  • How to popup a new forms window upon clicking Tools- Menu item

    Hi, I am new to forms. Can some one help me out with the following requirement? I need to provide a new 'Menu' item in the Tools menu of a seeded form and when the user clicks on the new menu option, he should get a new window wherein he can input so

  • [locked] Image Upload Problem

    Forum Admin: FYI when attempting to change my profile pic this morning; It either errors out with this "The uploaded file could not be read as an image." or, just times out. Happens in the profile area and when attempting to attach an image to a post