01-18-2016 3:49 AM
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
01-18-2016 4:34 AM
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.
01-18-2016 5:00 AM
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
01-18-2016 8:13 AM
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.
01-18-2016 5:26 AM
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
01-19-2016 6:31 AM
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.