Поиск…


Типы внутренних таблиц

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

Стандартная таблица

В этой таблице есть все записи, хранящиеся в линейном режиме, и записи доступны линейным способом. Для больших размеров таблиц доступ к таблице может быть медленным.

Сортированная таблица

Требуется дополнение WITH UNIQUE | NON-UNIQUE KEY . Поиск выполняется быстро из-за выполнения двоичного поиска. Записи не могут быть добавлены в эту таблицу, так как они могут нарушить порядок сортировки, поэтому они всегда вставляются с использованием ключевого слова INSERT .

Хешированный стол

Требуется дополнение WITH UNIQUE | NON-UNIQUE KEY . Использует собственный алгоритм хеширования для поддержки пар ключ-значение. Теоретические поиски могут быть такими же медленными, как и таблица STANDARD но практически они быстрее, чем таблица SORTED занимающая постоянное количество времени, независимо от размера таблицы.

Декларация внутренних таблиц ABAP

Внутренняя декларация таблицы на основе определения локального типа

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

Декларация на основе таблицы базы данных

DATA t_flightb TYPE STANDARD TABLE OF flightb.

Внутренняя декларация внутренней таблицы

Требуется версия ABAP> 7.4

TYPES t_itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.

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

Внутренняя таблица с объявлением строк заголовка

В ABAP есть таблицы со строками заголовков и таблицы без строк заголовка. Таблицы с заголовками являются более старой концепцией и не должны использоваться в новой разработке.

Внутренняя таблица: стандартная таблица с / без строки заголовка

Этот код объявляет таблицу i_compc_all существующей структурой 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.

Внутренняя таблица: Хешированная таблица с / без строки заголовка

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

Объявление рабочей области для таблиц без заголовка

Рабочая область (обычно сокращенно wa ) имеет ту же структуру, что и таблица, но может содержать только одну строку (WA - это структура таблицы только с одним измерением).

DATA: i_compc_all_line LIKE LINE OF i_compc_all.

Чтение, запись и ввод во внутренние таблицы

Чтение, запись и вставка во внутренние таблицы с помощью строки заголовка:

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

Напоминание. Внутренние таблицы с заголовками запрещены в объектно-ориентированных контекстах. Рекомендуется всегда использовать внутренние таблицы без строк заголовка.

Чтение, запись и вставка во внутренние таблицы без строки заголовка:

" 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow