Sorting on Field Symbols

Hi,
  I have created ztable and table maintenance generator for the same.  So its already generated code like
PROCESS BEFORE OUTPUT.
  MODULE LISTE_INITIALISIEREN.
  LOOP AT EXTRACT WITH CONTROL
   TCTRL_YS014 CURSOR NEXTLINE.
    MODULE LISTE_SHOW_LISTE.
  ENDLOOP.  etc....
Here EXTRACT Is a internal table of type ANY... Now i am getting records sorted by key fields of Z-table.
But I need Sort by some other fields.. So i am trying to sort EXTRACT but not able to...
Can anybody helpme on this..
Rayudu

Hi rayudu,
         this process may help u.Please check.
FIELD-GROUPS: HEADER, ORDER, PRODUCT.
use insert statement to add the field to teh field-group which u want
to sort.
use extract statement to populate u r field-group.
And sort by field.
Thanks,
Vamsi

Similar Messages

  • How to use field-symbols in MODIFY ... TRANSPORTING and SORT

    Hi,
    I need to increase the performance of an abap report using the field-symbols. More exactly  the code is the following.
    TYPES:
      BEGIN OF itab_structure.
         INCLUDE STRUCTURE nameofstructure.
      TYPES:
         RECNO   LIKE sy-tabix,
      END OF itab_structure.
    DATA:
      itab TYPE STANDARD TABLE OF  itab_structure
           WITH HEADER LINE
           WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
    SORT itab ASCENDING BY f1.
    LOOP AT itab WHERE f1 = '10'.
        itab-fn= value-n.
    MODIFY itab
                 TRANSPORTING  fx fy fz ft     
                        WHERE  f1   = c1_filed AND
                                      f2   = c2_field.
    ENDLOOP.
    I need your suggestions in this kind of conversion or solution.
    SORT itab ASCENDING BY f1 (<-- I don't know if in this case the better performances should be obtained using field symbols and in which way)
    FIELD-SYMBOLS: <fs_itab_line> TYPE LINE OF itab.
    LOOP AT itab ASSIGNING <fs_itab_line> WHERE
    <fs_itab_line>-f1 = '10'.
    MODIFY itab 
                 TRANSPORTING  fx fy fz ft     
                        WHERE  f1   = c1_filed AND
                                      f2   = c2_field.
    (I don't know if in this case the better performances should be obtained using field symbols and in which way)
    ENDLOOP.
    I wish to implement the field symbols or the better performance in terms of execution time in all my abap code, where it is possible.
    Any suggestion will be well appreciated.
    Thanks in advance for your kind support.
    Regards,
           Giovanni

    Dear All,
    I have appeciated your suggestions and I can conclude these points in my case:
    1) The "sort" statement is not optimized in a different way using filed-symbols
    2) The loop with "where" condition on a standard table is performed using filed-symbols
    But ... my last point to investigate is about the statement MODIFY table TRANSPORTING f1, f2 WHERE conditions.
    More exactly, in my code the execution logic of the abap code expects a global modification of the same table at the end of every (primary) loop, using the MODYFY statement.
    In other words in my code I can locate two loops on the same table in the following logic:
    LOOP AT table1 WHERE f1 = '10'. (#1)
          updates to table1
          set c1_filed, c2_filed
          LOOP AT table1.   (#2)            
             IF f1 = c1_filed AND
                f2 = c2_filed.
               table1-fx = 'x'.
               table1-fy = 'y'.
               table1-fz = 'z'.
               table1-ft = 't'.   
             ENDIF.                 
             MODIFY table1.            
          ENDLOOP.   (#2)              
    ENDLOOP.   (#1)
    In better way (maybe more fast in terms of execution time) to modify a set of lines (MODIFY...TRANSPORTING...WHERE):
    LOOP AT table1 WHERE f1 = '10'.
       table1-fx= 'x'.
       table1-fy= 'y'.
       table1-fz= 'z'.
       table1-ft= 't'.
       MODIFY itab
          TRANSPORTING fx fy fz ft
       WHERE f1 = c1_filed AND
             f2 = c2_field.
    ENDLOOP.
    My aim is to use field-symbols everywhere possible for speeding up the execution of my code,by maintaining this logic.
    My proposal should be the following but I need your kind opinion.
    FIELD-SYMBOLS: <fs_#1_line> TYPE LINE OF table1.
    FIELD-SYMBOLS: <fs_#2_line> TYPE LINE OF table1.
    LOOP AT table1 WHERE f1 = '10' ASSIGNING <fs_#1_line>. (#1)
          updates to table1
          set c1_filed, c2_filed
          LOOP AT table1 ASSIGNING <fs_#2_line>.  (#2)            
             IF <fs_#2_line>-f1 = c1_filed AND
                <fs_#2_line>-f2 = c2_filed.
               <fs_#2_line>-fx = 'x'.
               <fs_#2_line>-fy = 'y'.
               <fs_#2_line>-fz = 'z'.
               <fs_#2_line>-ft = 't'.   
             ENDIF.                 
          ENDLOOP.   (#2)              
    ENDLOOP.   (#1)
    Your kind support is very important for me.
    Thanks in advance.
    Regards,
         Giovanni

  • Sort  itab by using field symbol

    All,
    I have a field symbol  that pointing to a field value in work area of an internal table i_sort ( For example work area that contains the field name having a value MATNR' ( this decides only at runtime) )
    My requirement is i need to sort another table for example i_tab (structure same as records in i_sort) using this field symbol.
    Any Info?

    Hi,
    Check the below report sorting table VBAP based on field VBELN dynamically.
    Let me know if u need any clarification.
    REPORT  ZTEST1.
    tables: dd03l.
    field-symbols: <fs1> type any,
                   <fs2> type any.
    data:
       wa_1 type vbak,
       w_index type sy-index.
    data:
      itab like standard table of vbap,
      ftab like standard table of dd03l.
      select * from vbap into table itab
               up to 10 rows.
    select single * from vbak into wa_1 where vbeln ne space.
    assign wa_1-vbeln to : <fs1>,
                           <fs2>.
    do.
      assign component sy-index of structure wa_1 to <fs1>.
      if <fs1> = <fs2>.
        w_index = sy-index.
        exit.
      endif.
    enddo.
    select *
      from DD03L
      into table ftab
    where TABNAME eq 'VBAK'.
    sort ftab by position.
    read table ftab with key position = w_index into dd03l.
    sort itab by (dd03l-FIELDNAME).
    Thanks,
    - Ram

  • Field symbols and READ TABLE with system code 4

    Hi,
    I have a hashed table and I am using field symbols to point to it to retrieve the field content. I then use it in the READ TABLE statement in the following way:
    Loop at x_data assign <fs>.
    ASSIGN COMPONENT 'xxx' OF STRUCTURE <fs> TO <c1>.
    ASSIGN COMPONENT 'xxx' OF STRUCTURE <fs> TO <c2>.
    READ TABLE ZZZZ assign <fs> with table key a1 = <c1>
                                               a2 = <c2>.
    If sy-subrc = 0.
    endif.
    I ran the debugger and I keep getting a 4. I am not able to get the value from a1 and a2 to see what it is and why it is causing a 4 sy-subrc. I know the value from the hashed table and the values c1 and c2 are the same, so the sy-subrc should be 0.
    How would I read a hashed table using field symbols? I know that usig a standard table, I have to sort the table on the key fields() before I actually can do the READ TABLE using the binary search.
    Please advise. Thanks
    RT

    Hai Rob
    Go  through the following Code
    Field-Symbols are place holders for existing fields.
    A Field-Symbol does not physically reserve space for a field but points to a field, which is not known until run time of the program.
    Field-Symbols are like Pointers in Programming language ‘ C ‘.
    Syntax check is not effective.
    Syntax :
    Data : v1(4) value ‘abcd’.
    Field-symbols <fs>.
    Assign v1 to <fs>.
    Write:/ <fs>.
    DATA: BEGIN OF LINE,
    COL1 TYPE I,
    COL2 TYPE I,
    END OF LINE.
    DATA ITAB LIKE SORTED TABLE OF LINE WITH UNIQUE KEY COL1.
    FIELD-SYMBOLS <FS> LIKE LINE OF ITAB.
    DO 4 TIMES.
    LINE-COL1 = SY-INDEX.
    LINE-COL2 = SY-INDEX ** 2.
    APPEND LINE TO ITAB.
    ENDDO.
    READ TABLE ITAB WITH TABLE KEY COL1 = 2 ASSIGNING <FS>.
    <FS>-COL2 = 100.
    READ TABLE ITAB WITH TABLE KEY COL1 = 3 ASSIGNING <FS>.
    DELETE ITAB INDEX 3.
    IF <FS> IS ASSIGNED.
    WRITE '<FS> is assigned!'.
    ENDIF.
    LOOP AT ITAB ASSIGNING <FS>.
    WRITE: / <FS>-COL1, <FS>-COL2.
    ENDLOOP.
    The output is:
    1 1
    2 100
    4 16
    Thanks & regards
    Sreenivasulu P

  • Getting a runtime error in block alv that field symbol has been assigned

    hi to all experts ,
    im getting a runtime error that field symbol has not been assigned in functionmodule reuse_alv_block_list_display
    i tried a lot to rectify the error ,im unable to do it thats i have posted here
    *& Report  ZHAI_ALV_BLOCK_LIST
    REPORT  ZHAI_ALV_BLOCK_LIST.
    type-pools:slis.
    tables:mara.
    DATA:BEGIN OF  IT_MARA OCCURS 0,
            MATNR LIKE MARA-MATNR,
            MBRSH LIKE MARA-MBRSH,
            MATKL LIKE MARA-MATKL,
            END OF IT_MARA.
    data: begin of IT_DESC OCCURS 0,
             MATNR like MAKT-MATNR,
             MAKTX like MAKT-MAKTX,
         end of IT_DESC.
    data: begin of IT_MARD occurs 0,
            MATNR like mard-matnr,
            WERKS  like  mard-werks,
            LGORT  like  mard-lgort,
            LABST like mard-labst,
          end of IT_MARD.
    data: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV ,
          WA_FCAT LIKE LINE OF IT_FCAT,
          IT_FCAT1 type  slis_t_fieldcat_alv,
          WA_FCAT1 LIKE LINE OF IT_FCAT1,
          IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV,
          WA_FCAT2 LIKE LINE OF IT_FCAT2,
          wa_layout type  SLIS_LAYOUT_ALV,
          it_event type SLIS_T_EVENT,
          wa_event like line of it_event,
         wa_layout like line of it_layout,
          V_REPID LIKE SY-REPID.
    select-options:so_matnr for mara-matnr.
    start-of-selection.
    perform f_select_data.
    DEFINE ADD_CATALOGUE1.
    WA_FCAT-COL_POS = &1.
    WA_FCAT-fieldname = &2.
    WA_fcat-tabname = &3.
    wa_fcat-emphasize = &4.
    wa_fcat-ref_tabname = &5.
    APPEND WA_FCAT TO IT_FCAT.
    END-OF-DEFINITION.
    DEFINE ADD_CATALOGUE2.
    WA_FCAT1-COL_POS = &1.
    WA_FCAT1-fieldname = &2.
    WA_fcat1-tabname = &3.
    wa_fcat1-emphasize = &4.
    wa_fcat1-ref_tabname = &5.
    APPEND WA_FCAT1 TO IT_FCAT1.
    END-OF-DEFINITION.
    DEFINE ADD_CATALOGUE3.
    WA_FCAT2-COL_POS = &1.
    WA_FCAT2-fieldname = &2.
    WA_fcat2-tabname = &3.
    wa_fcat2-emphasize = &4.
    wa_fcat2-ref_tabname = &5.
    APPEND WA_FCAT2 TO IT_FCAT2.
    END-OF-DEFINITION.
    perform f_build_fcat.
    *perform f_build_fcat1.
    perform f_build_fcat2.
    PERFORM F_BUILD_LAYOUT.
    PERFORM F_BUILD_EVENTS.
    PERFORM F_BLOC_DISPLAY.
    *&      Form  f_select_data
    FORM f_select_data .
    select matnr
           mbrsh
           matkl
         from mara into  table it_mara where matnr
    in so_matnr.
    if it_mara[] is not initial.
    select matnr
           maktx
           from makt
           into   table it_desc
           for all entries in it_mara
           where matnr eq it_mara-matnr.
    endif.
    if it_desc[] is not initial.
    select matnr
           werks
           lgort
           labst
           from mard
           into  table it_mard
           for all entries in it_desc
           where matnr eq it_desc-matnr.
    endif.
    ENDFORM.                    " f_select_data
    *&      Form  f_build_fcat
    FORM f_build_fcat .
    ADD_CATALOGUE2:
    '1' 'MATNR' 'IT_MARA' 'C500' 'MARA',
    '2' 'MBRSH' 'IT_MARA' 'C600' 'MARA',
    '3' 'MATKL' 'IT_MARA' 'C300' 'MARA'.
    ENDFORM.                    " f_build_fcat
    **&      Form  f_build_fcat1
    FORM f_build_fcat1 .
    ADD_CATALOGUE1:
    '1' 'MATNR' 'IT_DESC' 'C500' 'MAKT',
    '2' 'MAKTX' 'IT_DESC' 'C600' 'MAKT'.
    ENDFORM.                    " f_build_fcat1
    *&      Form  f_build_fcat2
    FORM f_build_fcat2.
    ADD_CATALOGUE3:
    '1' 'MATNR' 'IT_MARD' 'C500' 'MARD',
    '2' 'WERKS' 'IT_MARD' 'C600' 'MARD',
    '3' 'LGORT' 'IT_MARD' 'C200' 'MARD',
    '4' 'LABST' 'IT_MARD' 'C300' 'MARD'.
    ENDFORM.                    " f_build_fcat2
    *&      Form  F_BLOC_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM F_BLOC_DISPLAY .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_layout
        IT_FIELDCAT                      = it_fcat
        I_TABNAME                        = 'IT_MARA'
        IT_EVENTS                        = it_event
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_MARA
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_layout
        IT_FIELDCAT                      = it_fcat1
        I_TABNAME                        = 'IT_DESC'
        IT_EVENTS                        = IT_EVENT
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_DESC
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = wa_LAYOUT
        IT_FIELDCAT                      = IT_FCAT2
        I_TABNAME                        = 'IT_MARD'
        IT_EVENTS                        = IT_EVENT
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_MARD
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
    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.                    " F_BLOC_DISPLAY
    *&      Form  F_BUILD_LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM F_BUILD_LAYOUT .
    wa_layout-edit = 'X'.
    wa_layout-window_titlebar = 'MOHAMMED ABDUL HAI'.
    wa_layout-zebra = 'X'.
    ENDFORM.                    " F_BUILD_LAYOUT
    *&      Form  F_BUILD_EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM F_BUILD_EVENTS .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = IT_EVENT
    EXCEPTIONS
       LIST_TYPE_WRONG       = 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.
    SORT IT_EVENT BY NAME.
    READ TABLE it_event INTO wa_event WITH KEY NAME = 'TOP_OF_PAGE' bINARY
    SEArch.
    if sy-subrc eq 0.
    wa_event-form = 'F_TOP_OF_PAGE'.
    ENDIF.
    MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX TRANSPORTING FORM.
    READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND' BINARY SEARCH.
    WA_EVENT-FORM = 'F_USER_COMMAND'.
    MODIFY IT_EVENT FROM wa_event INDEX SY-TABIX TRANSPORTING FORM.
    ENDFORM.                    " F_BUILD_EVENTS

    Hi,
    When does this runtime error occur? When displaying output (calling FM) or.....
    I copied your coding and made a few minor changes and It's working fine for my now:
    REPORT ZHAI_ALV_BLOCK_LIST.
    TYPE-POOLS:slis.
    TABLES:mara.
    DATA:BEGIN OF it_mara OCCURS 0,
    matnr LIKE mara-matnr,
    mbrsh LIKE mara-mbrsh,
    matkl LIKE mara-matkl,
    END OF it_mara.
    DATA: BEGIN OF it_desc OCCURS 0,
    matnr LIKE makt-matnr,
    maktx LIKE makt-maktx,
    END OF it_desc.
    DATA: BEGIN OF it_mard OCCURS 0,
    matnr LIKE mard-matnr,
    werks LIKE mard-werks,
    lgort LIKE mard-lgort,
    labst LIKE mard-labst,
    END OF it_mard.
    DATA: it_fcat TYPE slis_t_fieldcat_alv ,
          wa_fcat LIKE LINE OF it_fcat,
          it_fcat1 TYPE slis_t_fieldcat_alv,
          wa_fcat1 LIKE LINE OF it_fcat1,
          it_fcat2 TYPE slis_t_fieldcat_alv,
          wa_fcat2 LIKE LINE OF it_fcat2,
          wa_layout TYPE slis_layout_alv,
          it_event TYPE slis_t_event,
          wa_event LIKE LINE OF it_event,
    *      wa_layout like line of it_layout,
    v_repid LIKE sy-repid.
    SELECT-OPTIONS:so_matnr FOR mara-matnr.
    START-OF-SELECTION.
      PERFORM f_select_data.
      DEFINE add_catalogue1.
        wa_fcat-col_pos = &1.
        wa_fcat-fieldname = &2.
        wa_fcat-tabname = &3.
        wa_fcat-emphasize = &4.
        wa_fcat-ref_tabname = &5.
        append wa_fcat to it_fcat.
      END-OF-DEFINITION.
      DEFINE add_catalogue2.
        wa_fcat1-col_pos = &1.
        wa_fcat1-fieldname = &2.
        wa_fcat1-tabname = &3.
        wa_fcat1-emphasize = &4.
        wa_fcat1-ref_tabname = &5.
        append wa_fcat1 to it_fcat1.
      END-OF-DEFINITION.
      DEFINE add_catalogue3.
        wa_fcat2-col_pos = &1.
        wa_fcat2-fieldname = &2.
        wa_fcat2-tabname = &3.
        wa_fcat2-emphasize = &4.
        wa_fcat2-ref_tabname = &5.
        append wa_fcat2 to it_fcat2.
      END-OF-DEFINITION.
      PERFORM f_build_fcat.
      PERFORM f_build_fcat1.
      PERFORM f_build_fcat2.
      PERFORM f_build_layout.
      PERFORM f_build_events.
      PERFORM f_bloc_display.
    *& Form f_select_data
    FORM f_select_data .
      SELECT matnr
      mbrsh
      matkl
      FROM mara INTO TABLE it_mara WHERE matnr
      IN so_matnr.
      IF it_mara[] IS NOT INITIAL.
        SELECT matnr
        maktx
        FROM makt
        INTO TABLE it_desc
        FOR ALL ENTRIES IN it_mara
        WHERE matnr EQ it_mara-matnr.
      ENDIF.
      IF it_desc[] IS NOT INITIAL.
        SELECT matnr
        werks
        lgort
        labst
        FROM mard
        INTO TABLE it_mard
        FOR ALL ENTRIES IN it_desc
        WHERE matnr EQ it_desc-matnr.
      ENDIF.
    ENDFORM. " f_select_data
    *& Form f_build_fcat
    FORM f_build_fcat .
      add_catalogue2:
      '1' 'MATNR' 'IT_MARA' 'C500' 'MARA',
      '2' 'MBRSH' 'IT_MARA' 'C600' 'MARA',
      '3' 'MATKL' 'IT_MARA' 'C300' 'MARA'.
    ENDFORM. " f_build_fcat
    **& Form f_build_fcat1
    FORM f_build_fcat1 .
      add_catalogue1:
      '1' 'MATNR' 'IT_DESC' 'C500' 'MAKT',
      '2' 'MAKTX' 'IT_DESC' 'C600' 'MAKT'.
    ENDFORM. " f_build_fcat1
    *& Form f_build_fcat2
    FORM f_build_fcat2.
      add_catalogue3:
      '1' 'MATNR' 'IT_MARD' 'C500' 'MARD',
      '2' 'WERKS' 'IT_MARD' 'C600' 'MARD',
      '3' 'LGORT' 'IT_MARD' 'C200' 'MARD',
      '4' 'LABST' 'IT_MARD' 'C300' 'MARD'.
    ENDFORM. " f_build_fcat2
    *& Form F_BLOC_DISPLAY
    * text
    FORM f_bloc_display .
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
        EXPORTING
          i_callback_program = sy-repid.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat1
      i_tabname = 'IT_MARA'
      it_events = it_event
    *IT_SORT =
    *I_TEXT =
      TABLES
      t_outtab = it_mara
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat1
      i_tabname = 'IT_DESC'
      it_events = it_event
    *IT_SORT =
    *I_TEXT =
      TABLES
      t_outtab = it_desc
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      is_layout = wa_layout
      it_fieldcat = it_fcat2
      i_tabname = 'IT_MARD'
      it_events = it_event
    *IT_SORT =
    *I_TEXT = ' '
      TABLES
      t_outtab = it_mard
      EXCEPTIONS
      program_error = 1
      maximum_of_appends_reached = 2
      OTHERS = 3
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
      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. " F_BLOC_DISPLAY
    *& Form F_BUILD_LAYOUT
    FORM f_build_layout .
      wa_layout-edit = 'X'.
      wa_layout-window_titlebar = 'MOHAMMED ABDUL HAI'.
      wa_layout-zebra = 'X'.
    ENDFORM. " F_BUILD_LAYOUT
    *& Form F_BUILD_EVENTS
    FORM f_build_events .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        EXCEPTIONS
          list_type_wrong = 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.
      SORT it_event BY name.
    READ TABLE it_event INTO wa_event WITH KEY name = 'TOP_OF_PAGE' BINARY
    SEARCH.
      IF sy-subrc EQ 0.
        wa_event-form = 'F_TOP_OF_PAGE'.
      ENDIF.
      MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form.
    READ TABLE it_event INTO wa_event WITH KEY name = 'USER_COMMAND' BINARY
    SEARCH.
      wa_event-form = 'F_USER_COMMAND'.
      MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form.
    ENDFORM. " F_BUILD_EVENTS

  • Assign Type conflict with field symbols

    I have two tables tab1 & tab2, want to assign field values from tab1 to tab2 suing field symbols. Deatils are :
    TYPES: BEGIN OF ty_tab1,
        item1   TYPE char20,
        item2   TYPE char20,
        val1 type i,
        val2 type i,
    END OF ty_tab1,
    BEGIN OF ty_tab2,
        item1 TYPE char20,
        item2 TYPE char20,
    END OF ty_tab2.
    DATA: it_tab1 TYPE TABLE OF ty_tab1,
                it_tab2 TYPE TABLE OF ty_tab2.
      FIELD-SYMBOLS <fs_tab1> TYPE ty_tab1.
                     <fs_tab2t> type ty_tab2.
      LOOP AT it_tab1 assigning <fs_tab1>.
        READ TABLE it_tab2  assigning <fs_tab2> WITH KEY item1 = <fs_tab1>-item1
                                                                                    item2 = <fs_tab1>-item2.
        IF sy-subrc EQ 0.
          ASSIGN COMPONENT 'ITEM1' OF STRUCTURE <fs_tab1> TO <fs_tab2>.
         ASSIGN COMPONENT 'ITEM2' OF STRUCTURE <fs_tab1> TO <fs_tab2>.
        endif.
    endloop.
    Getting error msg
    You attempted to assign a field to a typed field symbol, but the field does not have the required type.         
    whats the reason of error.
    Edited by: Matt on May 27, 2011 8:59 AM - added  tags

    Taken from example dump
    A new value is to be assigned to the field "...", although this field is
    entirely or partly protected against changes.
    The following are protected against changes:
    - Character literals or numeric literals
    - Constants (CONSTANTS)
    - Parameters of the category IMPORTING REFERENCE for functions and
    methods
    - Untyped field symbols not yet assigned a field using ASSIGN
    - TABLES parameters if the actual parameter is protected against changes
    - USING reference parameters and CHANGING parameters for FORMs, if the
    actual parameter is protected against changes and
    - Accesses using field symbols if the field assigned using ASSIGN is
    protected (or partially protected, e.g. key components of an internal
    table with the type SORTED or HASHED TABLE) against changes
    - Accesses using references, if the field bound to the reference is
    protected (or partially protected) against changes
    - External write accesses to READ-ONLY attributes,
    - Content of a shared object area instance accessed using a shared lock
    (ATTACH_FOR_READ).
    You likely fall in one of these cases. Check each and if still unsure please share your code so we can reproduce the error.
    Regards
    Marcin

  • How to pass field symbol or table from one view to another view in abap web dynpro?

    I am creating an Inbound Outbound ALV report in ABAP Web Dynpro. However at selection-screen I have select options and fetching is done at view2. Problem is we can pass parameter using inbound outbound parameters but how to pass internal table or field-symbols from one view to another view? I made use of Assistance Class too but its not very clear to me. Please give me some example or code to sort this problem out.

    I am creating an Inbound Outbound ALV report in ABAP Web Dynpro. However at selection-screen I have select options and fetching is done at view2. Problem is we can pass parameter using inbound outbound parameters but how to pass internal table or field-symbols from one view to another view? I made use of Assistance Class too but its not very clear to me. Please give me some example or code to sort this problem out.

  • Field symbols and index

    What are field symbols and field groups.? Have you used "component idx of structure" clause with field groups?

    Hi
    this will help you
    reward if usefull
    <b><u>FIELD-SYMBOLS</u></b>
    <u>Syntax</u>
    FIELD-SYMBOLS <fs> { typing | STRUCTURE struc DEFAULT dobj }.
    Extras:
    1. ... typing
    2. ... STRUCTURE struc DEFAULT dobj
    The FIELD-SYMBOLS statement declares a field symbol <fs>. The name conventions apply to the name fs. The angle brackets of the field symbols indicate the difference to data objects and are obligatory. You can declare field symbols in any procedure and in the global declaration section of an ABAP program, but not in the declaration section of a class or an interface. You can use a field symbol in any operand position in which it is visible and which match the typing defined using typing.
    After its declaration, a field symbol is initial - that is, it does not reference a memory area. You have to assign a memory area to it (normally using the ASSIGN statement) before you can use it as an operand. Otherwise an exception will be triggered.
    <b><u>FIELD-GROUPS</u></b>
    <u>Syntax</u>
    FIELD-GROUPS { header | field_group }.
    Declaration of a field group for the extract dataset of the program. Each field group represents the name of a line structure of the extract dataset. You can create as many field groups as you wish in a program. You define the actual components of a field group with the statement INSERT.
    The denominator of a field group is either the predefined name header or any name field_group. If you declare a field group header, it automatically becomes the beginning part of all remaining field groups of the program and its components constitute the standard sort key of the extract dataset for the statement SORT.
    The statement FIELD-GROUPS is possible in the global declaration-part of an ABAP program, as well as in the subprograms and function modules. Field groups that are declared in procedures are visible only there.
    As you can only define global data objects as components of field groups with the statement INSERT, we recommend to declare field groups only in the global declaration part as well.

  • Field Symbols, Field String, and Field Group.

    Hi,
    Can you differentiate between filed symbols, field strings and field groups,
    With regards,
    Bharath Mohan B

    Hi,
    Field Symbols
    Field symbols are placeholders or symbolic names for other fields. They do not physically reserve space for a field, but point to its contents. A field symbol cam point to any data object. The data object to which a field symbol points is assigned to it after it has been declared in the program.
    Whenever you address a field symbol in a program, you are addressing the field that is assigned to the field symbol. After successful assignment, there is no difference in ABAP whether you reference the field symbol or the field itself. You must assign a field to each field symbol before you can address the latter in programs.
    Field symbols are similar to dereferenced pointers in C (that is, pointers to which the content operator * is applied). However, the only real equivalent of pointers in ABAP, that is, variables that contain a memory address (reference) and that can be used without the contents operator, are reference variables in ABAP Objects.
    All operations programmed with field symbols are applied to the field assigned to it. For example, a MOVE statement between two field symbols moves the contents of the field assigned to the first field symbol to the field assigned to the second field symbol. The field symbols themselves point to the same fields after the MOVE statement as they did before.
    You can create field symbols either without or with type specifications. If you do not specify a type, the field symbol inherits all of the technical attributes of the field assigned to it. If you do specify a type, the system checks the compatibility of the field symbol and the field you are assigning to it during the ASSIGN statement.
    Field symbols provide greater flexibility when you address data objects:
    If you want to process sections of fields, you can specify the offset and length of the field dynamically.
    You can assign one field symbol to another, which allows you to address parts of fields.
    Assignments to field symbols may extend beyond field boundaries. This allows you to address regular sequences of fields in memory efficiently.
    You can also force a field symbol to take different technical attributes from those of the field assigned to it.
    The flexibility of field symbols provides elegant solutions to certain problems. On the other hand, it does mean that errors can easily occur. Since fields are not assigned to field symbols until runtime, the effectiveness of syntax and security checks is very limited for operations involving field symbols. This can lead to runtime errors or incorrect data assignments.
    While runtime errors indicate an obvious problem, incorrect data assignments are dangerous because they can be very difficult to detect. For this reason, you should only use field symbols if you cannot achieve the same result using other ABAP statements.
    For example, you may want to process part of a string where the offset and length depend on the contents of the field. You could use field symbols in this case. However, since the MOVE statement also supports variable offset and length specifications, you should use it instead. The MOVE statement (with your own auxiliary variables if required) is much safer than using field symbols, since it cannot address memory beyond the boundary of a field. However, field symbols may improve performance in some cases.
    check the below links u will get the answers for your questions
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3860358411d1829f0000e829fbfe/content.htm
    http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/field_sy.htm
    http://searchsap.techtarget.com/tip/1,289483,sid21_gci920484,00.html
    Syntax Diagram
    FIELD-SYMBOLS
    Basic form
    FIELD-SYMBOLS <fs>.
    Extras:
    1. ... TYPE type
    2. ... TYPE REF TO cif
    3. ... TYPE REF TO DATA
    4. ... TYPE LINE OF type
    5. ... LIKE s
    6. ... LIKE LINE OF s
    7. ... TYPE tabkind
    8. ... STRUCTURE s DEFAULT wa
    The syntax check performed in an ABAP Objects context is stricter than in other ABAP areas. See Cannot Use Untyped Field Symbols ad Cannot Use Field Symbols as Components of Classes.
    Effect
    This statement declares a symbolic field called <fs>. At runtime, you can assign a concrete field to the field symbol using ASSIGN. All operations performed with the field symbol then directly affect the field assigned to it.
    You can only use one of the additions.
    Example
    Output aircraft type from the table SFLIGHT using a field symbol:
    FIELD-SYMBOLS <PT> TYPE ANY.
    DATA SFLIGHT_WA TYPE SFLIGHT.
    ASSIGN SFLIGHT_WA-PLANETYPE TO <PT>.
    WRITE <PT>.
    Addition 1
    ... TYPE type
    Addition 2
    ... TYPE REF TO cif
    Addition 3
    ... TYPE REF TO DATA
    Addition 4
    ... TYPE LINE OF type
    Addition 5
    ... LIKE s
    Addition 6
    ... LIKE LINE OF s
    Addition 7
    ... TYPE tabkind
    Effect
    You can define the type of the field symbol using additions 2 to 7 (just as you can for FORM parameters (compare Defining the Type of Subroutine Parameters). When you use the ASSIGN statement, the system carries out the same type checks as for USING parameters of FORMs.
    This addition is not allowed in an ABAP Objects context. See Cannot Use Obsolete Casting for FIELD SYMBOLS.
    In some cases, the syntax rules that apply to Unicode programs are different than those for non-Unicode programs. See Defining Types Using STRUCTURE.
    Effect
    Assigns any (internal) field string or structure to the field symbol from the ABAP Dictionary (s). All fields of the structure can be addressed by name: <fs>-fieldname. The structured field symbol points initially to the work area wa specified after DEFAULT.
    The work area wa must be at least as long as the structure s. If s contains fields of the type I or F, wa should have the structure s or at least begin in that way, since otherwise alignment problems may occur.
    Example
    Address components of the flight bookings table SBOOK using a field symbol:
    DATA SBOOK_WA LIKE SBOOK.
    FIELD-SYMBOLS <SB> STRUCTURE SBOOK
    DEFAULT SBOOK_WA.
    WRITE: <SB>-BOOKID, <SB>-FLDATE.
    Related
    ASSIGN, DATA
    Additional help
    Declaring Field Symbols
    FIELD GROUPS
    are used to hold/handle large amount of data when the internal table are not useful
    we use EXTRACT statement, HEADER structure in them
    see the example
    REPORT demo_extract.
    NODES: spfli, sflight.
    FIELD-GROUPS: header, flight_info, flight_date.
    START-OF-SELECTION.
      INSERT: spfli-carrid spfli-connid sflight-fldate
                INTO header,
              spfli-cityfrom spfli-cityto
                INTO flight_info.
    GET spfli.
      EXTRACT flight_info.
    GET sflight.
      EXTRACT flight_date.
    END-OF-SELECTION.
      SORT STABLE.
      LOOP.
        AT FIRST.
          WRITE / 'Flight list'.
          ULINE.
        ENDAT.
        AT flight_info WITH flight_date.
          WRITE: / spfli-carrid , spfli-connid, sflight-fldate,
                   spfli-cityfrom, spfli-cityto.
        ENDAT.
        AT flight_date.
          WRITE: / spfli-carrid , spfli-connid, sflight-fldate.
        ENDAT.
        AT LAST.
          ULINE.
          WRITE: cnt(spfli-carrid), 'Airlines'.
          ULINE.
        ENDAT.
      ENDLOOP.
    FIELD STRING is nothing but a string with  one row of records.
    Reward points if useful
    regards
    Anji

  • Can I use field symbol in AT events? How?

    Hi all,
    I want to use field symbol in <b>AT END OF</b> event
    Can I use field symbol in such event as it takes table fields only.
    Kinldy look in to pseudo:
    Loop itab.
             AT END OF <FS1>.
             ENDAT.
    Endloop.
    I tried in my program but it's giving me a short dump.
    If it is possible to use field symbol in AT events, kindly tell me how..??
    Thanks in Advance.
    Sagar

    Hi,
    i don't know your reqirement but it is possible:
    DATA: t1(4), t2 TYPE i.
    FIELD-GROUPS: header.
    INSERT t2 t1 INTO header.
    t1 ='AABB'. t2 = 1. EXTRACT header.
    t1 ='BBCC'. t2 = 2. EXTRACT header.
    t1 ='AAAA'. t2 = 2. EXTRACT header.
    t1 ='AABB'. t2 = 1. EXTRACT header.
    t1 ='BBBB'. t2 = 2. EXTRACT header.
    t1 ='BBCC'. t2 = 2. EXTRACT header.
    t1 ='AAAA'. t2 = 1. EXTRACT header.
    t1 ='BBBB'. t2 = 1. EXTRACT header.
    t1 ='AAAA'. t2 = 3. EXTRACT header.
    t1 ='AABB'. t2 = 1. EXTRACT header.
    SORT BY t1 t2.
    *Here begins the definition of the field symbols
    FIELD-SYMBOLS:
    <t1> TYPE ANY,
    <t2> TYPE ANY.
    ASSIGN t1 TO <t1>.
    ASSIGN t2 TO <t2>.</b>
    LOOP.
      AT FIRST.
        WRITE 'Start of LOOP'.
        ULINE.
      ENDAT.
      AT NEW <t1>.
        WRITE / '   New T1:'.
      ENDAT.
      AT NEW <t2>.
        WRITE / '   New T2:'.
      ENDAT.
      WRITE: /14 t1, t2.
      AT END OF <t2>.
        WRITE / 'End of T2'.
      ENDAT.
      AT END OF <t1>.
        WRITE / 'End of T1'.
      ENDAT.
      AT LAST.
        ULINE.
      ENDAT.
    ENDLOOP.
    Regards,
    Gianpietro

  • Field symbols or ?

    Hi,
    its possible form internal table like this:
    tabname | row | columnName | columnValue
    t005 | 1 | land1 | AD
    t005 | 1 | landk | AND
    t005 | 1 | lnplz | 00
    t005 | 2 | land1 | AS
    t005 | 2 | landk | ND
    t005 | 2 | lnplz | 01
    to create internal table "t005" in this structure:
    row|  land1 | landk | lnplz | ...
    1 | AD | AND | 00
    2 | AS | ND | 01
    (use field-symbols, or dynamic attribute declarations...)
    thanks, m

    Try this...
    Get the T005 data into internal table as first table...
    tabname | row | columnName | columnValue
    t005 | 1 | land1 | AD
    t005 | 1 | landk | AND
    t005 | 1 | lnplz | 00
    t005 | 2 | land1 | AS
    t005 | 2 | landk | ND
    t005 | 2 | lnplz | 01
    Now declare another internal table in the form...
    row| land1 | landk | lnplz | ...
    sort itab_t005 by tablename row.
    now loop at itab_t005.
    at new row.
    clear itab_new.
    endat.
    if itab_t005-columename eq 'land1.
    itab_new-land1 = itab_t005-columevalue.
    endif.
    the same for other two....
    at end of row.
    append itab_new.
    endat.
    endloop.
    Hope this will solve ur porblem...

  • Field symbols in objects

    Hi Guys
    I am using a field sym in the foll way and iam getting a dump.
    ls_fcat = mod_fcat( ls_fcat ).
    method mod_fcat.
       field-SYMBOLS: <l> like line of rt.
        LOOP AT rt ASSIGNING <l>.
          CASE <l>-fieldname.
            WHEN 'VALUE_CONTRACT_E'.
            CLEAR: <l>-ref_field,<l>-ref_table.
            <l>-coltext   = text-h01. <l>-SCRTEXT_L = text-h01.
            <l>-SCRTEXT_M = text-h02. <l>-SCRTEXT_S = text-h02.
            WHEN OTHERS.
          ENDCASE.
        ENDLOOP.
      ENDMETHOD.
    endmethod.
    When the control goes to clear it gives me a dump.I dont understand why coz iam already assignin <l> at every loop pass.
    Please help!!
    Thanks

    Hi Guys
    This is the error i get
    A new value is to be assigned to the field "<L>", although this field is entirely or partly protected against changes.
    The following are protected against changes:
    - Character literals or numeric literals
    - Constants (CONSTANTS)
    - Parameters of the category IMPORTING REFERENCE for functions and
    methods
    - Untyped field symbols not yet assigned a field using ASSIGN
    - TABLES parameters if the actual parameter is protected against changes
    - USING reference parameters and CHANGING parameters for FORMs, if the
    actual parameter is protected against changes and
    - Accesses using field symbols if the field assigned using ASSIGN is
    protected (or partially protected, e.g. key components of an internal
    table with the type SORTED or HASHED TABLE) against changes
    - Accesses using references, if the field bound to the reference is
    protected (or partially protected) against changes
    - External write accesses to READ-ONLY attributes,
    - Content of a shared object area instance accessed using a shared lock
    (ATTACH_FOR_READ).
    Thanks

  • Dump in field symbol assigen

    Hi ,
    i try to do this statement and i have dump
    BEGIN OF tt_agr ,
            agr_name TYPE agr_name,
            text TYPE agr_title,
           END OF tt_agr .
    FIELD-SYMBOLS: <ls_retr_txt1> TYPE tt_agr.
    LOOP AT lt_help ASSIGNING <ls_help_value>.
        SPLIT <ls_help_value> AT space INTO ls_agr-agr_name ls_agr-text.
        SHIFT ls_agr-text LEFT DELETING LEADING space.
        READ TABLE It_retr_roles ASSIGNING <ls_retr_txt1> WITH KEY agr_name = ls_agr-agr_name.
        IF sy-subrc = 0.
          <ls_retr_txt1>-text = ls_agr-text . "<- here the dump occuer
        ENDIF.
      ENDLOOP.
    this is the dump analysis what i miss here ?
    Error analysis
        A new value is to be assigned to the field "<LS_RETR_TXT1>", although this
         field is
        entirely or partly protected against changes.
        The following are protected from change:
        - Character literals or numerical literals.
        - CONSTANTS.
        - Parameters of the category IMPORTING REFERENCE in functions and
          methods.
        - untyped field symbols, that have not been assigned a field using
          ASSIGN.
        - TABLES parameters, if the actual parameter is protected against
          changes.
        - USING reference parameters and CHANGING parameters in FORMs,
          if the actual parameter is protected against changes.
        - Access using field symbols if the field assigned using ASSIGN is
          partly or completely protected (for example key components of internal
          table of the type SORTED or HASHED TABLE).
        - Access using field symbols if the field assigned using ASSIGN contains
          components of a secondary key that is currently in use in a
          higher-level LOOP statement.
        - Access using references if the field bound to the reference is
          (partly) protected against changes.
        - Write access from outside to READ-ONLY attributes.
        - Content of a shared objects area instance accessed using a shared lock
          (ATTACH_FOR_READ.
        - Rows or fields of a table that are currently being serialized by a
          Simple Transformation.
    Regards
    Joy

    Hi,
    if It_retr_roles is defined as CHANGING (which is against naming rules, should be Ct_retr_roles), then the table is defined as SORTED OR HASHED and field TEXT is part of the key. Key fields may never be changed.
    You may build a new local internal table and replace the original at end of method.
    Regards,
    Clemens

  • Delete Reference for  field symbol

    Hi
    i have thes code
    FUNCTION Z_DEMO.
    *"*"Local Interface:
    *"  IMPORTING
    *"     REFERENCE(INCLUDE_STRUCTURE) TYPE  TABNAM
    *"  TABLES
    *"      DATA_PACKAGE_TA
      DATA: it_data       TYPE REF TO data.
      FIELD-SYMBOLS: <fs_itab>         TYPE STANDARD TABLE.
      CREATE DATA it_data TYPE STANDARD TABLE OF (INCLUDE_STRUCTURE).
      ASSIGN it_data->* TO <fs_itab>.
      assign  DATA_PACKAGE_TA[] to <fs_it_dp>.
      sort <fs_itab> by ('COSTCENTER') ('CALMONTH') ('CURRENCY').
      delete adjacent duplicates
        from <fs_itab>
        comparing  ('COSTCENTER') ('CALMONTH') ('CURRENCY').
    (1)   Its workes good but it delete lines from DATA_PACKAGE_TA also how i can delete just from
           the field symbol <fs_itab> and keep the itab without change  ????
    (2) How I can build an another itab like DATA_PACKAGE_TA ??????
    Thanks and regardes .

    hi!
    instead of:
    assign  DATA_PACKAGE_TA[] to <fs_itab>.
    just do like this:
    <fs_itab>[] =  DATA_PACKAGE_TA[].
    then you can delete from <fs_itab> without deleting the other internal table.
    Bye,
    Andrew83.
    Hope this help you.

  • Doubt regd Field Symbols

    Hi SDN's
    I have createad dynamic internal table using the method cl_alv_table_create=>create_dynamic_table from the blog
    /people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
    i am struck at the last point. what i wanted to know is the the internal table is in the form of a Field Symbol <FS> . But i have an internal table which already contains the data.. how do i move the data from internal tables to the Dynamic internal table.. I had already posted previously, but not able to understand .. can some body help me in understanding to get the data from Internal table to the dynamic internal table
    <b>My internal table</b> is in the below format
    Alloc no|ChargeCode     |Amount     |
    A119     |301          |100     |
    A119     |301          |200     |
    A119     |302          |150     |
    A119     |302          |250     |
    A119     |303          |100     |
    A229     |301          |100     |
    A229     |321          |100     |
    A239     |301          |100     |
    A239     |303          |50     |
    and i have the <b>dynaic internal table</b> format as below
    Alloc No|301     |302     |303     |321     |
    A119     |300     |400     |100     |NIL     |
    A229     |100     |NIL     |NIL     |100     |
    A239     |100     |NIL     |50     |NIL     |
    Please help me in understanding to move the data in to the above format

    Hi Pratyu Usha,
    I started dealing with it recently, so I'll try to help...
    I built the dynamic table row after row.
    To do this efficiently, the static (non-dynamic) table must be sorted by "Alloc No".
    Then you need a field-symbol for the work-area line of the dynamic table:
    ASSIGN LOCAL COPY OF INITIAL LINE OF <dynamic-table> TO <line>.
    where <dynamic-table> is the field-symbol representing your dynamic table.
    then you loop at your static table, and for each line of the static table you assign the right column of the dynamic table's line to other field-symbol:
    ASSIGN COMPONENT StaticTable-ChargeCode OF STRUCTURE <line> TO <field>.
    where <field> is another field-symbol and StaticTable is your static table...
    For example, suppose that you're currently in the first row of your static table - <field> will point to the column named "301" of the work-area of your dynamic table.
    now you just put the value inside that column:
    <field> = StaticTable-Amount.
    OR if you want to sum the value:
    ADD StaticTable-Amount to <field>.
    Now, at end of "Alloc no", you need to add your dynamic work-area to the dynamic table:
    APPEND <line> TO <dynamic-table>.
    CLEAR: <line>.
    There.
    That should work.
    Please let me know!
    Alon

Maybe you are looking for