Skip to content

Certificación SAP – Desarrollador Back-End – ABAP Cloud

Notas de Estudio

DESCRIPCIÓN GENERAL

El examen de certificación “SAP Certified Associate – Back-End Developer – ABAP Cloud” valida que posee los fundamentos del lenguaje de programación ABAP basado en el modelo de programación ABAP RESTful en SAP Business Technology Platform y los principios de creación de extensiones personalizadas en SAP S/4HANA Cloud requeridas para el perfil de desarrollador back-end. Esta certificación demuestra que tiene una comprensión general y habilidades profundas para participar como miembro del equipo del proyecto en un rol de mentor.

Temas

  • ABAP core data services (CDS) y modelado de datos 21% – 30%

  • Modelo de programación ABAP RESTful l 11% – 20%

  • ABAP SQL  y code pushdown ≤10%

  • Programación ABAP 31% – 40%

  • Diseño orientado a Objetos 11% – 20%

  • SAP clean core extensibility y ABAP cloud 11% – 20%

Como prepararse

Adquirir habilidades básicas ABAP

Este learning journey presenta los conceptos básicos de la programación ABAP en SAP BTP (Business Technology Platform).
 

Programación Básica ABAP

1 Inicio

Preparando el Ambiente de desarrollo.

Eclipse como entorno de desarrollo no está integrado en el sistema ABAP. En su lugar, debe conectarse a cada sistema ABAP en el que desee trabajar y cada conexión está representada en Eclipse por un proyecto. Hay dos tipos de proyectos en ADT: Proyectos ABAP, que se utilizan para conectarse a un sistema ABAP local, y Proyectos de nube ABAP, que se utilizan para conectarse a SAP BTP ABAP o a SAP S/4HANA Cloud. 

SAP Business Technology Platform es la plataforma como servicio (PAAS) de SAP. Para acceder a él, debe crear una cuenta global. Hay varios modelos de suscripción disponibles, dependiendo de si necesita ejecutar entornos productivos a gran escala o simplemente un entorno de usuario único para el propio desarrollo profesional.

Dentro de una cuenta global, hay una o más subcuentas. Cada subcuenta se puede configurar de manera diferente, de modo que una sola empresa pueda ejecutar varias plataformas diferentes pero administrar su suscripción utilizando solo una única cuenta global. Dentro de la subcuenta, implementas un runtime como Cloud Foundry o Kyma. Una vez que haya hecho esto, puede implementar una instancia ABAP.

En este curso se utiliza una instancia ABAP implementada en SAP Business Technology Platform. Sin embargo, el material también es relevante para otras implementaciones ABAP, como un sistema SAP S/4HANA local o un sistema SAP S/4HANA Cloud.

Como acceder al ambiente ABAP Cloud de prueba.

Echando un primer vistazo a ABAP.

Hay dos formas de abrir un objeto de desarrollo en ADT.

1.- Localizando el objeto en el explorador y dando doble clic sobre el mismo. 

2.- Seleccionando CTRL + SHIFT + A para abrir una ventana de dialogo y buscar el objeto. 

Otras funciones importantes son: 

F1 Despliega la ayuda de la declaración en que está posicionado el cursor. 

F2 Despliega información del objeto en el que está posicionado el cursor. 

F3 Despliega la definición del objeto en el que está posicionado el cursor. 

Comprensión de la estructura y la logística del software

Cuando crea un objeto de desarrollo en el entorno ABAP, debe asignarlo a un paquete. Los paquetes sirven como contenedores para todos los objetos de desarrollo que lógicamente van juntos. Cada paquete también está asignado a un componente de software. El conjunto completo de objetos de desarrollo del sistema se denomina Repositorio ABAP. En consecuencia, los objetos de desarrollo también suelen denominarse objetos de repositorio.

Las aplicaciones se crean en un entorno de desarrollo, pero luego debe asegurarse de que puedan probarse en un entorno de prueba adecuado antes de pasar al entorno de producción. Normalmente, tendrá una única cuenta global y una subcuenta para cada uno de los entornos de desarrollo, prueba y producción. Los componentes del software le permiten transportar sus objetos.

Cuando se crea un nuevo objeto de desarrollo o se modifica uno existente, debes asignarlo a una solicitud de transporte. Las solicitudes de transporte garantizan que todos los objetos de desarrollo que lógicamente van juntos se transporten juntos al sistema de prueba y, posteriormente, al sistema de producción.

Cada solicitud de transporte tiene un propietario, y el propietario puede asignar otros usuarios a la solicitud. De esta manera, las solicitudes de transporte apoyan el desarrollo del equipo.

Cuando un objeto se incluye en una solicitud de transporte, se bloquea. Esto significa que solo puede ser editado por un usuario asignado a la misma solicitud.

Cuando finaliza el trabajo en todos los objetos de la solicitud, todos los desarrolladores asignados a ella deben liberar su trabajo. Después de esto, el propietario de la solicitud puede liberar la solicitud completa. Si la solicitud de transporte pertenece a un componente de software transportable, el administrador del sistema puede importarlo al sistema de prueba para realizar pruebas.

Cuando liberas cualquier tipo de solicitud de transporte, el sistema libera los bloqueos de los objetos de la solicitud, para que cualquier desarrollador pueda acceder a ellos nuevamente.

Desarrollando el primer programa ABAP

Como en todos los demás lenguajes de programación, lo primero que debes hacer en ABAP es familiarizarte con el entorno de desarrollo y los aspectos más elementales del lenguaje escribiendo una breve aplicación “Hello World”.

La principal tecnología de interfaz de usuario que utilizará en la programación ABAP moderna es Fiori Elements. Sin embargo, ADT proporciona una consola para crear resultados de forma rápida y sencilla en aplicaciones de prueba.

1.-Crear un programa “Hello World”

a.- Seleccionar Archivo → Nuevo → Clase ABAP.

b.- Capturar el nombre de la clase e.g. ZCL_##_HELLO_WORLD y una descripción para su clase.

c.- Seleccionar Add… (al lado del cuadro de grupo Interfaces).

d.- Capturar el texto IF_OO_ADT_CLASSRUN en la búsqueda. Haga doble clic en la entrada correspondiente en la lista de resultados.

e.- Seleccionar Siguiente.

f.- Seleccionar una solicitud de transporte.

g.- Seleccionar Finalizar.

2.- Capture código de la clase en el método if_oo_adt_classrun~main(),

Capturar: out->write(“Hola Mundo”) para generar la frase Hola mundo.

3.- Activa y prueba tu clase.

Activa la clase con  Ctrl + F3.

4.- Ejecute la clase con la tecla F9.

Verifique el resultado en la vista de Consola de eclipse.

Verifique la vista de la Consola que debería haberse abierto como una nueva pestaña debajo de la vista del editor.

Si la vista Consola no está visible, ábrala eligiendo Ventana → Mostrar vista → Otro. Haga doble clic en Consola en la lista de resultados.

2 Técnicas Básicas y Conceptos

Comprender los conceptos básicos de ABAP

Versiones de ABAP.

1.- ABAP Estándar: Esta versión de ABAP es la versión básica universal de ABAP.  Es la versión no restringida del lenguage usado en los sistemas unicode con acceso a los objetos de repositorio permitido. 

2.- ABAP para Key Users: Esta versión de ABAP es destinada para asegurarse de una implementación de ampliaciones segura, dentro de las opciones proporcionadas por SAP. El acceso a objetos del repositorio es restringida. 

3.- ABAP Cloud: Esta versión de ABAP está destinada para desarrollo en el ambiente SAP BTP y en SAP S/4 Cloud. Es una versión donde aplican reglas estándares y el acceso a objetos del repositorio es restingido. 

Sentencias y expresiones ABAP. 

Las sentencias ABAP comienzan con una palabra clave y terminan con un punto. Adicionalmente manejar objetos de datos y otras expresiones. 

ABAP no es case-sensitive. Se pueden escribir en mayúscula, minúscula o mixto. Se recomienda usar mayúsculas para las palabras clave, identificadores en minúsculas o camel case. Se puede realizar una conversión de mayúsculas/minúsculas con el Formateador de código. 

Todos los objetos (variables) son declarados con el tipo estático. Este tipo no cambia durante el tiempo de ejecución. 

