‎2007 Dec 10 10:09 AM
Hi all,
I wanna create an internal table based on table name provided in parameter and also i wanna fill and use that internal table.
The code that i did till now is:
TYPES: BEGIN OF x_field,
fieldname LIKE dd03l-fieldname,
position LIKE dd03l-position,
keyflag LIKE dd03l-keyflag,
datatype LIKE dd03l-datatype,
END OF x_field.
DATA: itab type standard table of x_field,
wa type x_field.
SELECTION-SCREEN BEGIN OF LINE.
text-TNM - 'Table Name'
SELECTION-SCREEN COMMENT 1(25) text-TNM.
PARAMETERS: tabname LIKE dd02l-tabname DEFAULT 'ZSCARE'.
text-SCR - 'Selection'
SELECTION-SCREEN PUSHBUTTON 75(9) text-SCR USER-COMMAND sta1.
SELECTION-SCREEN END OF LINE.
select * from dd03l
into corresponding fields of table itab
where TABNAME = tabname.
loop at itab into wa.
write 😕 wa-fieldname.
endloop.
Tell me how to proceed further....
or any new way...
Regards,
Sachin Bhatnagar.
‎2007 Dec 10 10:16 AM
Hi Sachin,
Your requirement is very much possible. Once Heilman worte a blog. I used the same code and it is working fine. Find the link below.
/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
All the very best to you.
- Mohan
‎2007 Dec 10 10:14 AM
hey here is the code..
REPORT ZREPORT_TEST.
TYPE-POOLS SLIS.
DATA:
BEGIN OF T_MARC OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
END OF T_MARC.
SELECT MATNR WERKS
FROM MARC
INTO TABLE T_MARC UP TO 10 ROWS.
DATA:
T_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE,
T_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
data: NEW_table type ref to data.
data: new_line type ref to data.
FIELD-SYMBOLS: <l_table> TYPE table,
<l_line> TYPE ANY,
<l_field> TYPE ANY.
T_FIELDCAT-FIELDNAME = 'MATNR'.
T_FIELDCAT-REF_TABLE = 'MARC'.
APPEND T_FIELDCAT.
T_FIELDCAT-FIELDNAME = 'WERKS'.
T_FIELDCAT-REF_TABLE = 'MARC'.
APPEND T_FIELDCAT.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = T_FIELDCAT[]
importing
ep_table = NEW_table .
ASSIGN new_table->* TO <l_table>.
CREATE DATA new_line LIKE LINE OF <l_table>.
ASSIGN new_line->* TO <l_line>.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <l_line> TO <l_field>.
<L_FIELD> = '12345'.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <l_line> TO <l_field>.
<L_FIELD> = '1000'.
APPEND <L_LINE> TO <L_TABLE>.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <l_line> TO <l_field>.
<L_FIELD> = '52349'.
ASSIGN COMPONENT 'WERKS' OF STRUCTURE <l_line> TO <l_field>.
<L_FIELD> = '2000'.
APPEND <L_LINE> TO <L_TABLE>.
*LOOP AT <L_TABLE> INTO <L_LINE>.
*WRITE: / <L_LINE>.
*ENDLOOP.
LOOP AT T_FIELDCAT.
T_FCAT-FIELDNAME = T_FIELDCAT-FIELDNAME.
T_FCAT-REF_TABNAME = T_FIELDCAT-REF_TABLE.
APPEND T_FCAT.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = T_FCAT[]
TABLES
t_outtab = <l_table>
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
‎2007 Dec 10 10:16 AM
Hi Sachin,
Your requirement is very much possible. Once Heilman worte a blog. I used the same code and it is working fine. Find the link below.
/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
All the very best to you.
- Mohan