-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynamisch_itab_erstellen
48 lines (33 loc) · 1.83 KB
/
dynamisch_itab_erstellen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
" Es wird eine dynamisch definierte interne Tabelle erstellt.
DATA:
ls_cob_pro TYPE rsd_s_cob_pro,
lt_components TYPE abap_component_tab,
ls_component TYPE abap_componentdescr,
lr_struct_descr TYPE REF TO cl_abap_structdescr,
lr_table_descr TYPE REF TO cl_abap_tabledescr,
lR_DATA type ref to data.
FIELD-SYMBOLS:
<fs_component> TYPE abap_componentdescr,
<o_data> TYPE STANDARD TABLE,
<field> TYPE any.
" Todo: Evt loop über Liste mit InfoObjekten
" Alle Informationen zum InfoObject holen
CALL FUNCTION 'RSD_IOBJ_GET'
EXPORTING
i_iobjnm = '0PLANT'
IMPORTING
e_s_cob_pro = ls_cob_pro.
" erstellt eine Struktur mit InfoObjekt und Datentyp.
ls_component-name = ls_cob_pro-fieldnm.
ls_component-type ?= cl_abap_elemdescr=>describe_by_name( ls_cob_pro-dtelnm ).
INSERT ls_component INTO TABLE lt_components.
" Todo: Ende Loop über Liste mit InfoObjekten
" einen Typ auf der oben definierten Struktur lt_compnents erstellen.
lr_struct_descr ?= cl_abap_structdescr=>create( p_components = lt_components ).
" eine interne Tabelle auf der Basis des generierten Typ beschreiben.
lr_table_descr ?= cl_abap_tabledescr=>create( p_line_type = lr_struct_descr ).
" Die Referenz pr_data (Attribut) auf Basis des neuen Typ erstellen.
" Auf die Referenz (Daten) pr_data wird auch aus der Subklasse zugegriffen daher wird dies als Attribut erstellt.
CREATE DATA lR_DATA TYPE HANDLE lr_table_descr.
" Die Referenz zu der internen Tabelle verknüpfen
ASSIGN lR_DATA->* TO <o_data>.