Sentencia READ TABLE. Se puede leer un registro de una tabla interna en una estructura sin haberla definitdo previamente.
READ TABLE ti_scarr WITH KEY carrid = 'LH' INTO DATA(wa_scarr).
Expresiones con tablas. Uso de corchetes ([ ]) para hacer accesos a las tablas internas (dejamos de usar el READ TABLE).
cl_demo_output=>display( |Carrier: { ti_scarr[ carrid = 'LH' ]-carrname }| )
Declaraciones con DATA. Se declara variable y se asigna valor en una misma línea
DATA(v_texto) = 'Hola Mundo'.
Loop AT INTO work area. Se declara y asigna una work area para recorrer un loop en una misma instrucción
LOOP AT ti_carrier INTO DATA(wa_carrier). ENDLOOP.
Call method. Se declaran los antributos y se llama el método en una misma instrucción.
TRY .
"Generar tabla alv
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv_inline)
CHANGING t_table = lt_data ).
"Mostrar alv
lo_alv_inline->display( ).
CATCH cx_salv_msg INTO DATA(lo_exc_inline).
MESSAGE lo_exc TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
Loop at assigning. Se declara el Field Symbol y en la misma instrucción loop se almacena cada registro en una tabla interna
LOOP AT ti_bukrs ASSIGNING FIELD-SYMBOL(<wa_bukrs>). ENDLOOP.
Read table assigning. Se declara el Field Symbol y se asignan los valores al mismo momento de leer el registro
READ TABLE ti_matnr ASSIGNING FIELD-SYMBOL(<wa_matnr>) INDEX 3.
Select into table. La declaración de la tabla interna se realiza en la misma sentencia
Select SELECT * FROM scarr INTO TABLE @DATA(ti_scarr).
Select single into. Ya no se declaran las variables para almacenar los resultados de la selección. Se hace explicitamente en el Select
SELECT SINGLE carrname FROM scarr WHERE carrid EQ 'AA' INTO @DATA(v_carrname).
................................................................................................................................................................
EXPRESIONES CON TABLAS. Los cambios a partir de ABAP 7.40 son muchos. Uno de los más significativos: Se reemplaza el SY-SUBRC por la excepción CX_SY_ITAB_LINE_NOT_FOUND para cuando una línea de la tabla no es encontrada al momento de realizar por ejemplo un READ.
Read Table Index. Para leer un registro puntual de una tabla interna.
DATA(wa_carrier) = ti_carrier[ 1 ]
Read Table Index With Key. Para leer un registro de una tabla interna utilizando campos claves.
DATA(vl_nombre) = ti_carrier[ carrid = 'LH' ]-carrname.
¿Existe el registro? Verificamos si existe un registro
IF line_exists( ti_carrier[ carrid = 'AA' ] ). ENDIF.
Obtener índice de una tabla.
DATA(v_index) = line_index( ti_scarr[ carrid = 'AA' ] ).
................................................................................................................................................................
EXPRESIONES CON CONSTRUCTOR. Permiten cear e inicializar objetos ABAP, estructuras de datos y referencias de datos por medio de una expresión.
Crear instancia de un objeto.
DATA(o_reporte) = NEW lcl_reporte( 1 ).
Inicialización de una estructura o tablas internas
ls_carr = VALUE #( carrid = 'LH' carrname = 'Lufthansa' ).
La expresión VALUE puede combinarse con una declaración en línea (se debe especificar el tipo de datos exacto).
DATA(ls_carr) = VALUE scarr ( carrid = 'LH' carrname = 'Lufthansa' ).
El operador VALUE también se puede usar para declarar tablas internas.
lt_carrier = VALUE #( ( carrid = 'AA' carrname = 'American Airlines' ) ( carrid = 'LH' carrname = 'Lufthansa') ).
Referencia de datos. lo_result_set->set_param_table( ref #( result ) ).
Además de los operadores NEW, VALUE y REF existen muchos más tales como conversiones (CONV) o conversiones de tipo (CAST)
................................................................................................................................................................