Application Development and Automation 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: 
Read only

Problem with Dynamic internal table

Former Member
0 Likes
557

Hello All,

Actually my requirement is, I have to download a textfile to the application server.

The file should contains the columns which the user saves as a layout variant of the ALV list display.

So I have called the FM 'REUSE_ALV_VARIANT_SELECT' to find out the hidden fields. Then with the visble field I have created a dynamic internal table.

<b>I a getting the problem here only.</b>

After creating the dynamic table, The data in my outtab is not moving properly to the dynamic table.

For example

If the list has F1,F2,F3,F4,F5 as five fields.

But the user selects only F1,F2,F5 as saves as alayout variant.

So in the output file it should show the column F1,F2 & F5.

But in my case, the F1,F2,F3 is moving to the field symbol.

This is because I am not able to use Move-coreesponding syntax.

I have attached my code: here

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

Declaration Part

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

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

DATA: IT_FIELDCAT TYPE LVC_T_FCAT,

IS_FIELDCAT LIKE LINE OF IT_FIELDCAT.

DATA: BEGIN OF IT_OUTTAB OCCURS 0,

PSPID LIKE PROJ-PSPID, "Projektdefinition

POSID LIKE PRPS-POSID, "PSP-Element

POST1 LIKE PRPS-POST1, "Kurzbeschreibung

STTXT_INT LIKE CNJ_STAT-STTXT_INT, "Systemstatus

STTXT_EXT LIKE CNJ_STAT-STTXT_EXT, "Anwenderstatus

END OF IT_OUTTAB.

DATA: WA_OUTTAB LIKE IT_OUTTAB.

DATA: LV_LINES LIKE SY-TABIX,

COUNT TYPE I.

FIELD-SYMBOLS: <NEW_TABLE> TYPE REF TO DATA.

FIELD-SYMBOLS: <L_TABLE> TYPE ANY TABLE,

<L_LINE> TYPE ANY.

FIELD-SYMBOLS: <L_FIELD> TYPE ANY.

FIELD-SYMBOLS: <FS_DATA> TYPE REF TO DATA,

<FS_1> TYPE TABLE,

<FS_2> type any,

<FS_3> type any,

<FS_4> type any,

<FS_5> type any.

DATA: NEW_LINE TYPE REF TO DATA.

DATA: LT_DATA TYPE REF TO DATA.

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

Form Routine

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

FORM DOWNLOAD_FILE TABLES P_T_LISTE STRUCTURE G_T_LISTE.

G_R_DISP_VARIANT-REPORT = SY-REPID.

G_R_DISP_VARIANT-VARIANT = PA_VAR.

CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'

EXPORTING

I_DIALOG = 'N'

I_USER_SPECIFIC = 'A'

I_DEFAULT = 'X'

IT_DEFAULT_FIELDCAT = G_T_FIELDCAT

I_LAYOUT = G_R_LAYOUT

IMPORTING

ET_FIELDCAT = G_T_FIELDCAT

  • et_sort = l_tab_sort

  • et_filter = l_tab_filter

  • ES_LAYOUT = G_R_LAYOUT

CHANGING

CS_VARIANT = G_R_DISP_VARIANT

EXCEPTIONS

ERROR_MESSAGE = 4

OTHERS = 4.

LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT WHERE NO_OUT IS INITIAL

AND TECH IS INITIAL.

MOVE-CORRESPONDING G_R_FIELDCAT TO IS_FIELDCAT.

IS_FIELDCAT-FIELDNAME = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-INTTYPE = G_R_FIELDCAT-INTTYPE.

IS_FIELDCAT-OUTPUTLEN = G_R_FIELDCAT-OUTPUTLEN.

IS_FIELDCAT-REF_FIELD = G_R_FIELDCAT-FIELDNAME.

IS_FIELDCAT-REF_TABLE = G_R_FIELDCAT-REF_TABNAME.

APPEND IS_FIELDCAT TO IT_FIELDCAT.

ENDLOOP.

DATA: WA_LISTE LIKE P_T_LISTE.

CLEAR:IT_OUTTAB.

REFRESH: IT_OUTTAB.

LOOP AT P_T_LISTE INTO WA_LISTE.

WA_OUTTAB-PSPID = WA_LISTE-PSPID .

WA_OUTTAB-POSID = WA_LISTE-POSID.

WA_OUTTAB-POST1 = WA_LISTE-POST1.

