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: 

accessing dynamic internal table's fields??

Former Member
0 Kudos

Hi,

I can create internal table with these codes;


  DATA: LT_FIELDCATALOG type LVC_T_FCAT,
        LS_FIELDCATALOG type LVC_S_FCAT,
        LT_DATA type ref to DATA.

  FIELD-SYMBOLS: <FS_ITAB> type any table.

  FIELD-SYMBOLS: <FS_DATA> type ref to DATA.

  LS_FIELDCATALOG-FIELDNAME  = 'KULLANICI'.
  LS_FIELDCATALOG-INTTYPE    = 'C'.
  APPEND LS_FIELDCATALOG to LT_FIELDCATALOG.

  LOOP AT ITAB_WEEKS.
    LS_FIELDCATALOG-FIELDNAME  = ITAB_WEEKS-WEEK.
    LS_FIELDCATALOG-INTTYPE    = 'C'.
    APPEND LS_FIELDCATALOG to LT_FIELDCATALOG.
  ENDLOOP.

  assign LT_DATA to <FS_DATA>.

  call method cl_alv_table_create=>create_dynamic_table
     exporting
       it_fieldcatalog = LT_FIELDCATALOG
     importing
       ep_table = <FS_DATA>
     exceptions
       generate_subpool_dir_full = 1
       others = 2
		.
  if sy-subrc <> 0.
  endif.

  assign <FS_DATA>->* to <FS_ITAB>.

There is no problem to create internal table. But I don't know how many fields has the <FS_ITAB> have? As seen above codes, there is one field called 'KULLANICI'. And I want to insert dynamic internal table as;


   <FS_ITAB>-KULLANICI = 'XYZ'.

But I can not. Now, my problem is how can I see the total fields (and also field names) and how can I insert values?

I have seen like these codes;


   select * from ... into corresponding fields of <FS_ITAB>.

But this is not usefull for me.

Thanks.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

hi

use this FM to get firld list in the dynamic itab

<b>MCS_CSTRUCTURE_GET_FIELDS</b>

15 REPLIES 15

Former Member
0 Kudos

Hi Nail,

Have a look at this program

&----


*& Report Z_ANU_DYNAMIC *

*& *

&----


*& *

*& *

&----


REPORT Z_ANU_DYNAMIC

NO STANDARD PAGE HEADING.

  • Lakshman Tandra

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

*-- Table Declarations

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

TABLES: DD02L,

DD03L,

DD04T,

T100,

SSCRFIELDS.

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

*-- Selection Screen

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

PARAMETERS:P_PROG LIKE TRDIR-NAME.

PARAMETERS:P_TITLE(70).

PARAMETERS:P_MSID LIKE T100-ARBGB.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

PARAMETERS:RB_NREP RADIOBUTTON GROUP R1,

RB_ALIST RADIOBUTTON GROUP R1,

RB_AGRID RADIOBUTTON GROUP R1.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-000.

PARAMETERS:P_TAB1 LIKE DD02L-TABNAME OBLIGATORY.

SELECTION-SCREEN PUSHBUTTON /10(25) PTAB1 USER-COMMAND TAB1.

SELECTION-SCREEN PUSHBUTTON 40(25) PTAB11 USER-COMMAND TA11.

PARAMETERS:P_TAB2 LIKE DD02L-TABNAME .

SELECTION-SCREEN PUSHBUTTON /10(25) PTAB2 USER-COMMAND TAB2.

SELECTION-SCREEN PUSHBUTTON 40(25) PTAB22 USER-COMMAND TA22.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-000.

SELECTION-SCREEN END OF BLOCK B4.

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

*-- Data Declarations

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

DATA: BEGIN OF IT_PROG OCCURS 0,

LINE(72) TYPE C,

END OF IT_PROG.

DATA: IT_PROG1 LIKE IT_PROG OCCURS 0 WITH HEADER LINE.

DATA:BEGIN OF IT_FIELDS OCCURS 0,

FIELDNAME LIKE DD03L-FIELDNAME,

DDTEXT LIKE DD03T-DDTEXT,

END OF IT_FIELDS.

DATA : BEGIN OF IT_FSHOW OCCURS 0,

FNAME(100) TYPE C,

END OF IT_FSHOW.

DATA:BEGIN OF IT_SEL_SCREEN_F OCCURS 0,

FIELDNAME LIKE DD03L-FIELDNAME,

