Dynamic Work Area - fields

HI SDN COMMUNITY..!!
I HAVE TO USE THE WA_SEKPO-FIELDNAME DYNAMICALLY..
DATA: BEGIN OF WA_SEKPO,
      EBELN TYPE EBELN,
      BRTWR TYPE BRTWR,
      EFFWR TYPE EFFWR,
      MENGE TYPE MENGE,
      END OF WA_SEKPO.
DATA: SEKPO LIKE TABLE OF WA_SEKPO.
DATA: VAR_FNAME TYPE STRING.
FIELD-SYMBOLS: <FS> TYPE ANY.
STRUCTURE OF <b>EDITPOS</b>(INTERNAL TABLE)
|OBJECTID   |TABNAME|FNAME  |   F_NEW    |    F_OLD
|4500016340 |EKPO   |BRTWR  |       26   |    11
|4500016340 |EKPO   |EFFWR  |       25   |    12
|4500016340 |EKPO   |MENGE  |       22   |    13
INTERNAL TABLE :
<b>EDITPOS</b> CONTAINS VALUES FOR : BRTWR
                              EFFWR 
                              MENGE
IT MAY CONTAIN VALUES FOR MORE FIELDS.
NOW PROBLEM IS
I HAVE TO UPDATE MY INTERNAL TABLE : SEKPO
FOR FIELDNAMES : BRTWR
                 EFFWR
                 MENGE
BUT I DONT HAVE TO HARD CODE IT FOR EACH FIELD.
PLEASE CHECK, HOW THIS CAN BE ACHIVED?
WA_SEKPO-BRTWR = WA_EDITPOS-F_NEW.
PLEASE UPDATE THE CODE:
LOOP AT EDITPOS INTO WA_EDITPOS.
           ASSIGN WA_EDITPOS-FNAME TO <FS>.
           CONCATENATE 'WA_SEKPO-' <FS> INTO VAR_FNAME.
           WA_SEKPO-(<FS>)  = WA_EDITPOS-F_NEW.
*       MODIFY TABLE SEKPO FROM WA_SEKPO
*          TRANSPORTING <FS>.
ENDLOOP.
HELP WILL BE APPRICIATED
THANKS IN ADVANCE
VIJAY RAHEJA

HI
STRUCTURE OF EDITPOS(INTERNAL TABLE)
|OBJECTID |TABNAME|FNAME | F_NEW | F_OLD
|4500016340 |EKPO |BRTWR | 26 | 11
|4500016340 |EKPO |EFFWR | 25 | 12
|4500016340 |EKPO |MENGE | 22 | 13
LOOP AT EDITPOS INTO WA_EDITPOS.
IF WA_EDITPOS = 'BRTWR'.
  WA_SEKPO-BRTWR = WA_EDITPOS-F_NEW.
  MODIFY TABLE SEKPO FROM WA_SEKPO
  TRANSPORTING BRTWR.
ELSEIF WA_EDITPOS = 'EFFWR'.
  WA_SEKPO-EFFWR = WA_EDITPOS-F_NEW.
  MODIFY TABLE SEKPO FROM WA_SEKPO
  TRANSPORTING EFFWR.
ELSEIF WA_EDITPOS = 'MENGE'.
  WA_SEKPO-EFFWR = WA_EDITPOS-F_NEW.
  MODIFY TABLE SEKPO FROM WA_SEKPO
  TRANSPORTING MENGE.
ENDIF.
ENDLOOP.
I AM TRYING TO ACHIEVE THE ABOVE FUNCTIONALITY DYNAMICALLY,
AS I AM UNAWARE OF ENTRIES IN Internal Table: EDITPOS.
It contains values:  BRTWR/EFFWR/MENGE
But it may contain more,SO i cannot straight away HARD code it for modifying entries in SEKPO.
for which i have written the code:
LOOP AT EDITPOS INTO WA_EDITPOS.
ASSIGN WA_EDITPOS-FNAME TO <FS>.
CONCATENATE 'WA_SEKPO-' <FS> INTO VAR_FNAME.
WA_SEKPO-<FS> = WA_EDITPOS-F_NEW.
MODIFY TABLE SEKPO FROM WA_SEKPO
TRANSPORTING <FS>.
ENDLOOP.
But there it shown Error before Activating the code: that <fs> is not a component of work area wa_sekpo
WA_SEKPO-<FS>
that is the problem,How to assign fieldname to a work area Dynamically.
Regards,
Vijay Raheja

