Code: Alles auswählen.
data: strukturvar type dictonarystruktur.
Code: Alles auswählen.
data: strukturvar type .
Code: Alles auswählen.
DATA:
ld_struct TYPE REF TO DATA,
lv_struct_name TYPE string.
FIELD-SYMBOLS:
<ls_struct> TYPE ANY.
lv_struct_name = 'MARA'.
CREATE DATA ld_struct TYPE (lv_struct_name).
ASSIGN ld_struct->* TO <ls_struct>.
Die Antwort kam schnell.ereglam hat geschrieben:Hallo Markus,
ja, die gibt es:Damit hast Du Zugriff mit <ls_struct> auf deine Struktur.Code: Alles auswählen.
DATA: ld_struct TYPE REF TO DATA, lv_struct_name TYPE string. FIELD-SYMBOLS: <ls_struct> TYPE ANY. lv_struct_name = 'MARA'. CREATE DATA ld_struct TYPE (lv_struct_name). ASSIGN ld_struct->* TO <ls_struct>.
Wenn Du auf einzelen Felder der Struktur zugreifen willst, musst Du ASSIGN COMPONENT benutzen.
Respekt. Da hab ich ja noch vieles einzuholen.ereglam hat geschrieben:Hallo Markus,
das hat nicht sooo viel mit Erfahrung zu tun, da es den CREATE noch nicht so lange gibt.
Ich habe halt gerade damit zu tun...
PS:
ich saue jetzt erst seit ca. 10 Jahren mit und in SAP-Systemen herum...
Code: Alles auswählen.
data: variablenamen type table of 'typ'
ich arbeite auf 4.6cereglam hat geschrieben:Hallo Markus,
dazu gibt es zwei Möglichkeiten:Die letzte Variante ist notwendig, wenn Du auf einem System kleiner 6.20 arbeitest...
- Typ ist im DDIC bekannt
CREATE DATA ... TYPE TABLE OF (typ).- mit CL_ABAP_TABLEDESCR und CL_ABAP_STRUCTDESCR
Anlegen einer Struktur und dann einer Tabelle mit CREATE DATA ... TYPE HANDLE tabdescr.- Subroutinepool
anlegen eines temporären Programmes/Form-Routine, dass eine Tabelle erzeugt und zurückgibt
Code: Alles auswählen.
FIELD-SYMBOLS:
<lfs_tab> TYPE ANY,
<lfs_tab2> TYPE ANY.
DATA: ld_tab TYPE REF TO data,
lt_mara TYPE REF TO data.
CREATE DATA ld_tab TYPE (rs_fullkey-tabname). <--- das funktioniert
ASSIGN ld_tab->* TO <lfs_tab>. <--- das funktioniert
create data lt_mara type table of (rs_fullkey-tabname). <-- das nicht
ASSIGN lt_mara->* TO <lfs_tab2>.
also geht bei Dir nur die Variante drei...ereglam hat geschrieben:...
Die letzte Variante ist notwendig, wenn Du auf einem System kleiner 6.20 arbeitest...
Code: Alles auswählen.
call method cl_alv_table_create=>create_dynamic_table
exporting
it_fieldcatalog = t_fieldcat
importing
ep_table = it_ref.
Code: Alles auswählen.
PROGRAM /xxxx/sapfyzpv.
TYPES:
typ_s_MARA TYPE MARA ,
typ_t_MARA TYPE TABLE OF typ_s_MARA.
DATA:
gt_MARA TYPE typ_t_MARA.
Code: Alles auswählen.
*----------------------------------------------------------------------*
* INCLUDE /XXXX/YZPVREPEXTER *
*----------------------------------------------------------------------*
DATA: code TYPE TABLE OF rssource-line,
s_code LIKE LINE OF code,
prog(8) TYPE c, msg(120) TYPE c, lin(3) TYPE c,
wrd(10) TYPE c, off(3) TYPE c, hf_string TYPE string.
CLEAR hf_string.
APPEND 'PROGRAM /xxxx/sapfyzpv.'
TO code.
*APPEND 'FIELD-SYMBOLS:'
* TO code.
*APPEND ' <lfs_tab> TYPE ANY.'
* TO code.
APPEND 'TYPES:'
TO code.
CONCATENATE ' typ_s_' r_tabname ' TYPE '
INTO hf_string.
CONCATENATE hf_string r_tabname ','
INTO hf_string
SEPARATED BY space.
APPEND hf_string
TO code.
CLEAR hf_string.
CONCATENATE ' typ_t_' r_tabname ' TYPE TABLE OF typ_s_' r_tabname '.'
INTO hf_string.
APPEND hf_string
TO code.
CLEAR hf_string.
APPEND 'DATA:'
TO code.
CONCATENATE ' gt_' r_tabname ' TYPE typ_t_' r_tabname '.'
INTO hf_string.
APPEND hf_string
TO code.
CLEAR hf_string.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
IF sy-subrc <> 0.
WRITE: / 'Error during generation in line', lin,
/ msg,
/ 'Word:', wrd, 'at offset', off.
ELSE.
SKIP 3.
WRITE: / 'The name of the subroutine pool is', prog.
LOOP AT code INTO s_code.
WRITE: / s_code.
ENDLOOP.
ENDIF.
Code: Alles auswählen.
PROGRAM /xxxx/sapfyzpv .
FORM check_key USING r_tabname TYPE string.
INCLUDE /xxxx/yzpvrepexter.
ENDFORM.
Code: Alles auswählen.
PERFORM check_key(/xxxx/sapfyzpv) USING gf_tabname.