ABAP viene con sub-lenguages utilizados para el acceso a la base de datos. ABAP Query Language (SQL) para lectura y ABAP Entity Manipulation Language (EML) para modificaciones. 

Comentarios: Un comentario es una parte de código que es ignorada por el compilador o el interpretador de código. 

* Asterisco en la primera línea

Un signo de doble quote para el resto de la linea es un comentario. 

Para poner un comentario al inicio de las líneas seleccionadas Ctrl + <   

Para quitar el comentario a las líneas seleccionadas Ctr +>

Trabajar con objetos de datos básicos y tipos de datos

Objetos de datos en ABAP
Un objeto de datos en un programa ABAP representa una sección reservada de la memoria del programa.

ABAP maneja tres tipos de objetos de datos: variables, constantes y literales.

Cada objeto de datos se basa en un tipo de datos que determina el tipo de información que puede contener. El tipo de datos de un objeto de datos ABAP permanece igual durante la ejecución del programa.

Declaración de Variables
Una variable en un programa ABAP se declara con la palabra clave DATA.

Una declaración consta de tres partes. 

DATA <nombre_variable> TYPE <tipo_de_dato> VALUE <valor inicial>

DATA: Es una palabra clave que va seguida del nombre de la variable de longitud máxima de 30 carácteres. Puede contener letras A-Z, dígitos 0-9 y el carácter underscore. El nombre debe comenzar con una letra o underscore. No se permite el carácter #.

TYPE: Es el tipo de dato de la variable.

VALUE: La adición VALUE es opcional y se puede usar para especificar un valor inicial de la variable. Si no se especifica el valor inicial dependerá del tipo de dato asignado a la variable. 

Tipos de datos ABAP 

Completos: STRING, INTEGER +-2,147,483,648, DATE YYYYMMDD, TIME HHMMSS. 

Incompletos: C, (Character) N (Dígitos), P (Dígitos con decimal).

Constantes y Literales

Una constante es un objeto de dato con un valor predefinido que no debe cambiar en tiempo de ejecución. Cualquier modificación al objeto provoca un error de sintaxis. En ABAP se utiliza la palabra clave CONSTANTS. La declaración es parecida a la de una variable con la diferencia de que el valor VALUE es requerido. 

Una Literal es un objeto de datos con un valor predefinido utilizada para definir constantes y variables con valores no iniciales. Técnicamente se pueden utilizar literales en cualquier parte del código pero se recomienda para un mejor mantenimiento que se utilicen constantes en su lugar. Podemos tener: Literales de número ‘123’, de texto ‘LH’ y de String ‘Hello World’. 

Conversión de tipo implicita: Sucede cuando se realizan asignación de datos de variables a variable, donde la variable destino puede tener distinto tipo. ABAP intentará la conversión de datos, sin embargo el tiempo de ejecución podría ocurrir perdida de datos. 

Reseteo de variables: Se utiliza la sentencia CLEAR <variable> para resetear el dato de la variable al valor inicial. 

Inline declarations: Al asignar valor a una variable se puede utilizar la palabra clave DATA y la variable entre parentesis para no tener que declarar la variable. e.g. DATA(my_var) = ‘Hello World’. 

Procesando datos

Expresiones aritméticas: Son expresiones ABAP con una combinación de valores, operadores y funciones que el sistema de ejecución procesa para calcular un resultado. El tipo de resultado depende del tipo de operandos utilizados como entrada para la expresión.

Puede utilizar una expresión aritmética en cualquier posición de lectura del operando, e.g., en el lado derecho de una asignación de valor.

Operadores: + Adición, – Substracción, * Multiplicación, / División, DIV (6 DIV 4 = 1), MOD (6 MOD 4 = 2) .

Funciones: sqrt( ) raíz cuadrada, ipow( ) exponenciación. 

Secuencia de Ejecución: Las funciones son antes de la multiplicación y división. La multiplicación es antes de la adición o subtracción. De izquierda a derecha si la precedencia es idéntica.  

Procesamiento de cadenas String: Son expresiones ABAP de tipo Texto. Puede utilizar en cualquier posición del operando, e.g., el lado derecho de una asignación de valor. Ejemplos: 

