Ricerca…


Tipi di tabelle interne

DATA: <TABLE NAME> TYPE <SORTED|STANDARD|HASHED> TABLE OF <TYPE NAME> 
      WITH <UNIQUE|NON-UNIQUE> KEY <FIELDS FOR KEY>.

Tabella standard

Questa tabella contiene tutte le voci memorizzate in modo lineare e i record sono accessibili in modo lineare. Per le tabelle di grandi dimensioni, l'accesso alla tabella può essere lento.

Tabella ordinata

Richiede l'aggiunta WITH UNIQUE | NON-UNIQUE KEY . La ricerca è veloce a causa dell'esecuzione di una ricerca binaria. Le voci non possono essere aggiunte a questa tabella in quanto potrebbero rompere l'ordinamento, pertanto vengono sempre inserite utilizzando la parola chiave INSERT .

Tabella tritata

Richiede l'aggiunta WITH UNIQUE | NON-UNIQUE KEY . Utilizza un algoritmo di hashing proprietario per mantenere le coppie chiave-valore. Le ricerche teoriche possono essere lente come la tabella STANDARD ma in pratica sono più veloci di una tabella SORTED richiede una quantità di tempo costante indipendentemente dalle dimensioni della tabella.

Dichiarazione delle tabelle interne ABAP

Dichiarazione della tabella interna basata sulla definizione del tipo locale

" Declaration of type
TYPES: BEGIN OF ty_flightb,
         id        TYPE fl_id,
         dat       TYPE fl_date,
         seatno    TYPE fl_seatno,
         firstname TYPE fl_fname, 
         lastname  TYPE fl_lname,
         fl_smoke  TYPE fl_smoker,
         classf    TYPE fl_class,
         classb    TYPE fl_class,
         classe    TYPE fl_class,
         meal      TYPE fl_meal,
         service   TYPE fl_service,
         discout   TYPE fl_discnt,
       END OF lty_flightb.

" Declaration of internal table
DATA t_flightb TYPE STANDARD TABLE OF ty_flightb.

Dichiarazione basata sulla tabella del database

DATA t_flightb TYPE STANDARD TABLE OF flightb.

Dichiarazione della tabella interna in linea

Richiede la versione ABAP> 7.4

TYPES t_itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.

DATA(t_inline) = VALUE t_itab( ( 1 ) ( 2 ) ( 3 ) ).

Tabella interna con dichiarazione delle righe di intestazione

In ABAP ci sono tabelle con linee di intestazione e tabelle senza linee di intestazione. Le tabelle con le linee di intestazione sono un concetto precedente e non dovrebbero essere utilizzate in un nuovo sviluppo.

Tabella interna: tabella standard con / senza riga di intestazione

Questo codice dichiara la tabella i_compc_all con la struttura esistente di compc_str .

DATA: i_compc_all TYPE STANDARD TABLE OF compc_str WITH HEADER LINE.
DATA: i_compc_all TYPE STANDARD TABLE OF compc_str.

Tabella interna: tabella con hash con / senza riga di intestazione

DATA: i_map_rules_c TYPE HASHED TABLE OF /bic/ansdomm0100 WITH HEADER LINE
DATA: i_map_rules_c TYPE HASHED TABLE OF /bic/ansdomm0100

Dichiarazione di un'area di lavoro per tabelle senza intestazione

Un'area di lavoro (comunemente abbreviata wa ) ha la stessa struttura della tabella, ma può contenere solo una riga (una WA è una struttura di una tabella con una sola dimensione).

DATA: i_compc_all_line LIKE LINE OF i_compc_all.

Leggere, scrivere e inserire nelle tabelle interne

Leggere, scrivere e inserire nelle tabelle interne con una riga di intestazione:

" Read from table with header (using a loop):
LOOP AT i_compc_all.              " Loop over table i_compc_all and assign header line
  CASE i_compc_all-ftype.         " Read cell ftype from header line from table i_compc_all 
    WHEN 'B'.                     " Bill-to customer number transformation
      i_compc_bil = i_compc_all.  " Assign header line of table i_compc_bil with content of header line i_compc_all
      APPEND i_compc_bil.         " Insert header line of table i_compc_bil into table i_compc_bil
    " ... more WHENs
  ENDCASE.
ENDLOOP.

Promemoria: le tabelle interne con le linee di intestazione sono vietate in contesti orientati agli oggetti. L'utilizzo di tabelle interne senza righe di intestazione è sempre consigliato.

Leggere, scrivere e inserire nelle tabelle interne senza una riga di intestazione:

" Loop over table i_compc_all and assign current line to structure i_compc_all_line
LOOP AT i_compc_all INTO i_compc_all_line.      
  CASE i_compc_all_line-ftype.                " Read column ftype from current line (which as assigned into i_compc_all_line)
    WHEN 'B'.                                 " Bill-to customer number transformation
      i_compc_bil_line = i_compc_all_line.    " Copy structure
      APPEND i_compc_bil_line TO i_compc_bil. " Append structure to table
    " more WHENs ...
  ENDCASE.
ENDLOOP.


" Insert into table with Header:
INSERT TABLE i_sap_knb1.                      " insert into TABLE WITH HEADER: insert table header into it's content
insert i_sap_knb1_line into table i_sap_knb1. " insert into HASHED TABLE: insert structure i_sap_knb1_line into hashed table i_sap_knb1
APPEND p_t_errorlog_line to p_t_errorlog.     " insert into STANDARD TABLE: insert structure / wa p_t_errorlog_line into table p_t_errorlog_line


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow