<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Dynamic Internal table in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810113#M916505</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As per my experience with internal tables, while creating the dynamic internal table one must use field symbols. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Without field symbols it is not possible to create a dynamic internal table. As during runtime, we will come to know about number of rows or columns, it is always good to use field symbols which are given as a boon to SAP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For your understanding I can provide you an example program so that you can understand field symbols easily.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  Zdynamic_table
        NO STANDARD PAGE HEADING
        LINE-SIZE 1023
        LINE-COUNT 35(3)
        MESSAGE-ID zrtc.
TYPE-POOLS : slis.
************************************************************************
*                               TABLES
************************************************************************
*{
TABLES: lfm1,
        bkpf.
*}
************************************************************************
*                            GLOBAL TYPES
*                    naming convention: "T_name"
************************************************************************
*{

TYPES: BEGIN OF t_lfb1,
        lifnr     TYPE lfb1-lifnr,      "Vendor
        mindk     TYPE lfb1-mindk,      "Minority indicator
        cerdt     TYPE lfb1-cerdt,      "Certification date
       END OF t_lfb1,

       BEGIN OF t_lfa1,
        lifnr     TYPE lfa1-lifnr,      "Vendor
        name1     TYPE lfa1-name1,      "Vendor name
       END OF t_lfa1,

       BEGIN OF t_t059t_dis,
        mtext(50) TYPE c        ,      "Text
        count(10) TYPE c        ,      "count
       END OF t_t059t_dis,

       BEGIN OF t_t059t,
        mindk     TYPE t059t-mindk,    "Minority Indicators
        mtext     TYPE t059t-mtext,    "Text
        mark(1)   TYPE c          ,
        count(10) TYPE c          ,    "count
       END OF t_t059t,

       BEGIN OF t_bsak,
        bukrs TYPE bsak-bukrs    ,    "Company Code
        lifnr TYPE bsak-lifnr    ,    "Vendor
        umsks TYPE bsak-umsks    ,    "Transaction Type
        umskz TYPE bsak-umskz    ,    "Indicator
        augdt TYPE bsak-augdt    ,    "Clearing Date
        augbl TYPE bsak-augbl    ,    "Document Number
        zuonr TYPE bsak-zuonr    ,    "assignment Number
        gjahr TYPE bsak-gjahr    ,    "Fiscal Year
        belnr TYPE bsak-belnr    ,    "Accounting Document Number
        buzei TYPE bsak-buzei    ,    "Number of Line Item
        budat TYPE bsak-budat    ,    "Posting Date
        blart TYPE bsak-blart    ,    "Document Type
        shkzg TYPE bsak-shkzg    ,    "Debit/Credit Indicator
        wrbtr TYPE bsak-wrbtr    ,    "Amount
       END OF t_bsak,

       BEGIN OF t_bsik,
        bukrs TYPE bsik-bukrs    ,    "Company Code
        lifnr TYPE bsik-lifnr    ,    "Vendor
        umsks TYPE bsik-umsks    ,    "Transaction Type
        umskz TYPE bsik-umskz    ,    "Indiacator
        augdt TYPE bsik-augdt    ,    "Clearing Date
        augbl TYPE bsik-augbl    ,    "Document Number
        zuonr TYPE bsik-zuonr    ,    "Assignment Number
        gjahr TYPE bsik-gjahr    ,    "Fiscal Year
        belnr TYPE bsik-belnr    ,    "Accounting Document Number
        buzei TYPE bsik-buzei    ,    "Number of Line Item
        budat TYPE bsik-budat    ,    "Posting Date
        blart TYPE bsik-blart    ,    "Document Type
        shkzg TYPE bsik-shkzg    ,    "Debit/Credit Indicator
        wrbtr TYPE bsik-wrbtr    ,    "Amount
       END OF t_bsik,

       BEGIN OF t_det,
        fieldname(20) TYPE c,
        fieldval(20)  TYPE c,
       END OF t_det.
*}
************************************************************************
*                           GLOBAL CONSTANTS
*                    naming convention: "c_name"
************************************************************************
*{
CONSTANTS : c_doc_typ_re(2)   TYPE c              VALUE 'RE'
, "Document type
            c_doc_typ_kr(2)   TYPE c              VALUE 'KR'
, "Document type
*begin of defect
            c_doc_typ_kz(2)   TYPE c              VALUE 'KZ'
, "Document type
            c_doc_typ_kn(2)   TYPE c              VALUE 'KN'
, "Document type
*end of defect
            c_credit          TYPE bsid-shkzg     VALUE 'H'
, "Credit indicator
            c_f_top_of_page   TYPE slis_formname  VALUE 'F_TOP_OF_PAGE'
, "top fo page
            c_space           TYPE c              VALUE space
, "space
            c_cr(4)           TYPE c              VALUE '_CR'
,
            c_ncr(4)          TYPE c              VALUE '_NCR'
,
            c_vendor(6)       TYPE c              VALUE 'VENDOR'
,
            c_name(6)         TYPE c              VALUE 'NAME'
,
            c_credt(20)       TYPE c              VALUE
'CERTIFICATION_DATE', "Certfication Date
            c_null            TYPE sy-datum       VALUE '00000000'
,
            c_1(1)            TYPE c              VALUE '1'
,
            c_bukrs(4)        TYPE c              VALUE '200'
,
*  Begin of Defect 40862
            c_user_command    TYPE slis_formname  VALUE 'USER_COMMAND'
,
            c_25              TYPE char2          VALUE '25'
,
            c_35              TYPE char2          VALUE '35'
,
            c_55              TYPE char2          VALUE '55'
,
            c_s               TYPE char1          VALUE 'S'
,
            c_usd             TYPE char3          VALUE 'USD'
,
            c_20              TYPE char2          VALUE '20'
,
            c_dash            TYPE char1          VALUE '-'
,
            c_value           TYPE char5          VALUE 'VALUE'
,
            c_columntext      TYPE char10         VALUE 'COLUMNTEXT'
,
            c_30              TYPE char2          VALUE '30'
,
            c_ic1             TYPE char4          VALUE '&amp;amp;IC1'
,
            c_p               TYPE char1          VALUE 'P'
,
            c_16              TYPE char2          VALUE '16'
,
*  End of Defect 40862
            c_x(1)            TYPE c              VALUE 'X'
.



*}
************************************************************************
*                     GLOBAL ELEMENTARY VARIABLES
*                     naming convention: "g_name"
************************************************************************
*{
DATA : g_wrbtr              TYPE bsak-wrbtr ,  " Amount
       g_sum                TYPE bsak-wrbtr ,  " Sum of amount
       g_sum_ncr(16)        TYPE c          ,  " Sum of amount
       g_sum_cr(16)         TYPE c          ,  " Sum of amount
       g_count(10)          TYPE c          ,  "Count
       g_flag(1)            TYPE c          .  "Flag
*}
************************************************************************
*                           GLOBAL STRUCTURES
*                     naming convention: "i_name"
************************************************************************
*{
DATA : i_lfb1_s         TYPE t_lfb1                , "Structure for user
defined type
       i_lfa1_s         TYPE t_lfa1                , "Structure for user
defined type
       i_fldlayout_s    TYPE slis_layout_alv       , "Structure for
layout of ALV
       i_header_alv_s   TYPE slis_listheader       , "Structure for
Header
       i_t_fieldcat_s   TYPE slis_t_fieldcat_alv   , "Structure for
fieldcat.
       i_fieldcat_s     LIKE LINE OF i_t_fieldcat_s, "Structure for
fieldcat.
       i_t059t_s        TYPE t_t059t               , "Structure user
defined type
       i_t059t_fnl_s    TYPE t_t059t               , "Structure user
defined type
       i_fcat_s         TYPE lvc_s_fcat            ,
       i_final_s        TYPE t_bsak                , "Structure user
defined type
       i_t059t_dis_s    TYPE t_t059t_dis           , "Structure user
defined type
       i_budat_s        TYPE fagl_range_budat      ,
       i_lvc_t_fcat_s   TYPE lvc_s_fcat,
       i_lvc_s_layo_s   TYPE lvc_s_layo,
       i_lvc_t_detm_s   TYPE lvc_s_detm,
       i_lvc_s_deta_s   TYPE lvc_s_deta.
*}
************************************************************************
*                        GLOBAL INTERNAL TABLES
*                      naming convention: "i_name"
************************************************************************
*{
DATA : i_lfb1         TYPE TABLE OF t_lfb1      , "Internal table for
user defined type
       i_lfa1         TYPE TABLE OF t_lfa1      , "Internal table for
user defined type
       i_t059t        TYPE TABLE OF t_t059t     , "Internal table for
user defined type
       i_t059t_dis    TYPE TABLE OF t_t059t_dis ,
       i_t059t_fnl    TYPE TABLE OF t_t059t     , "Internal table for
user defined type
       i_fieldcat     TYPE slis_t_fieldcat_alv  , "Internal table for
fieldcat.
       i_events       TYPE slis_t_event        , "Internal table for
event
       i_header_alv   TYPE slis_t_listheader    , "Internal table for
header
       i_fcat         TYPE TABLE OF lvc_s_fcat  , "Field cat. of dynamic
table
       i_sel_rows     TYPE REF TO data          , "For creating dynamic
table
       i_new_line     TYPE REF TO data          ,
       i_bsak         TYPE TABLE OF t_bsak      , "Internal table for
user defined type
       i_bsik         TYPE TABLE OF t_bsik      , "Internal table for
user defined type
       i_final        TYPE TABLE OF t_bsak      , "Internal table for
user defined type
       i_lvc_t_fcat   TYPE TABLE OF lvc_s_fcat,
       i_lvc_t_detm   TYPE TABLE OF lvc_s_detm,
       i_lvc_s_deta   TYPE TABLE OF lvc_s_deta.
*}
************************************************************************
*                            FIELD-SYMBOLS
*                      naming convention: "&amp;lt;FS_&amp;gt;name"
************************************************************************
*{
FIELD-SYMBOLS : &amp;lt;fs_table&amp;gt;    TYPE STANDARD TABLE,  "For dynamic table
                &amp;lt;fs_line&amp;gt;     TYPE ANY           ,  "For row of dynamic
table
                &amp;lt;fs_field&amp;gt;    TYPE ANY           .  "For field of
dynamic table
*}
************************************************************************
*                       PARAMETERS &amp;amp; SELECT-OPTIONS
*                  aming convention: "p_name" &amp;amp; "s_name"
************************************************************************
*{
SELECTION-SCREEN BEGIN OF BLOCK  b1 WITH FRAME TITLE text-001.
PARAMETERS     : p_bukrs TYPE lfb1-bukrs OBLIGATORY DEFAULT c_bukrs."
'200' .

SELECT-OPTIONS : s_lifnr FOR lfm1-lifnr                ,
                 s_budat FOR bkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK  b2 WITH FRAME TITLE text-001.

PARAMETERS:  p_crt  RADIOBUTTON GROUP rad1            ,
             p_ncrt RADIOBUTTON GROUP rad1            ,
             p_all  RADIOBUTTON GROUP rad1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK b2.
*}
************************************************************************
*                       AT SELECTION-SCREEN ON &amp;lt;Field&amp;gt;
************************************************************************
*{
AT SELECTION-SCREEN ON p_bukrs.
* Validating Company Code
  PERFORM f_validate_company_code.

AT SELECTION-SCREEN ON s_lifnr.
* Validating Vendor
  PERFORM f_validate_vendor.
*}
************************************************************************
*                            START-OF-SELECTION
************************************************************************
*{
START-OF-SELECTION.

* Getting data from lfb1
  PERFORM f_get_lfb1.

  CHECK NOT i_lfb1[] IS INITIAL.

* Getting data from lfa1
  PERFORM f_get_lfa1.

* Getting data from bsak
  PERFORM f_get_bsak.

* Getting data from bsik
  PERFORM f_get_bsik.
*}
************************************************************************
*                           END-OF-SELECTION
************************************************************************
*{
END-OF-SELECTION.

  IF NOT i_final[] IS INITIAL.

*   Getting all fields of dynamic table
    PERFORM f_get_mandk.

*   Creating dyanmic table
    PERFORM f_create_dynamic_table.

*   Creating Dynamic table and filling data to dynamic table table
    PERFORM f_fill_output.

*   For displaying output
    PERFORM f_display.
  ELSE.

    MESSAGE s105(zrtc).                          " WITH 'No data found
for this selection criteria.'(008).
  ENDIF.
*}
************************************************************************
*                                FORMS
*                    naming convention: "f_name"
************************************************************************
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  validate_company_code
*&amp;amp;---------------------------------------------------------------------*
*       Validating company code
*----------------------------------------------------------------------*

