Buscar..


Tipos de tablas internas

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

Mesa estandar

Esta tabla tiene todas las entradas almacenadas de forma lineal y se accede a los registros de forma lineal. Para tamaños de mesa grandes, el acceso a la mesa puede ser lento.

Tabla ordenada

Requiere la adición WITH UNIQUE | NON-UNIQUE KEY . La búsqueda es rápida debido a la realización de una búsqueda binaria. Las entradas no se pueden agregar a esta tabla ya que podría romper el orden de clasificación, por lo que siempre se insertan con la palabra clave INSERT .

Tabla hash

Requiere la adición WITH UNIQUE | NON-UNIQUE KEY . Utiliza un algoritmo de hashing propietario para mantener los pares clave-valor. En teoría, las búsquedas pueden ser tan lentas como la tabla STANDARD , pero en la práctica son más rápidas que una tabla SORTED toma una cantidad de tiempo constante independientemente del tamaño de la tabla.

Declaración de Tablas Internas ABAP

Declaración de tabla interna basada en la definición de tipo local

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

Declaración basada en la tabla de base de datos

DATA t_flightb TYPE STANDARD TABLE OF flightb.

Declaración de tabla interna en línea

Requiere versión ABAP> 7.4

TYPES t_itab TYPE STANDARD TABLE OF i WITH EMPTY KEY.

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

Tabla interna con declaración de líneas de encabezado

En ABAP hay tablas con líneas de encabezado y tablas sin líneas de encabezado. Las tablas con líneas de encabezado son un concepto más antiguo y no deben utilizarse en nuevos desarrollos.

Tabla interna: Tabla estándar con / sin línea de cabecera

Este código declara la tabla i_compc_all con la estructura existente de 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.

Tabla interna: tabla hash con / sin línea de encabezado

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

Declaración de un área de trabajo para tablas sin encabezado.

Un área de trabajo (comúnmente abreviada wa ) tiene la misma estructura exacta que la tabla, pero puede contener solo una línea (un WA es una estructura de una tabla con una sola dimensión).

DATA: i_compc_all_line LIKE LINE OF i_compc_all.

Leer, escribir e insertar en tablas internas

Lea, escriba e inserte en tablas internas con una línea de encabezado:

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

Recordatorio: las tablas internas con líneas de encabezado están prohibidas en contextos orientados a objetos. Siempre se recomienda el uso de tablas internas sin líneas de encabezado.

Lea, escriba e inserte en tablas internas sin una línea de encabezado:

" 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow