Field Symbol Problem

Hi All,
I want to select the data of a standard table directly into an internal table but I am not able to get that.
Note : I am working 4.6C version of SAP
Please see the below code :
REPORT zdwnld_tabl_data .
PARAMETERS : p_tabl1 TYPE dd02v-tabname.
DATA : ddobtype TYPE dd02v-tabclass.
DATA : ref TYPE REF TO data.
FIELD-SYMBOLS : <data_tab> TYPE ANY.
CALL FUNCTION 'DDIF_NAMETAB_GET'
     EXPORTING
          tabname   = p_tabl1
          all_types = ' '
     IMPORTING
          ddobjtype = ddobtype
     EXCEPTIONS
          OTHERS    = 2.
IF sy-subrc <> 0 OR ddobtype = 'INTTAB'.
  RAISE tabl_not_found.
ENDIF.
CREATE DATA ref type (p_tabl1).
ASSIGN ref->* TO <data_tab>.
SELECT * FROM (p_tabl1) INTO <data_tab>.
ENDSELECT.
Here if I dont want SELECT....ENDSELECT but want the data directly into an internal table. When I change the select statement as follows :
SELECT * FROM (p_tabl1) INTO table <data_tab>.
it throws error saying <data_tab> is not an internal table. I understand the error.
To resolve this error when I change the FIELD SYMBOL declaration as
FIELD-SYMBOLS : <data_tab> TYPE TABLE. OR FIELD-SYMBOLS : <data_tab> TYPE ANY TABLE. , the program dumps on ASSIGN ref->  statement saying error as Type conflict with ASSIGN in program.
Any idea how this can be resolved.
Regards
Abhii

Hi Koen De Ruyck,
Your answer was very very helpful. I have come to a conclusion that, in 4.6 C we can get the data into an internal dynamic table only by using the method create_dynamic_table of class cl_alv_table_create.
All the above methods suggested didnt work.
REPORT zdwnld_tabl_data .
PARAMETERS : p_tabl1 TYPE dd02v-tabname.
DATA: dy_table TYPE REF TO data,
      dy_line  TYPE REF TO data.
DATA : it_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS : <data_tab> TYPE STANDARD TABLE,
                <dyn_wa>.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
*       I_BUFFER_ACTIVE              =
   i_structure_name             = p_tabl1
*       I_CLIENT_NEVER_DISPLAY       = 'X'
*       I_BYPASSING_BUFFER           =
  CHANGING
    ct_fieldcat                  = it_fcat
*     EXCEPTIONS
*       INCONSISTENT_INTERFACE       = 1
*       PROGRAM_ERROR                = 2
*       OTHERS                       = 3
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
*        I_STYLE_TABLE             =
    it_fieldcatalog           = it_fcat
  IMPORTING
    ep_table                  = dy_table
*        E_STYLE_FNAME             =
*      EXCEPTIONS
*        GENERATE_SUBPOOL_DIR_FULL = 1
*        others                    = 2
IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ASSIGN dy_table->* TO <data_tab>.
SELECT * FROM (p_tabl1) INTO TABLE <data_tab>.
However I have tested this with some tables, its working fine but its giving dump for MARA table, the dump says output table is too small , any idea on how we can overcome this error.
Regards
Abhii