| Hello World |    “Texto solamente

| {cantidad1} + {cantidad2} |   “Expresión

| Total: {cantidad1} + {cantidad2} EUR |  “Texto y expresiones

| Total: {cantidad1} + {cantidad2} {moneda} |  “Texto y expresiones

Trabajar con tablas internas

Las tablas internas son objetos de datos variables en los que se pueden almacenar varios valores del mismo tipo. Este tipo debe especificarse en la declaración con el tipo de fila de la tabla interna.

DATA <internal_table> TYPE TABLE OF <row_type>. 

Cada valor ocupa una fila de la tabla interna. El número de filas no está restringido. En teoría, puede almacenar cualquier cantidad de valores en una tabla interna. Las limitaciones sólo provienen de límites técnicos como la memoria disponible o la configuración del sistema.

El valor inicial de una tabla interna es una tabla vacía o, en otras palabras, una tabla con 0 líneas. Existen diferentes técnicas para llenar una tabla interna. El ejemplo utiliza la instrucción APPEND para agregar una nueva fila al final de la tabla interna y completarla con un valor.

Como alternativa, puede utilizar TYPE TABLE OF en una declaración TYPES para definir un tipo de tabla con un nombre. Luego puede utilizar este tipo de tabla, por ejemplo, en una declaración de DATOS. La visibilidad de estos tipos depende de la posición de la declaración TYPES.

TYPES <table_type_name> TYPE TABLE OF <row_type>.

DATA <internal_table> TYPE <table_type_name>. 

Llenar una tabla interna con APPEND.

APPEND <expression> TO <internal_table>.

Vaciar una Table Internal.

CLEAR <internal_table>.

Recupera una sola fila de una tabla interna.

<internal_table>[posición]

Lectura de una tabla interna en bucle.

LOOP AT <internal_table> INTO <work_area>.

ENDLOOP.

Declaración en línea del área de trabajo.

LOOP AT <internal_table> INTO DATA(<work_area>).

Ejercicio:

Crear una clase global con la interface IF_OO_ADT_CLASSRUN.

Copiar el siguiente código.

CTRL + F3 para activar.

F9 para ejecutar. Analizar la salida en la consola. 

Usando estructuras de control en ABAP

Implementación de ramificación condicional

Una bifurcación condicional es una estructura de control que le permite hacer que la ejecución del código dependa de condiciones lógicas.

IF <logical condition>.

<code_block>.

ELSEIF <logical condition>.

<code_block>.

ELSEIF <logical condition>.

<code_block>.

ELSE.

<code_block>.

ENDIF. 

 

CASE <condición lógica>.

WHEN.

WHEN.

WHEN OTHERS.

ENDCASE.

Ejercicio:

Crear una clase global con la interface IF_OO_ADT_CLASSRUN.

Copiar el siguiente código.

CTRL + F3 para activar.

F9 para ejecutar. Analizar la salida en la consola. 

Implementación de iteración.

Con especifico número de iteraciones.

DO <integer_expression> TIMES.

ENDDO.

Con terminación basada en una condición lógica.

DO

IF <abort_condition>. EXIT. ENDIF. 

ENDDO.

Basado en el contenido de una tabla interna.

LOOP AT <internal_table> INTO <variable>.

ENDDO.

Ejercicio:

Crear una clase global con la interface IF_OO_ADT_CLASSRUN.

Copiar el siguiente código.

CTRL + F3 para activar.

F9 para ejecutar. Analizar la salida en la consola. 

Manejo de Excepciones

Una excepción es un error en tiempo de ejecución. Existen excepciones del sistema y excepciones de la aplicación. Se utiliza la sentencia TRY y ENDTRY para determinar el inicio y el fin del manejo de errores. Utilizando la sentencia CATCH se puede detectar si hubo un error en específico, prevenir que siga la ejecución del programa y poner código para manejar ese error.  

Ejercicio:

Crear una clase global con la interface IF_OO_ADT_CLASSRUN.

Copiar el siguiente código.

CTRL + F3 para activar.

F9 para ejecutar. Analizar la salida en la consola. 

Debugueando un programa ABAP

