How 2 create dynamic internal table and can we pass it to gui_download FM

HI all,
     How can we create a dynamic internal table?
I have a requirement where  i have to create an internal table with the no. of fields depending on the selection screen values, i think tat can be possible though dynamic creation only.
         How to solve this issue..?Pointers will be very much useful..
Thanks
Sunny.

hi
Follow the code it will help you out....
REPORT  YUSMM_TEXT2                             .
*TABLES
TABLES: MARA,    " General Material Data
        MAKT,    " Material Descriptions
        T002.    " Language Keys
* GLOBAL TYPE-POOL
TYPE-POOLS : SLIS.
* GLOBAL TYPES
TYPES: BEGIN OF TP_LANG ,
         SPRAS LIKE T002-SPRAS,
         LAISO LIKE T002-LAISO,
         SRNO(3) TYPE N,
       END OF TP_LANG.
TYPES: BEGIN OF TP_MATNR,
         MATNR LIKE MARA-MATNR,
         BEGRU LIKE MARA-BEGRU,
       END OF TP_MATNR.
* DECLARATION FOR GLOBAL INTERNAL TABLES (WITH INCLUDE STRUCTURE)
DATA:GT_MAKT    TYPE STANDARD TABLE OF MAKT,  "Materialkurztexte,
     GT_THEAD   TYPE STANDARD TABLE OF THEAD, "SAPscript: Text-Header,
     GT_LINETAB TYPE STANDARD TABLE OF TLINE, "SAPscript: Text-Zeilen,
     GT_T002    TYPE STANDARD TABLE OF T002. "Language key
DATA: BEGIN OF GV_TEXT_OUTPUT_LINE,
            MATNR LIKE MARA-MATNR,
            BEGRU LIKE MARA-BEGRU,
            MAKTX LIKE MAKT-MAKTX,
            LTXT40(1250) TYPE C,
            SRNO(3) TYPE N,
            SPRAS LIKE T002-SPRAS,
         END OF GV_TEXT_OUTPUT_LINE.
DATA: GT_MATNR TYPE STANDARD TABLE OF TP_MATNR,
      WA_GT_MATNR TYPE TP_MATNR.
DATA: GT_LANG TYPE STANDARD TABLE OF TP_LANG,
      WA_GT_LANG TYPE TP_LANG.
DATA: GT_TEXT_OUTPUT_LINE LIKE STANDARD TABLE OF GV_TEXT_OUTPUT_LINE,
      GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
      GV_FIELDCAT         LIKE LINE OF GT_FIELDCAT,
      CT_GT_FIELDCAT_IN LIKE GV_FIELDCAT,
      GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
      GV_REPID            TYPE SY-REPID.
DATA: BEGIN OF GV,
        FORMER_ERROR       LIKE  SY-MARKY,     " Fehlermeldung bereits
        FILE_OPEN(1),                          " Flag open file
        REC_LENGTH         TYPE  I,            " record length
        MATNR              TYPE  MARA-MATNR,   " material
        REPID              TYPE  SYST-REPID,
        RETCO              TYPE  SY-SUBRC,
      END OF GV.
DATA: GV_MAKT             TYPE MAKT,
      GV_T002             TYPE T002,
      GV_LANGU            TYPE THEAD-TDSPRAS.
* DECLARATION FOR FIELD-SYMBOLS
FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,
               <FS_DATA1> TYPE REF TO DATA,
               <FS_2>    TYPE STANDARD TABLE,
               <FS_22>   TYPE STANDARD TABLE,
               <FS_1>,
               <FS_11>,
               <F>,
               <FA>,
               <LWA_LINE_WA>,
               <LWA_LINE_WA1>.
DATA: IT_FLDCAT TYPE LVC_T_FCAT.
DATA: T_FLDCAT1   TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_LT TYPE SLIS_LAYOUT_ALV.
DATA: WA_IT_FLDCAT TYPE LVC_S_FCAT.
DATA: WA_IT_FLDCAT1 TYPE SLIS_FIELDCAT_ALV.
DATA: GP_TABLE TYPE REF TO DATA.
DATA: WA_NEWLINE TYPE REF TO DATA.
*DECLARATION FOR CONSTANTS
CONSTANTS:
   BEGIN OF GC,
     TDID_GRUN     TYPE THEAD-TDID     VALUE 'GRUN',
     TDOBJECT_MAT  TYPE THEAD-TDOBJECT VALUE 'MATERIAL',
     ON(01)        TYPE C              VALUE 'X',
     YES(01)       TYPE C              VALUE 'X',
     TXT(25)       TYPE C              VALUE 'MATERIAL DETAILS',
     MAT(25)       TYPE C              VALUE 'MATERIAL NUMBER',
     AUT(25)       TYPE C              VALUE 'AUTHORIZATION GROUP',
     FOUND         TYPE SY-SUBRC       VALUE '00',  " Return-Code
     RC_OK         TYPE SY-SUBRC       VALUE '00',  " Return-Code
     OFF           TYPE SY-SUBRC       VALUE '00',  " return code
     FALSE         TYPE SY-SUBRC       VALUE '00',  " boolean
     TRUE          TYPE SY-SUBRC       VALUE '01',  " boolean
  END OF GC.
* DECLARATION FOR VARIABLES
DATA: V(3) TYPE N,
      STR TYPE STRING,
      STR1 TYPE STRING,
      V_VAR(3) TYPE N,
      V_VAR1(3) TYPE N,
      V_FIELDNAME(15) TYPE C,
      V_CHAR(15) TYPE C,
      V_LINES(3) TYPE N,
      MAKTEXT LIKE MAKT-MAKTX,
      LT_DATA        TYPE   REF TO DATA,
      LT_DATA1        TYPE   REF TO DATA,
      LWA_LINE       TYPE   REF TO  DATA,
      LWA_LINE1 TYPE REF TO DATA.
*SELECTION-SCREEN AND PARAMETERS
SELECTION-SCREEN: BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:
S_MATNR FOR MARA-MATNR,  "MATERIAL NUMBER
S_MTART FOR MARA-MTART,  "MATERIAL TEXT
S_LANG FOR MAKT-SPRAS.   "LANGUAGE
PARAMETER: GP_SIZE TYPE I DEFAULT 200. "DATA LENGTH
SELECTION-SCREEN: END OF BLOCK A1.
* AT SELECTION SCREEN
AT SELECTION-SCREEN.
  IF GP_SIZE < 0.
    MESSAGE E002(00).
  ENDIF.
  IF GP_SIZE > 50000.
    MESSAGE W130(26) WITH TEXT-004.
    SET CURSOR FIELD 'gp_size'.
  ENDIF.
* INITIALIZATION
INITIALIZATION.
  GV-REPID = SY-REPID.
*START-OF-SELECTION
START-OF-SELECTION.
  PERFORM GET_MARA_DATA
            TABLES
              GT_TEXT_OUTPUT_LINE
            USING
              S_MATNR[]
              S_MTART[]
              GP_SIZE
            CHANGING
              GV-RETCO
  PERFORM GET_MAT_TEXT
             TABLES
               GT_MAKT
               GT_TEXT_OUTPUT_LINE
               GT_THEAD
               GT_LINETAB
             USING
               GC
               GV-RETCO
             CHANGING
               GV_TEXT_OUTPUT_LINE
               GV_MAKT
  PERFORM GET_LANG.
  PERFORM DYNAMIC_TABLES.
  PERFORM POPULATE_FINAL_TABLE.
  PERFORM POPULATE_DYNAMIC_TABLE.
* END-OF-SELECTION
END-OF-SELECTION.
  PERFORM DATA_OUTPUT.
*&      Form  get_mara_data
*       Materialdaten lesen
*      <->ct_gt_text_output_line  Ausgabetabelle
*      -->it_s_matnr  Parameter Materialnummer
*      -->it_s_mtart  Parameter Materialart
*      -->if_gp_size  Parameter Anzahl Materialnummern
FORM GET_MARA_DATA  TABLES   CT_GT_TEXT_OUTPUT_LINE STRUCTURE
                                   GV_TEXT_OUTPUT_LINE
                    USING    IT_S_MATNR LIKE S_MATNR[]
                             IT_S_MTART LIKE S_MTART[]
                             IF_GP_SIZE
                    CHANGING IF_GV-RETCO.                   "#EC *
* MARA in die Übergabestruktur einlesen
  SELECT MATNR BEGRU
        FROM MARA UP TO IF_GP_SIZE ROWS
        APPENDING CORRESPONDING FIELDS OF TABLE GT_MATNR
                 WHERE MATNR IN IT_S_MATNR
                   AND MTART IN IT_S_MTART.
  IF_GV-RETCO = SY-SUBRC.
ENDFORM.                    " get_mara_data
*&      Form  get_mat_text
*       Kurz- und Langtexte zum Material lesen
*      <->ct_gt_makt              Materialkurztexte
*      <->ct_gt_text_output_line  Ausgabetabelle
*      <->ct_gt_thead             Kopftabelle für ALV
*      <->ct_gt_linetab           Zeilentabelle für ALV
*      -->if_gc                   Globale Konstanten
*      <--cf_gv_text_output_line  Struktur Ausgabetabelle
*      <--cf_gv_makt              Struktru Materialkurztexte
FORM GET_MAT_TEXT  TABLES   CT_GT_MAKT             STRUCTURE MAKT
                            CT_GT_TEXT_OUTPUT_LINE STRUCTURE
                                                GV_TEXT_OUTPUT_LINE
                            CT_GT_THEAD            STRUCTURE THEAD
                            CT_GT_LINETAB          STRUCTURE TLINE
                   USING
                            IF_GC                  LIKE GC
                            IF_GV-RETCO
                   CHANGING CF_GV_TEXT_OUTPUT_LINE LIKE
                                                   GV_TEXT_OUTPUT_LINE
                            CF_GV_MAKT             LIKE GV_MAKT
  DATA: STRG TYPE STRING,
        STRG1(1255) TYPE C.
  IF IF_GV-RETCO = IF_GC-FOUND.
* Materialkurztexte in alles Sprachen einlesen
    SELECT * FROM MAKT APPENDING TABLE CT_GT_MAKT
             FOR ALL ENTRIES IN GT_MATNR "ct_gt_text_output_line
             WHERE MATNR = GT_MATNR-MATNR " ct_gt_text_output_line-matnr
* Kurztexte in die sprachabhängigen Felder bringen
    LOOP AT GT_MATNR INTO WA_GT_MATNR.
      LOOP AT CT_GT_MAKT INTO CF_GV_MAKT
             WHERE MATNR = WA_GT_MATNR-MATNR.
        CF_GV_TEXT_OUTPUT_LINE-MATNR = WA_GT_MATNR-MATNR.
        CF_GV_TEXT_OUTPUT_LINE-BEGRU = WA_GT_MATNR-BEGRU.
        CF_GV_TEXT_OUTPUT_LINE-MAKTX = CF_GV_MAKT-MAKTX.
        CF_GV_TEXT_OUTPUT_LINE-SPRAS = CF_GV_MAKT-SPRAS.
* LANGTEXT
        CLEAR CT_GT_THEAD[].
        CT_GT_THEAD-TDOBJECT = IF_GC-TDOBJECT_MAT.
        CT_GT_THEAD-TDNAME   = WA_GT_MATNR-MATNR.
        CT_GT_THEAD-TDID     = IF_GC-TDID_GRUN.
        CT_GT_THEAD-TDSPRAS  = CF_GV_MAKT-SPRAS.
        CALL FUNCTION 'TEXT_READ'
          EXPORTING
            I_HEADER   = CT_GT_THEAD
            I_READONLY = IF_GC-ON
          IMPORTING
            E_HEADER   = CT_GT_THEAD
          TABLES
            T_LINES    = CT_GT_LINETAB[]
          EXCEPTIONS
            NOTFOUND   = 1.
        IF SY-SUBRC = IF_GC-FOUND.
          LOOP AT  CT_GT_LINETAB.
            STRG = CT_GT_LINETAB-TDLINE.
            IF STRG1 <> ' '.
              CONCATENATE STRG1 ';' STRG INTO STRG1.
            ELSE.
              STRG1 = STRG.
            ENDIF.
          ENDLOOP.
          CF_GV_TEXT_OUTPUT_LINE-LTXT40 = STRG1.
          APPEND CF_GV_TEXT_OUTPUT_LINE TO CT_GT_TEXT_OUTPUT_LINE.
          CLEAR CF_GV_TEXT_OUTPUT_LINE.
          STRG1 = ' '.
        ELSE.
          APPEND CF_GV_TEXT_OUTPUT_LINE TO CT_GT_TEXT_OUTPUT_LINE.
        ENDIF.
      ENDLOOP.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " get_mat_text
*&      Form  data_output
*       Daten mit ALV ausgeben
*      <->ct_GT_FIELDCAT          Feldkatalog für ALV
*      <->ct_gt_text_output_line  Ausgabetabelle
*      -->P_GS_LAYOUT             Layout für ALV
*      -->if_gc                   Globale Konstanten
*      <--cf_GV_REPID             Zur Zeit aufgerufener Reportname
*      <--cf_gv_fieldcat          Struktur Feldkatalog
*      <--cf_gv                   Globale Variablen
FORM DATA_OUTPUT.
  PERFORM FIELDCATBUILD.
  PERFORM LAYOUT.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = GV-REPID
      I_CALLBACK_PF_STATUS_SET = 'EVENT_SET_STATUS_01'
      I_CALLBACK_USER_COMMAND  = 'EVENT_USER_COMMAND'
      IS_LAYOUT                = L_LT
      IT_FIELDCAT              = T_FLDCAT1[]
    TABLES
      T_OUTTAB                 = <FS_2>
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
  IF SY-SUBRC <> GC-FOUND.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " data_output
*&      Form  fieldcatbuild
*       text
*  -->  p1        text
*  <--  p2        text
FORM FIELDCATBUILD. " TABLES   ct_gt_fieldcat_in STRUCTURE gv_fieldcat.
  LOOP AT IT_FLDCAT INTO WA_IT_FLDCAT.
    WA_IT_FLDCAT1-FIELDNAME = WA_IT_FLDCAT-FIELDNAME.
    WA_IT_FLDCAT1-TABNAME =  WA_IT_FLDCAT-TABNAME.
    WA_IT_FLDCAT1-SELTEXT_L = WA_IT_FLDCAT-FIELDNAME.
    APPEND WA_IT_FLDCAT1 TO T_FLDCAT1.
    CLEAR : WA_IT_FLDCAT,WA_IT_FLDCAT1.
  ENDLOOP.
ENDFORM.                    " fieldcatbuild
* Form event_set_status_01*
FORM EVENT_SET_STATUS_01 USING LT_EXCL TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ABCD' .
ENDFORM. "EVENT_SET_STATUS_01
*& Form Name: event_user_command *
*& Form Desc: For Handling USER_COMMAND *
FORM EVENT_USER_COMMAND USING
IF_UCOMM TYPE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
  CASE IF_UCOMM.
    WHEN 'DOWNLOAD'.
      PERFORM POPULATE_DOWNLOAD_TABLE.
      DATA: L_LENGHT TYPE I.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          FILENAME              = 'C:data.xls'
          FILETYPE              = 'ASC'
          WRITE_FIELD_SEPARATOR = 'X'
          TRUNC_TRAILING_BLANKS = 'X'
          DAT_MODE              = 'X'
        IMPORTING
          FILELENGTH            = L_LENGHT
        TABLES
          DATA_TAB              = <FS_22>.
      IF SY-SUBRC <> GC-FOUND.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF L_LENGHT NE GC-FOUND.
        MESSAGE S398(00) WITH 'DATA downloaded to c:data.xls'.
      ENDIF.
  ENDCASE.
ENDFORM.                    "event_user_command
*&      Form  get_lang
*       text
*  -->  p1        text
*  <--  p2        text
FORM GET_LANG.
  SELECT SPRAS
           LAISO FROM T002 INTO CORRESPONDING FIELDS OF TABLE GT_LANG
                  WHERE SPRAS IN S_LANG.
  DESCRIBE TABLE GT_LANG LINES V_LINES.
  LOOP AT GT_LANG INTO WA_GT_LANG.
    V = V + 1.
    WA_GT_LANG-SRNO = V.
    MODIFY GT_LANG FROM WA_GT_LANG TRANSPORTING SRNO.
  ENDLOOP.
  LOOP AT GT_LANG INTO WA_GT_LANG.
    CONCATENATE 'MATEDESC-' WA_GT_LANG-LAISO INTO V_FIELDNAME.
    CLEAR WA_IT_FLDCAT.
    WA_IT_FLDCAT-FIELDNAME = V_FIELDNAME.
    WA_IT_FLDCAT-SELTEXT = V_FIELDNAME.
    WA_IT_FLDCAT-DATATYPE = 'CHAR'.
    WA_IT_FLDCAT-INTLEN = 40.
    WA_IT_FLDCAT-TABNAME = '<FS_2>'.
    APPEND WA_IT_FLDCAT TO IT_FLDCAT .
    CLEAR WA_GT_LANG.
  ENDLOOP.
  LOOP AT GT_LANG INTO WA_GT_LANG.
    CONCATENATE 'BASDAT-' WA_GT_LANG-LAISO INTO V_FIELDNAME.
    CLEAR WA_IT_FLDCAT.
    WA_IT_FLDCAT-FIELDNAME = V_FIELDNAME.
    WA_IT_FLDCAT-DATATYPE = 'CHAR'.
    WA_IT_FLDCAT-INTLEN = 255.
    WA_IT_FLDCAT-SELTEXT = V_FIELDNAME.
    WA_IT_FLDCAT-TABNAME = '<FS_2>'.
    APPEND WA_IT_FLDCAT TO IT_FLDCAT .
    CLEAR WA_GT_LANG.
  ENDLOOP.
  V_FIELDNAME = 'MATNR'.
  CLEAR WA_IT_FLDCAT.
  WA_IT_FLDCAT-FIELDNAME = V_FIELDNAME.
  WA_IT_FLDCAT-DATATYPE = 'CHAR'.
  WA_IT_FLDCAT-SELTEXT =  'Matnr'.
  WA_IT_FLDCAT-INTLEN = 18.
  WA_IT_FLDCAT-TABNAME = '<FS_2>'.
  INSERT WA_IT_FLDCAT INTO IT_FLDCAT INDEX 1.
  V_FIELDNAME = 'BEGRU'.
  CLEAR WA_IT_FLDCAT.
  WA_IT_FLDCAT-FIELDNAME = V_FIELDNAME.
  WA_IT_FLDCAT-DATATYPE = 'CHAR'.
  WA_IT_FLDCAT-SELTEXT =  'BEGRU'.
  WA_IT_FLDCAT-INTLEN = 4.
  WA_IT_FLDCAT-TABNAME = '<FS_2>'.
  INSERT WA_IT_FLDCAT INTO IT_FLDCAT INDEX 2.
ENDFORM.                    " get_lang
*&      Form  dynamic_tables
*       text
*  -->  p1        text
*  <--  p2        text
FORM DYNAMIC_TABLES.
  ASSIGN LT_DATA TO <FS_DATA>.
* Creating the Dynamic Internal Table
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG           = IT_FLDCAT      " Fieldcatalogue
    IMPORTING
      EP_TABLE                  = <FS_DATA>     " Dynamic Internal Table
    EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL = 1
      OTHERS                    = 2.
* Assign Dyn Table To Field Sumbol
  ASSIGN <FS_DATA>->* TO <FS_1>.
* Assigning the Internal Table TYPE ANY to Standard internal Table
  ASSIGN <FS_1> TO <FS_2>.
* Creating a Workarea
  CREATE DATA LWA_LINE LIKE LINE OF <FS_2> .
* Assigning the Content to the workares as a Pointer
  ASSIGN LWA_LINE->* TO <LWA_LINE_WA>.
ENDFORM.                    " dynamic_tables
*&      Form  populate_final_table
*       text
*  -->  p1        text
*  <--  p2        text
FORM POPULATE_FINAL_TABLE.
  LOOP AT GT_TEXT_OUTPUT_LINE INTO GV_TEXT_OUTPUT_LINE.
    READ TABLE GT_LANG INTO WA_GT_LANG
              WITH KEY SPRAS = GV_TEXT_OUTPUT_LINE-SPRAS.
    IF SY-SUBRC EQ GC-FOUND.
      GV_TEXT_OUTPUT_LINE-SRNO = WA_GT_LANG-SRNO.
    ENDIF.
    MODIFY GT_TEXT_OUTPUT_LINE FROM GV_TEXT_OUTPUT_LINE.
  ENDLOOP.
ENDFORM.                    " populate_final_table
*&      Form  populate_dynamic_table
*       text
*  -->  p1        text
*  <--  p2        text
FORM POPULATE_DYNAMIC_TABLE.
  DATA: INDX TYPE SY-TABIX.
  LOOP AT GT_TEXT_OUTPUT_LINE INTO GV_TEXT_OUTPUT_LINE.
    AT NEW MATNR.
      INDX = SY-TABIX.
      ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA> TO <F>.
      <F> = GV_TEXT_OUTPUT_LINE-MATNR.
      ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA> TO <F>.
      <F> = GV_TEXT_OUTPUT_LINE-BEGRU.
    ENDAT.
    LOOP AT GT_LANG INTO WA_GT_LANG.
      IF GV_TEXT_OUTPUT_LINE-SRNO = WA_GT_LANG-SRNO.
        V_VAR = GV_TEXT_OUTPUT_LINE-SRNO + 2.
        ASSIGN COMPONENT V_VAR OF STRUCTURE <LWA_LINE_WA> TO <F>.
        <F> = GV_TEXT_OUTPUT_LINE-MAKTX.
        V_VAR = GV_TEXT_OUTPUT_LINE-SRNO + V_LINES + 2.
        ASSIGN COMPONENT V_VAR OF STRUCTURE <LWA_LINE_WA> TO <F>.
        <F> = GV_TEXT_OUTPUT_LINE-LTXT40.
      ENDIF.
    ENDLOOP.
    AT END OF MATNR.
      APPEND <LWA_LINE_WA> TO <FS_2>.
      CLEAR <LWA_LINE_WA>.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " populate_dynamic_table
*&      Form  LAYOUT
*       text
*  -->  p1        text
*  <--  p2        text
FORM LAYOUT.
  CLEAR L_LT.
  L_LT-ZEBRA = GC-YES.
  L_LT-COLWIDTH_OPTIMIZE = 'X'.
  L_LT-WINDOW_TITLEBAR = GC-TXT.
ENDFORM.                    " LAYOUT
*&      Form  populate_download_table
*       text
*  -->  p1        text
*  <--  p2        text
FORM POPULATE_DOWNLOAD_TABLE.
  ASSIGN LT_DATA1 TO <FS_DATA1>.
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG           = IT_FLDCAT         " Fieldcatalogue
    IMPORTING
      EP_TABLE                  = <FS_DATA1>  " Dynamic Internal table
    EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL = 1
      OTHERS                    = 2.
* Assign Dyn Table To Field Sumbol
  ASSIGN <FS_DATA1>->* TO <FS_11>.
* Assigning the Internal Table TYPE ANY to Standard internal Table
  ASSIGN <FS_11> TO <FS_22>.
* Creating a Workarea
  CREATE DATA LWA_LINE1 LIKE LINE OF <FS_22> .
* Assigning the Content to the workares as a Pointer
  ASSIGN LWA_LINE1->* TO <LWA_LINE_WA1>.
  DATA: STRN1 TYPE STRING,
        STRN2 TYPE STRING,
        INDX TYPE SY-TABIX.
  ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
  <FA> = GC-MAT.
  ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
  <FA> = GC-AUT.
  LOOP AT GT_LANG INTO WA_GT_LANG.
    V_VAR1 = WA_GT_LANG-SRNO + 2.
    CONCATENATE 'MATERIALDESCRIPTION-'  WA_GT_LANG-LAISO INTO STRN1.
    ASSIGN COMPONENT V_VAR1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
    <FA> = STRN1.
    V_VAR1 = WA_GT_LANG-SRNO + V_LINES + 2.
    CONCATENATE 'BASICDATA-' WA_GT_LANG-LAISO INTO STRN2.
    ASSIGN COMPONENT V_VAR1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
    <FA> = STRN2.
  ENDLOOP.
  APPEND <LWA_LINE_WA1> TO <FS_22>.
  CLEAR <LWA_LINE_WA1>.
  APPEND <LWA_LINE_WA1> TO <FS_22>.
  V_VAR1 = 0.
  LOOP AT GT_TEXT_OUTPUT_LINE INTO GV_TEXT_OUTPUT_LINE.
    AT NEW MATNR.
      INDX = SY-TABIX.
      ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
      <FA> = GV_TEXT_OUTPUT_LINE-MATNR.
      ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
      <FA> = GV_TEXT_OUTPUT_LINE-BEGRU.
    ENDAT.
    LOOP AT GT_LANG INTO WA_GT_LANG.
      IF GV_TEXT_OUTPUT_LINE-SRNO EQ WA_GT_LANG-SRNO.
        V_VAR1 = GV_TEXT_OUTPUT_LINE-SRNO + 2.
        ASSIGN COMPONENT V_VAR1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = GV_TEXT_OUTPUT_LINE-MAKTX.
        V_VAR1 = GV_TEXT_OUTPUT_LINE-SRNO + V_LINES + 2.
        ASSIGN COMPONENT V_VAR1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
*        STR = GV_TEXT_OUTPUT_LINE-LTXT40.
*        SEARCH STR FOR ';'.
*        DO.
*          IF SY-SUBRC = 0.
*            SPLIT STR AT ';' INTO STR1 STR.
*            <FA> = STR1.
*            APPEND <LWA_LINE_WA1> TO <FS_22>.
*            SEARCH STR FOR ';'.
*            CLEAR <LWA_LINE_WA1>.
*          ELSE.
*            EXIT.
*          ENDIF.
*        ENDDO.
*        <FA> = STR.
*        APPEND <LWA_LINE_WA1> TO <FS_22>.
        <FA> = GV_TEXT_OUTPUT_LINE-LTXT40.
      ENDIF.
    ENDLOOP.
    AT END OF MATNR.
      APPEND <LWA_LINE_WA1> TO <FS_22>.
      CLEAR <LWA_LINE_WA1>.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " populate_download_table
thanks
Nitya

Similar Messages

  • Error while creating dynamic internal table.

    Hello Expert,
    While creating a dynamic internal table, it throw an run time error as :
    " LOAD PROGRAM NOT FOUND
      CX_SY_PROGRAM_NOT_FOUND"
    i tried to debug the program, it found this error comes while calling
    CALL METHOD cl_alv_table_create=>create_dynamic_table
    please anyone help me out to resolve this problem.
    what could be the reason of error? and how to avoid it?
    <REMOVED BY MODERATOR>
    thanks in advance.
    ~ shweta.
    Edited by: Alvaro Tejada Galindo on Feb 28, 2008 2:41 PM

    Hi,
    Go through this program.
    Report z_dynamic.
    type-pools : abap.
    field-symbols: <dyn_table> type standard table,
    <dyn_wa>,
    <dyn_field>.
    data: dy_table type ref to data,
    dy_line type ref to data,
    xfc type lvc_s_fcat,
    ifc type lvc_t_fcat.
    selection-screen begin of block b1 with frame.
    parameters: p_table(30) type c default 'T001'.
    selection-screen end of block b1.
    start-of-selection.
    perform get_structure.
    perform create_dynamic_itab.
    perform get_data.
    perform write_out.
    form create_dynamic_itab.
    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>.
    endform.
    Regards,

  • Creating Dynamic internal table

    Hi,
    Can we create a dynamic internal table using data of an existing internal table.
    i.e. if itab1 is have data like :
    row                  col                     value
    1                      1                        ab
    1                      2                        cd
    1                      3                        ef
    2                      1                        gh
    2                      2                        ij
    2                      3                        kl
    and I want to create itab2 dynamically like this :
    row                  col1                     col2                    col3
    1                       ab                        cd                       ef
    2                       gh                          ij                        kl
    The issue lies only while creating internal table using non DDIC structure i.e. internal table of program.
    Thanks
    Vipin

    Hi,
    This is the sample report for DYNAMIC ALV report.
    REPORT  YMS_DYNAMICALV.
    TYPE-POOLS: SLIS.
    FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
                   <DYN_WA>.
    DATA: ALV_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
          IT_FLDCAT TYPE LVC_T_FCAT.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS: P_FLDS(5) TYPE C.
    SELECTION-SCREEN END OF BLOCK B1.
    START-OF-SELECTION.
    build the dynamic internal table
      PERFORM BUILD_DYN_ITAB.
    write 5 records to the alv grid
      DO 5 TIMES.
        PERFORM BUILD_REPORT.
      ENDDO.
    call the alv grid.
      PERFORM CALL_ALV.
    Build_dyn_itab
    FORM BUILD_DYN_ITAB.
      DATA: NEW_TABLE TYPE REF TO DATA,
            NEW_LINE  TYPE REF TO DATA,
            WA_IT_FLDCAT TYPE LVC_S_FCAT.
    Create fields .
      DO P_FLDS TIMES.
        CLEAR WA_IT_FLDCAT.
        WA_IT_FLDCAT-FIELDNAME = SY-INDEX.
        WA_IT_FLDCAT-DATATYPE = 'CHAR'.
        WA_IT_FLDCAT-INTLEN = 5.
        APPEND WA_IT_FLDCAT TO IT_FLDCAT .
      ENDDO.
    Create dynamic internal table and assign to FS
      CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
        EXPORTING
          IT_FIELDCATALOG = IT_FLDCAT
        IMPORTING
          EP_TABLE        = NEW_TABLE.
      ASSIGN NEW_TABLE->* TO <DYN_TABLE>.
    Create dynamic work area and assign to FS
      CREATE DATA NEW_LINE LIKE LINE OF <DYN_TABLE>.
      ASSIGN NEW_LINE->* TO <DYN_WA>.
    ENDFORM.                    "build_dyn_itab
         Form  build_report
    FORM BUILD_REPORT.
      DATA: FIELDNAME(20) TYPE C.
      DATA: FIELDVALUE(5) TYPE C.
      DATA: INDEX(3) TYPE C.
      FIELD-SYMBOLS: <FS1>.
      DO P_FLDS TIMES.
        INDEX = SY-INDEX.
    Set up fieldvalue
        CONCATENATE 'FLD' INDEX INTO
                 FIELDVALUE.
        CONDENSE   FIELDVALUE NO-GAPS.
      <b> assign component  index  of structure <dyn_wa> to <fs1>.
       <fs1> =  fieldvalue.</b>
      ENDDO.
    Append to the dynamic internal table
      APPEND <DYN_WA> TO <DYN_TABLE>.
    ENDFORM.                    "build_report
    CALL_ALV
    FORM CALL_ALV.
      DATA: WA_CAT LIKE LINE OF ALV_FLDCAT.
      DO P_FLDS TIMES.
        CLEAR WA_CAT.
        WA_CAT-FIELDNAME = SY-INDEX.
        WA_CAT-SELTEXT_S = SY-INDEX.
        WA_CAT-OUTPUTLEN = '5'.
        APPEND WA_CAT TO ALV_FLDCAT.
      ENDDO.
    Call ABAP List Viewer (ALV)
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          IT_FIELDCAT = ALV_FLDCAT
        TABLES
          T_OUTTAB    = <DYN_TABLE>.
    ENDFORM.                    "call_alv
    Thanks,
    Sankar M

  • Creating Dynamic Internal table with a dynamic name

    Hi,
    I want to create dynamic internal tables with dynamic names.
    For example:
    Suppose I have a table with three fields.
    1. Structure name
    2.Fields
    3.file
    And the structure of the internal table is as follows:
    TYPES:BEGIN OF table_type,
          struct                  TYPE char70,
          fields                   TYPE tt_type OCCURS 0,
          File                      TYPE ttab_type OCCURS 0,
          END OF table_type.
    Suppose I have one record inside my internal table with struct as "STRUCTURE", fields have an internal table content of set of fields and File has some set of records.
    Now I want to create dynamic internal table whose name will be "STRUCTURE" , the fields of the dynamic internal table structure[] will be as in fields, and the records will be as in File.
    Like this if i have 100 records in my internal table then I have to create 100 dynamic internal table dynamically.
    Can anyone suggest how to do this?
    Edited by: Jjammy on Jul 22, 2009 7:52 AM

    Hi,
    Check the sample program and develop your program accordingly.
    <font color=blue><pre>
    REPORT  ztest_notepad.
    *& Declarations
    *Type-pools
    TYPE-POOLS:
          slis.
    *Types
    TYPES:
          ty_fcat      TYPE lvc_s_fcat,
          ty_fcatalog  TYPE slis_fieldcat_alv.
    *Work areas
    DATA:
          wa_fcat      TYPE ty_fcat,
          wa_fcatalog  TYPE ty_fcatalog.
    *Internal tables
    DATA:
          it_fcat      TYPE STANDARD TABLE OF ty_fcat,
          it_fcatalog  TYPE STANDARD TABLE OF ty_fcatalog.
    *Type reference
    DATA:
          it_dyn_tab   TYPE REF TO data,
          wa_newline   TYPE REF TO data.
    *Filed symbols
    FIELD-SYMBOLS:
          <gt_table>   TYPE STANDARD TABLE,
          <fs_dyntable>,
          <fs_fldval>  TYPE ANY,
          <l_field>    TYPE ANY.
    *Variables
    DATA:
          l_fieldname  TYPE lvc_s_fcat-fieldname,
          l_tabname    TYPE lvc_s_fcat-tabname,
          l_fieldtext  TYPE lvc_s_fcat-seltext,
          l_index      TYPE char2.
    "Selection-screen
    PARAMETERS:
             p_colms   TYPE i.
    *& start-of-selection.
    START-OF-SELECTION.
      PERFORM build_fieldcat.
      PERFORM create_dynamic_table.
      DO 20 TIMES.
        DO p_colms TIMES.
          l_index = sy-index.
          CONCATENATE 'FIELD' l_index INTO l_fieldname.
          ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_dyntable> TO <l_field>.
          <l_field> = sy-index.
        ENDDO.
        INSERT <fs_dyntable> INTO TABLE <gt_table>.
      ENDDO.
      LOOP AT it_fcat INTO wa_fcat.
        PERFORM fieldcatalog1 USING: wa_fcat-fieldname
                                      wa_fcat-tabname
                                      wa_fcat-seltext.
      ENDLOOP.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program = 'ZTEST_NOTEPAD'
          it_fieldcat        = it_fcatalog
        TABLES
          t_outtab           = <gt_table>.
    *&      Form  BUILD_FIELDCAT
    FORM build_fieldcat .
      CLEAR: l_fieldname,
             l_tabname,
             l_fieldtext,
             l_index.
      DO  p_colms TIMES.
        CLEAR l_index.
        l_index = sy-index.
        CONCATENATE 'FIELD' l_index INTO l_fieldname.
        CONCATENATE 'Field' l_index INTO l_fieldtext.
        l_tabname = '<GT_TABLE>'.
        PERFORM fieldcatalog USING: l_fieldname
                                    l_tabname
                                    l_fieldtext.
      ENDDO.
    ENDFORM.                    " BUILD_FIELDCAT
    *&      Form  CREATE_DYNAMIC_TABLE
    FORM create_dynamic_table .
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = it_fcat
        IMPORTING
          ep_table        = it_dyn_tab.
      ASSIGN it_dyn_tab->* TO <gt_table>.
    Create dynamic work area and assign to FS
      CREATE DATA wa_newline LIKE LINE OF <gt_table>.
      ASSIGN wa_newline->* TO <fs_dyntable>.
    ENDFORM.                    " CREATE_DYNAMIC_TABLE
    *&      Form  FIELDCATALOG
    FORM fieldcatalog USING field table f_txt.
      wa_fcat-fieldname = field.
      wa_fcat-tabname   = table.
      wa_fcat-seltext = f_txt.
      APPEND wa_fcat TO it_fcat.
      CLEAR  wa_fcat.
    ENDFORM.                    " FIELDCATALOG
    *&      Form  FIELDCATALOG1
    FORM fieldcatalog1 USING field table f_txt.
      wa_fcatalog-fieldname = field.
      wa_fcatalog-tabname   = table.
      wa_fcatalog-seltext_m = f_txt.
      APPEND wa_fcatalog TO it_fcatalog.
      CLEAR  wa_fcatalog.
    ENDFORM.                    " FIELDCATALOG1 </pre>
    </font>
    Thanks
    Venkat.O

  • Populating two dynamic internal tables and displaying the O/p as ALV

    I want to develop a abap prototype program report for the SD document flow analysis...
    There is a Fm : RV_ORDER_FLOW_INFORMATION in which if we pass the Sales order number it returns the flows as VBFA_TAB.
    I need to populate two dynamic ITAB1 and ITAB2
    the structure of ITAB1 should be like ColNm1....ColNmn
    The values for ColNm1 will be Sales Order ColNm2 as Delivery or smthng else depending on  field vbtyp_n.
    ITAB 2 should have the corresponding values accly to ITAB1.
    Then we need to display in ALV o/p.
    The tables should be populated dynamically.
    Can anybody throw some light on it and plz do write back with sample code to do the logic of it.

    Search in SDN with Dynamic internal tables.
    you get lot of code samples and Discussions related to Dynamic internal tables.
    you can also check with this class CL_ALV_TABLE_CREATE

  • Creating dynamic internal table(Not field symbol table)

    Hi Experts,
    I am facing problem creating Intarnal table
    I have fieldcatalog, I want create dynamic internal table(Not field symbol table).
    I have written----
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
       i_style_table             =
         it_fieldcatalog           = it_fldcat
          it_fieldcatalog           = me->gt_fieldcat
       i_length_in_byte          =
        IMPORTING
          ep_table                  = lt_new_table
       e_style_fname             =
        EXCEPTIONS
         generate_subpool_dir_full = 1
         OTHERS                    = 2.
        ASSIGN lt_new_table->* TO <gt_dyn_repdata>.
        CREATE DATA ls_new_line LIKE LINE OF <gt_dyn_repdata>.
        ASSIGN ls_new_line->* TO <gs_dyn_repdata>.
    above logic creating dynamic field symbol table.... But I want create normal internal table.
    Thanks,
    Rajasekhar

    Hi
    What do you mean?
    It needs to use the field-symbol, this is the price to pay if it wants a dynamic object
    Max

  • How to create Dynamic Internal table in ALV?

    Hi all,
    I have to create a ALV report based on dynamic internal table. The requirement is that when I enter the months in my selection screen I should get the data relevant to those many months only. For eg if in selection I have given January to March, I should get an ALV output with columns from January to March only.
    Please help me with the coding part as I find it a bit confusing.
    Please reply immediately.
    Regards,
    Bhavani.

    Hi BHAVANI,
    first you have to prapare a field catalog [(see this)|http://help.sap.com/saphelp_470/helpdata/en/52/5f060de02d11d2b47d006094192fe3/frameset.htm]
    and than you can use a Method cl_alv_table_create=>create_dynamic_table
    I hope that help a little.
    Regards Bogdan

  • How to create Dynamic internal table with columns also created dynamically.

    Hi All,
    Any info on how to create a dynamic internal table along with columns(fields) also to be created dynamically.
    My requirement is ..On the selection screen I enter the number of fields to be in the internal table which gets created dynamically.
    I had gone thru some posts on dynamic table creation,but could'nt find any on the dynamic field creation.
    Any suggestions pls?
    Thanks
    Nara

    I don't understand ...
    something like that ?
    *   Form P_MODIFY_HEADER.                                              *
    form p_modify_header.
      data : is_fieldcatalog type lvc_s_fcat ,
             v_count(2)      type n ,
             v_date          type d ,
             v_buff(30).
    * Update the fieldcatalog.
      loop at it_fieldcatalog into is_fieldcatalog.
        check is_fieldcatalog-fieldname+0(3) eq 'ABS' or
              is_fieldcatalog-fieldname+0(3) eq 'VAL' .
        move : is_fieldcatalog-fieldname+3(2) to v_count ,
               p_perb2+5(2)                   to v_date+4(2) ,
               p_perb2+0(4)                   to v_date+0(4) ,
               '01'                           to v_date+6(2) .
        v_count = v_count - 1.
        call function 'RE_ADD_MONTH_TO_DATE'
            exporting
              months        = v_count
              olddate       = v_date
            importing
              newdate       = v_date.
        if is_fieldcatalog-fieldname+0(3) eq 'ABS'.
          concatenate 'Quantité 0'
                      v_date+4(2)
                      v_date+0(4)
                      into v_buff.
        else.
          concatenate 'Montant 0'
                      v_date+4(2)
                      v_date+0(4)
                      into v_buff.
        endif.
        move : v_buff to is_fieldcatalog-scrtext_s ,
               v_buff to is_fieldcatalog-scrtext_m ,
               v_buff to is_fieldcatalog-scrtext_l ,
               v_buff to is_fieldcatalog-reptext .
        modify it_fieldcatalog from is_fieldcatalog.
      endloop.
    * Modify the fieldcatalog.
      call method obj_grid->set_frontend_fieldcatalog
           exporting it_fieldcatalog = it_fieldcatalog.
    * Refresh the display of the grid.
      call method obj_grid->refresh_table_display.
    endform.                     " P_MODIFY_HEADER

  • Create dynamic internal table with dynamic structure

    I have an internal table itab1 that have 12 amount fields from period1 thru period12.  I need to create a dynamic table with dynamic structure for the  period column if the total amount of each column  is > 0.  Any idea on how to do that? 
    For example if my itab1 has 20 rows and the sum of period1 = 35, sum of period2 = 0, sum of period3 = 5, sum of period4 =0, sum of period5 = 2 then I need to create a dynamic structure for the field column that have the total > 0, i.e  structure struct1 have field period1, period3 and period5 only.  Then I will need to load the data to itab2 from itab1.  Can someone help.
    Thanks.  I am on 4.7 and will upgrade to ERP 6.0 soon.

    go throgh this....
    REPORT  yusmm_text1  NO STANDARD PAGE HEADING
                         LINE-SIZE 199.
    T A B L E S
    TABLES: MARA,
            MAKT,
            THEAD.
    GLOBAL TYPE-POOLS
    TYPE-POOLS : SLIS.
       GLOBAL TYPES
    TYPES : BEGIN OF TP_FINAL,
           MATNR TYPE MARA-MATNR,
           BEGRU TYPE MARA-BEGRU,
           MTART TYPE MARA-MTART,
           MAKTX TYPE MAKT-MAKTX,
           SPRAS TYPE MAKT-SPRAS,
           LTXT(2000)  TYPE C ,
           SRNO TYPE N ,
          END OF TP_FINAL.
    TYPES : BEGIN OF TP_T002,
            SPRAS TYPE T002-SPRAS,
            LAISO TYPE T002-LAISO,
            SRNO TYPE N ,
            END OF TP_T002.
    TYPES : BEGIN OF TP_MARA_MAKT,
            MATNR TYPE MARA-MATNR,
            BEGRU TYPE MARA-BEGRU,
            MTART TYPE MARA-MTART,
            SPRAS TYPE MAKT-SPRAS,
            MAKTX TYPE MAKT-MAKTX,
           END OF TP_MARA_MAKT.
    Types: BEGIN OF tp_matnr,
           matnr TYPE mara-matnr,
           END OF tp_matnr.
       GLOBAL ELEMENTARY VARIABLES
    DATA : gv_date TYPE sy-datum.
    DATA : gv_repid TYPE sy-repid.
    DATA : g_var1(10) TYPE C.
    DATA : gv_index TYPE sy-tabix.
    DATA: gv_strg TYPE string,
          gv_strg1(2000) TYPE C.
    DATA : gv_lang TYPE sy-langu.
    DATA : g_v(3) TYPE N .
    DATA : gv_lines(3) TYPE N .
    DATA : gv_var(3) TYPE N .
    DATA : gv_var1(3) TYPE N.
    DATA: gv_str TYPE STRING.
    DATA: gv_str1 TYPE STRING.
    DATA : gv_li TYPE I,
           gv_lit TYPE I,
           gv_lin TYPE I.
    DATA: g_var11(3) TYPE N,
          gv_li1(3) TYPE N,
          g_var2(3) TYPE N.
    DATA : gv_i1 TYPE I.
    DATA : gv_i TYPE I.
    DATA: gl_lenght TYPE I.
       GLOBAL STRUCTURES
    DATA:   T_NEWTABLE TYPE REF TO DATA,
            T_NEWLINE  TYPE REF TO DATA,
            T_FLDCAT1   TYPE SLIS_T_FIELDCAT_ALV,
            T_FLDCAT   TYPE LVC_T_FCAT,
            WA_IT_FLDCAT TYPE LVC_S_FCAT,
            WA_IT_FLDCAT1 TYPE SLIS_FIELDCAT_ALV,
            WA_COLNO(2) TYPE N,
            WA_FLNAME(5) TYPE C,
            L_LT TYPE SLIS_LAYOUT_ALV.
       GLOBAL INTERNAL TABLES (WITH INCLUDE STRUCTURE)
    DATA : IG_MARA_MAKT TYPE STANDARD TABLE OF TP_MARA_MAKT,
           WG_MARA_MAKT TYPE TP_MARA_MAKT.
    DATA : IG_T002 TYPE STANDARD TABLE OF TP_T002,
           WG_T002 TYPE TP_T002.
    DATA : IG_FINAL TYPE STANDARD TABLE OF TP_FINAL,
           WG_FINAL TYPE TP_FINAL.
    data : IG_MATNR TYPE STANDARD TABLE OF TP_MATNR WITH HEADER  LINE,
           WG_MATNR TYPE TP_MATNR.
    DATA:BEGIN OF IG_THEAD OCCURS 0.
            INCLUDE STRUCTURE THEAD .
    DATA: END OF IG_THEAD.
    DATA:BEGIN OF IG_TLINE OCCURS 0.
            INCLUDE STRUCTURE TLINE  .
    DATA:END OF IG_TLINE.
    FIELD-SYMBOLS
    FIELD-SYMBOLS: <T_DYNTABLE> TYPE STANDARD TABLE,"Dynamic internal
                                                            "tablename
                   <FS_DYNTABLE>,  "Field symbol to create work area
                  <FS_FLDVAL> TYPE ANY.   " Field symbol to assign values
    COMPULSORY
    FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,
                   <FS_DATA1> TYPE REF TO DATA,
                   <FS_2>    TYPE STANDARD TABLE,
                   <FS_22>   TYPE STANDARD TABLE,
                   <FS_1>,
                   <FS_11>,
                   <F>,
                   <FA>,
                   <LWA_LINE_WA>,
                   <LWA_LINE_WA1>.
    ------- Create Dyn Table From FC
    DATA: LT_DATA        TYPE   REF TO DATA,
          LT_DATA1        TYPE   REF TO DATA,
          LWA_LINE       TYPE   REF TO  DATA,
          LWA_LINE1       TYPE   REF TO  DATA,
          LI_FIELD_CAT   TYPE   LVC_T_FCAT,
          LWA_FIELD_CAT  TYPE   LVC_S_FCAT.
       PARAMETERS & SELECT-OPTIONS
    SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS : S_SPRAS FOR MAKT-SPRAS NO INTERVALS  DEFAULT 'EN'
                                                            OBLIGATORY ,
                     S_MATNR FOR MARA-MATNR,
                     S_MTART FOR MARA-MTART.
    PARAMETERS: GP_SIZE TYPE I DEFAULT '200'.
    SELECTION-SCREEN : END OF BLOCK B1.
       INITIALIZATION
    INITIALIZATION.
      gv_repid = sy-repid.
      gv_date = sy-datum.
    AT SELECTION-SCREEN
    AT SELECTION-SCREEN.
      IF GP_SIZE < 0.
       MESSAGE E002(00).
      ENDIF.
      IF GP_SIZE > 50000.
       MESSAGE W130(26) WITH TEXT-004.
        SET CURSOR FIELD 'gp_size'.
      ENDIF.
    START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM DATA_FETCH.
      PERFORM READ_DATA_TO_FINAL.
      SORT ig_final BY matnr spras.
      gv_lin = gv_li.
      gv_li = gv_li - 2.
      LOOP AT ig_final INTO wg_final.
        ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = 'Material Number'.
        ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = 'Authorization Group'.
        g_VAR11 = wg_final-srno + 2.
        gv_li1 = gv_li1 + 2.
        MOVE : g_var11 TO gv_i1.
        ASSIGN COMPONENT g_var11 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = 'MatDesc'.
        g_var2 = g_var11 + gv_lines.
        ASSIGN COMPONENT g_var2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = 'BasicData'.
        APPEND <LWA_LINE_WA1> TO <FS_22>.
        EXIT.
       ENDLOOP.
      LOOP AT ig_final INTO wg_final.
        AT NEW matnr.
          gv_index = sy-tabix.
          ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA> TO <F>.
          <F> = wg_final-matnr.
          ENDAT.
        AT NEW MATNR.
        GV_INDEX = SY-TABIX.
        ASSIGN COMPONENT 1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = wg_final-matnr.
         ENDAT.
        ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA> TO <F>.
        <F> = wg_final-begru.
        ASSIGN COMPONENT 2 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = wg_final-begru.
        gv_var = wg_final-srno + 2.
        gv_li = gv_li + 2.
        MOVE : gv_var TO gv_i.
        ASSIGN COMPONENT gv_var OF STRUCTURE <LWA_LINE_WA> TO <F>.
        <F> = wg_final-maktx.
        ASSIGN COMPONENT gv_var OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = wg_final-maktx.
        gv_var1 = gv_var + gv_lines  .
        ASSIGN COMPONENT gv_var1 OF STRUCTURE <LWA_LINE_WA> TO <F>.
       <F> = wg_final-ltxt.
        ASSIGN COMPONENT gv_var1 OF STRUCTURE <LWA_LINE_WA1> TO <FA>.
        <FA> = wg_final-ltxt.
        AT END OF matnr.
          APPEND <LWA_LINE_WA> TO <FS_2>.
          CLEAR <LWA_LINE_WA>.
        ENDAT.
        AT END OF matnr.
         APPEND <LWA_LINE_WA1> TO <FS_22>.
         CLEAR <LWA_LINE_WA1>.
        ENDAT.
      ENDLOOP.
      PERFORM display..
    *&      Form  data_fetch
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_FETCH .
      SELECT matnr
              from mara up to gp_size rows
             appending corresponding fields of table ig_matnr
             where matnr in s_matnr
             and mtart in s_mtart.
    loop at ig_matnr.
      SELECT  MARA~MATNR
              MARA~BEGRU
              MARA~MTART
              MAKT~SPRAS
              MAKT~MAKTX FROM MARA INNER JOIN MAKT
        ON MARAMATNR = MAKTMATNR
       appending corresponding fields of TABLE ig_mara_makt  UP TO GP_SIZE
    ROWS
        WHERE makt~spras IN s_spras
        AND   mara~matnr IN s_matnr
        AND   mara~mtart IN s_mtart
        AND   mara~matnr EQ ig_matnr-matnr.
        endloop.
      IF sy-subrc = 0.
        SORT ig_mara_makt.
      ENDIF.
    ENDFORM.                    " data_fetch
    *&      Form  read_data_to_final
          text
    -->  p1        text
    <--  p2        text
    FORM READ_DATA_TO_FINAL .
      LOOP AT ig_mara_makt INTO wg_mara_makt .
        wg_final-MATNR = wg_mara_makt-MATNR.
        wg_final-BEGRU = wg_mara_makt-BEGRU.
        wg_final-MTART = wg_mara_makt-MTART.
        wg_final-SPRAS = wg_mara_makt-SPRAS.
        wg_final-MAKTX = wg_mara_makt-MAKTX.
        READ TABLE ig_t002 INTO wg_t002 WITH KEY spras = wg_final-spras.
        IF sy-subrc = 0.
          wg_final-srno = wg_t002-srno.
        ENDIF.
        CLEAR ig_thead[].
        ig_thead-TDOBJECT = 'MATERIAL'.
        ig_thead-TDNAME   = wg_final-matnr.
        ig_thead-TDID     = 'GRUN'.
        ig_thead-TDSPRAS  = wg_final-spras.
        CALL FUNCTION 'TEXT_READ'
          EXPORTING
            I_HEADER   = IG_THEAD
            I_READONLY = 'X'
          IMPORTING
            E_HEADER   = IG_THEAD
          TABLES
            T_LINES    = IG_TLINE[]
          EXCEPTIONS
            NOTFOUND   = 1.
        IF sy-subrc  EQ 0.
          LOOP AT  ig_tline.
            gv_strg = ig_tline-tdline.
            IF gv_strg1 <> ' '.
              CONCATENATE gv_strg1 ';' gv_strg INTO gv_strg1.
            ELSE.
              gv_strg1 = gv_strg.
            ENDIF.
          ENDLOOP.
          wg_final-ltxt = gv_strg1.
          APPEND wg_final TO ig_final.
          CLEAR wg_final.
          gv_strg1 = ' '.
        ELSE.
          APPEND wg_final TO  ig_final.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " read_data_to_final
    " read_data_to_final
    *&      Form  layout
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      CLEAR L_LT.
      L_LT-ZEBRA = 'X'.
      L_LT-COLWIDTH_OPTIMIZE = 'X'.
      L_LT-WINDOW_TITLEBAR = 'MATERIAL DETAILS'.
    ENDFORM.                    " layout
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      SELECT SPRAS
               LAISO FROM t002 INTO  CORRESPONDING FIELDS OF TABLE ig_t002
          WHERE spras IN s_spras.
      DESCRIBE TABLE ig_t002 LINES gv_lines.
      LOOP AT ig_t002 INTO wg_t002.
        g_v = g_v + 1.
        Wg_t002-srno = g_v.
        MODIFY ig_t002 FROM wg_t002 TRANSPORTING SRNO.
      ENDLOOP.
      LOOP AT ig_t002 INTO wg_t002.
        CLEAR WA_IT_FLDCAT.
        MOVE SY-INDEX TO WA_COLNO.
        CONCATENATE 'MD-' wg_t002-LAISO
                          WA_COLNO
                         INTO WA_FLNAME.
        WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
        WA_IT_FLDCAT-DATATYPE = 'CHAR'.
        WA_IT_FLDCAT-SELTEXT = WA_FLNAME.
        WA_IT_FLDCAT-INTLEN = 250.
        WA_IT_FLDCAT-TABNAME = '<FS_2>'.
        APPEND WA_IT_FLDCAT TO T_FLDCAT.
        CLEAR wg_t002.
        ENDLOOP.
      LOOP AT ig_t002 INTO wg_t002.
        CLEAR WA_IT_FLDCAT.
        MOVE SY-INDEX TO WA_COLNO.
        CONCATENATE 'BD-' wg_t002-LAISO
                           WA_COLNO
                        INTO WA_FLNAME.
        WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
        WA_IT_FLDCAT-DATATYPE = 'CHAR'.
        WA_IT_FLDCAT-SELTEXT = WA_FLNAME.
        WA_IT_FLDCAT-INTLEN = 250.
        WA_IT_FLDCAT-TABNAME = '<FS_2>'.
        APPEND WA_IT_FLDCAT TO T_FLDCAT.
        CLEAR wg_t002.
        ENDLOOP.
      MOVE 'MATNR' TO WA_FLNAME.
      WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
      WA_IT_FLDCAT-DATATYPE = 'CHAR'.
      WA_IT_FLDCAT-SELTEXT = 'Material No'.
      WA_IT_FLDCAT-INTLEN = 18.
      WA_IT_FLDCAT-TABNAME = '<FS_2>'.
      INSERT WA_IT_FLDCAT INTO T_FLDCAT INDEX 1.
      MOVE 'BEGRU' TO WA_FLNAME.
      WA_IT_FLDCAT-FIELDNAME = WA_FLNAME.
      WA_IT_FLDCAT-DATATYPE = 'CHAR'.
      WA_IT_FLDCAT-SELTEXT = 'Authorization Group'.
      WA_IT_FLDCAT-INTLEN = 4.
      WA_IT_FLDCAT-TABNAME = '<FS_2>'.
      INSERT WA_IT_FLDCAT INTO T_FLDCAT INDEX 2.
      DESCRIBE TABLE T_FLDCAT LINES gv_li.
      ASSIGN LT_DATA TO <FS_DATA>.
    Creating the Dynamic Internal Table
      CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
        EXPORTING
          IT_FIELDCATALOG           = T_FLDCAT         " Fieldcatalogue
        IMPORTING
          EP_TABLE                  = <FS_DATA>   " Dynamic Internal Table
        EXCEPTIONS
          GENERATE_SUBPOOL_DIR_FULL = 1
          OTHERS                    = 2.
    Assign Dyn Table To Field Sumbol
      ASSIGN <FS_DATA>->* TO <FS_1>.
    Assigning the Internal Table TYPE ANY to Standard internal Table
      ASSIGN <FS_1> TO <FS_2>.
    Creating a Workarea
      CREATE DATA LWA_LINE LIKE LINE OF <FS_2> .
    Assigning the Content to the workares as a Pointer
      ASSIGN LWA_LINE->* TO <LWA_LINE_WA>.
      LOOP AT T_FLDCAT INTO WA_IT_FLDCAT.
        WA_IT_FLDCAT1-FIELDNAME = WA_IT_FLDCAT-FIELDNAME.
        WA_IT_FLDCAT1-TABNAME =  WA_IT_FLDCAT-TABNAME.
        WA_IT_FLDCAT1-SELTEXT_L = WA_IT_FLDCAT-SELTEXT.
       WA_IT_FLDCAT1-REF_TABNAME = 'MARC'.
        APPEND WA_IT_FLDCAT1 TO T_FLDCAT1.
        CLEAR : WA_IT_FLDCAT,WA_IT_FLDCAT1.
      ENDLOOP.
      ASSIGN LT_DATA1 TO <FS_DATA1>.
      CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
        EXPORTING
          IT_FIELDCATALOG           = T_FLDCAT         " Fieldcatalogue
        IMPORTING
          EP_TABLE                  = <FS_DATA1>  " Dynamic Internal table
        EXCEPTIONS
          GENERATE_SUBPOOL_DIR_FULL = 1
          OTHERS                    = 2.
    Assign Dyn Table To Field Sumbol
      ASSIGN <FS_DATA1>->* TO <FS_11>.
    Assigning the Internal Table TYPE ANY to Standard internal Table
      ASSIGN <FS_11> TO <FS_22>.
    Creating a Workarea
      CREATE DATA LWA_LINE1 LIKE LINE OF <FS_22> .
    Assigning the Content to the workares as a Pointer
      ASSIGN LWA_LINE1->* TO <LWA_LINE_WA1>.
    ENDFORM.                    " fieldcat
    *&      Form  show
          text
    -->  p1        text
    <--  p2        text
    FORM Display .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
       I_INTERFACE_CHECK                 = ' '
       I_BYPASSING_BUFFER                = ' '
       I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = GV_REPID
        I_CALLBACK_PF_STATUS_SET          = 'PF_STATUS_SET'
        I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = ' '
       I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
       I_CALLBACK_HTML_END_OF_LIST       = ' '
       I_STRUCTURE_NAME                  =
       I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      =
       I_GRID_SETTINGS                   =
        IS_LAYOUT                         = L_LT
         IT_FIELDCAT                       = T_FLDCAT1[]
       IT_EXCLUDING                      =
       IT_SPECIAL_GROUPS                 =
       IT_SORT                           =
       IT_FILTER                         =
       IS_SEL_HIDE                       =
       I_DEFAULT                         = 'X'
       I_SAVE                            = ' '
       IS_VARIANT                        =
       IT_EVENTS                         =
       IT_EVENT_EXIT                     =
       IS_PRINT                          =
       IS_REPREP_ID                      =
       I_SCREEN_START_COLUMN             = 0
       I_SCREEN_START_LINE               = 0
       I_SCREEN_END_COLUMN               = 0
       I_SCREEN_END_LINE                 = 0
       I_HTML_HEIGHT_TOP                 = 0
       I_HTML_HEIGHT_END                 = 0
       IT_ALV_GRAPHICS                   =
       IT_HYPERLINK                      =
       IT_ADD_FIELDCAT                   =
       IT_EXCEPT_QINFO                   =
       IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
       E_EXIT_CAUSED_BY_CALLER           =
       ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = <FS_2>
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " display
    FORM PF_STATUS_SET USING RS_EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'DISPLAY' .
    ENDFORM. "PF_STATUS_SET
    *& Form Name: user_command *
    *& Form Desc: For Handling USER_COMMAND *
    FORM USER_COMMAND USING IF_UCOMM TYPE SY-UCOMM
                         IS_SELFIELD TYPE SLIS_SELFIELD.
      CASE IF_UCOMM.
        WHEN 'DOWNLOAD'.
          CALL FUNCTION 'POPUP_TO_CONFIRM'
            EXPORTING
      TITLEBAR                    = ' '
      DIAGNOSE_OBJECT             = ' '
              TEXT_QUESTION               = 'Data download to excel'
      TEXT_BUTTON_1               = 'Ja'(001)
      ICON_BUTTON_1               = ' '
      TEXT_BUTTON_2               = 'Nein'(002)
      ICON_BUTTON_2               = ' '
      DEFAULT_BUTTON              = '1'
      DISPLAY_CANCEL_BUTTON       = 'X'
      USERDEFINED_F1_HELP         = ' '
      START_COLUMN                = 25
      START_ROW                   = 6
      POPUP_TYPE                  =
    IMPORTING
      ANSWER                      =
    TABLES
      PARAMETER                   =
    EXCEPTIONS
      TEXT_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 FUNCTION 'GUI_DOWNLOAD'
            EXPORTING
        BIN_FILESIZE                  =
              FILENAME                     = 'C:\Material-Text.xls'
             FILETYPE                      = 'ASC'
        APPEND                        = ' '
         WRITE_FIELD_SEPARATOR         = 'X'
        HEADER                        = '00'
         TRUNC_TRAILING_BLANKS         = 'X'
        WRITE_LF                      = 'X'
        COL_SELECT                    = ' '
        COL_SELECT_MASK               = ' '
         DAT_MODE                      = 'X'
       IMPORTING
         FILELENGTH                    = GL_LENGHT
            TABLES
              DATA_TAB                      = <FS_22>
      EXCEPTIONS
        FILE_WRITE_ERROR              = 1
        NO_BATCH                      = 2
        GUI_REFUSE_FILETRANSFER       = 3
        INVALID_TYPE                  = 4
        NO_AUTHORITY                  = 5
        UNKNOWN_ERROR                 = 6
        HEADER_NOT_ALLOWED            = 7
        SEPARATOR_NOT_ALLOWED         = 8
        FILESIZE_NOT_ALLOWED          = 9
        HEADER_TOO_LONG               = 10
        DP_ERROR_CREATE               = 11
        DP_ERROR_SEND                 = 12
        DP_ERROR_WRITE                = 13
        UNKNOWN_DP_ERROR              = 14
        ACCESS_DENIED                 = 15
        DP_OUT_OF_MEMORY              = 16
        DISK_FULL                     = 17
        DP_TIMEOUT                    = 18
        FILE_NOT_FOUND                = 19
        DATAPROVIDER_EXCEPTION        = 20
        CONTROL_FLUSH_ERROR           = 21
        OTHERS                        = 22
          IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
          IF GL_LENGHT NE 0.
            MESSAGE S398(00) WITH 'DATA downloaded to EXCEL'.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    Thanks

  • Dynamic internal table and dynamic field catalog

    hi
    i need to decide the number of fields of the internal table at runtime
    and then need to pass value to this internal table.
    then i need to create the field catalog for this internal table (so here
    field catalog is also dynamic) to display in alv.
    how to achieve this dynamic internal table creation and dyanmic field catalog generation

    Hi Ajay,
      U can use the below code to create a dynamic internal table.
    *adding the field names only once for the dynamic table     .
          MOVE 'PRCTR' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
          MOVE 'RCNTR' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
          MOVE 'RACCT' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
          MOVE 'RYEAR' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
          MOVE 'YTDBAL' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
          MOVE 'OBAL' TO gw_component-name.
          gw_component-type ?= cl_abap_elemdescr=>get_string( ).
          INSERT gw_component INTO TABLE gt_components.
    *get structure descriptor -> GR_STRUCTDESCR
              gr_structdescr ?= cl_abap_structdescr=>create( gt_components ).
    create work area of structure GR_STRUCTDESCR -> GR_WA
              CREATE DATA gr_wa TYPE HANDLE gr_structdescr.
              ASSIGN gr_wa->* TO <gw_wa>.
    determine key components -> GT_KEYS
              MOVE lv_value1 TO gw_key-name.
              INSERT gw_key INTO TABLE gt_keys.
    create descriptor for internal table -> GR_TABLEDESCR
              gr_tabledescr ?= cl_abap_tabledescr=>create( p_line_type  = gr_structdescr
                                                           p_table_kind = cl_abap_tabledescr=>tablekind_hashed
                                                           p_unique     = abap_true
                                                           p_key        = gt_keys
                                                           p_key_kind   = cl_abap_tabledescr=>keydefkind_user ).
    create internal table -> GR_ITAB
              CREATE DATA gr_itab TYPE HANDLE gr_tabledescr.
              ASSIGN gr_itab->* TO <gt_itab>.
              CREATE DATA gr_itab LIKE STANDARD TABLE OF <gw_wa>.
              ASSIGN gr_itab->* TO <gt_sttab>.
    Now u r internal table named <gt_sttab> has been created with fields like RCNTR, PRCTR,RACCT, RYEAR etc whatever the field u need u can go ahead and create dynamically.
    then by using the table <gt_sttab> u can create u r field catalog.
    Regards,
    Rose.

  • Problem in creating dynamic internal table

    Hi Experts,
    I am trying creating a dynamic internal table.
    But I am getting the error 'The field string "LT_GENTAB" contains no fields. 4 LT_GENTAB".
    Can anybody tell me what is the error and how to solve it.
    Thanks,
    Sudheer

    Hi,
    Please find the below code.
    data : wa_fieldcat type slis_fieldcat_alv,
           wa_fieldcat1 type slis_fieldcat_alv,
           wa_fieldcat2 type LVC_S_FCAT,
           it_fieldcat type slis_t_fieldcat_alv,
           it_fieldcat1 type slis_t_fieldcat_alv,
           it_fieldcat2 type LVC_T_FCAT,
           V_LAYOUT TYPE SLIS_LAYOUT_ALV,
           LS_LVC_FIELDCATALOGUE  TYPE LVC_S_FCAT,
           LT_LVC_FIELDCATALOGUE  TYPE LVC_T_FCAT,
           IT_EVENTS TYPE SLIS_T_EVENT,
           WA_EVENTS TYPE SLIS_ALV_EVENT.
    data : L_TABLE    TYPE REF TO DATA.
    FIELD-SYMBOLS :  <IT_TABLE>    TYPE STANDARD TABLE.
    FIELD-SYMBOLS :  <IT_ITEM1>    TYPE STANDARD TABLE.
    v_col = 1.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'PRUEFLOS'.
    wa_fieldcat2-seltext   = 'Inspection Lot'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'WERKS'.
    wa_fieldcat2-seltext   = 'Plant'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'ART'.
    wa_fieldcat2-seltext   = 'Inspection Type'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'HERKUNFT'.
    wa_fieldcat2-seltext   = 'Lot Origin'.
    WA_FIELDCAT1-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'STAT35'.
    wa_fieldcat2-seltext   = 'Usage Decision Made'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'ENSTEHDAT'.
    wa_fieldcat2-seltext   = 'Lot created on'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'ERSTELLER'.
    wa_fieldcat2-seltext   = 'Created by'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'PASTRTERM'.
    wa_fieldcat2-seltext   = 'Insp. Start Date'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'PAENDTERM'.
    wa_fieldcat2-seltext   = 'End of Inspection'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'PLNTY'.
    wa_fieldcat2-seltext   = 'Task List Type'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'AUFNR'.
    wa_fieldcat2-seltext   = 'Order No.'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'KTEXTMAT'.
    wa_fieldcat2-seltext   = 'Object short text'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'KURZTEXT'.
    wa_fieldcat2-seltext   = 'Short Text for Code'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'KATALGART1'.
    wa_fieldcat2-seltext   = 'Catalog Type'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'GRUPPE1'.
    wa_fieldcat2-seltext   = 'Code Group'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'CODE1'.
    wa_fieldcat2-seltext   = 'Code'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    *WA_FIELDCAT2-COL_POS = v_col.
    *WA_FIELDCAT2-FIELDNAME = 'ORIGINAL_INPUT'.
    *WA_FIELDCAT2-SELTEXT_M   = 'Original Value'.
    **WA_FIELDCAT2-OUTPUTLEN   = 20.
    *v_col = v_col + 1.
    *APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    *CLEAR  WA_FIELDCAT2.
    loop at it_qamv1 into wa_qamv1.
      read table it_qasr into wa_qasr with key wa_qamv1-prueflos.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = wa_qamv-kurztext.
    wa_fieldcat2-seltext   = wa_qasr-original_input.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    endloop.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'EQUNR'.
    wa_fieldcat2-seltext   = 'Equipment'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'TPLNR'.
    wa_fieldcat2-seltext   = 'Functional Location'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'TPLMA'.
    wa_fieldcat2-seltext   = 'Superior Funct Loc.'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'STATUS'.
    wa_fieldcat2-seltext   = 'Status'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    WA_FIELDCAT2-COL_POS = v_col.
    WA_FIELDCAT2-FIELDNAME = 'INACT'.
    wa_fieldcat2-seltext   = 'Status Inactive'.
    WA_FIELDCAT2-OUTPUTLEN   = 20.
    v_col = v_col + 1.
    APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
    CLEAR  WA_FIELDCAT2.
    Create internal table dynamic
      CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
        EXPORTING
          IT_FIELDCATALOG = LT_LVC_FIELDCATALOGUE
        IMPORTING
          EP_TABLE        = L_TABLE.
      ASSIGN L_TABLE->* TO <IT_TABLE>.
    I am getting the error when the method  CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    is executed.
    Please help me
    Thanks,
    Sudheer

  • Dynamic internal table and dynamic read statements.

    Hi,
    My Scenario :
    I have two dynamic internal tables.
    I am looping at one internal table and trying to read another table.
    In the read statement how do I mention the key dyamically.
    Example code below :
      LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
    read second  dynamic internal table.
      enloop.
    The key which I want use for reading say it is keyed in the selection criteria....
    Also based on the value I read I want to modify the first internal table field value.
    Remember I dont want to explicity mention the key
    How do I do that?
    Thanks
    Krishna.

    Hi
    U need to use the field-symbol, but u can't use a WHERE option, but u need to use the CHECK statament into the second loop:
    LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
        LOOP AT <DYN_TABLE2> ASSIGNING <DYN_WA2>.
            ASSIGN COMPONENT <COMPONENT> OF STRUCTURE   <DYN_WA2> TO <FS>.
            CHECK <FS> IN (=) .......
                ASSIGN COMPONENT <COMPONENT> OF STRUCTURE   <DYN_WA> TO <FS2>.
                <FS2> = .......
                EXIT.
        ENDLOOP.
    ENDLOOP.
    Max

  • Creating dynamic internal table with deep structure

    Hi all,
    I need to create an internal table with deep structure dynamically. I've already created tables with method 'create_dynamic_table' but I'm struggling with the deep structure.
    I would need an internal table with the following structure:
    DATA: BEGIN OF lt_t1,
    s1 TYPE REF TO data,
    s2 TYPE REF TO data,
    END OF lt_t1.
    S1 and S2 have to be tables.
    It might be possible with RTTS but all the examples in the forums (that I've found so far) are related to at least one DDIC-structure. And that's my problem because both tables are created during runtime.
    Thank you in advance
    Nicola

    Hi Frédéric,
    I hope my english is good enough to explain it correctly:
    We use a function builder for SEM-BPS which copies data from one Cube to another. This Cube is transactional, so you can't easily read a structure out of DDIC.
    The export parameter of this function builder is a table with type 'any table'.
    Until today we used a fixed definition e.g.:
      TYPES:
        BEGIN OF xtyp_chas,
         /sie/sr_ocomp TYPE /b52/oisr_ocomp,
         /sie/ts_03psp TYPE /b52/oits_03psp,
         0activity     TYPE /bi0/oiactivity,
         0acty_elemt   TYPE /bi0/oiacty_elemt,
         0costelmnt    TYPE /bi0/oicostelmnt,
         0co_area      TYPE /bi0/oico_area,
         0creditor     TYPE /bi0/oicreditor,
         0currency     TYPE /bi0/oicurrency,
         0curtype      TYPE /bi0/oicurtype,
         0db_cr_ind    TYPE /bi0/oidb_cr_ind,
         0fiscper      TYPE /bi0/oifiscper,
         0fiscper3     TYPE /bi0/oifiscper3,
         0fiscyear     TYPE /bi0/oifiscyear,
         0metype       TYPE /bi0/oimetype,
         0network      TYPE /bi0/oinetwork,
         0part_actty   TYPE /bi0/oipart_actty,
         0part_cctr    TYPE /bi0/oipart_cctr,
         0piobjsv      TYPE /bi0/oipiobjsv,
         0project      TYPE /bi0/oiproject,
         0unit         TYPE /bi0/oiunit,
         0vtdetail     TYPE /bi0/oivtdetail,
         0vtstat       TYPE /bi0/oivtstat,
         0vtype        TYPE /bi0/oivtype,
         0bus_area     TYPE /bi0/oibus_area,
         0cashdetail   TYPE /bi0/oicashdetail,
         0cashtype     TYPE /bi0/oicashtype,
         0comp_code    TYPE /bi0/oicomp_code,
         0coorder      TYPE /bi0/oicoorder,
         0cs_dimen     TYPE /bi0/oics_dimen,
         0cs_unit      TYPE /bi0/oics_unit,
         0int_bus      TYPE /bi0/oiint_bus,
         0part_abcpr   TYPE /bi0/oipart_abcpr,
         0part_coord   TYPE /bi0/oipart_coord,
         0part_wbsel   TYPE /bi0/oipart_wbsel,
         0piovalue     TYPE /bi0/oipiovalue,
         0profit_ctr   TYPE /bi0/oiprofit_ctr,
         0ps_obj       TYPE /bi0/oips_obj,
         0statussys0   TYPE /bi0/oistatussys0,
         zfbwheroj     TYPE /bic/oizfbwheroj,
        END   OF xtyp_chas,
        BEGIN OF xtyp_kyfs,
          0amount      TYPE /bi0/oiamount,
          0quantity    TYPE /bi0/oiquantity,
          zf03oaws     TYPE /bic/oizf03oaws,
          zf03oqty     TYPE /bic/oizf03oqty,
          zf03ozsta    TYPE /bic/oizf03ozsta,
        END OF xtyp_kyfs,
        BEGIN OF xtyp_zf03g003,
          s_chas TYPE xtyp_chas,
          s_kyfs TYPE xtyp_kyfs,
        END   OF xtyp_zf03g003,
        xtyp_zf03g003_t TYPE HASHED TABLE OF xtyp_zf03g003
                          WITH UNIQUE KEY s_chas.
    DATA: lt_ibm_data TYPE xtyp_zf03g003_t,
          ls_ibm_data TYPE xtyp_zf03g003.
    So one table (s_chas) contains the characteristics of the Cube and the other (s_kyfs) contains the keyfigures. That's exactly the format we need for the export parameter. At the end of the program, we use the following coding to fill the export table (eto_chas):
    loop at lt_ibm_data into ls_ibm_data.
      collect ls_ibm_data-s_chas into eto_chas.
    endloop.
    So in this moment I give this table the structure that is needed to move the data into the cube. I can't change the requirement because it is a standard interface.
    I would like to change that coding to be dynamically. Because if somebody changes a charasteristic or a keyfigure in the cube, we would have to change the function builder too. I don't think that the SEM-BPS department will let us know every time they've changed something anyway.
    So I hope that my explanation wasn't too confusing
    Nicola

  • Create dynamic internal table with deep structure;cell coloring dynamic ALV

    Hi,
    My requirement is to do cell colouring for a dynamic ALV.
    So I am creating a dynamic internal table using the following method.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = i_fieldcatalog[]
        IMPORTING
          ep_table        = i_output.
    But how do I define field COLORS which should be again an internal table ?
    Is there any other way for cell colouring?
    Putting my problem in another way:
    How do I create a dynamic internal table with one field as another internal table.
    Quick replies are highly appreciated.
    Thanks,
    Nisha Vengal.

    halo Nisha
    Before building the display table . you can add the field in the feild catalog right . This display table gets generated from the field catalog right
    1 Create a global structute say ZEXTEND_FIELDCAT
    2 Have fields like STYLE type lvc_t_styl
                             COLOR type LVC_T_SCOL.
    3 Now you have to extend ur fieldcatalog
      l_fieldcat-fieldname = COLOR'.
      l_fieldcat-ref_field = 'COLOR'.
      l_fieldcat-ref_table = 'ZEXTEND_FIELDCAT'.
      APPEND l_fieldcat TO lt_field_catalog.
      CLEAR l_fieldcat.

  • How to export internal table and pass the internal table to another screen?

    Hi,
    I have a sql SELECT statement that select data from table into internal table. I would like to export out the internal table and pass to another screen and display the data in ALV list. How to export it out? I try but the error given was " The type of "OUT_SELECT_ITAB" cannot be converted to the type of  "itab_result".
    Another question is, how to pass the internal table that i export out from the function module to another screen?
    Here is the code
    ==============================================================
    FUNCTION ZNEW_SELECT_ZSTUD00.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(IN_SELECT_YEAR) TYPE  ZSTUD00-EYEAR
    *"  EXPORTING
    *"     REFERENCE(OUT_RESULT) TYPE  CHAR9
    *"     REFERENCE(OUT_SELECT_ITAB) TYPE  ZSTUD00
    *& Global Declarations
    DATA: itab TYPE ZSTUD00,
          itab_result TYPE TABLE OF ZSTUD00.
    *& Processing Blocks called by the Runtime Environment
    itab-eyear = IN_SELECT_YEAR.
    SELECT *
    FROM ZSTUD00
    INTO TABLE itab_result
    WHERE eyear = IN_SELECT_YEAR.
    IF sy-subrc = 0.
      out_result = 'Success'.
      OUT_SELECT_ITAB = itab_result.
    ELSE.
      out_result = 'Fail'.
    ENDIF.
    ENDFUNCTION.
    ===============================================================
    Please advise. Thanks
    Regards,
    Rayden

    Hi Nagaraj,
    I try to change it in Tables tab page but it state that TABLES parameters are obsolete. when i "Enter". I try to "Enter" again. it seem to be ok but it stil give me the same error.
    ================================================================
    FUNCTION ZNEW_SELECT_ZSTUD00.
    ""Local Interface:
    *"  IMPORTING
    *"     REFERENCE(IN_SELECT_YEAR) TYPE  ZSTUD00-EYEAR
    *"  EXPORTING
    *"     REFERENCE(OUT_RESULT) TYPE  CHAR9
    *"  TABLES
    *"      OUT_SELECT_ITAB STRUCTURE  ZSTUD00
    *& Global Declarations
    DATA: itab TYPE ZSTUD00,
          itab_result TYPE TABLE OF ZSTUD00.
    *& Processing Blocks called by the Runtime Environment
    itab-eyear = IN_SELECT_YEAR.
    SELECT *
    FROM ZSTUD00
    INTO TABLE itab_result
    WHERE eyear = IN_SELECT_YEAR.
    IF sy-subrc = 0.
      out_result = 'Success'.
      OUT_SELECT_ITAB = itab_result.
    ELSE.
      out_result = 'Fail'.
    ENDIF.
    ENDFUNCTION.
    ===============================================================
    regards,
    Rayden

Maybe you are looking for