Similar Messages

  • Problem in assigning field symbol to a nested internal table

    Hi All,
    I have searched the forum but could not find a solution to this problem. I have a requirement where I need to define an internal table within an internal table, so I have used pointer within the outer internal table(itab2) which point to the inner table. However, I am facing problem while assigning the pointer.
    data: begin of struct1 occurs 0,
            fld3(10) type C,
           end of struct1.
    data: begin of itab2 occurs 0,
            fld1(10) type C,
            fld2(10) type C,
            p_inner like ref to struct1,
          end of itab2.
    field-symbols <inner_table> type any.
    I want to assign "itab2->p_inner->* " to "<inner_table>".
    However, the following statement is Not working:
    assign itab2->p_inner->* to <inner_table>.
    I want to fill the values within fields fld1, fld2 and fld3 and append it in itab2.
    The final table should be like:
    ITAB2:
    fld1    fld2    fld3
    aa      bb      cc
                     dd
                     ee
    11      22      33
                     44
                     55
    I have tried many other ways too but could not suceed, please help.
    Thanks,
    Vishal.

    Thanks Matt,
    But how do I append the values within this internal table ??
    When I am using the following code:
    ls_wa-fld3 = 'A'.
    ls_wa-t_in-fld1 = 'B'.
    ls_wa-t_in-fld2 = 'C'.
    ls_wa-t_in-fld1 = 'D'.
    ls_wa-t_in-fld2 = 'E'.
    append ls_wa to lt_tab.
    Its giving an error that:
    The data object "LS_WA" does not have a component called "T_IN-FLD1".
    I wanted the values to be appended in the following way in lt_tab:
    fld3     fld1     fld2
    A     B     C
         D     E
    Please help.

  • Problem with slis_t_specialcol_alv Field Symbol Assignment

    I have created a dynamic internal table (runtime determined number of columns) to contain data to be displayed in an ALV. I’ve also made ensured that the last column of the dynamic itab is of type <b>'slis_t_specialcol_alv'</b> and named <b>‘CINFO’</b> to contain color information for that particular row. In the code below the dynamic itab is pointed to by field symbol <dyn_table> while the work area for it would be <dyn_wa>.
    Somewhere down the line I attempt to assign the ‘CINFO’ component of the current row of the itab to a field symbol called <fs_cinfo> typed as ‘slist_t_specialcol_alv’ (Same as CINFO).
    I used the code:
    ASSIGN COMPONENT 'CINFO' OF STRUCTURE <dyn_wa> TO <fs_cinfo>.
    This gives me the runtime error:
    <i>Type conflict in the ASSIGN statement in the program "ZHRR001_TEMMATRIX".
    You attempted to assign a field to a typed field symbol,
    but the field does not have the required type.    </i>     
    I am unsure why this happens as both the component CINFO and FS <fs_cinfo> are of type slist_t_specialcol_alv.
    For some odd reason though during debugging, I took a look at the <dyn_wa> structure and the component type of CINFO was displayed as “C”???
    Here is the relevant portion of code (creation of dynamic itab and attempting to assign <fs_cinfo>)
    FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
                   <dyn_wa>.
    FIELD-SYMBOLS: <fs_cinfo> TYPE slist_t_specialcol_alv.
    DATA: lw_cinfo TYPE slis_specialcol_alv.
    DATA:          li_fldcat TYPE lvc_t_fcat,
                   lw_fldcat TYPE lvc_s_fcat.
    *Create internal table fields (they will be called Field1, Field2, etc)
    *Last column will be named 'CINFO' to contain row color information
    DO l_alvcolumncount TIMES.
      index = sy-index.
      IF index <> l_alvcolumncount.
        CLEAR lw_fldcat.
        CONCATENATE 'Field' index INTO lw_fldcat-fieldname .
        CONDENSE lw_fldcat-fieldname NO-GAPS.
        lw_fldcat-datatype = 'STRING'.
    *    lw_fldcat-intlen = 5.
        APPEND lw_fldcat TO li_fldcat .
      ELSE.
        CLEAR lw_fldcat.
        lw_fldcat-fieldname = 'CINFO'.
        CONDENSE lw_fldcat-fieldname NO-GAPS.
        lw_fldcat-datatype = 'slis_t_specialcol_alv'.
        APPEND lw_fldcat TO li_fldcat.
      ENDIF.
    ENDDO.
    * Create dynamic internal table and assign to FS
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog = li_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>.
      ASSIGN COMPONENT 'CINFO' OF STRUCTURE <dyn_wa> TO <fs_cinfo>.
    * Color this cell
      lw_cinfo-fieldname = fieldname.
      lw_cinfo-color-col = 6.
      APPEND lw_cinfo TO <fs_cinfo>.
    Message was edited by: Sow Yong Wong

    Hello Sow
    There is a big problem in the program: you are mixing types used for FM-based ALV (SLIS_...) and ABAP-OO based ALV (LVC_...).
    For ABAP-OO based row colouring you have to define your itab like this:
    TYPES: ty_s_outtab.
      INCLUDE TYPE kna1. " just an example
    TYPES: rowcolor(4)  TYPE c.
    TYPES: END OF ty_s_outtab.
    TYPES: ty_t_outtab TYPE STANDARD TABLE of ty_s_outtab
                       WITH DEFAULT KEY.
    In the layout (LVC_S_LAYO) you have to set <b>ls_layout-info_fname = 'ROWCOLOR'</b>.
    ROWCOLOR has to be filled according to <b>Cxyz</b> whereas
    - x = color
    - y = inverse on/off
    - z = intensified on/off
    For documentation please refer to <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907">An Easy Reference to ALV Grid Control</a>
    Regards
      Uwe

  • Problem with field symbols in ecc 6.0

    i have the following  code  written in 4.6 version   now i am executing the old report   in 6.0  but  i am facing with some unicode error.
      FIELD-SYMBOLS:
        <line_of_bs_table> LIKE tbl1024,
       READ TABLE bs_table INDEX row_bst ASSIGNING  <line_of_bs_table> .
        buffer_bsbuffer_ptr(aux) =  <line_of_bs_table> >col_bst.
    tb1024 is standard sap structure  for storing buffer contents
    i have the following error in ecc 6.0
    structure type   '<line_of_bs_table> >+col_bst'  does not start with a charecter type  field in unicode programs in such cases
    offset/ length declarations are not allowed.
    can any one tell how can a field symbol  structure is changed  to charecter  type.

    Hi elinuk,
    you have already posted this thread in the ABAP general forum under problem in field symbols in ecc6.0 and I think that this forum is more related to this issue than the DMS forum. So please close this thread and investigate this issue further in the ABAP general forum.
    Best regards,
    Christoph

  • Problem with field-symbol values not updating

    H i ,
          I have following piece of code :
    Assigning Dynamic Table to Field Symbol
        ASSIGN ist_dyn_table->* TO <gs_dyn_table>.
    *   Creating Structure for dynamic table
        CREATE DATA gs_dyn_line LIKE LINE OF <gs_dyn_table>.
    *   Creating line type for the Dynamic Values
        ASSIGN gs_dyn_line->* TO <gs_line>.
    *   Populating values in the dynamic table
        LOOP AT ist_pwcl_main INTO wa_pwcl_main.
          ASSIGN COMPONENT gc_fld_werks OF STRUCTURE <gs_line> TO <gs_field>.
       1   IF sy-subrc EQ 0.
       2        <gs_field> = wa_pwcl_main-werks.
       3      ENDIF.
       5  IF <gs_field> IS ASSIGNED.
       6     <gs_field> = wa_pwcl_main-vbeln.
          ENDIF.
      7 IF <gs_field> IS ASSIGNED.
      8  <gs_field> =  wa_pwcl_main-posnr.
          ENDIF.
       IF <gs_field> IS ASSIGNED.
            <gs_field> = wa_pwcl_main-quant.
          ENDIF.
    on debugging  at line 2 <gs_filed> contains the value of werks .
    but at line 6 <gs_field> contains value of vbeln as 0 and at 8 of posnr as 0 .
    What can be the problem ? Other values are getting assigned properly .
    Plz help ...
    Regards .

    Hi,
    Assigning Dynamic Table to Field Symbol
        ASSIGN ist_dyn_table->* TO <gs_dyn_table>.
      Creating Structure for dynamic table
        CREATE DATA gs_dyn_line LIKE LINE OF <gs_dyn_table>.
      Creating line type for the Dynamic Values
        ASSIGN gs_dyn_line->* TO <gs_line>.
      Populating values in the dynamic table
        LOOP AT ist_pwcl_main INTO wa_pwcl_main.
          ASSIGN COMPONENT gc_fld_werks OF STRUCTURE <gs_line> TO <gs_field>.
       1   IF sy-subrc EQ 0.
       2        <gs_field> = wa_pwcl_main-werks.
       3      ENDIF.
       5  IF <gs_field> IS ASSIGNED.
       6     <gs_field> = wa_pwcl_main-vbeln.
          ENDIF.
      7 IF <gs_field> IS ASSIGNED.
      8  <gs_field> =  wa_pwcl_main-posnr.
          ENDIF.
       IF <gs_field> IS ASSIGNED.
            <gs_field> = wa_pwcl_main-quant.
          ENDIF.
    Based on your coding above, <gs_field> has been assigned with data type 'WERKS' (i'd assume component gc_fld_werks found from structure <gs_line> is a plant typed), which is a CHAR(4) data type.
    Meaning, if <gs_field> is assigned with Plant type value, e.g. <gs_field> = '1000', field symbol <gs_field> will contain 4 character only.
    At line 6, if wa_pwcl_main-vbeln = '0000201000', <gs_field> is only capturing '0000' only. This is also happened to line 8.
    However, it looks like that <gs_field> is getting over-write if ASSIGNED statement returns SY-SUBRC = 0.
    Hope this helps.
    Regards,
    Patrick

  • Problem with FIELD SYMBOL upgrading from 46c to ECC6.0

    Hi people... i'm having big trouble making an upgrade from 4.6c to ECC6.0 with this portion of code of Z's programm.
    In the line
    ASSIGN (w_field) TO <fs_field>.
    i don't see any assigment, so <fs_field> remains empty, when enters into firts IF conditions it is TRUE, then go into second IF condition, it is FALSE, and finally assing
    <fs_field> = '/'.
    , at this point i have a DUMP telling me MOVE_TO_LIT_NOTALLOWED_NODATA
    I'm try any way of definition, assigment, but always i have a DUMP.
    Someone can give a hand with this issue!
    Thanks in advance!!!
    This is the full code from the FORM with the problem.
    *       FORM GRABA                                        *
    *  -->  VALUE(P_TABLE)                                  *
    FORM graba USING value(p_table) TYPE c.
      DATA:
        w_field(60),
        w_dd03l  TYPE dd03l.
      FIELD-SYMBOLS <fs_field>.
      CLEAR w_flag.
      CASE p_table.
        WHEN 'BGR00'.
          d_bgr00-group  = w_batin.
          d_bgr00-mandt  = sy-mandt.
          d_bgr00-usnam  = sy-uname.
          d_bgr00-xkeep  = 'X'.
          d_bgr00-nodata = '/'.
          d_bgr00-stype = 0.
          TRANSFER d_bgr00 TO w_fname.
        WHEN 'BBKPF'.
          LOOP AT gt_dd03l INTO w_dd03l WHERE tabname EQ p_table.
            CONCATENATE
                'd_'
                w_dd03l-tabname
                w_dd03l-fieldname
              INTO w_field.
            ASSIGN (w_field) TO <fs_field>.
            IF <fs_field> IS INITIAL OR <fs_field> EQ '/'.
              IF w_dd03l-fieldname EQ 'TBNAM'.
                <fs_field> = p_table.
              ELSE.
                <fs_field> = '/'.
              ENDIF.
            ELSE.
              w_flag = 'X'.
            ENDIF.
          ENDLOOP.
          TRANSFER d_bbkpf TO w_fname.
        WHEN 'BBSEG'.
          LOOP AT gt_dd03l INTO w_dd03l WHERE tabname EQ p_table.
            CONCATENATE
                'd_'
                w_dd03l-tabname
                w_dd03l-fieldname
              INTO w_field.
            ASSIGN (w_field) TO <fs_field>.
            IF <fs_field> IS INITIAL OR <fs_field> EQ '/'.
              IF w_dd03l-fieldname EQ 'TBNAM'.
                <fs_field> = p_table.
              ELSE.
                <fs_field> = '/'.
              ENDIF.
            ELSE.
              w_flag = 'X'.
            ENDIF.
          ENDLOOP.
          TRANSFER d_bbseg TO w_fname.
      ENDCASE.
    ENDFORM.
    Edited by: Matt on Dec 15, 2008 5:03 PM - Made subject more informative

    Gentlemen:
    The problem around this statement:
    ASSIGN (w_field) TO <fs_field>
    is explained as follows:
    1. In ABAP language, there are two ways for assigning a new value to a field-symbol.
    - Sentence: ASSIGN (values) TO <my_field_symbol>.
      In this case, the <my_field_symbol> receives from (w_field) the data type and value content of this variable. So, we keep that a FSymbol is assigned and, at the same time, receives an initial value.
    - Sentence: <my_field_symbol> = '/' or <my_field_symbol> = my_var.
      In this way, we only pass the content of the variable next to = sign. But before this, the field-symbol must had been assigned (using ASSIGN statement), in another case, the compiler raises an exception.
    Following the example of Federico... I think he tried to assign a field like this (please, supose the program imports the structure of a database table with a standard function, into a internal table which is looped by the work area w_field ):
    - If w_field contains 'BKPF-WERKS', so sentence ASSIGN will affect the field symbol, passing to this the data type and current content of table field BKPF-WERKS.
    - If w_field contains 'BKPF-.INCLUDE': *the column .INCLUDE obviously is not associated with a data type... so our statement ASSIGN... TO... never pass any data type or value to our field-symbol. So that, this field is never initialized properly, and when inmmediately you try to execute something like this: <my_field_symbol> = '/', the game (program) is over.. XD
    I hope this post was helpful for anyone...
    Best Regards!!
    RRG
    ABAPer(u) - EVOLution

  • Problem with field-symbols in UNICODE conversion

    Hi all.
    I'm in a UNICODE conversion project and I have a problem with a program that uses field-symbols.
    DATA: BEGIN OF wa_data_aux,
            mandt LIKE zindices-mandt,
            kschl LIKE zindices-kschl,
            datab LIKE zindices-datab,
            valor LIKE zindices-valor,
            descripcion LIKE zindices-descripcion,
            ernam LIKE zindices-ernam,
            erdat LIKE zindices-erdat,
            waers LIKE zindices-waers,
          END OF wa_data_aux.
    FIELD-SYMBOLS:
                   <fs2>  TYPE ANY,
                   <fs3>  LIKE wa_data_aux.
              <fs2> = <fs3>.
    This assignment results in a DUMP.
    Can anybody help me to solve this problem?
    Thanks!!

    TYPES: BEGIN OF wa_data_aux,
              mandt TYPE mandt,
              kschl TYPE kschl,
              erdat TYPE d,
              waers TYPE waers,
          END OF wa_data_aux.
    DATA: w_aux TYPE wa_data_aux.
    FIELD-SYMBOLS:
    <fs2> TYPE ANY,
    <fs3> TYPE wa_data_aux.
    w_aux-mandt = '300'.
    ASSIGN w_aux TO <fs3>.
    ASSIGN <fs3> TO <fs2>.
    WRITE : / <fs2>.
    GBY.

  • Problem with field symbol

    Hi!
    I have a problem with a field-symbol like this:
    DATA: gt_coep_ext TYPE kaep_t_coep_ext.
    field-symbols <gt_data> type table.
    ASSIGN gt_coep_ext TO <gt_pos_data>
    This field symbol is used in the FM REUSE_ALV_GRID_DISPLAY as output table. I need add two fields in this <gt_data>. Is there any way to add new fields in the <gt_data> structure.
    Thanks!!

    Create your one Fieldcat
    Global data declaration  ***
    TYPE-POOLS: SLIS.
    <types: ... .                    " user definded types>
    DATA:   GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA:   G_REPID LIKE SY-REPID.
    DATA:   GT_OUTTAB TYPE <UD_STRUCT>  OCCURS 0 WITH HEADER LINE.
    <data:  ... .                    " user specific data>
    Initialization field catalog  ***
    INITIALIZATION.
      G_REPID = SY-REPID.
      PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
    Data selection  ***
    START-OF-SELECTION.
      PERFORM SELECT_DATA TABLES GT_OUTTAB.
    Display list  ***
    END-OF-SELECTION.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM = G_REPID
                IT_FIELDCAT        = GT_FIELDCAT[]
           TABLES
                T_OUTTAB           = GT_OUTTAB.
    FORMS  ***
    FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
         DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
         DATA: POS TYPE I VALUE 1.
    Initialize keyfield(s)
    CLEAR LS_FIELDCAT.
    LS_FIELDCAT-COL_POS       =   POS.
    LS_FIELDCAT-FIELDNAME     =   <GT_OUTTAB_FIELD_NAME>.
    LS_FIELDCAT-REF_FIELDNAME =   <DDIC_REF_FIELD_NAME>.
    LS_FIELDCAT-REF_TABNAME   =   <DDIC_REF_TABLE_NAME>.
    LS_FIELDCAT-KEY           =   'X'.      " sets key field
       APPEND LS_FIELDCAT TO RT_FIELDCAT.
    Initialize normal field(s)
    POS = POS + 1.
    clear ls_fieldcat.
    ls_fieldcat-col_pos       =   pos.
    LS_FIELDCAT-FIELDNAME     =   <GT_OUTTAB_FIELD_NAME>.
    LS_FIELDCAT-REF_FIELDNAME =   <DDIC_REF_FIELD_NAME>.
    LS_FIELDCAT-REF_TABNAME   =   <DDIC_REF_TABLE_NAME>.
       APPEND LS_FIELDCAT TO RT_FIELDCAT.
    Initialize hidden field(s)
    POS = POS + 1.
    clear ls_fieldcat.
    ls_fieldcat-col_pos       =   pos.
    LS_FIELDCAT-FIELDNAME     =   <GT_OUTTAB_FIELD_NAME>.
    LS_FIELDCAT-REF_FIELDNAME =   <DDIC_REF_FIELD_NAME>.
    LS_FIELDCAT-REF_TABNAME   =   <DDIC_REF_TABLE_NAME>.
    LS_FIELDCAT-NO_OUT        =   'X'.      " sets hidden field
       APPEND LS_FIELDCAT TO RT_FIELDCAT.
    ENDFORM.    " fieldcat_init
    FORM SELECT_DATA TABLES RT_OUTTAB LIKE GT_OUTTAB[].
    <user specific data selection>
    ENDFORM.  " select_data

  • Problem trying to create FIELD SYMBOLS in BADI.

    Hi guys!
    I'm trying to create a Field Symbol in method CHECK of BADI me_process_req_cust (well, I'm working on a Z implementation).
    The problem is that I'm trying to create a FIELD SYMBOL and when I check the syntaxsis, I receive the next error:
    Clase ZCL_IM_MM_PURREQ_UPDATE,Método IF_EX_ME_PROCESS_REQ_CUST~CHECK
    Names may only consist of the characters "A-Z", "0-9" and "_". In
    addition, they may not begin with a number.
    This is the code:
            FIELD-SYMBOLS: <sy-mereq> TYPE mereq3328-afnam.
    Any idea????
    Thanks in advance!
    Bet

    Hi Silveria,
    The problem lies in
    FIELD-SYMBOLS: <sy-mereq> TYPE mereq3328-afnam.
    instead of that it should be something like this
    FIELD-SYMBOLS: <sy_mereq> TYPE mereq3328-afnam.
    With your code you will be getting a syntax error saying sy-mereq is not defined,as it will be looking for the mereq in the system fields.
    Regards
    Abhinab Mishra

  • Problem with populating internal with field-symbol

    hi all,
          I have following structure of internal table .
    internal Table 1(int1) : source,source_field, and other fields.
    internal Table 2 (int2): x1,x2,x3,x4,x5,x6 .
    Read table 1 assigning <gs_t1> with....
    assign ( <gs_t1>-source_field ) to <ld_char> .
    case <gs_t1>-source.
    when 'int1'.
         Read int1 assgining <gs_int1> .
          ASSIGN COMPONENT <ld_char> OF STRUCTURE <gs_int1>
          TO <fs_char>.
    wa_output-x1  = <fs_char>.
    simillarly,
      ASSIGN COMPONENT <ld_char> OF STRUCTURE <gs_int1>
          TO <fs_char>.
    wa_output-x2  = <fs_char>.
    The source_field of int1 contains any value either it can be x2,x3,x4 .
    Now the problem is how my work wa_output should know that <fs_char> contains value of field x1 .
    I mean to say how  we willl determine that value to be passed is to  wa_output-x1 or  wa_output-x2  as <ld_char> is just a pointer we cannot determine anything .
    so how should i make my workarea . It can be made as a fields-symbol but how to that .
    As it is having a strucutre of like :
    componenet       component_type
    CONTROLLER     PRXCTRLTAB<-this is also a line type having value two fields
    x1                        char5
    x2                        char5
    Plz help...

    Hi all,
    i have to pass all field values after obtaining them to a workarea wa_output .
    data : wa_output type xyz.
    READ TABLE ist_smp_tst ASSIGNING <gs_smp_tst>
                          WITH KEY iden_no =
                         <gs_smp_tst_dtl>-iden_no
                          BINARY SEARCH.
            ASSIGN COMPONENT <ld_char_val> OF STRUCTURE
            <gs_smp_tst_lab> TO  <fs_char>.
            CONCATENATE 'WA_OUTPUT-' <fs_char> INTO l_field.
            ASSIGN (l_field) TO <wa_field>.
            <wa_field> = <fs_char>.
       read table ist_temp .........
    <wa_field> = <fs_char>.
    I have done this but <wa_field> actually holds the current data of <fs_char>
    it should be like
    wa_ouput-f1 = <fs_char>..
                              wa_output-f2 = <fs_char>.
         and the appending it to wa_output to i_output .
    How we can do this using field-symbol.
    Plz required help.
    Regards.

  • Problem  FIELD-SYMBOL with HASHED TABLE

    Hello gurus,
    I have a problem with the following code. It is called in method MB_DOCUMENT_BEFORE_UPDATE of badi MB_DOCUMENT_BADI. I need to read the serial numbers of all items. I tried to do it with a field symbol. The information I need is stored in the hased table (SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL->PT_GOSERIAL_KERNEL. The systems returns sy-subrc = 4 after the assign. Can anyone help me? Thanks!
    TYPES: BEGIN OF ty_s_goserial,
              selected TYPE xfeld,
              serialno TYPE    gernr,
            END OF ty_s_goserial,
            ty_t_goserial  TYPE STANDARD TABLE OF ty_s_goserial WITH
                                                     NON-UNIQUE DEFAULT KEY.
      TYPES: BEGIN OF ty_s_goserial_kernel,
                global_counter TYPE migo_global_counter,
                t_goserial TYPE ty_t_goserial,
            END OF ty_s_goserial_kernel.
    types: tyt_goserial TYPE HASHED   TABLE OF ty_s_goserial_kernel
                                     WITH UNIQUE KEY global_counter.
        fs_l_serialno = '(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL->PT_GOSERIAL_KERNEL'.
        FIELD-SYMBOLS: <fs_serialno> type tyt_goserial.
        ASSIGN (fs_l_serialno) TO <fs_serialno>.
        IF sy-subrc = 4.
          WRITE: / 'Ouch...'.
        ENDIF.

    Hi,
    Try adding body operator..at the end as it is an internal table..
    (SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL->PT_GOSERIAL_KERNEL[]'.
    Thanks
    Naren

  • Problem related to field-Symbol?

    HI All,
    I am writting the below coding, Please tell me whether the Field Symbol will act as a table or not as I want to append a lot of data to field symbol. Please tell me is there any problem in the code.
    LOOP AT lt_vepoequi_keys into ls_vepoequi_keys.
            READ TABLE lt_vekp ASSIGNING <ls_vekp_str> with key
              matnr = ls_vepoequi_keys-matnr.
            IF sy-subrc = 0.
              <ls_vekp_str>-stoff = ls_vepoequi_keys-stoff.
              <ls_vekp_str>-sonum = ls_vepoequi_keys-sonum.
              <ls_vekp_str>-lagkl = ls_vepoequi_keys-lagkl.
              <ls_vekp_str>-lagkt = ls_vepoequi_keys-lagkt.
    endif.
    endloop.

    Hi Abhinav,
    you have internal table (say it_employee) with fields name,age,senior_category.
    now when you loop this internal table you will need workarea.
    loop at it_employee into wa_employee.
                      if wa_employee-age > 60.
                            wa_employee-senior_category = 'YES'.
                      else.
                              wa_employee-senior_category = 'NO'.
                      endif.
                              modify it_employee from wa_employee. 
                     endloop.
    now one use of Field-symbols is : when internal table is huge and when you loop with workarea and modify internal table each time, it takes time. So if we use Field-symbols performance would increase.
    loop at it_employee assigning into <fs_employee>.
                      if <fs_employee>-age > 60.
                            <fs_employee>-senior_category = 'YES'.
                      else.
                              <fs_employee>-senior_category = 'NO'.
                      endif.
                endloop.
    Now  you see in the above code, i have not used modify statement because when i loop internal table, the field symbol points directly to the memory of internal table.
    So during loop if i assign any value to the field symbol then it directly changes the internal table value, so there wont be any need to use modify statement.
    Hope you are clear with this example....
    Regards
    Sajid

  • HI. Problem in concatenating a field symbol

    Hi,
    I used the following code... for downloading the file in application server..
           OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE
                                ENCODING DEFAULT.
          IF SY-SUBRC EQ 0.
            LOOP AT <FS_ITAB> ASSIGNING <FS_TAB>.
              DO.
              To Assign the Field Symbol
                ASSIGN COMPONENT SY-INDEX OF STRUCTURE
                                  <FS_TAB> TO <FS_LINE> .
                IF SY-SUBRC <> 0.
                  EXIT.
                ENDIF.
              To Type Cast the retrieved data.
                CONCATENATE L_R_FILE <FS_LINE>INTO L_R_FILE
                  SEPARATED BY
                     CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
              ENDDO.
              TRANSFER L_R_FILE TO P_FILE.
              CLEAR: L_R_FILE.
            ENDLOOP.
            CLOSE DATASET P_FILE.
            IF SY-SUBRC <> 0.
             Unable to close the file in application server
               Message e057.
            ELSE.
              WRITE:/(30) V_FILE,
                     (30) 'Generated successfully'(M02).
            ENDIF.               "IF SY-SUBRC <> 0.
          ENDIF.                 "if not rb_pres is initial.
        ENDIF.                    " IF NOT RB_PRES IS INITIAL.
      ENDIF.                     " if not <fs_tab> is initial.
    It Gave a dump saying the conversion to standard type not possible. (like C,N,T..)..
    So I changed the following part as
                L_V_FILE = <FS_LINE>.
                CONCATENATE L_R_FILE L_V_FILE INTO L_R_FILE
                  SEPARATED BY
                     CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
    Now the Problem is when the File is downloaded.. there is an #(Space/Tab) in the first column..
    Can Any one help me in soliving this issue..
    Thanks In Advance..
    Guhapriyan Subrahmanyam..

    Hi,
    Can you try the same with <b>SPACE_STR</b> instead of HORIZONTAL_TAB?
    Also,
    If only the tab(#) in the first column is the only problem..then, after the DO..ENDO... truncate the first # and then proceed further...
    Regards,
    Raj
    Message was edited by: Rajasekhar Dinavahi

  • Problem after assigning  field-symbol in read statement...

    Hello Experts,
    I want to use a universal field-symbol in reading my internal tables so
    I can avoid declaring multiple work areas. Here is my code:
    FIELD-SYMBOLS: <fs_any> type any.
    READ TABLE lt_orderadm_h INDEX 1 ASSIGNING <fs_any>.
    Now when I try to insert this code:
    IF NOT <fs_any>-object_id IS INITIAL.
    ENDIF.
    It says that <fs_any> has no structure and therefore no component called object_id.
    I think that I need to use assign component for this but I don't know the code.
    Thank you guys and take care!

    Hi
    DATA : WA_ITORDERADM_H LIKE LINE OF IT_ORDERADM_H.
    **Try to assign the work area rather type any**
    FIELD-SYMBOLS: <fs_any> type WA_ITORDERADM_H.
    READ TABLE lt_orderadm_h INDEX 1 ASSIGNING <fs_any>.
    Now when I try to insert this code:
    IF NOT <fs_any>-object_id IS INITIAL.
    ENDIF.
    Check this program
    This works for me
    Simple program.
    TYPES: BEGIN OF NAME,
    NEXTNAME(10),
    FIRSTNAME(10),
    LASTNAME(10),
    END OF NAME.
    FIELD-SYMBOLS <F> TYPE NAME.
    DATA: LINE(30).
    LINE = 'JOHN SMITH SHRI'.
    ASSIGN LINE TO <F> CASTING.
    WRITE: / 'Lastname:', <F>-LASTNAME,
    'Firstname:', <F>-FIRSTNAME,
    'Nextname :', <F>-NEXTNAME
    Award points if helpful
    Thanks
    VENKI

  • Problem in using Field Symbols in HIDE statement

    Hi All,
    I am working in an Upgrade project ( from 4.6B to ECC 5.0 ). In a program I found few warnings on HIDE statement because they have used Field Symbols in HIDE statement.
    The warning is " HIDE on a field symbol is dangerous, but the formal parameter "" is not ".
    and the piece of code is
    SET EXTENDED CHECK OFF.
    HIDE: flg_pick_up, <s1>, <s2>, <s3>, <s4>, <s5>, z_feld_ind.
    CLEAR flg_pick_up.
    SET EXTENDED CHECK ON.
    all the field symbols are of type ANY. SO can any one help in removing those warnings.
    Please reply me as soon as possible.
    With Regards,
    Amarnath Singanamala

    Hi amarnath,
    1. Why do u want to remove
       the warning ?
    2. This warning (and not an error)
       is a GENUINE warning,
      which the system wants the user to make aware of.
    3. By doing some xyz,
      even if u may be able to hide the warning,
      the warning may be hidden (for display purpose only),
      but,
      the warning will still be there inside the system.
    4. I think u should ignore the warning,
      (if there are no other repurcussions).
    regards,
    amit m.

Maybe you are looking for