
Las mejoras a partir de Abap 7.40
1. Mejoras Abap
- Mayor orientación hacia la expresiones lo que permite escribir un código Abap mas corto y legible
- En el contexto de d esarrollo Abap en Sap Hana, las opciones asociadas con las expresiones hacen posible reducir el código Abap a la intención esencial
- Se pueden realizar cálculos dentro de la base de datos Sap Hana (paradigma Code Pushdown)
- Para determinar la versión Abap que estamos trabajando, damos clic al menú Sistema/Status, damos clic en botón Coponentes (lupa de Product Version), y en la lista de componentes buscamos la versión o release SAP_BASIS y SAP_ABA
2. Abap 7.50
- En octubre de 2015 SAP lanza el servidor de aplicaciones SAP NetWeaver AS ABAP 7.5 y con él la nueva versión del lenguaje ABAP 7.5
- Es compatible con el servidor de aplicaciones ABAP 7.4
- Soporta la base de datos SAP HANA y otras bases de datos
- Ofrece nuevas optimizaciones sofisticadas centradas en la base de datos HANA
- Ofrece un modelo de programación Abap común para aplicaciones transaccionales y analíticas
- Establece a SAP Fiori como experiencia de usuario de aplicaciones cruzadas
- Es compatible con la industria 4.0 y los escenarios de big data
- Moderniza y simplifica aún más el lenguaje Abap
- Ofrece experiencia de desarrollo de primera clase en Eclipse
- Proporciona herramientas de administración de código personalizadas para una actualización y migración simples a Sap S4/Hana
3. Declaraciones en línea a partir de ABAP 7.4
3.1 Declaraciones con DATA
DATA(v_texto) = 'Hola Mundo'.
3.2 Loop AT INTO work area
LOOP AT ti_carrier INTO data(wa_carrier).
ENDLOOP.
3.3 CALL METHOD
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = data(lo_alv_inline)
CHANGING t_table = lt_data ).
lo_alv_inline->display( ).
CATCH cx_salv_msg INTO data(lo_exc_inline).
MESSAGE lo_exc:inline TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
3.4 LOOP AT ASSIGNING
DATA: ti_bukrs TYPE STANDARD TABLE OF bukrs.
LOOP AT ti_bukrs ASSIGNING field-symbol(<wa_bukrs>).
ENDLOOP.
3.5 READ TABLE ASSIGNING
DATA: ti_matnr TYPE STANDARD TABLE OF matnr.
READ TABLE ti_matnr ASSIGNING field-symbol(<wa_matnr>) INDEX 3.
3.6 SELECT INTO TABLE
SELECT * FROM SCARR INTO TABLE @data(ti_scarr).
3.7 SELECT SINGLE INTO
SELECT SINGLE carrname
FROM scarr
WHERE carrid EQ 'AA'
INTO @data(v_carrname).
4. Las Expresiones con Tablas
4.1 READ TABLE INDEX
data(wa_carrier) = ti_carrier[ 1 ].
4.2 READ TABLE WITH KEY
DATA(vl_nombre) = ti_carrier[ carrid = 'LH' ]-carrname
4.3 Existe el registro?
IF line_exists( ti_carrier[ carrid = 'AA] ).
ENDIF.
4.4 Obtenemos el índice de una tabla
DATA(v_index) = line_index( ti_scarr[ carrid = 'AA' [ ).
4.5 Si se utiliza una expresión en línea que haga referencia a un registro que no existe en una tabla interna, se generará un DUMP, por lo cual SAP recomienda asignar un field symbol y chequear el SY-SUBRC.
ASSIGN it_tab[ 1 ] to FIELD-SYMBOL().
IF sy-subrc EQ 0.
...
ENDIF.
5. Operaciones de Constructor
Nos permiten crear e inicializar objetos Abap, estructuras de datos y referencias de datos, por medio de una expresión. Los parámetros para el Constructor son transferidos cuando el método es llamado.
5.1 Crear objeto Abap
data(o_reporte) = NEW lcl_reporte( 1 ).
5.2 Inicializar estructuras o tablas internas
ls_carr = VALUE #( carrid = 'LH' carrname = 'Lufthansa' ).
y el VALUE también se puede usar con declaraciones en línea:
DATA(ls_carr) = VALUE #( carrid = 'LH' carrname = 'Lufthansa' ).
y ahora con tabla interna:
DATA: lt_carrier TYPE TABLE OF scarr.
lt_carrier = VALUE #( ( carrid = 'AA' carrname = 'American Airlines' )
( carrid = 'LH' carrname = 'Lufthansa' ) ).
5.3 Operador REF
Es una alternativa orientada a la expresión, usada para generar una referencia de datos junto con la sentencia GET REFERENCE.
TRY.
"Preparamos la conexión Sql
data(lo_result_set) = cl_sql_connection=>get connection()->create_statement()->execute_query( lv_statement ).
lo_result_set->set_param_table( ref #( lt_result ) ).
"Obtenemos el resultado
lo_result_set->next_package( ).
lo_result_set->close( ).
CATCH cx_sql_exception INTO data(lo_exc).
"Manejo de errores
ENTRY.
6. El operador CORRESPONDING
para asignar a una estructura el contenido de otra estructura o workarea, previamente inicializando el contenido de la estructura destino:
wa_line2 = CORRESPONDING #( wa_line1 ).
para asignar a una estructura el contenido de otra estructura o workarea sin previamente inicializar el contenido de la estructura destino:
wa_line2 = CORRESPONDING #( BASE ( wa_line2 ) wa_line1 ).
=>esta sentencia utiliza el contenido existente de wa_line2 como base y sobrescribe las columnas coincidentes de wa_line1
si tenemos 3 estructuras, para asignar a una estructura el contenido de otra estructura o workarea, sin previamente inicializar el contenido de la estructura destino:
DATA(wa_line3) = CORRESPONDING line2( BASE ( wa_line2 ) wa_line1 ).
=>esta sentencia crea una tercera y nueva estructura (wa_line3) que se basa en wa_line2 pero se sobrescribe con las columnas coincidentes de wa_line1
7. Operaciones con caracteres
v_string = |Esto es un texto literal.|.
Dentro de una cadena de caracteres podemos encerrar entre llave {} los siguientes objetos y expresiones, de modo que no sean considerados caracteres: Objetos de datos, expresiones de cálculo, expresiones de tablas, funciones predefinidas, métodos funcionales y encadenamiento de métodos:
v_string = |El código de retorno es: {sy-subrc }|.
La sentencia Abap CONCATENATE ha sido optimizada:
DATA(vl_output) = |Hola| & | | & |Mundo|.