06-05-2006 2:34 PM
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.
06-05-2006 2:42 PM
hi
use this FM to get firld list in the dynamic itab
<b>MCS_CSTRUCTURE_GET_FIELDS</b>
06-05-2006 2:37 PM
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 '&----
IT_PROG1-LINE.
APPEND IT_PROG1.
CLEAR IT_PROG1.
MOVE '*& Form GET_DATA' TO IT_PROG1-LINE.
APPEND IT_PROG1.
CLEAR IT_PROG1.
MOVE '&----
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 '&----
IT_PROG1-LINE.
APPEND IT_PROG1.
CLEAR IT_PROG1.
MOVE '*& Form DISP_DATA' TO IT_PROG1-LINE.
APPEND IT_PROG1.
CLEAR IT_PROG1.
MOVE '&----
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 '&----
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 '&----
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 '&----
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 '&----
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 '&----
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 '&----
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
06-05-2006 2:39 PM
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.
06-05-2006 2:42 PM
hi
use this FM to get firld list in the dynamic itab
<b>MCS_CSTRUCTURE_GET_FIELDS</b>
06-05-2006 3:04 PM
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
06-05-2006 4:01 PM
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
06-05-2006 4:19 PM
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.
06-05-2006 4:27 PM
06-05-2006 4:31 PM
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".
06-05-2006 4:33 PM
Hi,
Change my statement to
INSERT <FS_2> INTO TABLE <FS_TAB>.
Regards,
Ravi
06-05-2006 4:42 PM
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.
06-05-2006 4:49 PM
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
06-05-2006 5:14 PM
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?
06-05-2006 9:38 PM
Can you please try it without the quotes around the field-symbol <FS_2> when calling GET_COMPONENT_LIST?
06-06-2006 6:44 AM
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
06-05-2006 3:52 PM
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