ITAB deklarieren

Syntaxbeispiel interne Tabelle deklarieren

Beispielcoding: Die verschiedenen Arten um eine interne Tabelle zu deklarieren (kopieren erlaubt aber auf eigene Gefahr :-))

 


Die verschiedenen Arten um eine interne Tabelle zu deklarieren:
*
* Coded by Thorsten Neubüser - www.4ap.de
*
* kurz und knackig z.B. für Fubaus

data: TI_BAPICONDCT TYPE TABLE OF BAPICONDCT WITH HEADER LINE.


* die alte, klassische Methode
DATA: BEGIN OF <itab1> OCCURS <n>,
matnr like mara-matnr,
werks like marc-werks,
END OF <itab1>,
* zweite Itab
itab2 like line of itab1 OCCURS 0 with header line.


* mit TYPES definiert
TYPES: BEGIN OF <Zeile>,
matnr like mara-matnr,
werks like marc-werks,
END OF <Zeile>.
TYPES: <itab> TYPE TABLE OF <Zeile>.
* es geht aber auch:
DATA: <itab_2> TYPE <Zeile> OCCURS <n>.


* so wäre das nahezu ideal
TYPES: BEGIN OF <Zeile>,
matnr like mara-matnr,
werks like marc-werks,
END OF <Zeile>.
DATA: <itab> TYPE [SORTED] TABLE OF <Zeile>
[WITH UNIQUE KEY matnr]
[INITIAL SIZE <n>] WITH HEADER LINE.


* alte klassische Variante
DATA: <itab> LIKE <dbtab> OCCURS <n>
WITH HEADER LINE.


* Zulaessige Werke, als Select-Option-Ersatz
DATA: BEGIN OF zulaessige_werke OCCURS 0,
SIGN(1),
OPTION(2),
LOW LIKE t001w-WERKS,
HIGH LIKE t001w-WERKS,
END OF zulaessige_werke.


* Kombination aus Struktur + eigenen Feldern
DATA: BEGIN OF UP_TAB OCCURS 100. " Tabelle mit hochgeladenen Daten
INCLUDE STRUCTURE ZCZABW.
DATA: LFSNR LIKE VBAK-VBELN, " Verkaufsbeleg
NETPR LIKE EKPO-NETPR, " Nettopreis
PEINH LIKE EKPO-PEINH, " Preiseinheit
POS_SUM LIKE EKPO-NETPR, " Summe dieser Position
NETWR LIKE EKPO-NETWR. " Nettowert
DATA: END OF UP_TAB.



* oder eine Tabelle dynamisch generieren:
DATA: LineType TYPE string,
ItabRef TYPE REF TO DATA.
FIELD-SYMBOLS: <Itab> TYPE STANDARD TABLE.
LineType = 'SFLIGHT'.
* Create internal table and attach a field-symbol
CREATE DATA ItabRef TYPE STANDARD TABLE OF (LineType).
ASSIGN ItabRef->* TO <Itab>.

SELECT * FROM (LineType) INTO table <Itab> up to 10 rows.



oder auch:


DATA: LineType TYPE string,
ItabRef TYPE REF TO data.
FIELD-SYMBOLS: <Itab_tn> TYPE STANDARD TABLE.

LineType = dd02l_tabname.
CREATE DATA ItabRef TYPE STANDARD TABLE OF (LineType).
ASSIGN ItabRef->* TO <Itab_tn>.
SELECT * FROM (dd02l_tabname) INTO table <Itab_tn>
WHERE kschl = p_kschl
* AND kunnr = ___
AND matnr = it_daten-matnr
AND datbi > sy-datum.