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.
|