06-06-2008 8:32 AM
Hello ABAPPERS,
Can we create the variable at runtime???
Plz help , its really urgent....
Thanks & Regards..
Supriya
06-06-2008 8:35 AM
Your requirement is not fully clear, but it is possible to create variables at runtime like this:
TYPES: BEGIN OF struc,
a TYPE i,
b TYPE c LENGTH 8,
END OF STRUC.
DATA: dref TYPE REF TO DATA,
tname TYPE string,
str TYPE struc,
int TYPE i.
FIELD-SYMBOLS: <int> TYPE i,
<str> TYPE struc,
<f> TYPE any.
dref
CREATE DATA dref TYPE struc.
ASSIGN dref->* TO <str>.
<str>
36 ABC
<str>-a = 36. <str>-b = 'ABC'.
CREATE DATA dref LIKE int.
ASSIGN dref->* TO <int>.
<int>
5
<int> = 5.
tname = 'SFLIGHT'.
CREATE DATA dref TYPE (tname).
ASSIGN dref->* TO <f>.
<f>
SELECT SINGLE * FROM (tname) INTO <f>.
06-06-2008 8:56 AM
Hi Micky,
I have tried your Code but its giving me error..
The statement "DREF_CREATE" is not expected. A correct similar statement is "CREATE".....
Please help me out...
06-06-2008 9:05 AM
Maybe a copy-paste error, since I'm not using any statement DREF_CREATE...
TYPES: BEGIN OF struc,
a TYPE i,
b TYPE c LENGTH 8,
END OF struc.
DATA: dref TYPE REF TO data,
tname TYPE string,
str TYPE struc,
int TYPE i.
FIELD-SYMBOLS: <int> TYPE i,
<str> TYPE struc,
<f> TYPE ANY.
CREATE DATA dref TYPE struc.
ASSIGN dref->* TO <str>.
<str>-a = 36. <str>-b = 'ABC'.
CREATE DATA dref LIKE int.
ASSIGN dref->* TO <int>.
<int> = 5.
tname = 'SFLIGHT'.
CREATE DATA dref TYPE (tname).
ASSIGN dref->* TO <f>.
SELECT SINGLE * FROM (tname) INTO <f>.
06-06-2008 8:36 AM
Yes , its possible you can use field symbols.
They act as pointers
Hope it helps