FORM f_validate_company_code .

  DATA : l_t001 TYPE t001-bukrs.
  CLEAR l_t001.
  SELECT bukrs
    INTO l_t001
    FROM t001
    UP TO 1 ROWS
   WHERE bukrs EQ p_bukrs.
  ENDSELECT.

  IF sy-subrc NE 0.
    MESSAGE e043.           " WITH 'Invalid Company Code'(003).
*-- This is to get rid of Extended check.
    IF l_t001 IS INITIAL.
      CLEAR l_t001.
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_company_code
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  validate_vendor
*&amp;amp;---------------------------------------------------------------------*
*       Validating Vendor
*----------------------------------------------------------------------*
FORM f_validate_vendor .

  DATA : l_lfa1 TYPE lfa1-lifnr.
  CLEAR l_lfa1.

  IF NOT  s_lifnr[] IS INITIAL.

    SELECT lifnr
      INTO l_lfa1
      FROM lfa1
      UP TO 1 ROWS
     WHERE lifnr IN s_lifnr.
    ENDSELECT.
    IF sy-subrc NE 0.
      MESSAGE e118.                    "WITH 'Invalid Vendor
Number.'(010).
*-- This is to get rid of Extended check.
      IF l_lfa1 IS INITIAL.
        CLEAR l_lfa1.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_vendor
*---------------------------------------------------------------------*
*      Form  f_get_lfb1
*---------------------------------------------------------------------*
*     Getting data from table lfb1 into into internal table
*     according to the condition
*----------------------------------------------------------------------*
FORM f_get_lfb1 .

  REFRESH i_lfb1.

  SELECT lifnr
         mindk
         cerdt
    INTO TABLE i_lfb1
    FROM lfb1
   WHERE lifnr IN s_lifnr
     AND bukrs EQ p_bukrs
     AND mindk NE c_space.
  IF sy-subrc EQ 0.
    SORT i_lfb1 BY lifnr.
  ENDIF.

ENDFORM.                    " f_get_lfb1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_lfa1
*&amp;amp;---------------------------------------------------------------------*
*       Getting vendor name from table lfa1 into internal table
*       according to the condition
*----------------------------------------------------------------------*
FORM f_get_lfa1 .

  REFRESH i_lfa1.

  IF NOT i_lfb1 IS INITIAL.

    SELECT lifnr
           name1
      INTO TABLE i_lfa1
      FROM lfa1
       FOR ALL  ENTRIES IN i_lfb1
     WHERE lifnr EQ i_lfb1-lifnr.
    IF sy-subrc EQ 0.
      SORT i_lfa1 BY lifnr.
    ENDIF.
  ENDIF.

ENDFORM.                    " f_get_lfa1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_bsak
*&amp;amp;---------------------------------------------------------------------*
*        Getting document no from table bsak into internal table
*        according to the condition
*----------------------------------------------------------------------*
FORM f_get_bsak .

  REFRESH: i_bsak.         "Defect 40862
  IF NOT i_lfb1 IS INITIAL.
*defect added document types
    SELECT bukrs
           lifnr
           umsks
           umskz
           augdt
           augbl
           zuonr
           gjahr
           belnr
           buzei
           budat
           blart
           shkzg
           wrbtr
      FROM bsak
      INTO TABLE i_bsak
       FOR ALL ENTRIES IN i_lfb1
     WHERE lifnr EQ i_lfb1-lifnr
       AND bukrs EQ p_bukrs
       AND budat IN s_budat
       AND ( blart EQ c_doc_typ_re
        OR   blart EQ c_doc_typ_kr
        OR   blart EQ c_doc_typ_kn
        OR   blart EQ c_doc_typ_kz ).

*end of document types
    APPEND LINES OF i_bsak TO i_final.
  ENDIF.

ENDFORM.                    " f_get_bsak
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_bsik
*&amp;amp;---------------------------------------------------------------------*
*      Getting data from table bsik into internal table
*      according to the condition
*----------------------------------------------------------------------*
FORM f_get_bsik .

  REFRESH: i_bsik.    "Defect 40862
  IF NOT i_lfb1 IS INITIAL.
*defect added document types
    SELECT bukrs
           lifnr
           umsks
           umskz
           augdt
           augbl
           zuonr
           gjahr
           belnr
           buzei
           budat
           blart
           shkzg
           wrbtr
     FROM  bsik
     INTO TABLE i_bsik
      FOR ALL ENTRIES IN i_lfb1
    WHERE lifnr EQ i_lfb1-lifnr
      AND bukrs EQ p_bukrs
      AND budat IN s_budat
      AND ( blart EQ c_doc_typ_re
       OR   blart EQ c_doc_typ_kr
        OR   blart EQ c_doc_typ_kn
        OR   blart EQ c_doc_typ_kz ).
*defect ended document types
    APPEND LINES OF i_bsik TO i_final.
  ENDIF.

ENDFORM.                    " f_get_bsik
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_output
*&amp;amp;---------------------------------------------------------------------*
*    Creating dynamic table , getting data and  filling that data to
*    dynamic table for display according to the condition
*----------------------------------------------------------------------*
FORM f_fill_output .

  DATA : l_cert_dt TYPE c LENGTH 10,
         l_lifnr TYPE lfa1-lifnr.

  CLEAR:  g_wrbtr   ,
          g_sum     .

* Sorting tables by vendor
  SORT : i_t059t_fnl BY mindk,
         i_final BY lifnr belnr buzei.

* Calculating the amount and filling that data into dynamic table
  LOOP AT i_final INTO i_final_s.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = i_final_s-lifnr
      IMPORTING
        output = l_lifnr.

    AT NEW lifnr.
      CLEAR : g_sum.
    ENDAT.

*   Making Amount negative if credit
    IF i_final_s-shkzg EQ  c_credit.
*      g_wrbtr = i_final_s-wrbtr * -1.
      g_wrbtr = i_final_s-wrbtr.

    ELSE.
*      g_wrbtr = i_final_s-wrbtr.
      g_wrbtr = i_final_s-wrbtr * -1.

    ENDIF.

    g_sum = g_sum + g_wrbtr.

    AT END OF lifnr.
*     Filling data into Dynamic table according to the condition .
      CLEAR i_lfb1_s.
      READ TABLE i_lfb1 INTO i_lfb1_s WITH KEY lifnr = i_final_s-lifnr
                                               BINARY SEARCH.
      IF sy-subrc EQ 0.

        CREATE DATA i_new_line LIKE LINE OF &amp;lt;fs_table&amp;gt;.
        ASSIGN i_new_line-&amp;gt;* TO &amp;lt;fs_line&amp;gt;.

        ASSIGN COMPONENT c_vendor OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
        &amp;lt;fs_field&amp;gt; = l_lifnr.
        CLEAR i_lfa1_s.
        READ TABLE i_lfa1 INTO i_lfa1_s WITH KEY lifnr = i_final_s-lifnr
                                                 BINARY SEARCH.
        IF sy-subrc EQ 0.
          ASSIGN COMPONENT c_name OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
          &amp;lt;fs_field&amp;gt; =  i_lfa1_s-name1.

          ASSIGN COMPONENT c_credt OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
          WRITE : i_lfb1_s-cerdt TO l_cert_dt DD/MM/YYYY,
                  i_lfb1_s-cerdt  TO i_lfb1_s-cerdt.
          IF i_lfb1_s-cerdt EQ c_null.
            &amp;lt;fs_field&amp;gt; =  c_space.
          ELSE.
            &amp;lt;fs_field&amp;gt; =  l_cert_dt.
          ENDIF.           " if sy-subrc eq 0(READ TABLE i_lfa1)

*         Filling data according to minority indicator
          PERFORM f_fill_amt_ind.

        ENDIF .        " if sy-subrc eq 0 (READ TABLE i_lfb1)

        CLEAR: i_final_s   ,
               i_lfa1_s    ,
               g_wrbtr     ,
               i_lfb1_s    .
      ENDIF.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " f_fill_output
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  Display
*&amp;amp;---------------------------------------------------------------------*
*       For display the ALV Report
*----------------------------------------------------------------------*
FORM f_display .

  DATA : lw_repid LIKE sy-repid,
         l_slis_exit_by_user TYPE slis_exit_by_user.

  lw_repid = sy-repid.

* Creating field cat. for ALV
  PERFORM populate_fldcat_alv.

* Creating Layout.
  PERFORM populate_layout.

* Creating Event
  PERFORM f_get_events.

* Creating Top Of Page
  PERFORM f_top_of_page.

*  Call Function for ALV GRID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lw_repid
      it_fieldcat             = i_fieldcat
      is_layout               = i_fldlayout_s
      it_events               = i_events
      i_callback_user_command = c_user_command     "Defect 40862
    IMPORTING
      es_exit_caused_by_user  = l_slis_exit_by_user
    TABLES
      t_outtab                = &amp;lt;fs_table&amp;gt;
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

  IF sy-subrc &amp;lt;&amp;gt; 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF  l_slis_exit_by_user EQ c_x.
    LEAVE LIST-PROCESSING .
  ENDIF.
  UNASSIGN:&amp;lt;fs_field&amp;gt;,&amp;lt;fs_line&amp;gt;.

ENDFORM.                    " Display
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_fldcat
*&amp;amp;---------------------------------------------------------------------*
*       Filling fieldcat for dynamic table
*----------------------------------------------------------------------*
FORM populate_fldcat .

  REFRESH i_fcat.
  CLEAR: i_t059t_s,
         i_fcat_s.

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_vendor.
  i_fcat_s-outputlen       = c_25.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_name.
  i_fcat_s-outputlen       = c_25.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_credt.
  i_fcat_s-outputlen       = c_35.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  CLEAR i_t059t_fnl_s.

  LOOP AT i_t059t_fnl INTO i_t059t_fnl_s.

    CLEAR i_fcat_s.

    CLEAR i_t059t_s.
    i_fcat_s-key            = c_x.
    i_fcat_s-fieldname      = i_t059t_fnl_s-mtext.
    i_fcat_s-outputlen      = c_55.        "Defect 40862

    APPEND i_fcat_s TO i_fcat .
    CLEAR: i_fcat_s ,
           i_t059t_fnl_s,
           i_t059t_fnl_s.
  ENDLOOP.
ENDFORM.                    " populate_fldcat
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_layout
*&amp;amp;---------------------------------------------------------------------*
*      Filling layout
*----------------------------------------------------------------------*
FORM populate_layout .

  i_fldlayout_s-zebra            = c_x         .
  i_fldlayout_s-window_titlebar  = 'Purchasing from Minority
Vendors'(014).
  i_fldlayout_s-get_selinfos     = c_x        .
  i_fldlayout_s-expand_all       = c_space          .     "Defect 40862
  i_fldlayout_s-no_scrolling     = c_x.

ENDFORM.                    " populate_layout
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_events
*&amp;amp;---------------------------------------------------------------------*
*       For Event
*----------------------------------------------------------------------*
FORM f_get_events .

  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = i_events.

  READ TABLE i_events WITH KEY name = slis_ev_top_of_page
                           INTO ls_event.
  IF sy-subrc EQ 0.
    MOVE c_f_top_of_page TO ls_event-form.
    MODIFY  i_events FROM ls_event INDEX  sy-tabix.
  ENDIF.
ENDFORM.                    " f_get_events
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_top_of_page
*&amp;amp;---------------------------------------------------------------------*
*       For top of page
*----------------------------------------------------------------------*
FORM f_top_of_page .

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_header_alv.

  PERFORM f_fill_header.

ENDFORM.                    " f_top_of_page
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_header
*&amp;amp;---------------------------------------------------------------------*
*       Filling data for Top Of Page
*----------------------------------------------------------------------*
FORM f_fill_header .
  DATA : l_date_low    TYPE c LENGTH 10,
         l_date_high   TYPE c LENGTH 20,
         l_sum_cr(20)  TYPE c,
         l_sum_cr_tmp  TYPE p DECIMALS 2,
         l_sum_ncr_tmp TYPE p DECIMALS 2,
         l_sum_ncr(20) TYPE c,
         l_total(20)   TYPE c.

  IF g_flag EQ c_space.

    LOOP AT s_budat INTO i_budat_s.
      i_header_alv_s-typ = c_s.         "Defect 40862

      WRITE : i_budat_s-low  TO l_date_low MM/DD/YYYY ,
              i_budat_s-high TO l_date_high MM/DD/YYYY.
      CONCATENATE text-019 l_date_low c_dash l_date_high INTO
i_header_alv_s-info
                                                   SEPARATED BY c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDLOOP.

    IF p_crt EQ c_x
    OR p_all EQ c_x.
      i_header_alv_s-typ = c_s.           "Defect 40862
      MOVE g_sum_cr TO l_sum_cr_tmp.
      WRITE l_sum_cr_tmp TO l_sum_cr CURRENCY c_usd.
"Defect 40862
      CONCATENATE  text-004 c_usd l_sum_cr INTO i_header_alv_s-info
"Defect 40862
                                                     SEPARATED BY
c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDIF.

    IF p_ncrt EQ c_x
    OR p_all  EQ c_x.
      i_header_alv_s-typ = c_s.          "Defect 40862
      MOVE g_sum_ncr TO l_sum_ncr_tmp.
      WRITE l_sum_ncr_tmp TO l_sum_ncr CURRENCY c_usd.
"Defect 40862
      CONCATENATE  text-002 c_usd l_sum_ncr INTO i_header_alv_s-info
"Defect 40862
                                                     SEPARATED BY
c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDIF.

    l_total = g_sum_cr + g_sum_ncr.
    i_header_alv_s-typ = c_s.         "Defect 40862
    MOVE  l_total TO l_sum_ncr_tmp.
    WRITE  l_sum_ncr_tmp TO l_total CURRENCY c_usd.
"Defect 40862
    CONCATENATE  text-020 c_usd l_total INTO i_header_alv_s-info
"Defect 40862
                                               SEPARATED BY c_space.
    APPEND i_header_alv_s TO i_header_alv.
    CLEAR:i_header_alv_s.

    g_flag = c_x.
    CLEAR:i_header_alv_s.

  ENDIF.
ENDFORM.                    " f_fill_header
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_amt_ind
*&amp;amp;---------------------------------------------------------------------*
*       Filling data into dynamic table according to indicator and
*       also calculating sum of all amount of certified/non-certified
*----------------------------------------------------------------------*
FORM f_fill_amt_ind .

  DATA: w_mindk(40) TYPE c.

  MOVE i_lfb1_s-mindk TO w_mindk.
  CASE i_lfb1_s-mindk.

    WHEN w_mindk.
*   For Certified .
      IF  i_lfb1_s-cerdt NE c_null.
        IF p_crt EQ c_x OR p_all EQ c_x.
          CLEAR i_t059t_fnl_s.
          READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY mindk =
i_lfb1_s-mindk
                                                             mark  =
c_x.
          IF sy-subrc EQ  0.
            ASSIGN COMPONENT i_t059t_fnl_s-mtext OF STRUCTURE &amp;lt;fs_line&amp;gt;
TO &amp;lt;fs_field&amp;gt;.
            MOVE g_sum TO &amp;lt;fs_field&amp;gt; .
            INSERT &amp;lt;fs_line&amp;gt; INTO TABLE &amp;lt;fs_table&amp;gt;.
*           Calculating sum of Certified .
            g_sum_cr = g_sum_cr + g_sum .
          ENDIF.           " IF sy-subrc eq  0(READ TABLE i_t059t_fnl)
        ENDIF.
      ELSE.
*       For Non-Certified.
        IF p_ncrt EQ c_x OR p_all EQ c_x.
          CLEAR i_t059t_fnl_s.
          READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY mindk =
i_lfb1_s-mindk
                                                             mark  =
c_space.
          IF sy-subrc EQ  0.
            ASSIGN COMPONENT i_t059t_fnl_s-mtext OF STRUCTURE &amp;lt;fs_line&amp;gt;
TO &amp;lt;fs_field&amp;gt;.
            MOVE g_sum TO &amp;lt;fs_field&amp;gt; .

            INSERT &amp;lt;fs_line&amp;gt; INTO TABLE &amp;lt;fs_table&amp;gt;.
*           Calculating sum of Non-Certified .
            g_sum_ncr = g_sum_ncr + g_sum .
          ENDIF  .                        " IF sy-subrc eq  0(READ TABLE
i_t059t_fnl)
        ENDIF.
      ENDIF.
  ENDCASE.
  UNASSIGN:&amp;lt;fs_line&amp;gt;.

ENDFORM.                    " f_fill_amt_ind
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_mandk
*&amp;amp;---------------------------------------------------------------------*
*       Getting data from table t059t into internal table for getting
*       field of dynamic table
*----------------------------------------------------------------------*
FORM f_get_mandk .

  REFRESH i_t059t.

  SELECT mindk
         mtext
    FROM t059t
    INTO TABLE i_t059t
   WHERE spras EQ sy-langu.
  IF sy-subrc EQ 0.
*   Getting  fields of dynamic table
    PERFORM f_fill_final_table.
  ENDIF.
ENDFORM.                    " get_mandk
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_cerate_dynamic_table
*&amp;amp;---------------------------------------------------------------------*
*       Making field cat. and creating dynamic table
*----------------------------------------------------------------------*
FORM f_create_dynamic_table .

* Filling field cat. for dynamic table
  PERFORM populate_fldcat.

* For Creating dynamic table
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING
      i_style_table             = c_x
      it_fieldcatalog           = i_fcat
    IMPORTING
      ep_table                  = i_sel_rows
    EXCEPTIONS
      generate_subpool_dir_full = 1
      OTHERS                    = 2.

  ASSIGN i_sel_rows-&amp;gt;* TO &amp;lt;fs_table&amp;gt;.

ENDFORM.                    " f_cerate_dynamic_table
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_final_table
*&amp;amp;---------------------------------------------------------------------*
*      Getting  fields of dynamic table
*----------------------------------------------------------------------*
FORM f_fill_final_table .

  DATA: l_text(50) TYPE c.

  g_count = c_1.

  REFRESH i_t059t_fnl.
  LOOP AT i_t059t INTO i_t059t_s.

    CONCATENATE  i_t059t_s-mtext c_cr INTO l_text.
    CONDENSE l_text NO-GAPS.
    TRANSLATE l_text TO UPPER CASE.
    MOVE:  g_count TO i_t059t_fnl_s-count ,
         i_t059t_s-mindk TO i_t059t_fnl_s-mindk,
         l_text          TO i_t059t_fnl_s-mtext,
         c_x             TO i_t059t_fnl_s-mark.
    APPEND i_t059t_fnl_s TO i_t059t_fnl.

    CLEAR : i_t059t_fnl_s,
            l_text.
    CONCATENATE i_t059t_s-mtext  ' (Certified)'(011) INTO l_text.
    MOVE :  g_count        TO i_t059t_dis_s-count ,
            l_text         TO i_t059t_dis_s-mtext.
    APPEND i_t059t_dis_s   TO i_t059t_dis.

    CLEAR : l_text.

    g_count = g_count + 1.
    CONCATENATE  i_t059t_s-mtext c_ncr INTO l_text.
    CONDENSE l_text NO-GAPS.
    TRANSLATE l_text TO UPPER CASE.
    MOVE: g_count        TO i_t059t_fnl_s-count ,
         i_t059t_s-mindk TO i_t059t_fnl_s-mindk,
         l_text          TO i_t059t_fnl_s-mtext,
         c_space         TO i_t059t_fnl_s-mark.
    CLEAR l_text.
    APPEND i_t059t_fnl_s TO i_t059t_fnl.

    CLEAR: i_t059t_fnl_s.

    CONCATENATE i_t059t_s-mtext ' (Non-Certified)'(009) INTO l_text.
    MOVE : g_count TO i_t059t_dis_s-count ,
          l_text TO i_t059t_dis_s-mtext.
    APPEND i_t059t_dis_s TO i_t059t_dis.
    g_count = g_count + 1.
    CLEAR : l_text,
            i_t059t_s.
  ENDLOOP.
ENDFORM.                    " f_fill_final_table
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_fldcat_alv
*&amp;amp;---------------------------------------------------------------------*
*       Creating field cat.for ALV GRID
*&amp;amp;---------------------------------------------------------------------*
FORM populate_fldcat_alv .
  REFRESH i_fieldcat.
  CLEAR: i_t059t_s,
        i_fieldcat_s.

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_vendor.
  i_fieldcat_s-seltext_l       = text-005.
  i_fieldcat_s-outputlen       = c_25.         "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat .
  CLEAR: i_fieldcat_s .

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_name.
  i_fieldcat_s-seltext_l       = text-006.
  i_fieldcat_s-outputlen       = c_25.        "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat .
  CLEAR: i_fieldcat_s .

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_credt.
  i_fieldcat_s-seltext_l       = text-007.
  i_fieldcat_s-outputlen       = c_35.        "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat.
  CLEAR: i_fieldcat_s .

  CLEAR i_t059t_dis_s.
  LOOP AT i_t059t_dis INTO i_t059t_dis_s.

    READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY count =
i_t059t_dis_s-count.

    IF sy-subrc EQ 0.
      CLEAR i_fieldcat_s.

      CLEAR i_t059t_s.
      CONCATENATE i_t059t_fnl_s-mindk i_t059t_dis_s-mtext INTO
i_t059t_dis_s-mtext
                                                          SEPARATED BY
c_space.
      i_fieldcat_s-key           = c_x.
      i_fieldcat_s-fieldname     = i_t059t_fnl_s-mtext.
      i_fieldcat_s-seltext_l     = i_t059t_dis_s-mtext.
      i_fieldcat_s-do_sum        = c_x.
      i_fieldcat_s-outputlen     = c_16.         "Defect 40862
      i_fieldcat_s-inttype       = c_p.          "Defect 40862

      APPEND i_fieldcat_s TO i_fieldcat.
      CLEAR: i_fieldcat_s ,
             i_t059t_dis_s.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " populate_fldcat_alv
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  user_command
*&amp;amp;---------------------------------------------------------------------*
*Routine for trapping double click event
*----------------------------------------------------------------------*
*      --&amp;gt;UCOMM      text
*      --&amp;gt;SELFIELD   text
*----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm                 "#EC CALLED
      selfield      TYPE slis_selfield.
  CASE ucomm.

    WHEN c_ic1.                        "Defect 40862
      READ TABLE &amp;lt;fs_table&amp;gt; ASSIGNING &amp;lt;fs_line&amp;gt; INDEX selfield-tabindex.
      IF sy-subrc EQ 0.                "Defect 40862
        PERFORM f_get_popup.
      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_popup
*&amp;amp;---------------------------------------------------------------------*
*Routine to call popup screen
*----------------------------------------------------------------------*
FORM f_get_popup .
  REFRESH:i_lvc_t_detm,i_lvc_t_fcat,i_lvc_s_deta.
  CLEAR i_lvc_t_fcat_s.
  i_lvc_t_fcat_s-fieldname = c_columntext.  "Defect 40862
  i_lvc_t_fcat_s-key       = c_x.
  i_lvc_t_fcat_s-outputlen = c_30.          "Defect 40862
  i_lvc_t_fcat_s-seltext   = 'Group Description'(012).
  APPEND i_lvc_t_fcat_s TO i_lvc_t_fcat.
  CLEAR:i_lvc_t_fcat_s .

  i_lvc_t_fcat_s-fieldname = c_value.       "Defect 40862
  i_lvc_t_fcat_s-outputlen = c_20.          "Defect 40862
  i_lvc_t_fcat_s-seltext   = 'contents'(013).
  APPEND i_lvc_t_fcat_s TO i_lvc_t_fcat.

  i_lvc_s_layo_s-no_toolbar = c_x.

  PERFORM f_fill_detail.

  i_lvc_t_detm_s-detailtab = i_lvc_s_deta[].
  APPEND i_lvc_t_detm_s TO i_lvc_t_detm.

  CALL FUNCTION 'LVC_ITEM_DETAIL'
    EXPORTING
      it_fieldcatalog = i_lvc_t_fcat
      is_layout       = i_lvc_s_layo_s
    TABLES
      t_outtab        = i_lvc_t_detm.

ENDFORM.                    " f_get_popup
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_detail
*&amp;amp;---------------------------------------------------------------------*
*Routine to populate details of the selected records
*----------------------------------------------------------------------*
FORM f_fill_detail .
  DATA: l_colname(30) TYPE c,
        l_index TYPE i.
  l_index = 1.

  LOOP AT i_fieldcat INTO i_fieldcat_s.
    l_colname = i_fieldcat_s-fieldname.
    i_lvc_t_detm_s-blockindex = l_index.

    ASSIGN COMPONENT l_colname OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    IF &amp;lt;fs_field&amp;gt; IS NOT INITIAL.
      i_lvc_s_deta_s-columntext = i_fieldcat_s-fieldname.
      i_lvc_s_deta_s-value = &amp;lt;fs_field&amp;gt;.
      APPEND i_lvc_s_deta_s TO i_lvc_s_deta.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " f_fill_detail
****************************************** END ***********************
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code Formatted by: Alvaro Tejada Galindo on May 23, 2008 7:01 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 May 2008 14:49:43 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-05-23T14:49:43Z</dc:date>
    <item>
      <title>Dynamic Internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810111#M916503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my selection screen I have input field S_TAB for the table name as  select options.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to create an internal table Dynamically with the stricture of the table from the selection scree when I loop it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For eg : the internal table  should be ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Loop at S_TAB.&lt;/P&gt;&lt;P&gt;now S_TAB has the vale MARA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to have ITAB the same structure as MARA with header line, SImilarly so on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If possible please suggest without field symbols as I am not vary familar with it..&lt;/P&gt;&lt;P&gt;Please suggest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2008 14:21:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810111#M916503</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-23T14:21:59Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic Internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810112#M916504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
PARAMETERS:
   dbtab TYPE c LENGTH 10,
   rows  TYPE i DEFAULT 100.


  DATA dref TYPE REF TO data.

  FIELD-SYMBOLS:
    &amp;lt;tab&amp;gt;   TYPE ANY TABLE,
    &amp;lt;wa&amp;gt;    TYPE ANY,
    &amp;lt;field&amp;gt; TYPE ANY.


  TRY.
      CREATE DATA dref
        TYPE STANDARD TABLE OF (dbtab) WITH NON-UNIQUE DEFAULT KEY.
      ASSIGN dref-&amp;gt;* TO &amp;lt;tab&amp;gt;.

      SELECT *
             FROM (dbtab) UP TO rows ROWS
             INTO TABLE &amp;lt;tab&amp;gt;.

      LOOP AT &amp;lt;tab&amp;gt; ASSIGNING &amp;lt;wa&amp;gt;.
        DO.
          ASSIGN COMPONENT sy-index OF STRUCTURE &amp;lt;wa&amp;gt; TO &amp;lt;field&amp;gt;.
          IF sy-subrc = 0.
            WRITE / &amp;lt;field&amp;gt;.
          ELSE.
            EXIT.
          ENDIF.
        ENDDO.
        ULINE.
      ENDLOOP.
    CATCH cx_sy_create_data_error.
      WRITE 'Wrong Database!'.
  ENDTRY.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2008 14:37:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810112#M916504</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-23T14:37:49Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic Internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810113#M916505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As per my experience with internal tables, while creating the dynamic internal table one must use field symbols. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Without field symbols it is not possible to create a dynamic internal table. As during runtime, we will come to know about number of rows or columns, it is always good to use field symbols which are given as a boon to SAP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For your understanding I can provide you an example program so that you can understand field symbols easily.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  Zdynamic_table
        NO STANDARD PAGE HEADING
        LINE-SIZE 1023
        LINE-COUNT 35(3)
        MESSAGE-ID zrtc.
TYPE-POOLS : slis.
************************************************************************
*                               TABLES
************************************************************************
*{
TABLES: lfm1,
        bkpf.
*}
************************************************************************
*                            GLOBAL TYPES
*                    naming convention: "T_name"
************************************************************************
*{

TYPES: BEGIN OF t_lfb1,
        lifnr     TYPE lfb1-lifnr,      "Vendor
        mindk     TYPE lfb1-mindk,      "Minority indicator
        cerdt     TYPE lfb1-cerdt,      "Certification date
       END OF t_lfb1,

       BEGIN OF t_lfa1,
        lifnr     TYPE lfa1-lifnr,      "Vendor
        name1     TYPE lfa1-name1,      "Vendor name
       END OF t_lfa1,

       BEGIN OF t_t059t_dis,
        mtext(50) TYPE c        ,      "Text
        count(10) TYPE c        ,      "count
       END OF t_t059t_dis,

       BEGIN OF t_t059t,
        mindk     TYPE t059t-mindk,    "Minority Indicators
        mtext     TYPE t059t-mtext,    "Text
        mark(1)   TYPE c          ,
        count(10) TYPE c          ,    "count
       END OF t_t059t,

       BEGIN OF t_bsak,
        bukrs TYPE bsak-bukrs    ,    "Company Code
        lifnr TYPE bsak-lifnr    ,    "Vendor
        umsks TYPE bsak-umsks    ,    "Transaction Type
        umskz TYPE bsak-umskz    ,    "Indicator
        augdt TYPE bsak-augdt    ,    "Clearing Date
        augbl TYPE bsak-augbl    ,    "Document Number
        zuonr TYPE bsak-zuonr    ,    "assignment Number
        gjahr TYPE bsak-gjahr    ,    "Fiscal Year
        belnr TYPE bsak-belnr    ,    "Accounting Document Number
        buzei TYPE bsak-buzei    ,    "Number of Line Item
        budat TYPE bsak-budat    ,    "Posting Date
        blart TYPE bsak-blart    ,    "Document Type
        shkzg TYPE bsak-shkzg    ,    "Debit/Credit Indicator
        wrbtr TYPE bsak-wrbtr    ,    "Amount
       END OF t_bsak,

       BEGIN OF t_bsik,
        bukrs TYPE bsik-bukrs    ,    "Company Code
        lifnr TYPE bsik-lifnr    ,    "Vendor
        umsks TYPE bsik-umsks    ,    "Transaction Type
        umskz TYPE bsik-umskz    ,    "Indiacator
        augdt TYPE bsik-augdt    ,    "Clearing Date
        augbl TYPE bsik-augbl    ,    "Document Number
        zuonr TYPE bsik-zuonr    ,    "Assignment Number
        gjahr TYPE bsik-gjahr    ,    "Fiscal Year
        belnr TYPE bsik-belnr    ,    "Accounting Document Number
        buzei TYPE bsik-buzei    ,    "Number of Line Item
        budat TYPE bsik-budat    ,    "Posting Date
        blart TYPE bsik-blart    ,    "Document Type
        shkzg TYPE bsik-shkzg    ,    "Debit/Credit Indicator
        wrbtr TYPE bsik-wrbtr    ,    "Amount
       END OF t_bsik,

       BEGIN OF t_det,
        fieldname(20) TYPE c,
        fieldval(20)  TYPE c,
       END OF t_det.
*}
************************************************************************
*                           GLOBAL CONSTANTS
*                    naming convention: "c_name"
************************************************************************
*{
CONSTANTS : c_doc_typ_re(2)   TYPE c              VALUE 'RE'
, "Document type
            c_doc_typ_kr(2)   TYPE c              VALUE 'KR'
, "Document type
*begin of defect
            c_doc_typ_kz(2)   TYPE c              VALUE 'KZ'
, "Document type
            c_doc_typ_kn(2)   TYPE c              VALUE 'KN'
, "Document type
*end of defect
            c_credit          TYPE bsid-shkzg     VALUE 'H'
, "Credit indicator
            c_f_top_of_page   TYPE slis_formname  VALUE 'F_TOP_OF_PAGE'
, "top fo page
            c_space           TYPE c              VALUE space
, "space
            c_cr(4)           TYPE c              VALUE '_CR'
,
            c_ncr(4)          TYPE c              VALUE '_NCR'
,
            c_vendor(6)       TYPE c              VALUE 'VENDOR'
,
            c_name(6)         TYPE c              VALUE 'NAME'
,
            c_credt(20)       TYPE c              VALUE
'CERTIFICATION_DATE', "Certfication Date
            c_null            TYPE sy-datum       VALUE '00000000'
,
            c_1(1)            TYPE c              VALUE '1'
,
            c_bukrs(4)        TYPE c              VALUE '200'
,
*  Begin of Defect 40862
            c_user_command    TYPE slis_formname  VALUE 'USER_COMMAND'
,
            c_25              TYPE char2          VALUE '25'
,
            c_35              TYPE char2          VALUE '35'
,
            c_55              TYPE char2          VALUE '55'
,
            c_s               TYPE char1          VALUE 'S'
,
            c_usd             TYPE char3          VALUE 'USD'
,
            c_20              TYPE char2          VALUE '20'
,
            c_dash            TYPE char1          VALUE '-'
,
            c_value           TYPE char5          VALUE 'VALUE'
,
            c_columntext      TYPE char10         VALUE 'COLUMNTEXT'
,
            c_30              TYPE char2          VALUE '30'
,
            c_ic1             TYPE char4          VALUE '&amp;amp;IC1'
,
            c_p               TYPE char1          VALUE 'P'
,
            c_16              TYPE char2          VALUE '16'
,
*  End of Defect 40862
            c_x(1)            TYPE c              VALUE 'X'
.



*}
************************************************************************
*                     GLOBAL ELEMENTARY VARIABLES
*                     naming convention: "g_name"
************************************************************************
*{
DATA : g_wrbtr              TYPE bsak-wrbtr ,  " Amount
       g_sum                TYPE bsak-wrbtr ,  " Sum of amount
       g_sum_ncr(16)        TYPE c          ,  " Sum of amount
       g_sum_cr(16)         TYPE c          ,  " Sum of amount
       g_count(10)          TYPE c          ,  "Count
       g_flag(1)            TYPE c          .  "Flag
*}
************************************************************************
*                           GLOBAL STRUCTURES
*                     naming convention: "i_name"
************************************************************************
*{
DATA : i_lfb1_s         TYPE t_lfb1                , "Structure for user
defined type
       i_lfa1_s         TYPE t_lfa1                , "Structure for user
defined type
       i_fldlayout_s    TYPE slis_layout_alv       , "Structure for
layout of ALV
       i_header_alv_s   TYPE slis_listheader       , "Structure for
Header
       i_t_fieldcat_s   TYPE slis_t_fieldcat_alv   , "Structure for
fieldcat.
       i_fieldcat_s     LIKE LINE OF i_t_fieldcat_s, "Structure for
fieldcat.
       i_t059t_s        TYPE t_t059t               , "Structure user
defined type
       i_t059t_fnl_s    TYPE t_t059t               , "Structure user
defined type
       i_fcat_s         TYPE lvc_s_fcat            ,
       i_final_s        TYPE t_bsak                , "Structure user
defined type
       i_t059t_dis_s    TYPE t_t059t_dis           , "Structure user
defined type
       i_budat_s        TYPE fagl_range_budat      ,
       i_lvc_t_fcat_s   TYPE lvc_s_fcat,
       i_lvc_s_layo_s   TYPE lvc_s_layo,
       i_lvc_t_detm_s   TYPE lvc_s_detm,
       i_lvc_s_deta_s   TYPE lvc_s_deta.
*}
************************************************************************
*                        GLOBAL INTERNAL TABLES
*                      naming convention: "i_name"
************************************************************************
*{
DATA : i_lfb1         TYPE TABLE OF t_lfb1      , "Internal table for
user defined type
       i_lfa1         TYPE TABLE OF t_lfa1      , "Internal table for
user defined type
       i_t059t        TYPE TABLE OF t_t059t     , "Internal table for
user defined type
       i_t059t_dis    TYPE TABLE OF t_t059t_dis ,
       i_t059t_fnl    TYPE TABLE OF t_t059t     , "Internal table for
user defined type
       i_fieldcat     TYPE slis_t_fieldcat_alv  , "Internal table for
fieldcat.
       i_events       TYPE slis_t_event        , "Internal table for
event
       i_header_alv   TYPE slis_t_listheader    , "Internal table for
header
       i_fcat         TYPE TABLE OF lvc_s_fcat  , "Field cat. of dynamic
table
       i_sel_rows     TYPE REF TO data          , "For creating dynamic
table
       i_new_line     TYPE REF TO data          ,
       i_bsak         TYPE TABLE OF t_bsak      , "Internal table for
user defined type
       i_bsik         TYPE TABLE OF t_bsik      , "Internal table for
user defined type
       i_final        TYPE TABLE OF t_bsak      , "Internal table for
user defined type
       i_lvc_t_fcat   TYPE TABLE OF lvc_s_fcat,
       i_lvc_t_detm   TYPE TABLE OF lvc_s_detm,
       i_lvc_s_deta   TYPE TABLE OF lvc_s_deta.
*}
************************************************************************
*                            FIELD-SYMBOLS
*                      naming convention: "&amp;lt;FS_&amp;gt;name"
************************************************************************
*{
FIELD-SYMBOLS : &amp;lt;fs_table&amp;gt;    TYPE STANDARD TABLE,  "For dynamic table
                &amp;lt;fs_line&amp;gt;     TYPE ANY           ,  "For row of dynamic
table
                &amp;lt;fs_field&amp;gt;    TYPE ANY           .  "For field of
dynamic table
*}
************************************************************************
*                       PARAMETERS &amp;amp; SELECT-OPTIONS
*                  aming convention: "p_name" &amp;amp; "s_name"
************************************************************************
*{
SELECTION-SCREEN BEGIN OF BLOCK  b1 WITH FRAME TITLE text-001.
PARAMETERS     : p_bukrs TYPE lfb1-bukrs OBLIGATORY DEFAULT c_bukrs."
'200' .

SELECT-OPTIONS : s_lifnr FOR lfm1-lifnr                ,
                 s_budat FOR bkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK  b2 WITH FRAME TITLE text-001.

PARAMETERS:  p_crt  RADIOBUTTON GROUP rad1            ,
             p_ncrt RADIOBUTTON GROUP rad1            ,
             p_all  RADIOBUTTON GROUP rad1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK b2.
*}
************************************************************************
*                       AT SELECTION-SCREEN ON &amp;lt;Field&amp;gt;
************************************************************************
*{
AT SELECTION-SCREEN ON p_bukrs.
* Validating Company Code
  PERFORM f_validate_company_code.

AT SELECTION-SCREEN ON s_lifnr.
* Validating Vendor
  PERFORM f_validate_vendor.
*}
************************************************************************
*                            START-OF-SELECTION
************************************************************************
*{
START-OF-SELECTION.

* Getting data from lfb1
  PERFORM f_get_lfb1.

  CHECK NOT i_lfb1[] IS INITIAL.

* Getting data from lfa1
  PERFORM f_get_lfa1.

* Getting data from bsak
  PERFORM f_get_bsak.

* Getting data from bsik
  PERFORM f_get_bsik.
*}
************************************************************************
*                           END-OF-SELECTION
************************************************************************
*{
END-OF-SELECTION.

  IF NOT i_final[] IS INITIAL.

*   Getting all fields of dynamic table
    PERFORM f_get_mandk.

*   Creating dyanmic table
    PERFORM f_create_dynamic_table.

*   Creating Dynamic table and filling data to dynamic table table
    PERFORM f_fill_output.

*   For displaying output
    PERFORM f_display.
  ELSE.

    MESSAGE s105(zrtc).                          " WITH 'No data found
for this selection criteria.'(008).
  ENDIF.
*}
************************************************************************
*                                FORMS
*                    naming convention: "f_name"
************************************************************************
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  validate_company_code
*&amp;amp;---------------------------------------------------------------------*
*       Validating company code
*----------------------------------------------------------------------*

FORM f_validate_company_code .

  DATA : l_t001 TYPE t001-bukrs.
  CLEAR l_t001.
  SELECT bukrs
    INTO l_t001
    FROM t001
    UP TO 1 ROWS
   WHERE bukrs EQ p_bukrs.
  ENDSELECT.

  IF sy-subrc NE 0.
    MESSAGE e043.           " WITH 'Invalid Company Code'(003).
*-- This is to get rid of Extended check.
    IF l_t001 IS INITIAL.
      CLEAR l_t001.
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_company_code
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  validate_vendor
*&amp;amp;---------------------------------------------------------------------*
*       Validating Vendor
*----------------------------------------------------------------------*
FORM f_validate_vendor .

  DATA : l_lfa1 TYPE lfa1-lifnr.
  CLEAR l_lfa1.

  IF NOT  s_lifnr[] IS INITIAL.

    SELECT lifnr
      INTO l_lfa1
      FROM lfa1
      UP TO 1 ROWS
     WHERE lifnr IN s_lifnr.
    ENDSELECT.
    IF sy-subrc NE 0.
      MESSAGE e118.                    "WITH 'Invalid Vendor
Number.'(010).
*-- This is to get rid of Extended check.
      IF l_lfa1 IS INITIAL.
        CLEAR l_lfa1.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_vendor
*---------------------------------------------------------------------*
*      Form  f_get_lfb1
*---------------------------------------------------------------------*
*     Getting data from table lfb1 into into internal table
*     according to the condition
*----------------------------------------------------------------------*
FORM f_get_lfb1 .

  REFRESH i_lfb1.

  SELECT lifnr
         mindk
         cerdt
    INTO TABLE i_lfb1
    FROM lfb1
   WHERE lifnr IN s_lifnr
     AND bukrs EQ p_bukrs
     AND mindk NE c_space.
  IF sy-subrc EQ 0.
    SORT i_lfb1 BY lifnr.
  ENDIF.

ENDFORM.                    " f_get_lfb1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_lfa1
*&amp;amp;---------------------------------------------------------------------*
*       Getting vendor name from table lfa1 into internal table
*       according to the condition
*----------------------------------------------------------------------*
FORM f_get_lfa1 .

  REFRESH i_lfa1.

  IF NOT i_lfb1 IS INITIAL.

    SELECT lifnr
           name1
      INTO TABLE i_lfa1
      FROM lfa1
       FOR ALL  ENTRIES IN i_lfb1
     WHERE lifnr EQ i_lfb1-lifnr.
    IF sy-subrc EQ 0.
      SORT i_lfa1 BY lifnr.
    ENDIF.
  ENDIF.

ENDFORM.                    " f_get_lfa1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_bsak
*&amp;amp;---------------------------------------------------------------------*
*        Getting document no from table bsak into internal table
*        according to the condition
*----------------------------------------------------------------------*
FORM f_get_bsak .

  REFRESH: i_bsak.         "Defect 40862
  IF NOT i_lfb1 IS INITIAL.
*defect added document types
    SELECT bukrs
           lifnr
           umsks
           umskz
           augdt
           augbl
           zuonr
           gjahr
           belnr
           buzei
           budat
           blart
           shkzg
           wrbtr
      FROM bsak
      INTO TABLE i_bsak
       FOR ALL ENTRIES IN i_lfb1
     WHERE lifnr EQ i_lfb1-lifnr
       AND bukrs EQ p_bukrs
       AND budat IN s_budat
       AND ( blart EQ c_doc_typ_re
        OR   blart EQ c_doc_typ_kr
        OR   blart EQ c_doc_typ_kn
        OR   blart EQ c_doc_typ_kz ).

*end of document types
    APPEND LINES OF i_bsak TO i_final.
  ENDIF.

ENDFORM.                    " f_get_bsak
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_bsik
*&amp;amp;---------------------------------------------------------------------*
*      Getting data from table bsik into internal table
*      according to the condition
*----------------------------------------------------------------------*
FORM f_get_bsik .

  REFRESH: i_bsik.    "Defect 40862
  IF NOT i_lfb1 IS INITIAL.
*defect added document types
    SELECT bukrs
           lifnr
           umsks
           umskz
           augdt
           augbl
           zuonr
           gjahr
           belnr
           buzei
           budat
           blart
           shkzg
           wrbtr
     FROM  bsik
     INTO TABLE i_bsik
      FOR ALL ENTRIES IN i_lfb1
    WHERE lifnr EQ i_lfb1-lifnr
      AND bukrs EQ p_bukrs
      AND budat IN s_budat
      AND ( blart EQ c_doc_typ_re
       OR   blart EQ c_doc_typ_kr
        OR   blart EQ c_doc_typ_kn
        OR   blart EQ c_doc_typ_kz ).
*defect ended document types
    APPEND LINES OF i_bsik TO i_final.
  ENDIF.

ENDFORM.                    " f_get_bsik
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_output
*&amp;amp;---------------------------------------------------------------------*
*    Creating dynamic table , getting data and  filling that data to
*    dynamic table for display according to the condition
*----------------------------------------------------------------------*
FORM f_fill_output .

  DATA : l_cert_dt TYPE c LENGTH 10,
         l_lifnr TYPE lfa1-lifnr.

  CLEAR:  g_wrbtr   ,
          g_sum     .

* Sorting tables by vendor
  SORT : i_t059t_fnl BY mindk,
         i_final BY lifnr belnr buzei.

* Calculating the amount and filling that data into dynamic table
  LOOP AT i_final INTO i_final_s.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = i_final_s-lifnr
      IMPORTING
        output = l_lifnr.

    AT NEW lifnr.
      CLEAR : g_sum.
    ENDAT.

*   Making Amount negative if credit
    IF i_final_s-shkzg EQ  c_credit.
*      g_wrbtr = i_final_s-wrbtr * -1.
      g_wrbtr = i_final_s-wrbtr.

    ELSE.
*      g_wrbtr = i_final_s-wrbtr.
      g_wrbtr = i_final_s-wrbtr * -1.

    ENDIF.

    g_sum = g_sum + g_wrbtr.

    AT END OF lifnr.
*     Filling data into Dynamic table according to the condition .
      CLEAR i_lfb1_s.
      READ TABLE i_lfb1 INTO i_lfb1_s WITH KEY lifnr = i_final_s-lifnr
                                               BINARY SEARCH.
      IF sy-subrc EQ 0.

        CREATE DATA i_new_line LIKE LINE OF &amp;lt;fs_table&amp;gt;.
        ASSIGN i_new_line-&amp;gt;* TO &amp;lt;fs_line&amp;gt;.

        ASSIGN COMPONENT c_vendor OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
        &amp;lt;fs_field&amp;gt; = l_lifnr.
        CLEAR i_lfa1_s.
        READ TABLE i_lfa1 INTO i_lfa1_s WITH KEY lifnr = i_final_s-lifnr
                                                 BINARY SEARCH.
        IF sy-subrc EQ 0.
          ASSIGN COMPONENT c_name OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
          &amp;lt;fs_field&amp;gt; =  i_lfa1_s-name1.

          ASSIGN COMPONENT c_credt OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
          WRITE : i_lfb1_s-cerdt TO l_cert_dt DD/MM/YYYY,
                  i_lfb1_s-cerdt  TO i_lfb1_s-cerdt.
          IF i_lfb1_s-cerdt EQ c_null.
            &amp;lt;fs_field&amp;gt; =  c_space.
          ELSE.
            &amp;lt;fs_field&amp;gt; =  l_cert_dt.
          ENDIF.           " if sy-subrc eq 0(READ TABLE i_lfa1)

*         Filling data according to minority indicator
          PERFORM f_fill_amt_ind.

        ENDIF .        " if sy-subrc eq 0 (READ TABLE i_lfb1)

        CLEAR: i_final_s   ,
               i_lfa1_s    ,
               g_wrbtr     ,
               i_lfb1_s    .
      ENDIF.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " f_fill_output
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  Display
*&amp;amp;---------------------------------------------------------------------*
*       For display the ALV Report
*----------------------------------------------------------------------*
FORM f_display .

  DATA : lw_repid LIKE sy-repid,
         l_slis_exit_by_user TYPE slis_exit_by_user.

  lw_repid = sy-repid.

* Creating field cat. for ALV
  PERFORM populate_fldcat_alv.

* Creating Layout.
  PERFORM populate_layout.

* Creating Event
  PERFORM f_get_events.

* Creating Top Of Page
  PERFORM f_top_of_page.

*  Call Function for ALV GRID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lw_repid
      it_fieldcat             = i_fieldcat
      is_layout               = i_fldlayout_s
      it_events               = i_events
      i_callback_user_command = c_user_command     "Defect 40862
    IMPORTING
      es_exit_caused_by_user  = l_slis_exit_by_user
    TABLES
      t_outtab                = &amp;lt;fs_table&amp;gt;
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

  IF sy-subrc &amp;lt;&amp;gt; 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF  l_slis_exit_by_user EQ c_x.
    LEAVE LIST-PROCESSING .
  ENDIF.
  UNASSIGN:&amp;lt;fs_field&amp;gt;,&amp;lt;fs_line&amp;gt;.

ENDFORM.                    " Display
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_fldcat
*&amp;amp;---------------------------------------------------------------------*
*       Filling fieldcat for dynamic table
*----------------------------------------------------------------------*
FORM populate_fldcat .

  REFRESH i_fcat.
  CLEAR: i_t059t_s,
         i_fcat_s.

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_vendor.
  i_fcat_s-outputlen       = c_25.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_name.
  i_fcat_s-outputlen       = c_25.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  i_fcat_s-key             = c_x.
  i_fcat_s-fieldname       = c_credt.
  i_fcat_s-outputlen       = c_35.       "Defect 40862

  APPEND i_fcat_s TO i_fcat .
  CLEAR: i_fcat_s .

  CLEAR i_t059t_fnl_s.

  LOOP AT i_t059t_fnl INTO i_t059t_fnl_s.

    CLEAR i_fcat_s.

    CLEAR i_t059t_s.
    i_fcat_s-key            = c_x.
    i_fcat_s-fieldname      = i_t059t_fnl_s-mtext.
    i_fcat_s-outputlen      = c_55.        "Defect 40862

    APPEND i_fcat_s TO i_fcat .
    CLEAR: i_fcat_s ,
           i_t059t_fnl_s,
           i_t059t_fnl_s.
  ENDLOOP.
ENDFORM.                    " populate_fldcat
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_layout
*&amp;amp;---------------------------------------------------------------------*
*      Filling layout
*----------------------------------------------------------------------*
FORM populate_layout .

  i_fldlayout_s-zebra            = c_x         .
  i_fldlayout_s-window_titlebar  = 'Purchasing from Minority
Vendors'(014).
  i_fldlayout_s-get_selinfos     = c_x        .
  i_fldlayout_s-expand_all       = c_space          .     "Defect 40862
  i_fldlayout_s-no_scrolling     = c_x.

ENDFORM.                    " populate_layout
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_events
*&amp;amp;---------------------------------------------------------------------*
*       For Event
*----------------------------------------------------------------------*
FORM f_get_events .

  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = i_events.

  READ TABLE i_events WITH KEY name = slis_ev_top_of_page
                           INTO ls_event.
  IF sy-subrc EQ 0.
    MOVE c_f_top_of_page TO ls_event-form.
    MODIFY  i_events FROM ls_event INDEX  sy-tabix.
  ENDIF.
ENDFORM.                    " f_get_events
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_top_of_page
*&amp;amp;---------------------------------------------------------------------*
*       For top of page
*----------------------------------------------------------------------*
FORM f_top_of_page .

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_header_alv.

  PERFORM f_fill_header.

ENDFORM.                    " f_top_of_page
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_header
*&amp;amp;---------------------------------------------------------------------*
*       Filling data for Top Of Page
*----------------------------------------------------------------------*
FORM f_fill_header .
  DATA : l_date_low    TYPE c LENGTH 10,
         l_date_high   TYPE c LENGTH 20,
         l_sum_cr(20)  TYPE c,
         l_sum_cr_tmp  TYPE p DECIMALS 2,
         l_sum_ncr_tmp TYPE p DECIMALS 2,
         l_sum_ncr(20) TYPE c,
         l_total(20)   TYPE c.

  IF g_flag EQ c_space.

    LOOP AT s_budat INTO i_budat_s.
      i_header_alv_s-typ = c_s.         "Defect 40862

      WRITE : i_budat_s-low  TO l_date_low MM/DD/YYYY ,
              i_budat_s-high TO l_date_high MM/DD/YYYY.
      CONCATENATE text-019 l_date_low c_dash l_date_high INTO
i_header_alv_s-info
                                                   SEPARATED BY c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDLOOP.

    IF p_crt EQ c_x
    OR p_all EQ c_x.
      i_header_alv_s-typ = c_s.           "Defect 40862
      MOVE g_sum_cr TO l_sum_cr_tmp.
      WRITE l_sum_cr_tmp TO l_sum_cr CURRENCY c_usd.
"Defect 40862
      CONCATENATE  text-004 c_usd l_sum_cr INTO i_header_alv_s-info
"Defect 40862
                                                     SEPARATED BY
c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDIF.

    IF p_ncrt EQ c_x
    OR p_all  EQ c_x.
      i_header_alv_s-typ = c_s.          "Defect 40862
      MOVE g_sum_ncr TO l_sum_ncr_tmp.
      WRITE l_sum_ncr_tmp TO l_sum_ncr CURRENCY c_usd.
"Defect 40862
      CONCATENATE  text-002 c_usd l_sum_ncr INTO i_header_alv_s-info
"Defect 40862
                                                     SEPARATED BY
c_space.
      APPEND i_header_alv_s TO i_header_alv.
      CLEAR:i_header_alv_s.
    ENDIF.

    l_total = g_sum_cr + g_sum_ncr.
    i_header_alv_s-typ = c_s.         "Defect 40862
    MOVE  l_total TO l_sum_ncr_tmp.
    WRITE  l_sum_ncr_tmp TO l_total CURRENCY c_usd.
"Defect 40862
    CONCATENATE  text-020 c_usd l_total INTO i_header_alv_s-info
"Defect 40862
                                               SEPARATED BY c_space.
    APPEND i_header_alv_s TO i_header_alv.
    CLEAR:i_header_alv_s.

    g_flag = c_x.
    CLEAR:i_header_alv_s.

  ENDIF.
ENDFORM.                    " f_fill_header
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_amt_ind
*&amp;amp;---------------------------------------------------------------------*
*       Filling data into dynamic table according to indicator and
*       also calculating sum of all amount of certified/non-certified
*----------------------------------------------------------------------*
FORM f_fill_amt_ind .

  DATA: w_mindk(40) TYPE c.

  MOVE i_lfb1_s-mindk TO w_mindk.
  CASE i_lfb1_s-mindk.

    WHEN w_mindk.
*   For Certified .
      IF  i_lfb1_s-cerdt NE c_null.
        IF p_crt EQ c_x OR p_all EQ c_x.
          CLEAR i_t059t_fnl_s.
          READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY mindk =
i_lfb1_s-mindk
                                                             mark  =
c_x.
          IF sy-subrc EQ  0.
            ASSIGN COMPONENT i_t059t_fnl_s-mtext OF STRUCTURE &amp;lt;fs_line&amp;gt;
TO &amp;lt;fs_field&amp;gt;.
            MOVE g_sum TO &amp;lt;fs_field&amp;gt; .
            INSERT &amp;lt;fs_line&amp;gt; INTO TABLE &amp;lt;fs_table&amp;gt;.
*           Calculating sum of Certified .
            g_sum_cr = g_sum_cr + g_sum .
          ENDIF.           " IF sy-subrc eq  0(READ TABLE i_t059t_fnl)
        ENDIF.
      ELSE.
*       For Non-Certified.
        IF p_ncrt EQ c_x OR p_all EQ c_x.
          CLEAR i_t059t_fnl_s.
          READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY mindk =
i_lfb1_s-mindk
                                                             mark  =
c_space.
          IF sy-subrc EQ  0.
            ASSIGN COMPONENT i_t059t_fnl_s-mtext OF STRUCTURE &amp;lt;fs_line&amp;gt;
TO &amp;lt;fs_field&amp;gt;.
            MOVE g_sum TO &amp;lt;fs_field&amp;gt; .

            INSERT &amp;lt;fs_line&amp;gt; INTO TABLE &amp;lt;fs_table&amp;gt;.
*           Calculating sum of Non-Certified .
            g_sum_ncr = g_sum_ncr + g_sum .
          ENDIF  .                        " IF sy-subrc eq  0(READ TABLE
i_t059t_fnl)
        ENDIF.
      ENDIF.
  ENDCASE.
  UNASSIGN:&amp;lt;fs_line&amp;gt;.

ENDFORM.                    " f_fill_amt_ind
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_mandk
*&amp;amp;---------------------------------------------------------------------*
*       Getting data from table t059t into internal table for getting
*       field of dynamic table
*----------------------------------------------------------------------*
FORM f_get_mandk .

  REFRESH i_t059t.

  SELECT mindk
         mtext
    FROM t059t
    INTO TABLE i_t059t
   WHERE spras EQ sy-langu.
  IF sy-subrc EQ 0.
*   Getting  fields of dynamic table
    PERFORM f_fill_final_table.
  ENDIF.
ENDFORM.                    " get_mandk
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_cerate_dynamic_table
*&amp;amp;---------------------------------------------------------------------*
*       Making field cat. and creating dynamic table
*----------------------------------------------------------------------*
FORM f_create_dynamic_table .

* Filling field cat. for dynamic table
  PERFORM populate_fldcat.

* For Creating dynamic table
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING
      i_style_table             = c_x
      it_fieldcatalog           = i_fcat
    IMPORTING
      ep_table                  = i_sel_rows
    EXCEPTIONS
      generate_subpool_dir_full = 1
      OTHERS                    = 2.

  ASSIGN i_sel_rows-&amp;gt;* TO &amp;lt;fs_table&amp;gt;.

ENDFORM.                    " f_cerate_dynamic_table
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_final_table
*&amp;amp;---------------------------------------------------------------------*
*      Getting  fields of dynamic table
*----------------------------------------------------------------------*
FORM f_fill_final_table .

  DATA: l_text(50) TYPE c.

  g_count = c_1.

  REFRESH i_t059t_fnl.
  LOOP AT i_t059t INTO i_t059t_s.

    CONCATENATE  i_t059t_s-mtext c_cr INTO l_text.
    CONDENSE l_text NO-GAPS.
    TRANSLATE l_text TO UPPER CASE.
    MOVE:  g_count TO i_t059t_fnl_s-count ,
         i_t059t_s-mindk TO i_t059t_fnl_s-mindk,
         l_text          TO i_t059t_fnl_s-mtext,
         c_x             TO i_t059t_fnl_s-mark.
    APPEND i_t059t_fnl_s TO i_t059t_fnl.

    CLEAR : i_t059t_fnl_s,
            l_text.
    CONCATENATE i_t059t_s-mtext  ' (Certified)'(011) INTO l_text.
    MOVE :  g_count        TO i_t059t_dis_s-count ,
            l_text         TO i_t059t_dis_s-mtext.
    APPEND i_t059t_dis_s   TO i_t059t_dis.

    CLEAR : l_text.

    g_count = g_count + 1.
    CONCATENATE  i_t059t_s-mtext c_ncr INTO l_text.
    CONDENSE l_text NO-GAPS.
    TRANSLATE l_text TO UPPER CASE.
    MOVE: g_count        TO i_t059t_fnl_s-count ,
         i_t059t_s-mindk TO i_t059t_fnl_s-mindk,
         l_text          TO i_t059t_fnl_s-mtext,
         c_space         TO i_t059t_fnl_s-mark.
    CLEAR l_text.
    APPEND i_t059t_fnl_s TO i_t059t_fnl.

    CLEAR: i_t059t_fnl_s.

    CONCATENATE i_t059t_s-mtext ' (Non-Certified)'(009) INTO l_text.
    MOVE : g_count TO i_t059t_dis_s-count ,
          l_text TO i_t059t_dis_s-mtext.
    APPEND i_t059t_dis_s TO i_t059t_dis.
    g_count = g_count + 1.
    CLEAR : l_text,
            i_t059t_s.
  ENDLOOP.
ENDFORM.                    " f_fill_final_table
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  populate_fldcat_alv
*&amp;amp;---------------------------------------------------------------------*
*       Creating field cat.for ALV GRID
*&amp;amp;---------------------------------------------------------------------*
FORM populate_fldcat_alv .
  REFRESH i_fieldcat.
  CLEAR: i_t059t_s,
        i_fieldcat_s.

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_vendor.
  i_fieldcat_s-seltext_l       = text-005.
  i_fieldcat_s-outputlen       = c_25.         "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat .
  CLEAR: i_fieldcat_s .

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_name.
  i_fieldcat_s-seltext_l       = text-006.
  i_fieldcat_s-outputlen       = c_25.        "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat .
  CLEAR: i_fieldcat_s .

  i_fieldcat_s-key             = c_x.
  i_fieldcat_s-fieldname       = c_credt.
  i_fieldcat_s-seltext_l       = text-007.
  i_fieldcat_s-outputlen       = c_35.        "Defect 40862

  APPEND i_fieldcat_s TO i_fieldcat.
  CLEAR: i_fieldcat_s .

  CLEAR i_t059t_dis_s.
  LOOP AT i_t059t_dis INTO i_t059t_dis_s.

    READ TABLE i_t059t_fnl INTO i_t059t_fnl_s WITH KEY count =
i_t059t_dis_s-count.

    IF sy-subrc EQ 0.
      CLEAR i_fieldcat_s.

      CLEAR i_t059t_s.
      CONCATENATE i_t059t_fnl_s-mindk i_t059t_dis_s-mtext INTO
i_t059t_dis_s-mtext
                                                          SEPARATED BY
c_space.
      i_fieldcat_s-key           = c_x.
      i_fieldcat_s-fieldname     = i_t059t_fnl_s-mtext.
      i_fieldcat_s-seltext_l     = i_t059t_dis_s-mtext.
      i_fieldcat_s-do_sum        = c_x.
      i_fieldcat_s-outputlen     = c_16.         "Defect 40862
      i_fieldcat_s-inttype       = c_p.          "Defect 40862

      APPEND i_fieldcat_s TO i_fieldcat.
      CLEAR: i_fieldcat_s ,
             i_t059t_dis_s.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " populate_fldcat_alv
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  user_command
*&amp;amp;---------------------------------------------------------------------*
*Routine for trapping double click event
*----------------------------------------------------------------------*
*      --&amp;gt;UCOMM      text
*      --&amp;gt;SELFIELD   text
*----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm                 "#EC CALLED
      selfield      TYPE slis_selfield.
  CASE ucomm.

    WHEN c_ic1.                        "Defect 40862
      READ TABLE &amp;lt;fs_table&amp;gt; ASSIGNING &amp;lt;fs_line&amp;gt; INDEX selfield-tabindex.
      IF sy-subrc EQ 0.                "Defect 40862
        PERFORM f_get_popup.
      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_get_popup
*&amp;amp;---------------------------------------------------------------------*
*Routine to call popup screen
*----------------------------------------------------------------------*
FORM f_get_popup .
  REFRESH:i_lvc_t_detm,i_lvc_t_fcat,i_lvc_s_deta.
  CLEAR i_lvc_t_fcat_s.
  i_lvc_t_fcat_s-fieldname = c_columntext.  "Defect 40862
  i_lvc_t_fcat_s-key       = c_x.
  i_lvc_t_fcat_s-outputlen = c_30.          "Defect 40862
  i_lvc_t_fcat_s-seltext   = 'Group Description'(012).
  APPEND i_lvc_t_fcat_s TO i_lvc_t_fcat.
  CLEAR:i_lvc_t_fcat_s .

  i_lvc_t_fcat_s-fieldname = c_value.       "Defect 40862
  i_lvc_t_fcat_s-outputlen = c_20.          "Defect 40862
  i_lvc_t_fcat_s-seltext   = 'contents'(013).
  APPEND i_lvc_t_fcat_s TO i_lvc_t_fcat.

  i_lvc_s_layo_s-no_toolbar = c_x.

  PERFORM f_fill_detail.

  i_lvc_t_detm_s-detailtab = i_lvc_s_deta[].
  APPEND i_lvc_t_detm_s TO i_lvc_t_detm.

  CALL FUNCTION 'LVC_ITEM_DETAIL'
    EXPORTING
      it_fieldcatalog = i_lvc_t_fcat
      is_layout       = i_lvc_s_layo_s
    TABLES
      t_outtab        = i_lvc_t_detm.

ENDFORM.                    " f_get_popup
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f_fill_detail
*&amp;amp;---------------------------------------------------------------------*
*Routine to populate details of the selected records
*----------------------------------------------------------------------*
FORM f_fill_detail .
  DATA: l_colname(30) TYPE c,
        l_index TYPE i.
  l_index = 1.

  LOOP AT i_fieldcat INTO i_fieldcat_s.
    l_colname = i_fieldcat_s-fieldname.
    i_lvc_t_detm_s-blockindex = l_index.

    ASSIGN COMPONENT l_colname OF STRUCTURE &amp;lt;fs_line&amp;gt; TO &amp;lt;fs_field&amp;gt;.
    IF &amp;lt;fs_field&amp;gt; IS NOT INITIAL.
      i_lvc_s_deta_s-columntext = i_fieldcat_s-fieldname.
      i_lvc_s_deta_s-value = &amp;lt;fs_field&amp;gt;.
      APPEND i_lvc_s_deta_s TO i_lvc_s_deta.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " f_fill_detail
****************************************** END ***********************
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code Formatted by: Alvaro Tejada Galindo on May 23, 2008 7:01 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2008 14:49:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810113#M916505</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-23T14:49:43Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamic Internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810114#M916506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dynamic table means the only and best way is using field-symbols, bcoz it holds any data or structure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Get the fieldcatalog of the given table using reuse_fieldcatalog_merge  fm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And create the table using method.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : i_table TYPE REF TO data,  &lt;/P&gt;&lt;P&gt;            fs_line  TYPE REF TO data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 Field symbols&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS:&lt;/P&gt;&lt;P&gt;  &amp;lt;i_output&amp;gt; TYPE STANDARD TABLE,&lt;/P&gt;&lt;P&gt;  &amp;lt;fs_output&amp;gt;,                         " Used for Header line&lt;/P&gt;&lt;P&gt;  &amp;lt;w_data&amp;gt;.                            " Used to assignment of&lt;/P&gt;&lt;P&gt;                                                 component&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT i_fldcat[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        it_fieldcatalog           = i_fldcat[]&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        ep_table                  = i_table&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        generate_subpool_dir_full = 1&lt;/P&gt;&lt;P&gt;        OTHERS                    = 2&lt;/P&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    ENDIF.                             " IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ASSIGN i_table-&amp;gt;* TO &amp;lt;i_output&amp;gt;.&lt;/P&gt;&lt;P&gt;    CREATE DATA fs_line LIKE LINE OF &amp;lt;i_output&amp;gt;.&lt;/P&gt;&lt;P&gt;    ASSIGN fs_line-&amp;gt;* TO &amp;lt;fs_output&amp;gt;.&lt;/P&gt;&lt;P&gt;  ENDIF.                               " IF NOT i_fldcat[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is the way u need to workout for all the tables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Venkat.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2008 14:51:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-internal-table/m-p/3810114#M916506</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-23T14:51:19Z</dc:date>
    </item>
  </channel>
</rss>