Similar Messages

  • Dynamic Work Area Field name Assignment.

    hi Guru,
      data: it_SFLIGHT type TABLE OF SFLIGHT,
              wa_SFLIGHT TYPE SFLIGHT,
              lv_field TYPE string.
      lv_field =     'CARRID'.   " Field name
        wa_SFLIGHT-<lv_field> = 'vivek'.  " Assigning Value to workarea.
    When i try this i am getting the error.
    Regards.
    Vivekananthan.S

    Hi,
    assign (p_tc_name) to <tc>.
    TYPES:
      BEGIN OF st_mytable,
        name1 TYPE string,
        name2 TYPE string,
        age TYPE i,
      END OF st_mytable.
    DATA:
      gi_mytable TYPE STANDARD TABLE OF st_mytable,
      g_mytable  TYPE st_mytable.
    * Define field symbols
    FIELD-SYMBOLS:
      <myfield1> TYPE ANY,
      <myfield2> TYPE ANY,
      <myfield3> TYPE ANY,
      <myline>  TYPE ANY.
    * Fill table with data
    g_mytable-name1 = 'John'.
    g_mytable-name2 = 'Johnson'.
    g_mytable-age   = 25.
    APPEND g_mytable TO gi_mytable.
    g_mytable-name1 = 'Claudio'.
    g_mytable-name2 = 'Jensen'.
    g_mytable-age   =  45.
    APPEND g_mytable TO gi_mytable.
    * The normal way to do it
    LOOP AT gi_mytable INTO g_mytable.
      WRITE: / g_mytable-name1, g_mytable-name2 ,g_mytable-age.
    ENDLOOP.
    SKIP 2.
    * Do it with field symbols
    LOOP AT gi_mytable ASSIGNING <myline>.
      ASSIGN COMPONENT 1 OF STRUCTURE <myline> TO <myfield1>.
      ASSIGN COMPONENT 2 OF STRUCTURE <myline> TO <myfield2>.
      ASSIGN component 3 OF STRUCTURE <myline> TO <myfield3>.
      WRITE: / <myfield1>,<myfield2>,<myfield3>.
    ENDLOOP.
    * Unassign field symbols
    UNASSIGN <myfield1>.
    UNASSIGN <myfield2>.
    UNASSIGN <myfield3>.
    UNASSIGN <myline>.
    Regards,
    Prabhudas

  • How to fill Dynamic work area or field symbol?

    HI All,
    I have created dynamic work area(field symbol) by using following code. Now I want to fill the work area with values which are there in other internal table.
    * Create dynamic internal table/structure
      call method cl_alv_table_create=>create_dynamic_table
        exporting
          it_fieldcatalog = it_fieldcat
        importing
          ep_table        = dyn_table.
      assign dyn_table->* to <fs_table>.
    * Create dynamic work area and assign to Field Symbol
      create data dyn_line like line of <fs_table>.
      assign dyn_line->* to <fs_wa>.
    My <FS_WA> contains:
    ROW1
    ROW2
    ROW3
    ROW4 as fields in it without having any data.
    I have other internal table.. where I have FIELDS and Data like following:
    FIELD1  FIELD2   FIELD3
    ID1 ROW1 A1
    ID1 ROW2 A2
    ID1 ROW3 A3
    ID1 ROW4 A4
    ID2 ROW1 B1
    ID2 ROW2 B2
    ID2 ROW3 B3
    ID3 ROW1 C4
    Important thing that I have to share with you is... Source table of my Internal table and Source structure to create my dynamic table are same.
    This dynamic table has fields... with "FIELD2" values.
    Thanks,
    Naveen.I

    Create a dynamic internal table
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = lt_fcat
        IMPORTING
          ep_table        = lt_dy_table.
    Create dynamic work area and assign to FS
      ASSIGN lt_dy_table->* TO <fs_dyn_table>.
      CREATE DATA lt_dy_line LIKE LINE OF <fs_dyn_table>.
      ASSIGN lt_dy_line->* TO <fs_dyn_wa>.
    Define WA
      CREATE DATA dref TYPE (iv_struc_name).
      ASSIGN dref->* TO <fs_final>.
    Populate dynamic table from the file
      OPEN DATASET iv_path FOR INPUT IN TEXT MODE ENCODING DEFAULT.
      IF sy-subrc = 0.
        DO.
          READ DATASET iv_path INTO ls_str.
          IF sy-subrc <> 0.
            ev_failed = abap_true.
            EXIT.
          ENDIF.
          SPLIT ls_str AT ';' INTO TABLE lt_dyn_tab.  " columns
          LOOP AT lt_dyn_tab INTO ls_dyn_tab.
            READ TABLE lt_struc_fld INTO ls_struc_fld INDEX sy-tabix.
            IF sy-subrc EQ 0.
              MOVE ls_struc_fld-fieldname TO ls_fieldname.
              ASSIGN COMPONENT ls_fieldname OF STRUCTURE <fs_dyn_wa> TO <fs_val>.
              IF sy-subrc = 0.
                <fs_val> = ls_dyn_tab.
              ENDIF.
              ASSIGN COMPONENT ls_fieldname OF STRUCTURE <fs_final> TO <fs_val>.
              IF sy-subrc = 0.
                <fs_val> = ls_dyn_tab.
              ENDIF.
            ENDIF.
          ENDLOOP.
          APPEND <fs_dyn_wa> TO <fs_dyn_table>.
          APPEND <fs_final> TO et_table.
          UNASSIGN: <fs_val>.
        ENDDO.
      ENDIF.
      CLOSE DATASET iv_path.

  • Dynamic Work Area and field symbol

    Hi All,
    I'm have a big internal table like this
    data: begin of data occurs 0,
    Field01,
    Field02,
    Field03,
    *bucket 1
    Field04,
    Field05,
    Field06,
    *bucket 2
    Field04,
    Field05,
    Field06,
    *bucket 3
    Field04,
    Field05,
    Field06,
    Field 1, 2 3 will be the same for pernr, first last name.
    Field 4, 5, 6 are the same format but different numbers (or values ) in different buckets.
    Each bucket can be shown (or not) based on the condition of a person, for example if that person live in 2 states, it will show 2 bucket with 2 address info inside each.
    I will run this under get pernr to sort out each person who have many address or not.
    Can I use dynamic work area and field symbol here? if I can, how?
    Really appreciate your help with points...

    You can use the ASSIGN COMPONENT ... and than APPEND the work area to the table.
    Check out this sample program:
    REPORT  ZTEST_NP.
    DATA: BEGIN OF ITAB OCCURS 0,
          F1    TYPE I,
          F2    TYPE I,
          F3    TYPE I,
          END   OF ITAB.
    DATA: WA_ITAB LIKE ITAB.
    DATA: L_CNT TYPE I.
    FIELD-SYMBOLS: <F_FLD> TYPE ANY.
    DO 10 TIMES.    " I want 10 reocrds
      CLEAR L_CNT.
      DO 3 TIMES.   " I have 3 fields
        L_CNT = L_CNT + 1.
        ASSIGN COMPONENT L_CNT OF STRUCTURE WA_ITAB TO <F_FLD>.
        <F_FLD> = L_CNT.
      ENDDO.
      APPEND WA_ITAB TO ITAB.
      CLEAR  ITAB.
    ENDDO.
    LOOP AT ITAB INTO WA_ITAB.
      WRITE: / WA_ITAB-F1,
               WA_ITAB-F2,
               WA_ITAB-F3.
    ENDLOOP.
    Regards,
    Naimesh Patel

  • How to read data from dynamic work area.

    Hi guys,
                I have created dynamic table and work area for report.
    i have populated few values in dynamic work area.
    Now i want to read that data from work area again for calculation.
    i can not use local varialbes to store those values as i dont know how many such variables i need to read.
    that will be known only at run time.
    So as per my knowledge i have only 1 option...to read those all values from work area.
    Kindly help me .... how can i read data which is stored in dynamic work area.

    Hi Kiran,
    Following is not exact code, but exact solution to your problem:
      LOOP AT <dyn_table> ASSIGNING <dyn_wa>.
          l_tabix = sy-tabix.
          ASSIGN COMPONENT 'KOTAB' OF STRUCTURE <dyn_wa> TO <l_kotab>.
          IF <l_kotab> IS ASSIGNED AND <l_kotab> IS INITIAL.
            <l_kotab> = gt_tabs-kotab.
            MODIFY <dyn_table> FROM <dyn_wa> INDEX l_tabix.
          ENDIF.
        ENDLOOP.
    I am hardcoding KOTAB as I was sure about that being in the dynamic structure.
    You can loop on the field catalogue, which you used to create dyamic table,  to use the FIELDNAME to read all the fields of the work area (structure) of your dynamic table.
    thanks,
    Aabhas
    Edited by: Aabhas K Vishnoi on Sep 24, 2009 8:12 PM

  • Dynamic access to work area fields

    Hi
    I've got a DataBase table with 20 fields with different names.
    field1
    field2
    field3.
    field20
    I'm using a work area to read values and i wanna read an specific field of this work area.
    The problem is the following:
    I don't know the name of the field i need to access, instead, i have it in a field symbol.
    Is there any way i can get the value of this field???

    Hi,
    Try the following example
      DATA: i_TAB           LIKE PA0001 OCCURS 0 WITH HEADER LINE,
            l_field(50)     TYPE C,
            l_fieldname(50) TYPE C VALUE 'UNAME'.
      FIELD-SYMBOLS: <fieldxx> TYPE ANY,
                     <valxx>   TYPE ANY.
      ASSIGN l_fieldname TO <fieldxx>.
      SELECT * FROM PA0001 INTO TABLE I_TAB.
      LOOP AT I_TAB.
        CONCATENATE 'I_TAB-' <fieldxx> INTO l_field.
        ASSIGN (l_field) TO <valxx>.
        WRITE <valxx>.
      ENDLOOP.

  • Work area field value not getting populated in table control grid.

    Hi all,
    I am currently facing an issue where I have declared a variable and have fetched the workarea field name in it. To be exact, the variable contains the workarea name whose value I am finally populating to the table control. Now although the workarea name when manually copied and pasted in field name in debugging mode exhibits the value of the it, Im unable to fetch the same value in the variable as I have only the work area name in it. I need the value of the workarea-field to be in the variable.Please provide your valuable suggestions for this issue...
    Regards,
    Edited by: Vishwanath Sreedharen on Jan 2, 2012 3:25 PM

    Hi Nabheet,
    Please consider the below example...
    DATA: l_var(30) TYPE C.
    CONCATENATE 'wa' '-' I_FIELD2-NAME INTO l_var.
    The i_field2-name contains the name of a custom table field CP_CUSTOM_GRP. So now the l_var contains wa_cp_custom_grp.
    Now consider the wa_cp_custom_grp has a value 'BA'.
    Now my issue is the l_var contains wa_cp_custom_grp but not its value(too obvious)... Would like to know whether is there a way through which the value of this wa_cp_custom_grp  'BA' could be populated to the variable l_var...

  • Code to equate table value to work area field name

    Hello Experts,
    How to match a certain value fetched from table to the internal table field.
    For instance: transparent table has a column containing values as
    AMOUNT
    QUANTITY
    there is another work area structure associated with different internal table consisting of amount and quantity fields.
    Now depending on whether the record from transparent table has fetched AMOUNT or QUANTITY, i have to read either the amount or quantity value from the work area.
    Can any one please suggest a technique to do it?
    Thanks,
    Pankaj

    Hi
    Try This:
    suppose you have zitab table as trans. Table and another table itab1 with work area wa.
    First you need to select values from Zitab to an internal table say itab.
    sort itab by <field name>
    loop at itab.
    read table itab1 into wa with key quantity = itab-quantity
                                      amount = itab-amount.
    endloop.
    This will read table itab1 where quantity and amount from itab table matches.
    hope this will work for you.
    thanks
    Lalit Gupta

  • BCD_FIELD_OVERFLOW  error while assigning value to dynamic work area

    Hi guys,
                I am trying following code --it uses dynamic table concept.
           LABSTD2 TYPE P DECIMALS  1,
           LABST_2 TYPE P DECIMALS   1,
           LABST_12 TYPE P DECIMALS 1,
           T_ARTMAS-LABST_12 = T_ARTMAS-LABSTD1 + T_ARTMAS-LABSTD2.
           ASSIGN COMPONENT 'LABST_12' OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
           <DYN_FIELD> = T_ARTMAS-LABST_12.
    Value in T_ARTMAS-LABST_12 in debug was 14690.0....still it gave following error-----
    Runtime Error       BCD_FIELD_OVERFLOW
    Except.                CX_SY_CONVERSION_OVERFLOW
    Even i changed decleartion as follows
    LABST_12 TYPE P lenght 10 DECIMALS 1,
    Still it is giving same problem ...
    Kindly help.

    Hi, I think it has nothing to do with an overflow but something with the code. Try this simple (rather stupied) code:
    TYPES: BEGIN OF ty_line,
            fld1      TYPE p DECIMALS 1,
            fld2      TYPE p DECIMALS 1,
            fld3      TYPE p DECIMALS 1,
          END OF ty_line.
    DATA lv_rec       TYPE ty_line.
    DATA lv_count(1)  TYPE n.
    DATA lv_fld1      TYPE p DECIMALS 1.
    DATA lv_fld2      TYPE p DECIMALS 1.
    DATA lv_fld3      TYPE p DECIMALS 1.
    DATA lv_field     TYPE string.
    FIELD-SYMBOLS: <fs_fld> TYPE any.
    BREAK-POINT.
    lv_fld1 = 15211444 / 10.
    lv_fld2 = 54879072 / 10.
    lv_fld3 = lv_fld1 + lv_fld2.
    DO 3 TIMES.
      lv_count = lv_count + 1.
      CLEAR lv_field.
      CONCATENATE 'lv_rec-fld' lv_count INTO lv_field.
      CONDENSE lv_field NO-GAPS.
      ASSIGN (lv_field) TO <fs_fld>.
      <fs_fld> = lv_fld3.
    ENDDO.
    BREAK-POINT.
    Succes.

  • Modify dynamic internal table from dynamic work area using index...

    ASSIGN w_text TO <fs>.
        ASSIGN w_temp TO <fs1>.
        lint_tab_iw49[] = <tab>.
        lint_tab_iw49_t[] = <tab>.
        DELETE ADJACENT DUPLICATES FROM lint_tab_iw49 COMPARING aufnr.
        LOOP AT lint_tab_iw49 INTO lws_tab_iw49.
          READ TABLE lint_object_tab1 INTO lws_object_tab1
                        WITH KEY aufnr = lws_tab_iw49-aufnr.
          IF sy-subrc EQ 0.
    Collect operations in rows of an internal table.
            w_idx = 1.
            WHILE w_idx < 51.
              w_nn = w_idx.
              CONCATENATE 'lws_object_tab1-ZZOPERN' w_nn INTO w_xx.
              ASSIGN (w_xx) TO <fs>.
              CONCATENATE w_text <fs> INTO w_text SEPARATED BY ','.
              w_idx = w_idx + 1.
            ENDWHILE.
    Split operations into an internal table to get operations in rows.
            SPLIT w_text AT ',' INTO TABLE lint_vornr.
            DELETE lint_vornr WHERE vornr = ' '.
            DESCRIBE TABLE lint_vornr LINES w_lines.
    Collect costs in rows of an internal table
            CLEAR: w_idx, w_nn, w_xx, w_text.
            w_idx = 1.
            WHILE w_idx < 51.
              w_nn = w_idx.
              CONCATENATE 'lws_object_tab1-ZZCOST' w_nn INTO w_xx.
              ASSIGN (w_xx) TO <fs>.
              <fs1> = <fs>.
              CONCATENATE w_text <fs1> INTO w_text SEPARATED BY ','.
              w_idx = w_idx + 1.
            ENDWHILE.
    Split costs into an internal table to get costs in rows.
            SPLIT w_text AT ',' INTO TABLE lint_escost.
            DELETE lint_escost WHERE cost = ' '.
            DESCRIBE TABLE lint_escost LINES w_lines_cost.
           Append lines of lint_escost from 1 to w_lines to lint_escost1.
    Collect currencies in rows of an internal table
            CLEAR: w_idx, w_nn, w_xx, w_text.
            w_idx = 1.
            WHILE w_idx < 51.
              w_nn = w_idx.
              CONCATENATE 'lws_object_tab1-ZZCURR' w_nn INTO w_xx.
              ASSIGN (w_xx) TO <fs>.
              <fs1> = <fs>.
              CONCATENATE w_text <fs1> INTO w_text SEPARATED BY ','.
              w_idx = w_idx + 1.
            ENDWHILE.
    Split costs into an internal table to get costs in rows.
            SPLIT w_text AT ',' INTO TABLE lint_curr.
            DELETE lint_curr WHERE curr = ' '.
            DESCRIBE TABLE lint_curr LINES w_lines_curr.
           Append lines of lint_curr from 1 to w_lines to lint_curr1.
          ENDIF.
          PERFORM update_object_tab_for_iw49n.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " modify_object_tab
    *&      Form  update_object_tab_for_IW49N
          text
    -->  p1        text
    <--  p2        text
    FORM update_object_tab_for_iw49n .
      DATA: lws_temp TYPE string VALUE 'where aufnr = lws_tab_iw49-aufnr',
            lw_index TYPE sy-index.
      READ TABLE <tab> TRANSPORTING NO FIELDS WITH KEY ('AUFNR') =
      lws_tab_iw49-aufnr.
      IF sy-subrc EQ 0.
        lw_index = sy-tabix.
        LOOP AT <tab> INTO <wa1> FROM lw_index.
          IF <wa1>-aufnr NE lws_tab_iw49-aufnr.
            EXIT.
          ELSE.
            CLEAR lw_index.
           lw_index = sy-tabix.
            lw_index = 1.
            WHILE lw_index LE w_lines.
              READ TABLE lint_escost INTO lws_escost INDEX lw_index.
              IF sy-subrc EQ 0.
             lw_index = lw_index + 1.
                <wa1>-zzcost1 = lws_escost-cost.
              ENDIF.
              READ TABLE lint_curr1 INTO lws_curr INDEX lw_index.
              IF sy-subrc EQ 0.
                <wa1>-zzcurr1 = lws_curr-curr.
              ENDIF.
              MODIFY <tab> FROM <wa1> "TRANSPORTING ('ZZCOST1') ('ZZCURR1')
                        INDEX sy-tabix.
              IF sy-subrc EQ 0.
              ENDIF.
              lw_index = lw_index + 1.
            ENDWHILE.
          ENDIF.
        ENDLOOP.
      ENDIF. 
    ENDFORM.                    " update_object
    Hi,
    With referene to the code snippet above I want to modify <tab> from <wa1> on specific indices or with specific where condition.
    Is it achievable... How?
    Many thanks in advance.
    Thanks & Regards,
    Shreya

    You might have to split the code in to two parts to keep the formatting intact.

  • Read dynamic field symbol Work Area before append to dynamic table

    Hi experts:
    I have a dynamic work area but before doing an append to the dynamic table, I need to do some validation on some fields of the work area in order to decide to append it or not, but I don't know how...
    More or less this is the example
    loop at so_kschl.
        field = so_kschl-low.
        if <t_dyntable>-field = 0. "if the value of this field in dinamic table is 0.
    don't append
        else.
           APPEND <fs_dyntable> TO <t_dyntable>.  
        endif.
    endloop.
    Thank you very much for your help.
    Miriam

    Check this example, you read the component of the dynamic work area and assign it to a field-symbols. In this case, I validate that the entry is always 'a'.
    DATA: i_lvc TYPE lvc_t_fcat WITH HEADER LINE,
          i_table TYPE REF TO data,
          l_style TYPE lvc_fname,
          l_warea TYPE REF TO data,
          l_name(7) VALUE 'VARCHAR'..
    FIELD-SYMBOLS: <fs> TYPE table,
                  <fs2> TYPE ANY,
                  <fs3> TYPE ANY.
    PARAMETERS p_char TYPE c LOWER CASE.
    START-OF-SELECTION.
      i_lvc-fieldname = 'Varchar'.
      i_lvc-inttype = 'C'.
      i_lvc-intlen = 1.
      APPEND i_lvc.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
      it_fieldcatalog = i_lvc[]
      IMPORTING
      ep_table = i_table
      e_style_fname = l_style.
      ASSIGN i_table->* TO <fs>.
      CREATE DATA l_warea LIKE LINE OF <fs>.
      ASSIGN l_warea->* TO <fs2>.
      <fs2> = p_char.
      ASSIGN COMPONENT l_name OF STRUCTURE <fs2> TO <fs3>.
      IF <fs3> = 'a'.
        WRITE: 'Component VARCHAR is a'.
    *  APPEND <fs2> TO <fs>.
      ELSE.
        WRITE: 'Component VARCHAR is not a'.
      ENDIF.

  • ABAP dynamic tables add fields

    Hi, i have to extend a dynamic table like this:
    FIELD-SYMBOLS: <g_data> TYPE table.
    I have to build a custom structure with all the fields
    of g_data plus some other fixed fields.
    In other words if g_data looks like this
    AUFNR POSNR
    100   10
    200   20
    My structure must be:
    AUFNR POSNR F1  F2
    100   10    23  21
    200   20    234 32
    Thanks in advance.
    Is anybody here who haves some ideas

    Here is a sample program of how to build a dynamic internal table.
    report zrich_0003
           no standard page heading.
    type-pools: slis.
    field-symbols: <dyn_table> type standard table,
                   <dyn_wa>.
    data: alv_fldcat type slis_t_fieldcat_alv,
          it_fldcat type lvc_t_fcat.
    selection-screen begin of block b1 with frame title text-001.
    parameters: p_check type c.
    selection-screen end of block b1.
    start-of-selection.
      perform build_dyn_itab.
      perform build_report.
      loop at <dyn_table> into <dyn_wa>.
        write:/ <dyn_wa>.
      endloop.
    *  Build_dyn_itab
    form build_dyn_itab.
      data: index(3) type c.
      data: new_table type ref to data,
            new_line  type ref to data,
            wa_it_fldcat type lvc_s_fcat.
      clear wa_it_fldcat.
      wa_it_fldcat-fieldname  = 'AUFNR'.
      wa_it_fldcat-datatype = 'CHAR'.
      wa_it_fldcat-intlen = 12.
      append wa_it_fldcat to it_fldcat .
      clear wa_it_fldcat.
      wa_it_fldcat-fieldname  = 'POSNR'.
      wa_it_fldcat-datatype = 'CHAR'.
      wa_it_fldcat-intlen = 6.
      append wa_it_fldcat to it_fldcat .
    * Create fields
      clear index.
      do 2 times.
        index = sy-index.
        clear wa_it_fldcat.
        concatenate 'Field' index into
                 wa_it_fldcat-fieldname .
        condense  wa_it_fldcat-fieldname no-gaps.
        wa_it_fldcat-datatype = 'CHAR'.
        wa_it_fldcat-intlen = 5.
        append wa_it_fldcat to it_fldcat .
      enddo.
    * Create dynamic internal table and assign to FS
      call method cl_alv_table_create=>create_dynamic_table
                   exporting
                      it_fieldcatalog = it_fldcat
                   importing
                      ep_table        = new_table.
      assign new_table->* to <dyn_table>.
    * Create dynamic work area and assign to FS
      create data new_line like line of <dyn_table>.
      assign new_line->* to <dyn_wa>.
    endform.
    *      Form  build_report
    form build_report.
      data: fieldname(20) type c.
      data: fieldvalue(5) type c.
      data: index(3) type c.
      field-symbols: <fs1>.
      assign component  'AUFNR'  of structure <dyn_wa> to <fs1>.
      <fs1> =  '123456789'.
      assign component  'POSNR'  of structure <dyn_wa> to <fs1>.
      <fs1> =  '000001'.
      do 2 times.
        index = sy-index.
    * Set up fieldname
        concatenate 'FIELD' index into
                 fieldname .
        condense   fieldname  no-gaps.
    * Set up fieldvalue
        concatenate 'FLD' index into
                 fieldvalue.
        condense   fieldvalue no-gaps.
        assign component  fieldname  of structure <dyn_wa> to <fs1>.
        <fs1> =  fieldvalue.
      enddo.
    * Append to the dynamic internal table
      append <dyn_wa> to <dyn_table>.
    endform.
    Regards,
    Rich Heilman
    Message was edited by: Rich Heilman
    I have modified the sample to include your requirement

  • Get the fieldnames of a generic internal table or work area

    Hi All,
           I have one generic work area which I have created in the below manner...
    * ET_DATA itself is a generic table of type ANY...can have any internal table data in it.
    * Create dynamic internal table
      CREATE DATA lv_new_table LIKE et_data.
      ASSIGN lv_new_table->* TO <fs_dyn_table>.
    * Create dynamic work area and assign to fieldsymbol.
      CREATE DATA lv_new_line LIKE LINE OF <fs_dyn_table>.
      ASSIGN lv_new_line->*   TO <fs_dyn_wa>.
    Now...I need to get the field names of this dynamic internal table or work area..
    I have already searched in forum...got many answers..but none them gives me the output.
    Please note that I require the field names and not field position..
    Awaiting your suggestions on how to get field names of this dynamic work area...

      create data wa_ref like line of it_data.
      assign wa_ref->* to <p_data>.
      desc_table ?= cl_abap_tabledescr=>describe_by_data( it_data ).
      desc_struc ?= desc_table->get_table_line_type( ).
      describe field <p_data> type rtty components ncom.
    This one is working in our environment without any error. it_data is an importing parameter in the signature of a method of type any table.

  • Dynamic table with field type table

    Hi,
    I´m using "cl_alv_table_create=>create_dynamic_table" to create a dynamic table for ALV Grid.
    But...I need to use colors in ALV, then I need to declare a field type LVC_S_SCOL in dynamic table from "cl_alv_table_create=>create_dynamic_table".
    How can I declare this in fieldcat?
    The code:
    Creating dynamic table
    DATA: table_agrup TYPE REF TO data,
            line_agrup  TYPE REF TO data.
    CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog           = t_fieldcat
        IMPORTING
          ep_table                  = table_agrup
        EXCEPTIONS
          generate_subpool_dir_full = 1
          OTHERS                    = 2.
        ASSIGN table_agrup->* TO .
    Printing ALV
      CALL METHOD obj_grid->set_table_for_first_display
        EXPORTING
          is_variant                    = w_variant
          i_save                        = 'A'
          is_layout                     = w_layout
        CHANGING
          it_outtab                     =
          it_fieldcatalog               = t_fieldcat
          it_sort                       = t_sort
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
    Thanks.

    It is not possible with the  METHOD cl_alv_table_create=>create_dynamic_table to include another table inside that newly generated table.
    I have tried to do it with the code and I got the dynamic table created after at the end of the program.
    In the code,
    <DYN_TABLE> has same effect as your <table> variable
    <DYN_WA> has same effect as your <HEADER>
    REPORT  ZTEST_NP_DYNAMIC.
    DATA: DY_TABLE TYPE REF TO DATA,
          DY_LINE  TYPE REF TO DATA.
    FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
                   <DYN_WA>,
                   <DYN_FIELD>.
    FIELD-SYMBOLS: <FS> TYPE ANY.
    * To generate the Dyanmic table with the COLOR
    DATA: LS_SOURCE TYPE STRING.
    DATA: LT_SOURCE LIKE STANDARD TABLE OF LS_SOURCE WITH HEADER LINE.
    DATA: L_NAME LIKE SY-REPID.
    DATA: L_MESSAGE(240) TYPE C,
          L_LINE TYPE I,
          L_WORD(72) TYPE C.
    DATA: L_FORM(30) TYPE C VALUE 'TABLE_CREATE'.
    LT_SOURCE = 'REPORT ZTEST_SUBROUTINE_POOL.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'FORM  TABLE_CREATE USING I_FS TYPE ANY.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'DATA: BEGIN OF LT_GENTAB OCCURS 0.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'DATA: BUKRS TYPE BUKRS. '.
    APPEND LT_SOURCE.
    LT_SOURCE = 'DATA: BKTXT TYPE BKTXT. '.
    APPEND LT_SOURCE.
    * you can add your fields here.....
    LT_SOURCE = 'DATA: COLOR TYPE lvc_t_scol. '.
    APPEND LT_SOURCE.
    LT_SOURCE = 'DATA: END OF LT_GENTAB.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'DATA: POINTER TYPE REF TO DATA.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'CREATE DATA POINTER LIKE STANDARD TABLE OF LT_GENTAB.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'I_FS = POINTER.'.
    APPEND LT_SOURCE.
    LT_SOURCE = 'ENDFORM. '.
    APPEND LT_SOURCE.
    L_NAME = 'ZTEST_SUBROUTINE_POOL'.
    CATCH SYSTEM-EXCEPTIONS GENERATE_SUBPOOL_DIR_FULL = 9.
      GENERATE SUBROUTINE POOL LT_SOURCE NAME L_NAME
               MESSAGE L_MESSAGE LINE L_LINE WORD L_WORD.  "#EC CI_GENERATE
    ENDCATCH.
    IF NOT L_MESSAGE IS INITIAL.
      MESSAGE E000(0K) WITH L_MESSAGE L_LINE L_WORD.
    ENDIF.
    ASSIGN DY_TABLE TO <FS>.
    PERFORM (L_FORM) IN PROGRAM (L_NAME) USING <FS>.
    ASSIGN DY_TABLE->* TO <DYN_TABLE>.
    * Create dynamic work area and assign to FS
    CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
    ASSIGN DY_LINE->* TO <DYN_WA>.
    Write: 'bye'.
    Regards,
    Naimesh Patel

  • Internal table & Work area

    Hi Experts,
    I am a novice to ABAP. Can anyone tell me whats the difference b/w internal table and work area. In writing function modules how these will be utilized and in what way.
    Regards
    ss

    HI,
    Internal tables are a standard data type object which exists only during the runtime of the program. They are used to perform table calculations on subsets of database tables and for re-organising the contents of database tables according to users need.
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/content.htm
    Difference between Work Area and Header Line
    While adding or retrieving records to / from internal table we have to keep the record temporarily.
    The area where this record is kept is called as work area for the internal table.  The area must have the same structure as that of internal table. An internal table consists of a body and an optional header line.
    Header line is a implicit work area for the internal table.  It depends on how the internal table is declared that the itab will have the header line or not.
    e.g.
    data: begin of itab occurs 10,
               ab type c,
               cd type i,
            end of itab.  " this table will have the header line.
    data: wa_itab like itab. " explicit work area for itab
    data: itab1 like itab occurs 10. " table is without header line.
    The header line is a field string with the same structure as a row of the body, but it can only hold a single row.
    It is a buffer used to hold each record before it is added or each record as it is retrieved from the internal table.  It is the default work area for the internal table
    1) The difference between
    whih header line and with out heater line of internal table.
    ex:-
    a) Data : itab like mara occurs 0 with header line.
    b) Data: itab like mara occurs 0.
    -While adding or retrieving records to / from internal table we have to keep the record temporarily.
    -The area where this record is kept is called as work area for the internal table.
    -The area must have the same structure as that of internal table. An internal table consists of a body and an optional header line.
    -Header line is a implicit work area for the internal table. It depends on how the internal table is declared that the itab will have the header line or not.
    a) Data : itab like mara occurs 0 with header line.
    table is with header line
    b) Data: itab like mara occurs 0.
    table is without header line
    2)work area / field string and internal table
    which one is prefarable for good performance any why ?
    -The header line is a field string with the same structure as a row of the body, but it can only hold a single row , whereas internal table can have more than one record.
    In short u can define a workarea of an internal table which means that area must have the same structure as that of internal table and can have one record only.
    Example code:
    data: begin of itab occurs 10,
    ab type c,
    cd type i,
    end of itab. " this table will have the header line.
    data: wa_itab like itab. " explicit work area for itab
    data: itab1 like itab occurs 10. " table is without header line.
    http://www.allsaplinks.com/faq_abap_internaltables.html
    Do reward if it helps,
    Regards,
    Laxmi

