11-15-2007 9:56 AM
hi friends ,
i want to do code that user will enter the name of the table on selection screen as input and the the program will create dynamically a structure of that table and an internal table.
pls help me out .
11-15-2007 10:18 AM
Hey here is the code... I just tried and it's working fine..
type-pools: slis.
parameters:
p_table type dfies-tabname.
DATA:
T_FIELDCAT TYPE LVC_T_FCAT ,
fs_fcat type line of LVC_T_FCAT ,
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.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
I_STRUCTURE_NAME = p_table
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_INTERNAL_TABNAME = p_table
CHANGING
ct_fieldcat = t_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
.
if sy-subrc eq 0.
endif.
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 into fs_fcat.
T_FCAT-FIELDNAME = fs_fcat-FIELDNAME.
T_FCAT-REF_TABNAME = fs_fCAT-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.
11-15-2007 10:34 AM
*DATA: lt_data1 TYPE REF TO data,
wa_data1 TYPE REF TO data,
l_strucname(5) TYPE c value 'P0000',
g_tablename(6) type c value 'PA0000'.
*
*FIELD-SYMBOLS : <dyn_table> type ANY TABLE,
<dyn_wa> type any,
<fs_pernr> TYPE any.
*
CREATE DATA lt_data1 TYPE STANDARD TABLE OF (g_tablename).
ASSIGN lt_data1->* TO <dyn_table>.
CREATE DATA wa_data1 LIKE LINE OF <dyn_table>.
ASSIGN wa_data1->* TO <dyn_wa>.
*
SELECT * FROM (g_tablename)
INTO CORRESPONDING FIELDS OF TABLE <dyn_table>.
*
*LOOP AT <dyn_table> INTO <dyn_wa>.
*ASSIGN COMPONENT 'PERNR' OF STRUCTURE <dyn_wa> to <fs_pernr>.
*WRITE : / <fs_pernr>.
*ENDLOOP.
11-15-2007 10:35 AM
Hi Sandipan,
Kindly try this, will help you surely...
*DATA: lt_data1 TYPE REF TO data,
wa_data1 TYPE REF TO data,
l_strucname(5) TYPE c value 'P0000',
g_tablename(6) type c value 'PA0000'.
*
*FIELD-SYMBOLS : <dyn_table> type ANY TABLE,
<dyn_wa> type any,
<fs_pernr> TYPE any.
*
CREATE DATA lt_data1 TYPE STANDARD TABLE OF (g_tablename).
ASSIGN lt_data1->* TO <dyn_table>.
CREATE DATA wa_data1 LIKE LINE OF <dyn_table>.
ASSIGN wa_data1->* TO <dyn_wa>.
*
SELECT * FROM (g_tablename)
INTO CORRESPONDING FIELDS OF TABLE <dyn_table>.
*
*LOOP AT <dyn_table> INTO <dyn_wa>.
*ASSIGN COMPONENT 'PERNR' OF STRUCTURE <dyn_wa> to <fs_pernr>.
*WRITE : / <fs_pernr>.
*ENDLOOP.
<b>
Kindly Reward if useful
Rohit G</b>