END OF IT_SEL_SCREEN_F.

DATA:BEGIN OF IT_UNQ_FIELDS OCCURS 0,

FIELDNAME LIKE DD03L-FIELDNAME,

END OF IT_UNQ_FIELDS.

DATA:BEGIN OF IT_UNQ_FIELDS1 OCCURS 0,

FIELDNAME LIKE DD03L-FIELDNAME,

TABNAME LIKE DD03L-TABNAME,

END OF IT_UNQ_FIELDS1.

DATA:BEGIN OF IT_FINAL OCCURS 0,

FIELDNAME LIKE DD03L-FIELDNAME,

END OF IT_FINAL.

DATA:IT_TAB1_SFIELDS LIKE IT_SEL_SCREEN_F OCCURS 0 WITH HEADER LINE.

DATA:IT_TAB2_SFIELDS LIKE IT_SEL_SCREEN_F OCCURS 0 WITH HEADER LINE.

DATA:IT_TAB1_OFIELDS LIKE IT_SEL_SCREEN_F OCCURS 0 WITH HEADER LINE.

DATA:IT_TAB2_OFIELDS LIKE IT_SEL_SCREEN_F OCCURS 0 WITH HEADER LINE.

DATA: V_MESS(100),

V_LIN(100),

V_WRD(100),

V_COUNT TYPE I,

V_TABIX LIKE SY-TABIX,

V_FVAL(30).

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

*-- At Selection Screen Events

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

AT SELECTION-SCREEN.

PERFORM CHOOSE_FIELDS.

AT SELECTION-SCREEN ON P_TAB1.

PERFORM CHECK_TABLE USING P_TAB1.

AT SELECTION-SCREEN ON P_TAB2.

PERFORM CHECK_TABLE USING P_TAB2.

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

*-- INITIALIZATION

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

INITIALIZATION.

MOVE 'Choose Sel. Screen Fields' TO PTAB1.

MOVE 'Choose Sel. Screen Fields' TO PTAB2.

MOVE 'Choose Output Fields' TO PTAB11.

MOVE 'Choose Output Fields' TO PTAB22.

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

*-- START-OF-SELECTION

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

START-OF-SELECTION.

REFRESH IT_PROG1.

CLEAR IT_PROG1.

PERFORM GEN_REPORT1.

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

*-- END-OF-SELECTION

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

END-OF-SELECTION.

IF NOT IT_PROG1[] IS INITIAL.

SYNTAX-CHECK FOR IT_PROG1 MESSAGE V_MESS LINE V_LIN WORD V_WRD.

IF V_MESS <> SPACE.

WRITE:/ SY-ULINE.

WRITE:/5 'Syntax-error:' COLOR 1 , V_MESS COLOR 4.

WRITE:/ SY-ULINE.

ENDIF.

SKIP 2.

WRITE:/ SY-ULINE.

LOOP AT IT_PROG1.

WRITE:/ IT_PROG1-LINE.

ENDLOOP.

WRITE:/ SY-ULINE.

ENDIF.

&----


*& Form Gen_report1

&----


FORM GEN_REPORT1.

IF P_MSID IS INITIAL.

CONCATENATE 'REPORT' P_PROG

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

ELSE.

CONCATENATE 'REPORT' P_PROG 'MESSAGE-ID' P_MSID

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

ENDIF.

MOVE 'NO STANDARD PAGE HEADING' TO IT_PROG1-LINE.

APPEND IT_PROG1.

MOVE 'LINE-SIZE 255.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

PERFORM NEW_LINE.

MOVE '*- Tables Declarations.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CONCATENATE 'TABLES:' P_TAB1 INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CONCATENATE 'TABLES:' P_TAB2 INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

PERFORM NEW_LINE.

MOVE '*- Data Declaration.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

IF NOT IT_TAB1_OFIELDS[] IS INITIAL.

CONCATENATE 'DATA: BEGIN OF IT_' P_TAB1 ' OCCURS 0,'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

LOOP AT IT_TAB1_OFIELDS.

CONCATENATE IT_TAB1_OFIELDS-FIELDNAME 'LIKE' P_TAB1 INTO

IT_PROG1-LINE SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '-' IT_TAB1_OFIELDS-FIELDNAME ','

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

CONCATENATE 'END OF IT_' P_TAB1 '.'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF NOT IT_TAB2_OFIELDS[] IS INITIAL.

CONCATENATE 'DATA: BEGIN OF IT_' P_TAB2 ' OCCURS 0,'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

LOOP AT IT_TAB2_OFIELDS.

CONCATENATE IT_TAB2_OFIELDS-FIELDNAME 'LIKE' P_TAB2 INTO

IT_PROG1-LINE SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '-' IT_TAB2_OFIELDS-FIELDNAME ','

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

CONCATENATE 'END OF IT_' P_TAB2 '.'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF NOT IT_TAB1_OFIELDS[] IS INITIAL.

LOOP AT IT_TAB1_OFIELDS.

IT_UNQ_FIELDS-FIELDNAME = IT_TAB1_OFIELDS-FIELDNAME.

COLLECT IT_UNQ_FIELDS.

IT_UNQ_FIELDS1-FIELDNAME = IT_TAB1_OFIELDS-FIELDNAME.

IT_UNQ_FIELDS1-TABNAME = P_TAB1.

APPEND IT_UNQ_FIELDS1.

ENDLOOP.

LOOP AT IT_TAB2_OFIELDS.

IT_UNQ_FIELDS-FIELDNAME = IT_TAB2_OFIELDS-FIELDNAME.

COLLECT IT_UNQ_FIELDS.

IT_UNQ_FIELDS1-FIELDNAME = IT_TAB2_OFIELDS-FIELDNAME.

IT_UNQ_FIELDS1-TABNAME = P_TAB2.

APPEND IT_UNQ_FIELDS1.

ENDLOOP.

MOVE 'DATA: BEGIN OF IT_FINAL OCCURS 0,'

TO IT_PROG1-LINE.

APPEND IT_PROG1.

LOOP AT IT_UNQ_FIELDS.

READ TABLE IT_UNQ_FIELDS1

WITH KEY FIELDNAME = IT_UNQ_FIELDS-FIELDNAME.

IF SY-SUBRC = 0.

CONCATENATE IT_UNQ_FIELDS-FIELDNAME 'LIKE'

IT_UNQ_FIELDS1-TABNAME INTO

IT_PROG1-LINE SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '-' IT_UNQ_FIELDS-FIELDNAME ','

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

ENDLOOP.

MOVE 'END OF IT_FINAL.'

TO IT_PROG1-LINE.

APPEND IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF RB_ALIST = 'X' OR RB_AGRID = 'X'.

MOVE 'TYPE-POOLS: SLIS.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'IT_EVENTS TYPE SLIS_T_EVENT,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'X_EVENTS TYPE SLIS_ALV_EVENT,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'X_LAYOUT TYPE SLIS_LAYOUT_ALV,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'X_RT_EXTAB TYPE SLIS_EXTAB,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'IT_SLIS_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT,' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'X_SLIS_EVENT_EXIT TYPE SLIS_EVENT_EXIT.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'DATA: V_REPID LIKE SY-REPID.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

ENDIF.

MOVE '*- Selection Screen.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

IF NOT IT_TAB1_SFIELDS[] IS INITIAL.

MOVE 'SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.'

TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

LOOP AT IT_TAB1_SFIELDS.

CONCATENATE 'SELECT-OPTIONS:' 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB1_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'FOR' P_TAB1 INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '-' IT_TAB1_SFIELDS-FIELDNAME '.'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

MOVE 'SELECTION-SCREEN END OF BLOCK B1.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF NOT IT_TAB2_OFIELDS[] IS INITIAL.

MOVE 'SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.'

TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

LOOP AT IT_TAB2_SFIELDS.

CONCATENATE 'SELECT-OPTIONS:' 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB2_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'FOR' P_TAB2 INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE '-' IT_TAB2_SFIELDS-FIELDNAME '.'

INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

MOVE 'SELECTION-SCREEN END OF BLOCK B2.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

MOVE '*- Intialization' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

CONCATENATE 'SY-TITLE = ' '''' P_TITLE '''' '.' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

IF RB_ALIST = 'X' OR RB_AGRID = 'X'.

PERFORM NEW_LINE.

MOVE 'MOVE SY-REPID TO V_REPID.'

TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE '*-- Popuate the layout structure for display' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'CLEAR X_LAYOUT.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE 'X_LAYOUT-ZEBRA = ' V_FVAL '.'

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE 'X_LAYOUT-DETAIL_POPUP = ' V_FVAL '.'

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE 'X_LAYOUT-COLWIDTH_OPTIMIZE = ' V_FVAL '.'

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

MOVE '*- Start of Selection' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'START-OF-SELECTION.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'PERFORM GET_DATA.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE '*- End of Selection' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'PERFORM DISP_DATA.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '*& Form GET_DATA' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'FORM GET_DATA.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

IF NOT IT_TAB1_OFIELDS[] IS INITIAL.

CLEAR V_TABIX.

READ TABLE IT_TAB1_OFIELDS INDEX 1.

CONCATENATE 'SELECT' IT_TAB1_OFIELDS-FIELDNAME

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

LOOP AT IT_TAB1_OFIELDS FROM 2.

IT_PROG1-LINE = IT_TAB1_OFIELDS-FIELDNAME.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

CONCATENATE 'FROM' P_TAB1

'INTO TABLE IT_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE P_TAB1 INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'WHERE' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

DESCRIBE TABLE IT_TAB1_SFIELDS LINES V_COUNT.

IF V_COUNT > 1.

LOOP AT IT_TAB1_SFIELDS.

V_TABIX = V_TABIX + 1.

IF V_TABIX >= V_COUNT.

CONCATENATE IT_PROG1-LINE IT_TAB1_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB1_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ELSE.

CONCATENATE IT_TAB1_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB1_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'AND' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

ENDLOOP.

ELSE.

CONCATENATE IT_TAB1_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB1_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

ENDIF.

PERFORM NEW_LINE.

IF NOT IT_TAB2_OFIELDS[] IS INITIAL.

CLEAR V_TABIX.

READ TABLE IT_TAB2_OFIELDS INDEX 1.

CONCATENATE 'SELECT' IT_TAB2_OFIELDS-FIELDNAME

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

LOOP AT IT_TAB2_OFIELDS FROM 2.

IT_PROG1-LINE = IT_TAB2_OFIELDS-FIELDNAME.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDLOOP.

CONCATENATE 'FROM' P_TAB2

'INTO TABLE IT_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE P_TAB2 INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'WHERE' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

DESCRIBE TABLE IT_TAB2_SFIELDS LINES V_COUNT.

IF V_COUNT > 1.

LOOP AT IT_TAB2_SFIELDS.

V_TABIX = V_TABIX + 1.

IF V_TABIX >= V_COUNT.

CONCATENATE IT_PROG1-LINE IT_TAB2_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB2_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ELSE.

CONCATENATE IT_TAB2_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB2_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE 'AND' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

ENDLOOP.

ELSE.

CONCATENATE IT_TAB2_SFIELDS-FIELDNAME

'IN' INTO IT_PROG1 SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE 'S_' INTO IT_PROG1-LINE

SEPARATED BY SPACE.

CONCATENATE IT_PROG1-LINE IT_TAB2_SFIELDS-FIELDNAME+0(6)

INTO IT_PROG1-LINE.

CONCATENATE IT_PROG1-LINE '.' INTO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

ENDIF.

PERFORM NEW_LINE.

MOVE 'ENDFORM.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '*& Form DISP_DATA' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'FORM DISP_DATA.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

IF RB_ALIST = 'X' OR RB_AGRID = 'X'.

MOVE 'PERFORM POPULATE_FIELD_CATALOG.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

ENDIF.

IF RB_ALIST = 'X'.

MOVE 'PERFORM OUTPUT_USING_ALV_LIST.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

ENDIF.

IF RB_AGRID = 'X'.

MOVE 'PERFORM OUTPUT_USING_ALV_GRID.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

ENDIF.

MOVE 'ENDFORM.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

IF RB_ALIST = 'X' OR RB_AGRID = 'X'.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'FORM POPULATE_FIELD_CATALOG.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'REUSE_ALV_FIELDCATALOG_MERGE' '''' INTO V_FVAL.

CONCATENATE 'CALL FUNCTION' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'EXPORTING' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'I_PROGRAM_NAME = V_REPID ' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'IT_FINAL' '''' INTO V_FVAL.

CONCATENATE 'I_INTERNAL_TABNAME = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '* I_STRUCTURE_NAME = ' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE '*' 'I_CLIENT_NEVER_DISPLAY = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'I_INCLNAME = V_REPID' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE '*' 'I_BYPASSING_BUFFER = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE '*' 'I_BUFFER_ACTIVE = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'CHANGING' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'CT_FIELDCAT = IT_FIELDCAT' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' EXCEPTIONS' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' INCONSISTENT_INTERFACE = 1' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' PROGRAM_ERROR = 2' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' OTHERS = 3 .' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'ENDFORM.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF RB_ALIST = 'X'.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'FORM OUTPUT_USING_ALV_LIST.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

CLEAR V_FVAL.

CONCATENATE '''' 'REUSE_ALV_LIST_DISPLAY' '''' INTO V_FVAL.

CONCATENATE 'CALL FUNCTION' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'EXPORTING' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_INTERFACE_CHECK = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE '*' 'I_BYPASSING_BUFFER =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_BUFFER_ACTIVE =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'I_CALLBACK_PROGRAM = V_REPID' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_CALLBACK_PF_STATUS_SET = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_CALLBACK_USER_COMMAND = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_STRUCTURE_NAME = ' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'IS_LAYOUT = X_LAYOUT' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'IT_FIELDCAT = IT_FIELDCAT' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_EXCLUDING =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_SPECIAL_GROUPS =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_SORT =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_FILTER =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IS_SEL_HIDE =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' 'X' '''' INTO V_FVAL.

CONCATENATE '*' 'I_DEFAULT =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'I_SAVE =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IS_VARIANT =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_EVENTS =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IT_EVENT_EXIT =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IS_PRINT =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'IS_REPREP_ID =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CONCATENATE '*' 'I_SCREEN_START_COLUMN = 0'

INTO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CONCATENATE '*' 'I_SCREEN_START_LINE = 0'

INTO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CONCATENATE '*' 'I_SCREEN_END_COLUMN = 0'

INTO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CONCATENATE '*' 'I_SCREEN_END_LINE = 0'

INTO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '* IMPORTING' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'E_EXIT_CAUSED_BY_CALLER =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

CLEAR V_FVAL.

CONCATENATE '''' ' ' '''' INTO V_FVAL.

CONCATENATE '*' 'ES_EXIT_CAUSED_BY_USER =' V_FVAL

INTO IT_PROG1-LINE SEPARATED BY SPACE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'TABLES' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'T_OUTTAB = IT_FINAL' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' EXCEPTIONS' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' PROGRAM_ERROR = 1' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE ' OTHERS = 2 .' TO IT_PROG1.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'ENDFORM.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

IF RB_AGRID = 'X'.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE 'FORM OUTPUT_USING_ALV_GRID.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

MOVE '&----


' TO

IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

PERFORM NEW_LINE.

MOVE 'ENDFORM.' TO IT_PROG1-LINE.

APPEND IT_PROG1.

CLEAR IT_PROG1.

ENDIF.

PERFORM NEW_LINE.

ENDFORM. " Gen_report1

&----


*& Form CHECK_TABLE

&----


FORM CHECK_TABLE USING P_TAB.

IF NOT P_TAB IS INITIAL.

SELECT SINGLE TABNAME FROM DD02L INTO DD02L-TABNAME

WHERE TABNAME = P_TAB.

IF SY-SUBRC <> 0.

MESSAGE I001(YTST) WITH 'Enter a valid table name'.

ENDIF.

ENDIF.

ENDFORM. " CHECK_TABLE

&----


*& Form new_line

&----


  • Append Blank Line.

----


FORM NEW_LINE.

CLEAR IT_PROG1.

APPEND IT_PROG1.

ENDFORM. " new_line

&----


*& Form CHOOSE_FIELDS

&----


FORM CHOOSE_FIELDS.

IF SSCRFIELDS-UCOMM = 'TAB1'.

PERFORM GET_FIELDS USING P_TAB1 IT_SEL_SCREEN_F.

IF NOT IT_SEL_SCREEN_F[] IS INITIAL.

IT_TAB1_SFIELDS[] = IT_SEL_SCREEN_F[].

ENDIF.

ELSEIF SSCRFIELDS-UCOMM = 'TA11'.

PERFORM GET_FIELDS USING P_TAB1 IT_SEL_SCREEN_F.

IF NOT IT_SEL_SCREEN_F[] IS INITIAL.

IT_TAB1_OFIELDS[] = IT_SEL_SCREEN_F[].

ENDIF.

ELSEIF SSCRFIELDS-UCOMM = 'TAB2'.

IF NOT P_TAB2 IS INITIAL.

PERFORM GET_FIELDS USING P_TAB2 IT_SEL_SCREEN_F.

IF NOT IT_SEL_SCREEN_F[] IS INITIAL.

IT_TAB2_SFIELDS[] = IT_SEL_SCREEN_F[].

ENDIF.

ENDIF.

ELSEIF SSCRFIELDS-UCOMM = 'TA22'.

IF NOT P_TAB2 IS INITIAL.

PERFORM GET_FIELDS USING P_TAB2 IT_SEL_SCREEN_F.

IF NOT IT_SEL_SCREEN_F[] IS INITIAL.

IT_TAB2_OFIELDS[] = IT_SEL_SCREEN_F[].

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " CHOOSE_FIELDS

&----


*& Form GET_FIELDS

&----


FORM GET_FIELDS USING P_TAB IT_TAB LIKE IT_SEL_SCREEN_F.

DATA:V_FVAL(100),V_FVAL1(100).

REFRESH:IT_FIELDS,IT_FSHOW,IT_SEL_SCREEN_F.

CLEAR: IT_FIELDS,IT_FSHOW,IT_SEL_SCREEN_F.

SELECT AFIELDNAME BDDTEXT

INTO TABLE IT_FIELDS

FROM DD03L AS A

INNER JOIN DD04T AS B

ON BROLLNAME = AROLLNAME AND

BAS4LOCAL = AAS4LOCAL AND

BAS4VERS = AAS4VERS

WHERE A~TABNAME = P_TAB AND

B~DDLANGUAGE = SY-LANGU .

IF NOT IT_FIELDS[] IS INITIAL.

LOOP AT IT_FIELDS.

CLEAR V_FVAL.

CONCATENATE IT_FIELDS-FIELDNAME ' - ' IT_FIELDS-DDTEXT

INTO V_FVAL SEPARATED BY ' '.

MOVE V_FVAL TO IT_FSHOW-FNAME+1(99).

APPEND IT_FSHOW.

CLEAR IT_FSHOW.

ENDLOOP.

CALL FUNCTION 'SHOW_SELECTION_LIST_MULTI'

EXPORTING

LIST_TITLE = 'Choose Fieldnames'

  • MAX_SELECTS = 0

  • NO_PICKUP = ' '

  • SORTED = 'X'

  • WIDTH = 20

TABLES

LIST = IT_FSHOW

EXCEPTIONS

NO_FIELD = 1

OTHERS = 2.

IF NOT IT_FSHOW[] IS INITIAL.

LOOP AT IT_FSHOW WHERE FNAME(1) = 'X'.

SPLIT IT_FSHOW-FNAME+1(99) AT '-' INTO V_FVAL V_FVAL1.

IT_TAB-FIELDNAME = V_FVAL.

APPEND IT_TAB TO IT_SEL_SCREEN_F.

CLEAR IT_SEL_SCREEN_F.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " GET_FIELDS

Regards,

Santosh

Former Member
0 Kudos

Hi nail,

1. <FS_ITAB>-KULLANICI = 'XYZ'

We cannot do like this.

2. Again we have to use field-symbol

for accessing the field

<b> fieldname = 'ITAB-KULLANICI'

ASSIGN (FIELDNAME) TO <fs>.

<FS> = 'myvalue'.</b>

3.

select * from ... into corresponding fields of <FS_ITAB>.

This u can use.

regards,

amit m.

Former Member
0 Kudos

hi

use this FM to get firld list in the dynamic itab

<b>MCS_CSTRUCTURE_GET_FIELDS</b>

0 Kudos

Thanks for answers,

But my problem is not solved. I have added these codes;


  DATA: NEW_LINE type ref to data.
  FIELD-SYMBOLS : <FS_2>.

  create data NEW_LINE like line of <FS_ITAB>.
  assign NEW_LINE->*  to <FS_2>.

* <FS_2> has four fields as KULLANICI, 200621, 200622, 200623
*  ?? how can I insert values to <FS_2> ???
  
    append <FS_2> to <fs_itab>.

and the last line of above code gives an error because of <fs_itab> is any table. how can I solve?

Thanks

0 Kudos

Hi,

try this

DATA: NEW_LINE type ref to data.

FIELD-SYMBOLS : <FS_2>.

FIELD-SYMBOLS : <FS_ANY>.

create data NEW_LINE like line of <FS_ITAB>.

assign NEW_LINE->* to <FS_2>.

  • <FS_2> has four fields as KULLANICI, 200621, 200622, 200623

  • ?? how can I insert values to <FS_2> ???

ASSIGN COMPONENT 'KULLANICI' OF STRUCTURE <FS_2> TO <FS_ANY>

<FS_ANY = 'XXXX'.

ASSIGN COMPONENT '200621' OF STRUCTURE <FS_2> TO <FS_ANY>

<FS_ANY = 'XXXX'.

...

append <FS_2> to <fs_itab>.

The point is you have to assign values field by field to the work area <fs_2> and the append.

Regards,

Ravi

Note :Please mark the helpful answers

0 Kudos

I am getting an error at the command:

append <FS_2> to <fs_itab>.

"You can not use explicit or implicit index operations on tables with types "HASHED_TABLE" or "ANY_TABLE". <FS_ITAB> has the type "ANY_TABLE".

I have declared <FS_ITAB> as

FIELD-SYMBOLS: <FS_ITAB> type any table.

how can I insert this row to dynamic table?

Thanks.

0 Kudos

Nail,

Try this ..

INSERT <FS_2> INTO <FS_ITAB>.

Regards,

Ravi

0 Kudos

I have tried, but get anatoher error:

"If you use internal tables with the types "HASHED TABLE" or "ANY TABLE", you can only use the form "INSERT [wa] into TABLE itab".

0 Kudos

Hi,

Change my statement to

INSERT <FS_2> INTO TABLE <FS_TAB>.

Regards,

Ravi

0 Kudos

Thanks Ravikumar,

It is ok.

Respecto this topic I have asked also how to read <fs_itab> table's fields. and I have an answer that use MCS_CSTRUCTURE_GET_FIELDS fm. this fm gives a dump error "Exception condition "COMSTRU_NOT_FOUND" raised." while using as;


data : name like DMCSE-CSTRU,
         fields like MCSE_FTAB occurs 0.
  name = '<FS_ITAB>'.
 CALL FUNCTION 'MCS_CSTRUCTURE_GET_FIELDS'
    EXPORTING
      COMSTRU_NAME            = name
*     FORCE_READ              = ' '
*   IMPORTING
*     E_LINES                 =
    TABLES
      FIELDTAB                = fields.
*   EXCEPTIONS
*     COMSTRU_NOT_FOUND       = 1
*     OTHERS                  = 2.

do you know how to solve this problem?

Thanks.

0 Kudos

Nail,

Here is what you can do.

Call the function GET_COMPONENT_LIST which will give you the list of each of the fields of the structure <FS_ITAB>. You will have to pass the work area as the input (<FS_2) into this.

Then loop at the output table of the function and do the ASSIGN COMPONENT.

LOOP AT <FS_TAB> ASSIGNING <FS_2>

LOOP AT COMPONENTS.

ASSIGN COMPONENT COMPONENTS-FIELD OF STRUCTURE <FS_2> TO <FS_ANY>.

ENDLOOP.

ENDLOOP.

At each execution of the ASSIGN <FS_ANY> will have the value of one of the fields.

<b> Please mark all the helpful answers, if they helped you </b>

Regards,

Ravi

0 Kudos

Ravikumar,

I have used GET_COMPONENT_LIST fm as;


DATA: NEW_LINE type ref to data.
  create data NEW_LINE like line of <FS_ITAB>.
  assign NEW_LINE->*  to <FS_2>.

data: components like RSTRUCINFO occurs 0 with header line,
  pname like SY-REPID.
  pname = sy-repid.

CALL FUNCTION 'GET_COMPONENT_LIST'
       EXPORTING
            PROGRAM    = pname
            FIELDNAME  = '<FS_2>'
       TABLES
            COMPONENTS = components.

I have looked the components table at debug, but it has no field although <FS_2> has?

0 Kudos

Can you please try it without the quotes around the field-symbol <FS_2> when calling GET_COMPONENT_LIST?

0 Kudos

you already have the field names in "LT_FIELDCATALOG" which is what you used to create the internal table dynamically.

now why do you want to use 'GET_COMPONENT_LIST' to get the field names?

you could simply use LT_FIELDCATALOG-fieldnmae

or am i missing something?

Regards

Raja

Former Member
0 Kudos

Hi Nail. To do this, you must use the following sentence:

ASSIGN COMPONENT 'FIELD_NAME' OF STRUCTURE <dynamic_table> TO <field_symbol>.

then you will have the <field_symbol> assigned to the field of your dinamic table.

Hope it Helps.

Jesus