Maybe you are looking for

  • Printer will not connect

    Whenever I try to print something over our wirelessly connected printer, I get an error in the automatic HP Photosmart app that says "Looking for printer. Printer not connected." It knows which printer it should be printing to, as it lists the correc

  • Conditional execution of main DataTemplate

    Hi All, I am working on a Report in BI Publisher where the Data Model consists of three data sets of type-data template which are as below: 1) Before Trigger 2) Main DataTemplate 3) After Trigger Now, I need to conditionally execute the main DataTemp

  • RT target is running at 99.8% CPU

    Hi, I am using CRIO 9014 with 9103 chassi. My RT controller is running at 99.8% of CPU when i run my application. Is it Ok to run my CRIO under that much load? I am using Labview 8.6. Thanks.

  • HP Envy Phoenix shuts down when gaming

    Hello! So I'm having some problems with my brand new computer. I'll dump the info below. Anyway, it works perfectly fine with other processeses such as Photoshop and Chrome, though the moment I launch a game that has anything higher than 2D graphics,

  • Increasing the length of Char type Info-object ( impact )?

    Hi, We are on BW3.5 version and we have a custom defined Info-object ZP_REPORT(say )whose length is 3 now as all the three digit series will be used up in near future we have a requirement to increase the length of the characteristic. This Info-objec