En este segundo artículo nos centraremos en algunas de estas nuevas funcionalidades que se han introducido en ABAP. Si te perdiste el primero puedes leerlo aquí.
Programación orientada a objetos
En programación orientada a objetos, un proceso DOWNCAST es aquel en el un objeto de referencia tipificada hereda el tipo de un objeto más específico. Un proceso UPCAST es lo contrario, un objeto especifico se convierte en un objeto genérico.
Para este caso queremos una definición de una estructura, obteniendo todos los elementos de esa estructura. Para ello, nos ayudaremos de la clase «CL_ABAP_TYPEDESCR», que es una subclase de la clase «CL_ABAP_STRUCTDESCR», por lo que necesitaremos servirnos del DOWNCAST para convertir la instancia de la clase padre «CL_ABAP_STRUCTDESCR» en la instancia de la subclase «CL_ABAP_TYPEDESCR».

En las versiones recientes podremos ejecutar todas estas sentencias en una sola línea empleando para ello el comando «CAST», y de esta forma nos estaríamos ahorrando un paso intermedio y la declaración de «lo_structure_comp».

ABAP SQL:
En primer lugar, vamos a diferenciar entre Open SQL y Native SQL:
- Open SQL te permite acceder a las tablas de la base de datos declaradas en el diccionario ABAP independientemente de la plataforma de base de datos que utilice el sistema R/3.
- Con native SQL podemos utilizar sentencias SQL de un programa ABAP y utilizar tablas de base de datos que no están administradas por el diccionario ABAP. Para emplear estas sentencias debemos emplear el comando EXEC SQL y ENDEXEC al finalizar.
CASE and colums:
A partir de la versión 7.4, podemos emplear “CASE” en selecciones Open SQL. En el siguiente ejemplo seleccionamos 2 campos (PERNR y BEGDA) y un tercero que se define con el alias de BKRS_TEXT, que tomará el valor de “Mutilva”, “France” o “No Company” en función del valor que contenga el campo “BUKRS” correspondiente a esa entrada. Podemos ver cómo nos permite la posibilidad de crear la estructura “ls_0001” in situ.

Como resultado obtendremos una estructura ‘ls_0001’ que a su vez contiene la estructura del infotipo ‘0001’, en la que, al ser el campo ‘BUKRS’ = ZMUT, nuestro campo ‘bukrs_text’ adquiere el valor de la constante ‘Mutilva’.

GROUP BY
La idea principal es, como su propio nombre indica, agrupar los datos que necesitamos, evitando un loop anidado. El primer ‘Loop’ es donde usamos el campo clave por el que vamos a agrupar:

En el segundo ‘Loop’ es donde, recorriendo los diferentes grupos que hemos formado, añadimos la lógica:

A continuación, podemos ver las distintas iteraciones. Hemos agrupado nuestra tabla interna por el campo ‘Werks’. Por lo que en cada una de esas iteraciones podemos realizar la lógica que deseamos, como puede ser mandar un mail a una serie de destinatarios, agrupar esas entradas en otra tabla interna, etc.

Esperamos que este artículo te haya resultado interesante. Si tienes alguna duda, no dudes en ponerte en contacto con nuestro equipo de HXM
Más información:
Quizas te pueda interesar
MSP:
un nuevo modelo de nómina
Imagina poder delegar la gestión de tu nómina en un proveedor de confianza, reducir tiempos y costes operativos y, al mismo tiempo, contar con un proceso completo, seguro y siempre actualizado. Un modelo en el que la nómina deja de ser una carga administrativa para...
Provide Fields:
explicación y uso en RRHH
En este artículo analizaremos la sentencia PROVIDE de SAP, tratando de dar una clara y breve explicación para, después, poder ver una aplicación directa sobre el área de RRHH. Antes de entrar en la parte técnica, la sentencia principalmente sirve para recoger uno a...
Creación de un Switch
a partir de una Business Function
En el presente artículo comentaremos la creación de un “Switch” para un paquete determinado. El objetivo de este Switch será la de controlar la visibilidad de diferentes objetos del repositorio a modo de conmutador. Este Switch está directamente asociado al paquete...


