Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Moving data from Field-symbol to String

Former Member
0 Kudos

Hello Guru's,

I  build my logic with dynamic internal table concept.

In ordered to save data in Application server. I want to convert/Move

data from field symbol (<FS> TYPE ANY ) to string type.

My Dynamic table declarations are as below:

-----------------------------------------------------------------

FIELD-SYMBOLS:

   <FS_IT_OUTPUT>    TYPE STANDARD TABLE,

   <FS_WA_OUTPUT>  TYPE ANY,

   <FS1> ,

   <FS2> ."         TYPE any TABLE.



Sample code:


LOOP AT <FS_IT_OUTPUT> ASSIGNING <FS_WA_OUTPUT>.


        "Here i want to move field symbol work area to any String

        " so that i can save that data into Application server.

****************************************************

* Logic which i followed and failed are commented.

*      ASSIGN COMPONENT WA_COMP_FLD-NAME OF STRUCTURE <FS_WA_OUTPUT1> TO <FS1>.

*      ASSIGN <FS_WA_OUTPUT1> TO <FS1>.

*      MOVE <FS1> TO LW_RAW.

*      LW_RAW = <FS1>.

*      CLEAR LW_RAW.

*       LW_RAW = <FS_WA_OUTPUT1>.

*      TRANSFER LW_RAW TO P_TARGET_FNAME .

       "NO END OF LINE.

****************************************************

ENDLOOP. "LOOP AT <FS_IT_OUTPUT1> INTO <FS_WA_OUTPUT1>.




Please advise and do the needful.


Thanks in Advance.


Regards,

Sankarbabu


5 REPLIES 5

Former Member
0 Kudos

Try this:

FIELD-SYMBOLS: <fs_matnr> TYPE any.

TYPES: BEGIN OF ty_test,

         matnr TYPE matnr,

        END OF ty_test.

DATA: li_test TYPE STANDARD TABLE OF ty_test,

       wa_test TYPE ty_test,

       l_string TYPE string.

LOOP AT <fs_it_output> ASSIGNING <fs_wa_output>.

   ASSIGN COMPONENT of 'MATNR' OF STRUCTURE <fs_wa_output> to <fs_field>.

   MOVE <fs_field> TO wa_test-matnr. "Move to work area

   MOVE <fs_field> TO l_string. "Move to string

   APPEND wa_test TO li_test.  "Move to table

ENDLOOP.

0 Kudos

Dear Elzkie,

Thanks for the reply.

As I was already specified that here Internal table is dynamic.

so some times hard to get Individual components of structure.

Regards,

Sankarbabu388

0 Kudos

Hi,

For getting Component Names of internal table.

DATA: lr_str TYPE REF TO cl_abap_structdescr.

DATA: lt_comp TYPE abap_compdescr_tab.

  READ TABLE <FS_IT_OUTPUT> ASSIGNING <FS_WA_OUTPUT> INDEX 1.

  lr_str ?= cl_abap_structdescr=>describe_by_data( <FS_WA_OUTPUT> ).

  lt_comp[] = lr_str->components[].

Hope it helpful,

Regards,

Venkat.

Hvshal4u
Active Participant
0 Kudos

Hi ,

Try below logic,

ASSIGN lt_vbak[] to <fs_tab>.

   LOOP AT <fs_tab> ASSIGNING <fs_wa>.

     DO .

       ASSIGN COMPONENT sy-index OF STRUCTURE <fs_wa> to <field>.

       IF sy-subrc = 0.

         lv_str = <field>.

         CONCATENATE ls_string lv_str INTO ls_string SEPARATED BY space.

       else.

         exit.

       ENDIF.

     ENDDO.

     APPEND ls_string to lt_strtab. "string table ready to transfer to app server

     CLEAR : ls_string,lv_str.

   ENDLOOP.



Regards,

Vishal

former_member241258
Active Participant
0 Kudos

hi,

see below code will help you.

REPORT ZDEMO2.

TYPE-POOLS:ABAP.

FIELD-SYMBOLS:<GT_FINAL> TYPE STANDARD TABLE,
               <GS_FINAL> TYPE ANY,
               <LV_VALUE> TYPE ANY.


DATA:GT_DATA TYPE REF TO DATA,
      GS_DATA TYPE REF TO DATA.

DATA:LT_STR TYPE STANDARD TABLE OF STRING,
      LS_STR TYPE STRING,
      LV_NAME TYPE STRING.


DATA:GO_TYPE TYPE REF TO CL_ABAP_TYPEDESCR,
      GO_STRUCT TYPE REF TO CL_ABAP_STRUCTDESCR.

DATA:LT_COMP TYPE ABAP_COMPDESCR_TAB,
      LS_COMP TYPE ABAP_COMPDESCR.


DATA:LV_FILE TYPE STRING.




START-OF-SELECTION.

CREATE DATA GT_DATA TYPE STANDARD TABLE OF MAKT.

ASSIGN GT_DATA->* TO <GT_FINAL>.


CLEAR LS_STR.
LS_STR = 'REPORT ZFIND_TYPE_DYN_TABLE.'.
APPEND LS_STR TO LT_STR.

CLEAR LS_STR.
LS_STR = 'FORM FIND_STRUCT_OF_DYN_TABLE USING UT_FINAL TYPE STANDARD TABLE'.
APPEND LS_STR TO LT_STR.

CLEAR LS_STR.
LS_STR = '                              CHANGING CS_DATA TYPE REF TO DATA.'.
APPEND LS_STR TO LT_STR.


CLEAR LS_STR.
LS_STR = 'CREATE DATA CS_DATA LIKE LINE OF UT_FINAL.'.
APPEND LS_STR TO LT_STR.


CLEAR LS_STR.
LS_STR = 'ENDFORM.'.
APPEND LS_STR TO LT_STR.

CLEAR LV_NAME.

GENERATE SUBROUTINE POOL LT_STR NAME LV_NAME.

IF SY-SUBRC = 0.
  PERFORM ('FIND_STRUCT_OF_DYN_TABLE') IN PROGRAM (LV_NAME) USING <GT_FINAL>
                                                                  GS_DATA.
ENDIF.

ASSIGN GS_DATA->* TO <GS_FINAL>.

CALL METHOD CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA
   EXPORTING
     P_DATA      = <GS_FINAL>
   RECEIVING
     P_DESCR_REF = GO_TYPE.


GO_STRUCT ?= GO_TYPE.

LT_COMP[] = GO_STRUCT->COMPONENTS[].

CLEAR LS_STR.

LOOP AT LT_COMP INTO LS_COMP.
  CONCATENATE LS_STR LS_COMP-NAME CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO LS_STR RESPECTING BLANKS.
ENDLOOP.

CONDENSE LS_STR.

LV_FILE = '/usr/sap/BFD/DVEBMGS00/work/ZDYN.txt'.

DELETE DATASET LV_FILE.

OPEN DATASET LV_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

TRANSFER LS_STR TO LV_FILE.

LOOP AT <GT_FINAL> ASSIGNING <GS_FINAL>.

CLEAR LS_STR.

  DO.
    CLEAR LS_COMP.
    READ TABLE LT_COMP INTO LS_COMP INDEX SY-INDEX.
    IF SY-SUBRC <> 0.
     EXIT.
    ELSE.
      UNASSIGN <LV_VALUE>.
      ASSIGN COMPONENT LS_COMP-NAME OF STRUCTURE <GS_FINAL> TO <LV_VALUE>.
      CLEAR LV_NAME.
      LV_NAME = <LV_VALUE>.
      CONCATENATE LS_STR LV_NAME CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO LS_STR RESPECTING BLANKS.
    ENDIF.
  ENDDO.

  CONDENSE LS_STR.

  TRANSFER LS_STR TO LV_FILE.

ENDLOOP.

CLOSE DATASET LV_FILE.