WA_OUTTAB-STTXT_INT = WA_LISTE-STTXT_INT.

WA_OUTTAB-STTXT_EXT = WA_LISTE-STTXT_EXT.

APPEND WA_OUTTAB TO IT_OUTTAB.

ENDLOOP.

**dynamic table creation for data

ASSIGN LT_DATA TO <FS_DATA>.

  • Create a new Table

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

EXPORTING

IT_FIELDCATALOG = IT_FIELDCAT

IMPORTING

EP_TABLE = <FS_DATA>

EXCEPTIONS

GENERATE_SUBPOOL_DIR_FULL = 1

OTHERS = 2.

IF SY-SUBRC = 0.

ASSIGN <FS_DATA>->* TO <FS_1>.

CREATE DATA NEW_LINE LIKE LINE OF <FS_1>.

      • A field-symbol to access that work area

ASSIGN NEW_LINE->* TO <FS_2>.

**MOVE DATA

LOOP AT IT_OUTTAB INTO WA_OUTTAB.

CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'

EXPORTING

INPUT = WA_OUTTAB-PSPID

IMPORTING

OUTPUT = WA_OUTTAB-PSPID.

CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'

EXPORTING

INPUT = WA_OUTTAB-POSID

IMPORTING

OUTPUT = WA_OUTTAB-POSID.

ASSIGN COMPONENT 'PSPID' OF STRUCTURE <FS_2> TO <FS_3>.

<FS_3> = WA_OUTTAB-PSPID.

  • ASSIGN COMPONENT 'POSID' OF STRUCTURE WA_OUTTAB TO <FS_3>.

ASSIGN COMPONENT 'POSID' OF STRUCTURE <FS_2> TO <FS_3>.

<FS_3> = WA_OUTTAB-POSID.

  • ASSIGN COMPONENT 'POST1' OF STRUCTURE WA_OUTTAB TO <FS_3>.

ASSIGN COMPONENT 'POST1' OF STRUCTURE <FS_2> TO <FS_3>.

  • <FS_5> = <FS_3>.

<FS_3> = WA_OUTTAB-POST1.

  • ASSIGN COMPONENT 'STTXT_INT' OF STRUCTURE WA_OUTTAB TO <FS_3>.

ASSIGN COMPONENT 'STTXT_INT' OF STRUCTURE <FS_2> TO <FS_3>.

<FS_3> = WA_OUTTAB-STTXT_INT.

ASSIGN COMPONENT 'STTXT_EXT' OF STRUCTURE <FS_2> TO <FS_3>.

<FS_3> = WA_OUTTAB-STTXT_EXt.

INSERT <FS_2> INTO TABLE <FS_1>.

ENDLOOP.

ENDIF.

OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC EQ 0.

LOOP AT <FS_1> ASSIGNING <FS_2>.

TRANSFER <FS_2> TO P_FILE.

ENDLOOP.

ELSE.

MESSAGE E041(S9) WITH P_FILE.

ENDIF.

CLOSE DATASET P_FILE.

ENDFORM. " download_file

Please go through the code and give me a optimized solution for this.

Thanks in Advance

Regards,

Vasanth

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
490

Hi

If you have created your dynamic table using catalog table, you should use it to transfer the data with a code like this:

LOOP AT IT_OUTTAB INTO WA_OUTTAB.

LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT

WHERE NO_OUT IS INITIAL

AND TECH IS INITIAL.

ASSING COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE WA_OUTTAB TO <FS>.

..................

Max

2 REPLIES 2
Read only

Former Member
0 Likes
490

As MOVE-CORRESPONDING is not working, then what you are doing using the ASSIGN COMPONENT is the right way to go.

However, you can try doing this also as dynamic. The field selection is dynamic you will have the field names some where. Get those variables

ASSIGN COMPONENT (VAR_NAME) ....

Regards,

Ravi

Note : Please mark the helpful answers

Read only

Former Member
0 Likes
491

Hi

If you have created your dynamic table using catalog table, you should use it to transfer the data with a code like this:

LOOP AT IT_OUTTAB INTO WA_OUTTAB.

LOOP AT G_T_FIELDCAT INTO G_R_FIELDCAT

WHERE NO_OUT IS INITIAL

AND TECH IS INITIAL.

ASSING COMPONENT G_R_FIELDCAT-FIELDNAME OF STRUCTURE WA_OUTTAB TO <FS>.

..................

Max