Para depurar un programa ABAP, establece un punto de interrupción y luego ejecuta el programa normalmente. Cuando el programa alcanza el punto de interrupción, el sistema lo interrumpe y abre la perspectiva de depuración ABAP en ADT. Luego puede ejecutar cada declaración posterior individualmente para ver qué efecto tiene en el programa. También puede inspeccionar el contenido de todas las variables del programa para ver si alguno de los valores es inesperado.

Para establecer o eliminar un punto de interrupción, haga clic derecho en el margen izquierdo del editor y elija Alternar punto de interrupción. Como alternativa, puede hacer doble clic en el margen izquierdo. Tenga en cuenta que el programa debe activarse antes de poder establecer puntos de interrupción.

Los puntos de interrupción son específicos del usuario y son persistentes: permanecen activos incluso después de cerrar sesión en ADT y volver a iniciarla. Para evitar que el depurador se inicie en un punto de interrupción, debe eliminar el punto de interrupción (usando la función Alternar punto de interrupción) o desactivarlo usando la función correspondiente en el menú contextual.

F5 Debug Línea por línea. 

F8 Resumir el programa.

Shitf + F8 Ejecuta el programa hasta la línea actual del cursor. 

Shift + F12 Salta la ejecución del programa desde la línea actual. 

Breakpoints

Además, puede cambiar a la vista Breakpoints y administrar sus puntos de interrupción allí.

En la vista Breakpoints también puede crear puntos de interrupción especiales:

Breakpoints de declaración

Un breakpoint de declaración no se adjunta a una línea de código específica sino a una declaración ABAP específica. Un punto de interrupción en la declaración CLEAR, por ejemplo, hace que el programa se detenga en el depurador cada vez que se ejecuta una declaración CLEAR, sin importar dónde se encuentre esta declaración.

Para crear un punto de interrupción de declaración, abra la lista desplegable de la barra de herramientas de la vista Puntos de interrupción y elija Agregar punto de interrupción de declaración….

Breakpoint de excepción
Se adjunta un punto de interrupción de excepción a una excepción específica. Hace que el programa se detenga en el depurador cada vez que se genera esta excepción en particular, sin importar si esta excepción es manejada por el programa o causa un error de tiempo de ejecución. Para crear un punto de interrupción de excepción, abra la lista desplegable de la barra de herramientas de la vista Puntos de interrupción y elija Agregar punto de interrupción de excepción….

Breakpoints condicionales
Un punto de interrupción se convierte en un punto de interrupción condicional agregando una condición. Si la ejecución del programa llega a un punto de interrupción condicional, el programa solo se detiene en el depurador si se cumple la condición. Si, por ejemplo, se encuentra un punto de interrupción entre DO y ENDDO, hará que el programa se detenga en el depurador en cada iteración. Pero si agrega una condición sy-index > 20, el depurador ignorará este punto de interrupción durante las primeras 20 iteraciones y solo se detendrá en las siguientes iteraciones.

Para agregar una condición a un punto de interrupción, selecciónela en la lista de Breakpoints e ingrese la condición en el campo Condición. Presione Entrar para guardar el punto de interrupción con la condición.

Watchpoints
Si un valor inesperado de una variable le está causando problemas, puede realizar un seguimiento de su valor durante el transcurso del programa utilizando un punto de observación.

Esto se hace posicionandose en la línea deseada y seleccionando en el menu contextual la opción Set Watchpoint y añadiendo una condición de valor de la variable en la lista de Breakpoints. Esto causa que pare la ejecución siempre que el valor de la variable alcance la condición. 

Control de Excepciones

 

7 Database Updates Using Business Objects

Analyzing a Business Object
Using the Entity Manipulation Language
Quiz

8 Defining and Working with Exception Classes

Working with Exception Classes
Defining Your Own Exception Classes
Quiz

9 Adding Documentation to ABAP Code

Documenting ABAP Code
Quiz

Modeling in ABAP Dict y CDS

1 Exploring Data Modeling in ABAP

Exploring ABAP Dictionary
Exploring ABAP Core Data Services
Quiz

7 Defining Meta Objects for Dictionary Objects and CDS Views

Preventing Unauthorized Access to Data
Extending Dictionary Objects
Extending CDS Views
Quiz