Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced...

139
Material de regalo disponible en www.aprendeabap.com/regalo

Transcript of Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced...

Page 1: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

Material de regalo disponible en

www.aprendeabap.com/regalo

Page 2: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de
Page 3: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

1

Copyright 2017 AprendeABAP.com.

Todos los Derechos Reservados.

Impreso por CreateSpace.

Prohibida la reproducción total o parcial de este libro. Prohibida la

exhibición de este libro en cualquier plataforma física o digital sin

autorización expresa del autor. Esto incluye pero no se limita a

reimpresiones, extractos, fotocopias, grabación, o cualquier otro medio

de comunicación. Para mayor información por favor contactar con el

autor vía correo electrónico en [email protected]

http://www.aprendeabap.com

Facebook: /AprendeAbap

Twitter: @AprendeABAP

Youtube: /AprendeABAP

Page 4: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

2

Agradecimientos.

A mi familia, por ser acompañantes silenciosos en esta

aventura.

A todos los compañeros de trabajo que he tenido a lo

largo de estos años, por todo lo que he podido aprender

de ellos.

A ti, que me has dado tu confianza en tu proceso de

aprendizaje.

Page 5: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

3

Tabla de Contenidos.

Introducción. ...................................................................................... 5

Día 0: Características del Lenguaje ABAP........................................ 7

Día 1: Tipos de Datos en ABAP. ....................................................... 9

Día 2: Diccionario de Datos............................................................. 19

Día 3: Tablas Internas. ..................................................................... 35

Día 4: Entorno de Programación. .................................................... 43

Día 5: Sub Rutinas. .......................................................................... 71

Día 6: Módulo de Funciones. ........................................................... 81

Día 7: Reportes o Informes. ........................................................... 107

RECURSOS RECOMENDADOS ................................................ 129

AprendeABAP. –¿Qué hay aquí para ti? ....................................... 131

AprendeABAP. - Desarrollo de Contenidos Etapa APRENDIZAJE ....................................................................................................... 133

AprendeABAP. - Contenidos Etapa POSICIONAMIENTO ........ 135

AprendeABAP. - ABAP Store....................................................... 137

Page 6: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de
Page 7: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

5

Introducción.

Más que darte las gracias por haber confiado tus datos, permíteme

felicitarte ya que no todas las personas, a pesar de la necesidad, son

capaces de tomar las oportunidades que se le presentan en el camino.

Si echas una mirada al mundo, notarás que no estamos pasando por

momentos felices a nivel laboral, quizá tú estés aquí por que fuiste

afectado de alguna manera, o quizá quieras evitar que “llegue la ola” y te

lleve.

A pesar de la situación actual, en la que en muchos países hay serios

problemas de desempleo, los profesionales en SAP siempre son

requeridos en muchas partes del mundo; en ocasiones podrás ganar buen

dinero, en otras no tanto, pero trabajo, a un consultor de cualquier

módulo de SAP, no le va a faltar.

Este es el comienzo de lo que espero sea un largo camino, hoy comienzas

con el objetivo de aprender ABAP, el lenguaje de programación de SAP.

Con este libro darás tus primeros pasos en ABAP, pasarás de no saber

nada a estar en la capacidad de atender los requerimientos más comunes

que hay en pocos días.

Vendrán más proyectos en el futuro en el cual no estarás solo/a, en donde

intensificarás tu aprendizaje con temas avanzados, con teoría y práctica,

te enseñaré donde puedes conseguir acceso estable al sistema mediante

suscripción – porque SAP no es gratis – , algo que recomiendo que hagas

para que puedas poner en práctica lo que vayas aprendiendo día a día.

Esta es una carrera de fondo, en la cual debes ir superando etapas, solo

así podrás labrarte una carrera exitosa dentro de la Consultoría SAP.

Como agradecimiento por haber adquirido este libro, te quiero obsequiar

Page 8: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

6

un mini curso, en el cual aprenderás cuales son los 7 Pasos que hay que

cubrir para convertirte en un Consultor de Éxito.

Puedes acceder al obsequio dejando tus datos en el siguiente enlace:

http://aprendeabap.com/regalo

Page 9: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

7

Día 0: Características del Lenguaje

ABAP.

Las siglas ABAP significan: Advanced Business Application Programming.

Al lenguaje se le conoce como ABAP/4 por tratarse de un lenguaje de 4ta

generación; esto es, se trata de un lenguaje estructurado orientado a

eventos, es decir, no responde a una secuencia lineal tradicional, sino

“salta” su ejecución a diferentes bloques de código dependiendo del

cumplimiento de una serie de condiciones o eventos asociadas a dicho

bloque.

El núcleo (kernel) de SAP está escrito en lenguaje C, incluido el propio

ABAP; todas las capas superiores, es decir, los diferentes módulos del

sistema, si están escritos en lenguaje ABAP.

SAP trabaja mediante transacciones de diálogos; ventanas gráficas que

requieren interacciones con el usuario, cuyos datos son procesados y

tratados en las bases de datos del sistema.

En ABAP se maneja el concepto de Objetos, es decir, un Programa, una

Tabla, un Campo de una Tabla, una Transacción, un Elemento de Datos,

una Estructura de Datos, cada uno es un objeto en sí. Y si, ABAP también

permite la programación Orientada a Objetos, pero la misma no está

contemplada en este libro.

Entre las distintas aplicaciones que se pueden desarrollar en ABAP

tendremos:

• Reportes: Ampliamente solicitados, consiste de manera general

en capturar información relevante introducida en pantalla por el

Page 10: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

8

usuario, que servirá de criterios de búsqueda en las tablas de la

Base de Datos, recopilar los datos obtenidos, y presentárselos al

usuario en alguno de los diferentes formatos de reportes

existentes.

• Transacciones: Es el nombre que se le da en SAP a los programas

de diálogo, que requieren interacción con el usuario, para solicitar

y mostrar datos e información; SAP está estructurado en una serie

de transacciones Standard (previstas por el sistema), para los

diferentes módulos, que cubren el universo de escenarios

posibles de un negocio o industria; pero en ABAP podemos crear

nuevas transacciones de diálogo (en adelante solo transacciones),

adaptadas a las necesidades específicas de cada cliente. Cada

transacción está conectada con un programa ABAP, de manera de

que al llamar al código de una transacción, se ejecute el programa

asociado.

• Adaptaciones: En ocasiones, en un proyecto de implantación SAP,

un cliente requiere que una transacción Standard realice una

acción no contemplada en el paquete inicial de SAP, por lo que se

requiere de programación ABAP para realizar estos ajustes en

determinadas funciones de código, que permiten modificar o

hacer ajustes a los objetos Standard.

• Utilidades: Objetos existentes para mejoras al sistema (BADI’s,

BAPI’s), funciones, interfaces, así como utilidades para carga

masiva de datos (Bath Input).

Page 11: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

9

Día 1: Tipos de Datos en ABAP.

En el capítulo anterior hablamos sobre los Fundamentos de la

Programación Lógica. Ahora vamos a iniciarnos finalmente en el lenguaje

ABAP, y vamos a comenzar entendiendo los diferentes Tipos de Datos que

el sistema permite.

En ABAP existen los siguientes tipos de datos:

Declaración de Campos

Para declarar variables en un programa ABAP, debemos utilizar la

sentencia DATA.

Ejemplo: DATA var.

Page 12: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

10

Esta sentencia, (ejemplo de arriba), crea una variable llamada <var> del

tipo C tamaño 1, que es la definición por defecto.

NOTA: Todas las líneas de instrucciones que escribimos en ABAP deben

estar terminadas en un punto ‘.’; de lo contrario, el programa producirá

errores de sintaxis.

Si queremos que la variable sea de tamaño 4, debemos escribirlo de la

siguiente manera: DATA var(4).

Ahora, si lo que queremos es declarar una variable que no sea tipo C, por

ejemplo, queremos declarar una variable tipo entero, utilizaremos la

sentencia TYPE para indicar el tipo de dato que queremos: DATA var TYPE i.

Con el parámetro LIKE podemos declarar una variable con los mismos

atributos de longitud y tipo que una variable de base de datos: DATA var LIKE mara-matnr.

MARA-MATNR hace referencia al campo MATNR de la tabla MARA; y la

instrucción esta declarando una variable del mismo tipo de datos de dicho

campo. (Luego veremos todo lo relacionado con las tablas y campos de la

Base de Datos).

La instrucción de arriba también puede escribirse como: DATA var TYPE mara-matnr.

Con el parámetro VALUE podemos inicializar la variable con un valor

distinto al que tiene por defecto: DATA var TYPE i VALUE 1.

Esta instrucción declara una variable tipo entero con valor inicial de 1.

Page 13: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

11

Si queremos declarar dos o más variables a la vez, lo podemos hacer de

dos formas, la primera es escribiendo una línea debajo de otra de la

manera como lo hemos venido viendo hasta ahora:

DATA var1 TYPE i VALUE 1.

DATA var2 TYPE mara-matnr.

DATA var3 LIKE mara-matnr.

La segunda opción es escribiendo la sentencia DATA una sola vez seguida

de dos puntos (: ) y terminando cada línea con coma ( , ) en vez de punto,

colocando el punto al final de la última línea de declaración; veamos el

ejemplo anterior escrito bajo esta forma: DATA: var1 TYPE i VALUE 1,

var2 TYPE mara-matnr,

var3 LIKE mara-matnr.

También podemos crear una Estructura de Datos, esto es, un conjunto de

datos relacionados lógicamente en una estructura. Luego de la sentencia

DATA; utilizamos las sentencias BEGIN OF y END OF para determinar el

inicio y final de la estructura. Ejemplo: DATA: BEGIN OF nombre_estructura,

var1 TYPE i,

var2 TYPE i,

END OF nombre_estructura.

Posteriormente, el acceso a los campos de la estructura será con la

instrucción:

<nombre_estructura> - <campo_estructura>.

Ejemplos: nombre_estructura-var1.

nombre_estructura-var2.

Page 14: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

12

Tablas Internas.

El tema de las Tablas Internas se tocará a fondo en un capítulo posterior,

por ahora quédate con que, en ABAP existe una variante de las Tablas

Tradicionales de Bases de Datos (BD), que son llamadas las “Tablas

Internas”; éstas, a diferencia de las Tablas de BD, se guardarán en

memoria y solo serán accesibles desde el Programa que las creó, y no son

Tablas guardadas en la BD general consumiendo recursos del sistema.

En SAP, las Tablas “normales” se les conoce como Tablas Transparentes,

mientras que a estas secciones de memoria que permiten almacenar una

serie de registros dentro de un programa, con una estructura de datos

determinada, se les conoce como Tablas Internas.

Quédate con esto por ahora y si no se entendió muy bien, no te

preocupes que le dedicaremos un capítulo entero a esto más adelante.

Las Tablas en SAP, tanto las internas como las transparentes, están

formadas por Estructuras de Datos, por lo que hay dos maneras de

declarar una Tabla Interna en un programa ABAP:

a) Declarando la Estructura de Datos y la Tabla en una misma

sentencia, utilizando OCCURS.

DATA: BEGIN OF itab OCCURS 100,

nombre LIKE LFA1-NAME1,

ciudad LIKE LFA1-ORT1,

ventas LIKE LFC3-SOLLL,

END OF itab.

b) Declarando por un lado la Estructura de Datos, y luego declarando

la Tabla Interna indicando la sentencia TYPE TABLE OF.

Page 15: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

13

DATA: BEGIN OF ed,

nombre LIKE LFA1-NAME1,

ciudad LIKE LFA1-ORT1,

ventas LIKE LFC3-SOLLL,

END OF ed.

DATA: itab TYPE TABLE OF ed.

Las dos sentencias crean una Tabla Interna llamada ITAB, con 3 campos

(nombre, ciudad y ventas), la diferencia es que la primera Tabla tiene un

espacio reservado de 100 líneas en memoria principal.

Esto no significa que el tamaño máximo de la Tabla sea el indicado, ya que

si este se desborda los datos se guardan en un fichero de paginación,

bajando lógicamente el tiempo de proceso de las Tablas Internas, pero

evitando que el área global de almacenamiento destinado por SAP para

tablas internas se agote.

Las Tablas Internas se declaran, inicializan y referencian como una

Estructura de Datos.

También podemos utilizar la misma Estructura que una Tabla de Base de

Datos. Para ello utilizaremos la instrucción INCLUDE STRUCTURE.

DATA BEGIN OF sociedad OCCURS 10.

INCLUDE STRUCTURE T001.

DATA END OF sociedad.

T001 es una Estructura del Diccionario de Datos de SAP, esto lo veremos

en el siguiente capítulo.

Page 16: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

14

Variables del sistema

El sistema SAP tiene algunas variables internas que se van actualizando

automáticamente y que pueden ser utilizadas en los programas.

Todas ellas empiezan por el prefijo SY- y entre las más utilizadas tenemos

<SY-SUBRC>; que nos da el código de retorno de una instrucción, o <SY-

TABIX>; que contiene la línea de proceso de una tabla interna.

Todas las variables del sistema se encuentran en la Estructura de Datos

llamada SYS.

En el siguiente artículo enumero las variables del sistema más utilizadas

en el entorno de programación ABAP:

Artículo Variables del Sistema

Asignando valores

Existen diversas formas de asignar valores a una variable en ABAP/4.

Una asignación directa, como resultado de una operación aritmética o

como resultado de una conversión automática entre campos con valores

de diferente tipo de datos.

La instrucción MOVE realiza un transporte del contenido del <var1>al

campo <var2>.

MOVE<var1>TO<var2>.

Esta última instrucción también se puede escribir de la siguiente manera:

<var2> = <var1>.

Page 17: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

15

Ejemplos: MOVE var1 TO var2.

var2 = var1.

Si deseamos, por algún motivo, inicializar las variables que estamos

utilizando, (borrarles el valor que tienen y dejarlas en blanco),

aplicaríamos la sentencia CLEAR como se muestra en el ejemplo: CLEAR var.

CLEAR inicializa al valor que tiene asignado como valor inicial (ver Tabla 1)

sin tener en cuenta las cláusulas VALUE que existan para esa variable.

La asignación e inicialización de las Estructuras de Datos funciona de la

misma forma que en las variables normales. Un CLEAR inicializa todos los

campos del registro.

Con respecto a las Tablas Internas, hay una diferencia, la instrucción

CLEAR solo inicializa la línea de cabecera (más adelante se verá que es

esto); para inicializar una Tabla Interna completa requerimos la sentencia

REFRESH.

REFRESH itab.

Existen otras consideraciones para las Tablas Internas, pero las

abordaremos más adelante.

Podremos conseguir una asignación más potente con MOVE-

CORRESPONDING.

MOVE-CORRESPONDING <var1>TO<var2>.

Esta instrucción mueve de <var1>a <var2> aquellos campos que tengan

idéntico nombre.

Page 18: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

16

Operaciones Aritméticas en ABAP/4

En ABAP/4 las operaciones aritméticas básicas se pueden implementar de

dos formas:

Con la instrucción COMPUTE y los símbolos +, -, /, *.

COMPUTE var1 = <Expresión Aritmética>.

Donde la sentencia COMPUTE es opcional; es decir, se puede omitir de la

sentencia, veamos un ejemplo:

COMPUTE var1 = var2 + var3.

var1 = var2 + var3.

Ambas instrucciones suma las variables <var2> con <var3> y guarda el

resultado en <var1>.

Si se trata de una operación compleja donde necesitemos paréntesis,

dejaremos un espacio en blanco precediendo y siguiendo al paréntesis.

Ejemplo:

var1 = var1 + ( var2 + var3 ).

También existe una serie de instrucciones para realizar operaciones

matemáticas, como las siguientes:

• ADD TO. - Sumar.

• SUBSTRACT FROM. - Restar.

• MULTIPLY BY. - Multiplicar.

• DIVIDE BY. - Dividir.

• EXP. - Exponencial.

• LOG. - Logaritmo.

• SIN. - Seno.

Page 19: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

17

• COS. - Coseno.

• SQRT. - Raíz cuadrada.

• DIV. - División exacta. (7 div 2 = 3)

• MOD. - Residuo. (7 mod 2 = 1)

• STRLEN. - Longitud de una variable.

Procesando campos de tipo texto

El lenguaje ABAP ofrece una cantidad de instrucciones para el

procesamiento de cadenas de texto, veamos algunas de ellas:

SHIFT<campo>. Realiza un desplazamiento de un caracter hacia la

izquierda.

SHIFT<campo>BY<n>PLACES (RIGHT) .Realiza un desplazamiento de

N caracteres hacia la Izquierda o si se especifica hacia la derecha,

introduciendo blancos por el lado opuesto.

SHIFT<campo>BY 2 PLACES CIRCULAR (RIGHT).Realiza un

desplazamiento cíclico hacia la izquierda o si se especifica hacia la

derecha.

REPLACE<cadena1>WITH<cadena2>INTO<campo>. Reemplaza

<cadena1> por <cadena2> dentro de la variable campo. Si la variable del

sistema SY-SUBRC es diferente de 0; es que <cadena1> no existe dentro

de la variable <campo>.

Existe otra instrucción de sustitución, TRANSLATE.

TRANSLATE<campo>TO UPPER CASE .Pasa el contenido de <campo> a

Mayúsculas.

TO LOWER CASE. Como la anterior, pero pasando el contenido a

minúsculas.

Page 20: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

18

La instrucción SEARCH busca una cadena dentro de un campo o una tabla.

SEARCH<campo>/<tabla>FOR<cadena>. Si el Resultado es positivo,

SY-SUBRC es igual a 0. En caso de que sea una tabla, SY-TABIX contiene la

línea de la tabla donde se ha encontrado.

Para borrar los blancos de una cadena utilizaremos CONDENSE.

CONDENSE<campo>(NO-GAPS).

Esta instrucción borra todos los blancos que se encuentren comenzando

la cadena por la izquierda y en caso de encontrar series de blancos

intermedios dejará únicamente uno por serie.

La cláusula NO-GAPS borra todos los blancos estén donde estén.

Page 21: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

19

Día 2: Diccionario de Datos.

En este capítulo estudiaremos lo que considero que es la base de todo el

sistema SAP; su repositorio de Datos, conocido como “Diccionario de

Datos”; en él encontraremos toda la información del sistema estructurada

en Tablas estándar, Estructuras de Datos, Vistas de Tablas, Elementos de

Datos y Dominios.

Para acceder al Diccionario de Datos se ingresa a través de la Transacción

SE11; si no recuerdas como ingresar un código de Transacción, lo puedes

hacer en la barra de pulsadores en la parte superior de la pantalla.

El Diccionario de Datos es la “fuente” de información centralizada de todo

el sistema SAP, allí se encuentra (y almacena) todos los datos que se

procesan en el sistema; es, digamos, el corazón de SAP.

En el Diccionario de Datos (de ahora en adelante el Diccionario),

encontramos la siguiente estructura de objetos, ordenados desde su capa

más inferior:

• Dominio.

• Elemento de Datos.

• Campo.

• Estructura de Datos.

• Tablas.

El DOMINIO describe el campo de valores posibles, es de un carácter

técnico, es el nivel más bajo que existe para determinar el tipo de dato de

un objeto.

Ejemplo; un dominio denominado <S_PLANE> tiene un tipo de dato CHAR

de tamaño 10 (una cadena de caracteres de 10 posiciones).

Page 22: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

20

El ELEMENTO DE DATOS describe el significado de un campo

independientemente de las Tablas donde se utilice. Tiene un carácter

semántico. Un Elemento de Datos está asociado a un Dominio, y puede

ser utilizado en múltiples Tablas, incluso ser referenciado directamente

desde un Programa al momento de declarar una nueva variable.

Siguiendo el ejemplo anterior, tenemos un Elemento de Datos llamado

<S_PLANETYE>, que hace referencia al tipo de avión, y está formado por

el Dominio <S_PLANE>, mostrado antes.

Page 23: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

21

NOTA: Desde el editor de un programa ABAP, podemos declarar una

variable que haga referencia a un Elemento de Datos; de esta forma, la

variable tomará el tipo de datos del dominio asociado a dicho Elemento

de Datos. Siguiendo con el ejemplo:

DATA: var TYPE S_PLANETYE.

En este caso, la variable denominada <var> será una cadena de caracteres

de 10 posiciones, o dicho de otra manera, un campo tipo texto de 10

posiciones; porque le indicamos que tome las propiedades del Elemento

de Datos <S_PLANETYPE>, y ese Elemento de Datos tiene como Dominio

el objeto <S_PLANE>, que como vimos arriba, se trata de un tipo CHAR de

10 posiciones.

Si te confunde un poco, lo siguiente lo esclarecerá.

DATA: var TYPE S_PLANETYE.

DATA: varTYPE char10.

Las dos instrucciones escritas arriba obtienen exactamente el mismo

resultado, la variable <var> será un tipo CHAR de 10 posiciones.

Page 24: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

22

La ventaja de esta forma de estructurar el Diccionario es que si cuentas

con una serie de Tablas, con campos del mismo tipo, por ejemplo

CHAR10, si bien se permite asignarle a cada campo directamente el tipo

de datos CHAR de 10 posiciones; hacerlo de esta manera implica que, al

momento de ser solicitado un cambio del tipo de datos, (digamos que

piden cambiarlo a un CHAR de 12 posiciones), te corresponde modificar

Tabla por Tabla para ajustar todos los campos afectados.

Si en su lugar, se crea un Elemento de Datos cuyo Dominio sea un objeto

de tipo CHAR10, pongámosle por nombre <ED>; y le asignamos el ED a los

campos de cada Tabla; al momento de requerir el ajuste a CHAR12,

bastará con cambiar el Dominio del Elemento de Datos <ED> para que el

cambio se replique en TODAS las Tablas que lo contengan; es decir,

haríamos el cambio una sola vez, y éste se replica en todas las Tablas que

hacen referencia al Elemento de Datos.

EL CAMPO, como su nombre lo indica, es el renglón o columna de una

Estructura de Datos. Si recuerdas del capítulo anterior el momento en que

mencionábamos la creación de una Estructura de Datos, cuya sentencia

sería la siguiente:

DATA: BEGIN OF nombre_estructura,

var1 TYPE i,

var2 TYPE i,

END OF nombre_estructura.

Las variables <var1> y <var2> serán campos de la Estructura de Datos

creada.

Lo mismo ocurre en el Diccionario de Datos, el campo es el espacio o

columna única de cada Tabla o Estructura de Datos; y a cada campo se le

asigna un Elemento de Datos existente, absorbiendo el campo las

propiedades del Elemento de Datos.

Page 25: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

23

Como vemos en la gráfica, un campo llamado <PLANETYPE>

perteneciente a la Tabla SFLIGHT y está formado por el Elemento de

Datos <S_PLANETYE > que vimos anteriormente.

La ESTRUCTURA DE DATOS la vimos un poco en el capítulo anterior (Tipos

de Datos en ABAP), se trata de un conjunto de campos relacionados

lógicamente entre sí en un único objeto, que recibe por nombre

Estructura de Datos.

Lo que en ABAP se conoce como Estructura de Datos, en otros lenguajes

de programación podrían conocerse como Arreglos o Registros, sería de

manera general una analogía válida.

En el capítulo de los Tipos de Datos, pudimos ver cómo se pueden crear

Estructuras de Datos directamente desde el editor ABAP.

a) Declarando las variables (campos) en el mismo editor.

Page 26: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

24

DATA: BEGIN OF nombre_estructura,

var1 TYPE i,

var2 TYPE i,

END OF nombre_estructura.

b) Tomando como referencia una Estructura de Datos ya creada en el

Diccionario.

DATA BEGIN OF sociedad.

INCLUDE STRUCTURE SYST.

DATA END OF sociedad.

También, las Estructuras de Datos pueden crearse en el Diccionario, como

la Estructura <SYST> usada en el ejemplo anterior, que contiene las

variables del sistema.

Una Estructura de Datos contiene un único registro o línea; si deseamos

guardar múltiples registros con la misma Estructura, tendremos que pasar

a crear una Tabla basada en dicha Estructura de Datos.

Page 27: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

25

Las TABLAS son objetos, basados en estructuras de datos, capaces de

almacenar gran cantidad de información en múltiples líneas de registros.

Un ejemplo de tablas en el Diccionario de Datos lo vimos en la imagen que

reflejaba la tabla SFLIGHT; y si en un programa quisiéramos crear una

tabla cuya forma sea similar a la estructura de datos <SYST>; lo podríamos

hacer de la siguiente manera:

DATA: itab TYPE TABLE OF SYST.

Tipos de tablas.

Existen diversos tipos de tablas:

• Tablas TRANSP (transparentes): Tablas normales relacionales

(SQL).

• Tablas POOL: Tablas SAP que se guardan junto a otras tablas SAP

en una única tabla física de Base de Datos. Mejorando el acceso a

los registros.

• Tablas CLUSTER: Varias tablas que se guardan en un cluster de

Base de Datos. Se guardan registros de varias tablas SAP con la

misma clave cluster, en el mismo cluster físico de la base de

datos.

Las que usaremos cada día serán las Tablas Transparentes, que es el

nombre que le da SAP a las Tablas de Base de Datos relacionales. De

hecho, los dos términos más comunes utilizados en el día a día de un

Consultor ABAP son “Tablas Transparentes” y “Tablas Internas”; ya

comprendimos que las primeras son las Tablas del Diccionario de Datos, y

las segundas son espacios de memoria que se utilizan dentro de un

Programa, cuya existencia es únicamente en tiempo de ejecución del

Programa en cuestión.

Page 28: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

26

Los datos en SAP.

Los datos en SAP se pueden clasificar de la siguiente manera:

• Datos maestros: Son datos que no se modifican muy a menudo.

Ejemplo: Materiales, Cuentas, Bancos, Clientes. Se almacenarán

en Tablas transparentes.

• Datos de movimientos: Datos muy volátiles y con gran volumen de

generación. Ejemplo: Facturas, Pedidos. Se suelen guardar en

Tablas tipo CLUSTER todos ellos con formato parecido

(documentos).

• Datos del sistema o de control: Muchas Tablas con pocos datos. Se

suelen guardar en Tablas de tipo POOL.

Instrucciones SQL de ABAP.

El lenguaje ABAP tiene un conjunto de sentencias SQL para su aplicación

sobre tablas de la Base de Datos SAP.

Algo muy interesante de este Entorno de Programación, es que, a

diferencia de otros lenguajes, no se requiere realizar ningún tipo de

protocolo de conexión con la Base de Datos; escribimos directamente las

sentencias SQL y el sistema se encarga de comunicarse con el Diccionario

de Datos de manera implícita para nosotros.

Las siguientes son las instrucciones SQL permitidas:

• SELECT - Lectura.

• INSERT - Insertar.

• UPDATE - Actualizar.

• MODIFY - Modificar.

• DELETE - Eliminar.

Page 29: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

27

• COMMIT WORK - Asentar cambios.

• ROLLBACK WORK - Revertir cambios.

Adicionalmente, contamos con las siguientes variables del sistema:

• SY-SUBRC: Código de retorno de una operación. El valor 0 indica

que la instrucción fue satisfactoria y se cumplió el objetivo, bien

sea obtener datos de una Tabla, o insertar/modificarlos; un

retorno con valor 4 indica que la consulta no arrojó datos, o bien

no se pudo insertar/modificar en un Tabla del d Diccionario.

• SY-DBCNT: Cantidad de registros afectados por la operación

procesada si se trata de una modificación/inserción, o bien la

cantidad de registros encontrados en una consulta.

SELECT: Instrucción fundamental para leer información de la Base de

Datos.

Lectura de un único registro:

SELECT SINGLE * FROM <tab> WHERE <cond>.

Si SY-SUBRC = 0. Registro encontrado. Resultado en <tab>.

Si SY-SUBRC = 4. No existe el registro buscado.

Lectura Iterativa: Selección de un grupo de registros.

SELECT * FROM <tab> (WHERE <cond>). ENDSELECT.

Selecciona cada uno de los registros que cumplan la condición de la

cláusula WHERE, (o todos en caso de no utilizarla). El resultado lo

tendremos en el área de trabajo <tab>. En cada iteración del ciclo SELECT

- ENDSELECT se procesa un único registro encontrado, y el ciclo se

repetirá tantas veces como registros se consigan. Es útil si se desea

realizar algún tratamiento a cada registro encontrado de una vez.

Page 30: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

28

Si SY-SUBRC = 0. Algún registro encontrado.

Si SY-SUBRC = 4. No existe ningún registro que cumpla la

condición del WHERE.

Ejemplo:

SELECT *

FROM mara

WHERE matnr = itab-matnr.

WRITE: mara-matnr.

END SELECT.

Por cada registro encontrado, se imprime en pantalla el valor de dicho

registro y se sigue leyendo en la tabla en búsqueda de más registros.

Otras posibilidades del WHERE:

SELECT * FROM <tab> WHERE <campo>... BETWEEN <var1> AND

<var2>.

Si <campo> está entre los valores <var1> y <var2>.

LIKE <literal condición>. Si <campo> cumple la condición.

También se pueden utilizar:

• ‘_’ como caracter cualquiera.

• ‘%’ como una cadena de caracteres.

• IN (<var1>, <var2>...). Si <campo>está en el conjunto de valores

<var1>, <var2>...

Page 31: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

29

Otras lecturas:

Podemos leer una Tabla de Base de Datos y simultáneamente llenar una

Tabla Interna con el resultado de la lectura.

SELECT * FROM <tab> INTO TABLE <intab> (WHERE <cond>).

Esta instrucción lee la Base de Datos, obtiene todos los registros que

cumplan con la condición, y los almacena en una Tabla Interna llamada

<itab>.

A diferencia del ciclo SELECT – ENDSELECT, en el que por cada acierto se

procede a leer en la Base de Datos; aquí se realiza un único acceso a las

Tablas para extraer todos los registros que cumplan con la condición.

Si bien ambas opciones cumplen con el mismo resultado, por temas de

rendimiento recomiendo utilizar esta última ya que se consumen menos

recursos con un único acceso a BD, para obtener todas las coincidencias

en una Tabla Interna, y luego procesar esos resultados desde la Tabla

Interna, que como ya sabemos, es un objeto propio del Programa en

ejecución.

Veamos cómo queda el mismo ejemplo del caso anterior:

SELECT *

INTO TABLE itab

FROM mara

WHERE matnr = itab-matnr.

LOOP AT itab.

WRITE: itab-matnr.

ENDLOOP.

Page 32: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

30

NOTA: En un capítulo posterior veremos que es un LOOP.

Podemos indicar un orden en el proceso de selección de registros.

SELECT *...ORDER BY <campo1><campo2>.

No requiere mayor explicación salvo que el criterio de ordenamiento

siempre es prevaleciendo el campo de la izquierda.

INSERT: Permite introducir registros sencillos o el contenido de una Tabla

Interna en una Tabla Transparente del Diccionario de Datos SAP.

INSERT <tab>.

Grabará en la BD el contenido de la Estructura <tab>.

Si SY-SUBRC = 0.Registro insertado.

Si SY-SUBRC > 0.La clave del registro que queríamos insertar ya

existía en la tabla.

También es posible introducir datos desde una Tabla Interna.

INSERT <tab> FROM TABLE <itab>.

Si SY-SUBRC = 0.Registros insertados.

Si existe algún registro en la BD (Base de Datos) con clave igual a algún

registro de la Tabla Interna, se producirá un error de ejecución del

programa. (Por registro duplicado).

UPDATE: Permite modificar el contenido de uno o varios registros.

UPDATE <tab>.

Modifica el registro de la Tabla del Diccionario de Datos que está

especificado en la estructura <tab>.

Si queremos modificar el contenido de más de un registro a la vez:

Page 33: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

31

UPDATE <tab> SET <campo>=<valor> WHERE <cond>.

Con este UPDATE, todos los registros que cumplan <cond> modificarán el

contenido del <campo> por <valor>.

Es posible modificar registros desde una Tabla Interna:

UPDATE <tab> FROM TABLE <intab>.

Si el sistema no puede actualizar un registro, el proceso no finalizará sino

que continuará con el siguiente registro.

Si SY-SUBRC = 0. Todos los registros modificados.

Si SY-SUBRC = 4. No todos los registros han sido modificados.

En SY-DBCNT Tendremos la cantidad de registros modificados.

MODIFY: Se utiliza cuando no se sepa con certeza si un registro existe o

no, para modificarlo o añadirlo.

MODIFY <tab>.

MODIFY <tab> FROM TABLE <intab>.

NOTA: En caso de conocerse la existencia o no de un registro, se

recomienda utilizar INSERT o UPDATE.

DELETE: Se utiliza para realizar borrados de datos en una BD del

Diccionario.

DELETE <tab>. Borrará el registro que especifiquemos en el área

de trabajo.

DELETE FROM <tab> WHERE <cond>. Para borrar más de un

registro (todos los que cumplan la condición <cond>).

Page 34: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

32

DELETE FROM <tab> FROM TABLE <itab>. Para borrar en la Tabla

Transparente <tab>, todos los registros contenidos en la Tabla

Interna <itab>.

Si SY-SUBRC = 0. Todos los registros han sido borrados.

Si SY-SUBRC = 4. No todos los registros han sido borrados.

En SY-DBCNT tendremos la cantidad de registros borrados.

Otros aspectos del Diccionario de Datos.

El control de mandante (ese numerito que representa el sistema al que

estamos conectados), es automático. Siempre se procesará el mandante

en uso; en caso de requerir procesar datos de otro cliente/mandante

diferente al que estamos conectados, utilizaremos la instrucción CLIENT

SPECIFIED en nuestras consultas al Diccionario.

Debemos evitar el uso de las instrucciones INSERT, DELETE, MODIFY y

UPDATE sobre las Tablas de Datos Maestros del Diccionario; si requerimos

hacer un cambio a nivel de datos, éstos se harán vía Transacciones

estándar, Módulos de Funciones (BAPI) o Bath Input; ya que los datos que

se guardan en una transacción suelen estar replicados en diferentes

Tablas (Modelo de BD Relacional), y si modificamos el contenido de una

Tabla en particular, podríamos generar inconsistencias importantes en el

sistema.

Actualización de la Base de Datos.

Si deseamos forzar un cambio que afecta alguna tabla de la Base de

Datos, debemos ejecutar la sentencia COMMIT WORK en nuestros

Programas, esta sentencia realiza un UPDATE físico en la BD, haciendo

irrevocable cualquier modificación.

Page 35: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

33

Si deseamos deshacer los cambios hechos luego del último COMMIT

WORK, utilizaremos la sentencia ROLLBACK WORK, esta sentencia nos

reversa los cambios hasta el estado en que se encontraban tras el último

COMMIT WORK ejecutado.

Chequeo de autorizaciones.

Todas las consultas SQL en SAP no realizan verificación alguna sobre

autorizaciones de usuarios, siendo esto algo que debemos controlar para

evitar que todos los usuarios puedan acceder a determinado tipo de

información.

Este control es responsabilidad del consultor ABAP, determinar si un

usuario tiene o no autorización a nuestros desarrollos.

Para determinar la autorización de los usuarios en nuestros desarrollos se

utilizará el siguiente trozo de código:

AUTHORITY-CHECK.

AUTHORITY-CHECK OBJECT <objeto_de_autorización>

ID <Campo1> FIELD <f1>

ID <Campo2> FIELD <f2>

ID <Campo3> DUMMY.

...

Esto se conoce como OBJETO DE AUTORIZACIÓN o AUTHORITY-CHECK, en

el uso diario solemos escucharlo de ambas maneras, veamos los campos

que contiene:

<CampoX> son los campos de autorización del objeto. (se le indica sobre

que campos del sistema se va a evaluar la autorización).

<fX> son los valores posibles de autorización de dichos campos. (leer,

modificar, ambos, ninguno).

Page 36: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

34

DUMMY es un parámetro que indica que no es necesario verificar este

campo.

Si al procesar el objeto, el campo del sistema SY-SUBRC es igual a 0, es

que el usuario está autorizado a ver/procesar la información, de lo

contrario, indica que no tiene los permisos para ello.

Lo común es que en nuestros desarrollos, indiquemos este Objeto al

comienzo del mismo, y luego verifiquemos el SY-SUBRC, permitiendo

continuar con la ejecución solo si el valor del campo es 0.

Veamos un ejemplo de cómo se llenan los campos para el Objeto de

Autorización:

Vamos a verificar el Authority Check “Acreedor: Autorizaciones para

Sociedades” para saber si un usuario puede visualizar Proveedores en la

Sociedad 0001.

Este Objeto de Autorización estándar se llama ‘F_LFA1_BUK’.

La operación Visualizar responde al código ‘01’ y el campo sobre el cual

queremos evaluar la propiedad de visualización se llama ‘ACTVT’. El

campo Sociedad, por su parte, se llama ‘BUKRS’.

Así quedaría el Authority Check:

AUTHORITY CHECK OBJECT ‘F_LFA1_BUK’

ID ‘ACTVT’ FIELD ‘01’

ID ‘BUKRS’ FIELD ‘0001’.

Con esto cubrimos el apartado del Diccionario de Datos, el siguiente tema

a estudiar serán las Tablas Internas.

Page 37: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

35

Día 3: Tablas Internas.

En este capítulo veremos una herramienta muy útil que tendremos a

disposición en nuestros Programas y desarrollos; éstas son las

denominadas “Tablas Internas”.

Son Tablas construidas a partir de Estructuras de Datos definidas, que nos

permitirán gestionar datos masivos internamente en nuestros desarrollos.

Estas Tablas Internas se crean dentro de cada Programa, por lo tanto, su

vida útil se limita al tiempo de ejecución de nuestros Programas, sus datos

se pierden cuando abandonamos dicho Programa/Transacción.

Las Estructuras de Datos que sirven de base para la construcción de las

Tablas Internas, bien pueden ser creadas internamente en el programa

(Transacción SE38 o SE80), o formar parte del Diccionario de Datos del

sistema; la ventaja de que las Estructuras de Datos se creen en el

Diccionario (SE11), es que la misma Estructura nos podría ser útil en varios

Programas diferentes.

¿Qué son?

Cuando desde un Programa realizamos una consulta en Base de Datos a

través de sentencias SQL, solemos requerir que los resultados se guarden

en alguna Estructura de nuestro Programa, para su posterior tratamiento.

Estas son las Tablas Internas.

Las Tablas Internas son, como su nombre lo indica, Tablas; pero se

diferencian de las Tablas del Diccionario de Datos en que éstas solo están

disponibles DENTRO de un Programa.

Page 38: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

36

Son Objetos cuya función es el tratamiento de varios registros

exclusivamente durante la ejecución de un Programa.

Las Tablas Internas tienen dos formas de declararse:

DATA: BEGIN OF <itab> OCCURS <n>

<campo> TYPE <tipo_campo>,

<campo> TYPE <tipo_campo>,

END OF <itab>.

<itab> es el nombre que le daremos a la Tabla Interna.

OCCURS <n> es el número de registros que se guardaran en memoria

simultáneamente. Las Tablas pueden ser de mayor cantidad, esta

sentencia solo determina la cantidad de memoria reservada para su

tratamiento (cantidad de registros a atender por vez).

<campo> es el nombre del campo (columna) de la Tabla Interna, y este

campo será de tipo <tipo_campo> (entero, string, igual a algún campo del

Diccionario; etc. - ver Día 2-).

La otra forma de declarar una Tabla Interna es como sigue:

TYPES: BEGIN OF <estructura>,

<campo> TYPE <tipo_campo>,

<campo> TYPE <tipo_campo>,

END OF <estructura>.

DATA: <itab> TYPE TABLE OF <estructura> .

<estructura> es una Estructura de Datos del Programa que será el

“esqueleto” de la Tabla Interna (ver día 2); luego se declara la Tabla

Interna <itab> del tipo Tabla cuya Estructura será <estructura> .

Yo suelo usar más esta segunda opción.

Page 39: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

37

Líneas de Cabecera y Work Areas.

Una Tabla Interna se compone de un cuerpo y una cabecera opcional; el

cuerpo es que el almacena los registros de la Tabla Interna, normalmente

cuando se habla de Tabla Interna, nos referimos al cuerpo.

La cabecera es un único registro que se utiliza para añadir y recoger datos

del cuerpo de la Tabla Interna.

La asignación de campos de las Tablas Internas siempre se refiere a la

cabecera, por lo que debemos tener esto presente a la hora de hacerle

tratamiento a dicha Tabla.

Debemos declarar una línea de cabecera, para leer cada registro de la

Tabla, o bien declarar la Tabla misma con línea de cabecera.

Con cabecera:

DATA: <itab> TYPE TABLE OF <estructura> WITH HEADER LINE.

Sin cabecera:

DATA: <itab> TYPE TABLE OF <estructura>.

DATA: <line> LIKE LINE OF <itab>.

Con la primera instrucción, la cabecera también se llamará <itab>, por lo

que tendremos la sensación de que leemos la Tabla Interna directamente.

Ejemplo:

LOOP AT <itab>.

WRITE: <itab>-<campo1>.

ENDLOOP.

Page 40: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

38

Con la segunda instrucción, cada registro que se lea de <itab>deberá

tratarse desde <line>, que es la línea de cabecera de la Tabla Interna.

Ejemplo:

LOOP AT <itab> INTO <line>.

WRITE: <line>-<campo1>.

ENDLOOP.

En el primer LOOP; la línea de cabecera no es que desaparece, de hecho

existe, solo que lleva el mismo nombre que la Tabla Interna por lo que se

omite la sentencia INTO y se trata directamente con <itab>.

Work Area

Si queremos disponer de una variable que nos sirva para manipular los

datos de una <itab>, con su misma Estructura, están los que se conocen

como “work area” o “área de trabajo”.

Son Estructuras con la misma forma que un registro de una Tabla Interna,

similar a sus líneas de cabecera, y se declaran de la siguiente manera:

DATA: <wa> TYPE <itab>.

Esto nos creará un work area llamado <wa> del mismo tipo que la línea de

cabecera <itab>.

Llenar una Tabla Interna

Para ingresar datos a una Tabla Interna, tenemos las siguientes

sentencias:

APPEND: Añade un registro a una Tabla Interna con los valores que

tengamos en dicho registro.

Page 41: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

39

Ejemplos:

APPEND <itab>. (con cabecera).

APPEND <itab> FROM <line>. (sin cabecera).

READ: Lee un registro de la Tabla Interna y lo guarda en su línea de

cabecera, el registro que leerá lo determinará la condición que le

indiquemos.

Ejemplos:

READ TABLE <itab> WITH KEY <condicion> (con cabecera).

READ TABLE <itab> INTO <line> WITH KEY <condicion> (sin

cabecera).

READ TABLE <itab> INDEX <n>. (Esta instrucción lee el registro

ubicado en la línea <n>).

INSERT: Inserta un registro contenido en un workarea en una Tabla

Interna.

Ejemplos:

INSERT <itab>. (con cabecera).

INSERT <wa> INTO <itab>. (sin cabecera).

MODIFY: Modifica el registro indicado en la Tabla Interna.

Ejemplos:

MODIFY <itab>. (con cabecera).

MODIFY <itab> FROM <line> (sin cabecera).

MODIFY <itab> INDEX <n> (modifica el registro de la posición <n>)

DELETE: Elimina el registro indicado de la Tabla Interna.

Ejemplos:

DELETE <itab>. (con cabecera).

DELETE <itab> FROM <line> (sin cabecera).

Page 42: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

40

DELETE <itab> INDEX <n> (elimina el registro de la posición <n>)

COLLECT: Añade o suma la línea de cabecera. Sumará los campos tipo P, F,

I (ver día 2), si existe una línea en la Tabla con campos idénticos (tipo C) a

los del work area.

Pero cuidado con su uso, ya que se trata de una instrucción que consume

mucho en memoria.

Ordenar una tabla interna

Para ordenar los registros de una Tabla Interna, utilizamos la instrucción

SORT (ordenar en Inglés), y le indicamos por cuales campos debe ordenar,

(si se le indican varios campos, el lenguaje le da prioridad de izquierda a

derecha), luego podremos indicarle si queremos que se ordenen de

manera ascendente o descendente. (Por defecto siempre será

ascendente).

Ejemplo:

SORT <itab> BY <campo1> ….

<campoN><ASCENDING/DESCENDING>.

Procesamiento de una Tabla Interna.

Para recorrer los registros de una Tabla Interna, utilizaremos la

instrucción LOOP.

LOOP AT <itab> (WHERE <cond>)

. . .

ENDLOOP. (con cabecera)

LOOP AT <itab> INTO <line> (WHERE <cond>)

. . .

ENDLOOP. (sin cabecera)

Page 43: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

41

En cada iteración, la instrucción coloca la línea de la Tabla que se está

procesando en la línea de cabecera.

Con la cláusula WHERE podemos filtrar los registros que leeremos en el

LOOP, tal cual como lo haríamos en una consulta SQL.

Si no existe ningún registro que cumpla con la condición de la cláusula

WHERE, la variable SY-SUBRC será diferente de 0 y no habrán iteraciones

en el LOOP.

Mientras haya iteraciones dentro de un LOOP, con la variable del sistema

SY-TABIX podremos saber cuál es el índice del registro que se procesa en

un momento dado.

Tratamiento de niveles de ruptura.

Existen algunas sentencias para registros puntuales de una Tabla Interna

dentro del LOOP.

• AT FIRST: Instrucciones específicas para el primer registro de

la Tabla.

• AT LAST: Instrucciones específicas para el último registro de la

Tabla.

• AT NEW <campo>: Instrucciones para cada inicio de nivel de

ruptura o valor diferente.

• AT END OF <campo>: Instrucciones para cada final de nivel de

ruptura.

Todas estas instrucciones tienen la siguiente forma:

AT _____ (FIRST, LAST, NEW <campo>, END OF <campo>)

. . .

END AT.

Page 44: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

42

Dentro de la cláusula AT .. ENDAT irán las instrucciones que queremos

programar para ese registro en particular.

Otras instrucciones para manejo de Tablas Internas.

• CLEAR <itab> o CLEAR <line>. Limpiar la cabecera de la Tabla

Interna.

• REFRESH <itab>. Borra el contenido de la Tabla Interna.

• FREE <itab>. Libera espacio ocupado en memoria por la Tabla

Interna.

• DESCRIBE TABLE <itab> LINES <wa>. Obtiene información de

la Tabla Interna, como la cantidad de líneas o registros que

contiene.

Page 45: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

43

Día 4: Entorno de Programación.

Si has seguido las recomendaciones hasta ahora, ya estarás en la

capacidad de hacer lo siguiente:

• Manejar el Diccionario de Datos a través de la transacción SE11.

• Revisar y escribir sencillos trozos de código en un programa creado en

la transacción SE38. (al menos crear Tablas Internas, variables y

Estructuras correctamente).

Ahora vamos a adentrarnos más en el Entorno de Programación, con

seguridad este será el capítulo más importante en este libro, por lo que te

pido por favor que prestes mucha atención al material a continuación.

¿Cómo se crea un Programa ABAP?

Para crear un Programa ABAP, se puede hacer desde dos

Transacciones:

• SE38: Editor ABAP.

• SE80: Object Navigator.

Como mencionamos en el tema anterior, podemos teclear el código de

una Transacción a través de la barra de pulsadores del sistema (2da

línea de arriba hacia abajo).

Page 46: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

44

Teclear el código, pulsar ENTER o el botón verde, y nos llevará a dicha

transacción.

SE38

Al ingresar a la Transacción SE38, nos lleva a la siguiente ventana:

Para efectos de este libro, solo nos interesan los siguientes campos:

En el cuadro Programa indicaremos el nombre del Programa a crear, nos

interesa que entre la lista de objetos parciales, este marcada la opción

“Código Fuente”.

Como verás, a través de esta Transacción podremos crear un Programa,

modificarlo o simplemente visualizarlo en un modo de no edición.

También dispondremos, entre otras, de las siguientes funciones en la

barra de pulsadores:

Page 47: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

45

• - Verificar la sintaxis del Programa. (Ver si contiene errores).

• - Activar un Programa. (Lo hará si no contiene errores).

• - Procesar/ejecutar un Programa. (También funciona con la tecla

F8).

• - Borrar un Programa. (Te pedirá que confirmes que quieres

eliminarlo).

• - Copiar un Programa. (Te pedirá el nombre del nuevo).

• - Renombrar un Programa. (Indicándole el nuevo nombre al

Programa).

El nombre de nuestro Programa debe empezar obligatoriamente por la

letra Z o la letra Y, ya que son nombres reservados por SAP para la

creación de Programas propios; cualquier otro Programa que comience

por una letra diferente será interpretado como un Programa estándar

del sistema y nos pedirá una clave de acceso especial para su

modificación, esto como medida de seguridad para evitar

alteraciones no planificadas al sistema estándar.

Si escribimos un nombre válido y pulsamos el botón “Crear”, nos saldrá

la siguiente ventana:

Page 48: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

46

En la que debemos indicar el título que llevará nuestro Programa, y el

tipo de Programa que estamos creando (por ahora vamos a quedarnos

con la primera opción, Programa ejecutable), la seleccionamos y

pulsamos el botón “grabar”.

Luego nos aparecerá la siguiente ventana:

Page 49: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

47

Esta ventana nos muestra algunas cosas interesantes; en primera

instancia, la línea superior nos indica el nombre completo del objeto

que estamos creando en el sistema (Estamos creando un Programa

llamado ZPRUEBA):

Luego, en la caja de atributos, debemos indicar en qué Paquete de

Desarrollo vamos a incluir nuestro nuevo Programa, estos Paquetes no

son más que una manera de mantener organizados todos los desarrollos

y parametrizaciones que se van creando a lo largo de un proyecto, para

nuestros efectos, pulsamos el botón “Objeto local”, el cual creará el

Programa como un objeto interno del sistema (mandante) al que

estamos conectados.

Una vez hecho esto, pasamos a la siguiente pantalla:

Page 50: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

48

Este es el editor ABAP en el cual podrás escribir el código de tus

Programas.

SE80

Al ingresar a la Transacción SE80, nos lleva a la siguiente ventana:

Page 51: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

49

Desde esta Transacción, tendremos el control de todos los objetos del

Repositorio de Objetos del sistema.

Por ahora, nos interesa de las pestañas superiores, seleccionar “Browser

de Repository”.

Page 52: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

50

¿Qué es un Programa ABAP?

Un Programa ABAP consiste en una serie de instrucciones (líneas de

Programa), que empiezan por una palabra clave y terminan en un

punto.

El punto señala de manera inequívoca el fin de una instrucción.

Los tipos de palabras claves que se utilizan para darle inicio a una

instrucción pueden ser los siguientes:

• Declarativas.

• Eventos.

• Control.

• Operativas.

Las Declarativas nos permiten, como su nombre lo indica, declarar las

variables que vamos a utilizar a lo largo del Programa.

Ejemplo de instrucciones declarativas: DATA , TYPES y TABLES.

Los Eventos son la base de la programación ABAP, ya que se trata de un

lenguaje orientado a Eventos como vimos en el primer capítulo; es el

punto donde en ABAP se ejecuta un cierto proceso.

Ejemplos: START-OF-SELECTION, TOP-OF-PAGE, AT-SELECTION-SCREEN.

Las sentencias de Control nos permite inducir el flujo del Programa que

estamos creando, ejemplo de estos son las sentencias condicionales

como IF, WHILE, CASE.

Las sentencias Operativas realizan funciones propias según el tipo de

palabra clave, por ejemplo: WRITE, MOVE, SORT.

Page 53: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

51

Podemos combinar sentencias consecutivas en una misma instrucción

cerrando las líneas con coma en vez de punto.

Veamos un ejemplo:

WRITE<campo1>.

WRITE<campo2>.

WRITE<campo3>.

El código de arriba puede ser escrito en una única instrucción de la

siguiente manera, (añadiendo los dos puntos al final):

WRITE: <campo1>, <campo2>, <campo3>.

El punto nos indicará el final de la sentencia; ésta también puede ser

escrita en una única línea:

WRITE: <campo1>, <campo2>, <campo3>.

Nótese los dos puntos que siguen a la instrucción WRITE, éstos le

indican a ABAP que la instrucción actuará sobre más de una variable.

Esto puede aplicar a otros tipos de instrucciones, veamos un ejemplo

con sentencias declarativas:

DATA<campo1>.

DATA<campo2>.

DATA<campo3>.

Puede reescribirse de la siguiente forma:

DATA:<campo1>,

<campo2>,

<campo3>.

Page 54: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

52

O también: DATA:<campo1>, <campo2>, <campo3>.

Comentarios

Existen dos formas de utilizar comentarios dentro de ABAP.

Si queremos comentar toda una línea, colocamos un asterisco (*) como

primer carácter de dicha línea; por su parte, si solo queremos dejar un

comentario al final de una línea, éste debe comenzar en comillas (“).

Ejemplo:

*Comentario completo.

WRITE<campo1>. “comentario al final

Objetos de Datos

En ABAP, existen tres tipos de objetos de datos que podemos

utilizar en nuestros programas:

Literales.

Campos del Diccionario

Variables internas.

Los literales son textos o cantidades que escribimos entre

comillas, se trata de utilizar directamente el valor requerido sin

declararlo en alguna variable. Un par de ejemplos:

WRITE ‘TITULO’. (Escribir la palabra TITULO en un reporte).

ventas = balance / 100.

(ventas y balance son dos variables ; pero el número 100 es un literal,

directamente le indicamos a ABAP que divida el contenido de la

variable balance entre 100).

Page 55: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

53

Los campos del Diccionario los declaramos con la sentencia TABLES; lo

que se busca es utilizar las propiedades de las Tablas del Diccionario

para utilizarlas en un Programa. Ejemplo:

TABLES: KNA1.

(declaración de una Tabla Interna con la misma Estructura que la

Tabla del Diccionario KNA1).

WRITE: KNA1-KUNNR, KNA1-NAME1.

(utilizar como variables, los campos de la tabla KNA1.)

NOTA: Estos no son los campos de la Tabla propiamente dicho, son

variables con su mismaEstructura, tampoco se trata de una Tabla, sino

de su línea de cabecera, no contienen los registrosde la Tabla a menos

que los obtengamos en una sentencia SQL.

Ejemplo:

Podemos llenar los valores de la Tabla KNA1 en la Estructura creada con la

sentencia TABLES de la siguiente manera:

SELECT SINGLE * FROM KNA1 WHERE kunnr = <clientes>.

En tercera instancia están las variables internas del Programa, estas se

crean con la sentencia DATA, y pierden su vigencia al terminarse la

ejecución del mismo; las Tablas Internas están incluidas aquí.

Ejemplo:

DATA: ventas TYPE p,

Cliente TYPE KNA1-KUNNR,

Itab TYPE TABLE OF<estructura>.

Page 56: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

54

Estructura básica de un Programa ABAP

REPORT<nombre>. (Nombre del Programa).

TABLES<tabs>. (Declaración de Estructuras de Diccionario).

DATA:<…..>. (Declaración de variables internas).

TOP-OF-PAGE. (Evento de inicio de página, bastante útil en reportes).

<Sentencias>. (Instrucciones relativas a este Evento).

END-OF-PAGE. (Sentencia para finalizar el Evento).

START-OF-SELECTION. (Evento que controla el flujo principal del

Programa).

<Sentencias>. (Instrucciones a ejecutarse).

END-OF-SELECTION. (Fin del Evento).

Existen otros Eventos como LOAD-OF-PROGRAM, que permite controlar

el momento previo al despliegue en pantalla de un Programa, útil para

inicializar algún campo de entrada/salida de un reporte.

El orden de estos Eventos no es relevante.

Control de Flujo en ABAP

Como en cualquier lenguaje de programación, en ABAP se cuenta con una

serie de instrucciones que permiten condicionar ciertas secciones de

código a que se cumplan algunas condiciones particulares.

La instrucción condicional más básica es el IF - ELSE - ENDIF.

IF<cond>.

. . A. .

ELSE.

Page 57: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

55

. . B. .

ENDIF.

Si se cumple <cond>, se procesarán las instrucciones del bloque con la

letra A, si no se cumplen, se procesará el bloque B. La sentencia ELSE es

opcional.

Dentro de la condición <cond>, son permitidos los siguientes

condicionales:

AND. Si todas las condiciones se cumplen, se ejecuta el código A.

OR. Con que se cumplan una de las condiciones ser ejecuta el código

A.

EQ o ‘=’. EQUAL. Evalúa si dos o más variables son iguales.

NE o ‘<>’. NOT-EQUAL. Evalúa si dos variables son diferentes.

GT ó ‘>’. GREAT-THAT. Evalúa si una primera variable es mayor que

otra.

LT ó ‘<’. LESS-THAT. Evalúa si una variable es menor que otra.

GE ó ‘>=’. GREAT-EQUAL. Evalúa que una variable sea mayor o igual

que otra.

LE ó ‘<=’. LESS-EQUAL. Evalúa que una variable sea menor o igual que

otra.

CO. CONTAINS-ONLY. <c1>CO<c2>. Evalúa si el carácter <c1> está

contenido en <c2>.

CN. CONTAINS-NOT-ONLY. Negación a la condición anterior.

CA. CONTAINS-ANY. <c1>CA<c2>. Verifica si en <c1> existe algún

carácter de <c2>.

Si es cierta, en SY-FDPOS estará la posición encontrada, sino, la

Page 58: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

56

longitud de <c1>.

NA. CONTAINS-NOT-ANY. Negación a la condición anterior.

CS. CONTAINS-STRING. <c1>CS<c2>. Si <c1> contiene a <c2>, en SY-

FDPOS sabremos donde comienza dicha cadena.

NS. CONTAINS-NOT-STRING. Negación del anterior.

BETWEEN. Para chequear rangos, verifica si una variable está

contenida entre un rango de otras dos variables, por ejemplo, si la

fecha de hoy está contenida entre dos fechas dadas.

IS INITTIAL. Instrucción para evaluar si una variable no contiene datos;

si se trata de una variable numérica, la condición es válida si la variable

tiene como valor cero; si se trata de una Tabla Interna o una

Estructura, verifica que no contenga Datos.

Si tenemos que validar una serie de condicionales, existe una

instrucción que podemos utilizar en lugar de anidar varios IF-ELSE-

ENDIF.

Esta sentencia se llama CASE.

CASE<campo>.

WHEN<valor1>.

WHEN<valor2>.

ENDCASE.

Un ejemplo para entenderlo:

En vez de escribir esto:

IF<var1>EQ ‘2’.

#imprimirA.

ELSEIF<var1>EQ ‘4’.

Page 59: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

57

#imprimirB.

ELSE.

#imprimirC.

ENDIF.

Podría reescribirse de la siguiente manera:

CASE<var1>.

WHEN ‘2’. #imprimirA.

WHEN ‘4’. #imprimirB.

WHENOTHERS. #imprimirC.

ENDCASE.

Bucles o Ciclos.

Tenemos dos instrucciones para procesos repetitivos. Estas son DO y

WHILE.

La instrucción DO permite ejecutar un bloque de instrucciones tantas

veces como se especifique.

DO<n>TIMES.

. . . .

ENDDO.

En la variable del sistema SY-INDEX tendremos un contador del número

de repeticiones.

La instrucción WHILE permite ejecutar un bloque de instrucciones

mientras se cumpla una condición.

WHILE<cond>.

. . . . ENDWHILE.

Page 60: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

58

Sentencias de corte de Bucles.

Si requerimos cortar un bucle en un momento dado sin necesidad de que

se complete todo el ciclo, tenemos las siguientes instrucciones a nuestra

disposición.

CHECK<cond>. Cuando no se cumpla la condición, la sentencia responderá

de dos posibles formas. Si la sentencia está dentro de un ciclo,

interrumpirá el resto del ciclo, saliendo inmediatamente del mismo. Si la

sentencia está fuera de un ciclo, saltará hasta el final del Evento actual.

EXIT. Realizará los mismos pasos que CHECK, pero sin ningún

condicionante.

STOP. Se finaliza el Programa en ejecución, pasando primero por el

Evento END-OF- SELECTION.

LEAVE. Igual que STOP, pero sin ejecutar el evento END-OF-SELECTION.

Declaración de Parámetros de Entrada

Para permitir la introducción por pantalla de parámetros de entrada

por parte del usuario, disponemos de dos alternativas:

PARAMETERS: Ingresar un único parámetro.

SELECT-OPTIONS: Ingresar un rango de parámetros.

PARAMETERS

La instrucción PARAMETERS nos permite crear un campo de entrada

en una pantalla de selección; el usuario podrá ingresar uno y solo un

valor en dicho campo, el cual podremos determinar qué tipo de dato

contendrá.

Page 61: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

59

Funciona de manera similar a la declaración de variables, esto es, el

parámetro le asignaremos un nombre de variable, que es con el que se

le conocerá dentro del Programa, y la instrucción LYKE nos permitirá

asignarle un tipo de dato, que puede ser referenciado de un campo del

Diccionario, o bien asignarle directamente un tipo de dato elemental.

Ejemplos de declaración de parámetros:

PARAMETERS<var1>LIKE<tabla-campo>.

PARAMETERS<var2>LIKEi.

También pueden declararse de la siguiente manera:

PARAMETERS: <var1>LIKE<tipo_de_dato>,

<var2>LIKE<tipo_de_dato>.

Dentro del Programa, podremos utilizar estas variables por el

nombre que le asignamos al momento de su declaración, <var1> y

<var2>.

RADIO BUTTONS

También podemos declarar un conjunto de opciones de selección

simple, es decir, una serie de botones en los cuales el usuario solo

pueda seleccionar uno de ellos a la vez. Esto en SAP se le conoce como

RADIO BUTTONS, y los declaramos de la siguiente manera:

Page 62: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

60

PARAMETERS: <var1>RADIOBUTTON GROUP r1, <var2>RADIOBUTTON GROUP r1, <var3>RADIOBUTTON GROUP r1.

Como puedes observar, para que solo se permita seleccionar una de las

variables, las mismas deben pertenecer a un mismo grupo, esto lo

controlamos en su declaración al asignarles el grupo R1; si deseamos

construir otro conjunto de variables, de manera que el usuario

seleccione una variable adicional a la seleccionada en este grupo R1,

simplemente lo que tenemos que hacer es declarar las nuevas variables

pertenecientes a otro grupo, por ejemplo, R2.

Dentro del Programa, estas variables serán de un caracter, y

controlaremos su selección preguntando si dichas variables tienen

como valor ‘X’ o se encuentran sin valor (vacías).

IF var1 EQ ‘X’ or IF var2 IS INITIAL.

CHECKBOX

Ahora bien, si lo que deseamos es que el usuario disponga de una serie de casillas para que pueda marcar una o varias de ellas, esto lo controlamos con un tipo de parámetro llamado CHECKBOX.

PARAMETERS: <var1>AS CHECKBOX, <var2>AS CHECKBOX, <var3>AS CHECKBOX.

Page 63: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

61

En vez de ser botones agrupados de selección simple, tenemos casillas

de selección múltiple.

Dentro del Programa, el tratamiento es similar a los RADIOBUTTONS,

ya que se tratan de variables de un caracter, y preguntaremos si su

valor es ‘X’ o vacío.

SELECTION-SCREEN

Si queremos darle un poco de estética a nuestra pantalla de selección,

agrupando los parámetros en “cajas” según su tipo, esto lo logramos con

la siguiente sentencia.

SELECTION-SCREEN BEGIN/END OF BLOCK <b1>.

Estamos agrupando los parámetros creados en bloques de

presentación; a estos bloques le podremos dar un nombre si

completamos la sentencia con WITH FRAME TITTLE<texto>.

Page 64: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

62

La ventana de arriba la logramos con el siguiente código:

selection-screen begin of block b2 with frame title

text-002. parameters: var1 radiobutton group r1,

var2 radiobutton group r1,

var3 radiobutton group r1.

selection-screen end of block b2.

Podemos darle un título descriptivo a la caja que acabamos de crear,

para ello, hacemos doble clic a la sentencia “text-002”, y aceptamos

crear un nuevo Elemento de Texto.

Page 65: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

63

Agregamos el texto descriptivo en el área que se encuentra al lado del

número asignado:

Activamos y ya lo tenemos.

Ahora, si observamos las pestañas que nos muestran, hay una llamada

“textos de selección”, al entrar en ella, veremos todos los parámetros

de entrada que tenemos declarados en nuestro programa.

Si le damos un nombre a cada variable, también se lo cambiaremos en

la pantalla de selección, por ejemplo:

Page 66: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

64

Nos deja como resultado, la siguiente pantalla:

SELECT-OPTIONS

La sentencia PARAMETERS nos permite solicitar por pantalla un único

valor para cada variable de entrada declarada, pero en muchos casos

nos interesa poder recibir por parámetro un rango de valores, por

ejemplo, un conjunto de clientes o un rango de fechas.

Esto lo logramos con la sentencia SELECT-OPTIONS.

Page 67: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

65

Esta sentencia responde con un Tipo de Datos que previamente debió

haber sido creado, por lo que antes de declarar un parámetro de

entrada con ella, debemos declarar el Tipo de Datos a utilizar; por

ejemplo, si deseamos solicitar un rango de fechas, se haría de la

siguiente manera:

Nos generará el siguiente resultado:

En donde podremos seleccionar un rango de fechas (en este caso),

simplemente indicando los extremos de dicho rango en ambas cajas de

campos que tenemos disponibles.

Si le damos clic al botón de la derecha, podremos ser más específicos

en nuestro rango de selección, ya que nos abre una caja en donde

podremos indicar expresamente una serie de fechas a tratar.

Page 68: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

66

Podremos también con el cuadro de la izquierda (columna P),

indicar filtros del tipo IGUAL QUE, MAYOR QUE, MAYOR IGUAL,

etc.

De la misma manera que las pestañas superiores nos permiten un

mayor control de los parámetros introducidos.

Page 69: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

67

Sin duda que este tipo de parámetro nos permite una mayor

cantidad de opciones para seleccionar.

Estas variables dentro del programa requieren un tratamiento especial.

Para empezar, la variable <var1> creada es una Tabla Interna que guarda

información del rango de valores indicado, así como el operador de

comparación:

La Tabla Interna tiene 4 campos:

SING: I de In (dentro del rango); O de Out (fuera del rango); para

indicar que representa el rango indicado con respecto a los valores

buscados.

OPTION: Representa el criterio de selección indicado, en este caso,

BT significa BEETWEN, que indica que se estarán utilizando valores

comprendidos entre las dos fechas indicadas. Puede contener las

condiciones que hemos visto anteriormente (EQ, GT, GE, LT, etc.)

LOW: Contiene el valor mínimo del rango seleccionado.

HIGH: Contiene el valor máximo del rango seleccionado.

En este caso, la combinación total I – BT – 20120101 – 20120118 lo que

indica es que se va a tratar un conjunto de datos en el que tomaremos

Page 70: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

68

lo valores que se encuentren dentro (I) del rango comprendido (BT)

entre las fechas 01.01.2012 y 18.01.2012.

Podemos tratar directamente con los extremos del rango, simplemente

indicando cual campo de la Tabla Interna requerimos, es decir,

podemos utilizar <var1>-LOW para hacer referencia al valor inferior, y

<var1>-HIGH para referirnos al valor superior.

Si utilizamos el rango de valores dentro de una consulta SQL, en

vez de filtrar de la forma tradicional:

WHERE kunnr = <var1>.

Sustituiremos el “=” por el signo “IN”; para hacer referencia a que

buscaremos los valores bajo el criterio comprendido dentro (IN) del

rango indicado.

WHERE kunnr IN <var1>.

Si la variable <var1> se encuentra vacía en el primer caso

(PARAMETERS), el resultado de la consulta SQL será que no encuentra

nada, a menos que exista un registro cuyo campo KUNNR este vacío, ya

que eso es exactamente lo que se está filtrando en la consulta.

Por el contrario, en el segundo caso (SELECT-OPTIONS), si <var1> no

tiene valores, al tratarse de una sentencia de inclusión grupal (IN), el

SQL devolverá TODOS los registros de la Tabla consultada (a menos que

existan otros filtros diferentes a <var1>).

Para cerrar con este tema; lo haremos de una forma gráfica, para

obtener la siguiente Pantalla de Selección:

Page 71: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

69

Se utilizaron las siguientes líneas de código:

Page 72: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de
Page 73: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

71

Día 5: Sub Rutinas.

En ocasiones, cuando estamos programando, debemos elaborar cierta

porción de código que cumpla alguna función, (por ejemplo, sumar dos

variables), que sabemos que utilizaremos en otras secciones de nuestro

Programa.

Para evitar tener que escribir el código varias veces en estos casos, existen

los Módulos y Sub Rutinas, trozos de código que cumplen alguna función,

que se ejecutan en un lugar apartado de nuestra secuencia de

instrucciones principal, en la que solo tenemos que invocarlas, y recibir su

resultado.

De eso trata este nuevo capítulo.

¿Qué son las Sub Rutinas?

Las Sub Rutinas forman parte de la Programación Modular, esto es,

ejecutar cierta porción de código en un lugar externo con respecto al flujo

de sentencias principal.

Es de utilidad si se requiere una misma funcionalidad para varios reportes

o partes de un mismo Programa. También permite una mayor limpieza en

el código escrito para su mejor entendimiento.

Usemos una calculadora como ejemplo práctico, en la cual diseñaremos

las siguientes funciones matemáticas: suma, resta, multiplicación,

división, potenciación y raíz cuadrada.

Estructuraremos el código con el condicional CASE-ENDCASE que vimos

anteriormente, para controlar las diferentes funciones.

Page 74: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

72

(El usuario selecciona una función y la capturamos en la variable

<función>).

Podemos escribir el código de forma directa.

CASE<función>.

WHEN 'SUMA'. (Código necesario para realizar la suma).

WHEN 'RESTA'. (Código necesario para realizar la resta).

WHEN 'MULTIPLICACION'. (Código necesario para realizar la

multiplicación).

WHEN 'DIVISION'. (Código necesario para realizar la

división).

WHEN 'RAIZ'. (Código necesario para realizar la raíz).

WHEN 'POTENCIACION'. (Código necesario para realizar la

potenciación).

ENDCASE.

Operaciones como la 'RAIZ', requiere repetir las mismas instrucciones que

la 'DIVISION'; mientras que la 'POTENCIACION' utiliza instrucciones

aplicadas a la 'MULTIPLICACION'; por lo que, si escribimos el código de

forma lineal, estaríamos repitiendo código, haciendo menos legible el

código que creamos.

Para ello existe la Modularización, que nos permite estructurar el flujo del

Programa en Rutinas Externas para un mejor performance y

entendimiento.

Si escribimos el Programa de la calculadora de manera modularizada,

quedaría así.

Page 75: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

73

CASE<función>.

WHEN 'SUMA'. (Llamado a rutina SUMA).

WHEN 'RESTA'. (Llamado a rutina RESTA).

WHEN 'MULTIPLICACION'. (Llamado a rutina MULTIPLICACION).

WHEN ‘DIVISION'. (Llamado a rutina DIVISION).

WHEN 'RAIZ'. (Llamado a rutina RAIZ).

WHEN 'POTENCIACION'. (Llamado a rutina POTENCIACION).

ENDCASE.

Luego, en otro lugar del programa, se creará el contenido de cada rutina.

RUTINA 'SUMA'.

...

FINRUTINA.

RUTINA 'MULTIPLICACION'.

....

FINRUTINA.

RUTINA 'DIVISION'.

...

FINRUTINA.

Cuando creemos la rutina 'RAIZ', en su interior podemos hacer el llamado

a la rutina 'DIVISION', de la misma manera que se hizo en el CASE-

ENDCASE para el WHEN 'DIVISION'.

Page 76: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

74

RUTINA 'RAIZ'.

...

Llamado a rutina 'DIVISION'.

...

FINRUTINA.

Para el caso de la 'POTENCIACION', aplica lo mismo.

RUTINA 'POTENCIACION'.

...

Llamado a rutina 'MULTIPLICACION'.

...

FINRUTINA.

Tipos de Sub Rutinas

Existen 3 tipos de Sub Rutinas o Sub Programas.

• Internas: El código de la Sub Rutina está dentro del Programa que

la llama.

• Externas: La Sub Rutina está en un Programa distinto al que llama.

• Biblioteca de Funciones (Módulos de Función): Funciones

externas al Programa con interface de llamada claramente

definido. (De este tipo se hablará en el siguiente capítulo).

Page 77: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

75

Sub Rutinas internas

Las Sub Rutinas se codifican al final del Programa principal, tras todos los

eventos.

No se pueden anidar. Se puede salir de una Sub Rutina con un EXIT (salida

incondicional) o un CHECK (salida condicional), si estas sentencias no

están dentro de un bucle.

Sólo dentro de una Sub Rutina se puede usarse la sentencia

LOCAL<campo>, para declarar variables locales a la Sub Rutina (sólo

visibles dentro de ella). Deja oculto el valor de ese campo que tuviera

antes de entrar a la Sub Rutina, y lo restaura al salir de ésta.

Las instrucciones para llamados y declaración de Sub Rutinas son las

siguientes:

PERFORM<modulo>. Llamada a un procedimiento o sub

programa.

FORM<modulo>

.... __Subprograma.

ENDFORM.

El Programa principal y el procedimiento se podrán comunicar mediante

parámetros.

PERFORM<modulo>USING var1 var2...

FORM<modulo>USING var1 var2...

...

ENDFORM.

Page 78: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

76

Los parámetros pueden ser pasados por valor o por referencia. Por

defecto serán por referencia.

• Valor: El campo se pasa a modo de lectura únicamente, es decir,

no podrá ser modificado dentro del módulo.

• Referencia: El campo se pasa al módulo de manera editable,

permitiendo su modificación dentro del mismo.

Si queremos utilizar parámetros por valor, la cabecera del módulo será:

FORM<modulo>USING VALUE (var1).

...

ENDFORM.

Si queremos utilizar parámetros que puedan ser modificados dentro de la

Sub Rutina, se escribirían así:

PERFORM<modulo>CHANGING var1 var2.

FORM<modulo>CHANGING var1 var2.

...

ENDFORM.

Con la instrucción CHANGING, estamos permitiendo que los campos

pasados como parámetros puedan haber cambiado su valor al regresar de

la Sub Rutina.

Tanto las variables definidas al inicio del Programacomo las Tablas son

globales a todas las Sub Rutinas y por tanto accesibles en cualquier

momento, por lo que dichas variables declaradas al comienzo no

requieren ser pasadas explícitamente en los llamados a Módulos o Sub

Rutinas.

Page 79: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

77

Si encontramos alguna instrucción del tipo CHECK o EXIT que signifique

salir de un cierto FORM, previamente ejecutará el ENDFORM y por tanto

se pasarán los parámetros que tenga el procedimiento.

También es posible pasar como parámetro Tablas Internas.

PERFORM<modulo>TABLES<itab>...USING<var1><var2>...

FORM<modulo>TABLES<itab>USING<var1>...

...

ENDFORM.

Especificaremos las Tablas siempre antes que el resto de parámetros.

En este caso sólo se pueden hacer operaciones con filas enteras, pero no

nos podremos referenciar sobre campos concretos de la Tabla o hacer

COLLECTS (totalizaciones), ya que no se conocerá la Estructura de la

Tabla.

Podemos pasar como parámetros registros de datos o áreas de trabajo

con:

PERFORM<modulo>USING<reg>.

FORM<modulo>USING<reg>STRUCTURE<estructura>.

...

ENDFORM.

Page 80: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

78

Es decir, con la cláusula STRUCTURE podemos pasar la Estructura de una

Tabla, entonces podemos acceder a campos de una Tabla pasada como

parámetro con:

PERFORM<modulo>TABLES<itab>USING<var1>...

FORM<modulo>TABLES<itab>STRUCTURE<estructura>USING<var

1>...

....

ENDFORM.

Dentro de cada Sub Rutina es posible declarar datos con la sentencia

DATA, que sólo serán visibles dentro del Módulo donde esté declarado.

ABAP/4 creará un espacio para esas variables que será liberado al salir del

Módulo. Por tanto se podrán utilizar variables con el mismo nombre que

variables globales, aunque el valor que tengan será siempre el local en el

Módulo o Sub Rutina.

NOTA: Las Tablas de Base de Datos son globales a todo el Programa, si se

quiere utilizar una Tabla localmente en una Sub Rutina, se debe declarar

con LOCAL, al inicio de la misma, en vez de con TABLES.

LOCAL<tabla>.

Sub Rutinas Externas.

En un Reporte o Programa, podemos llamar a Sub Rutinas que no se

encuentren dentro de nuestro código. Para ello disponemos de la

modalidad de llamada a Sub Rutina pasándole el Programa, el uso de

INCLUDES, y las llamadas a Módulos de Función.

• Si queremos llamar a una Sub Rutina que está en un Programa

distinto utilizamos: PERFORM<sub> (<programa>) USING…

Page 81: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

79

• También existe la posibilidad de añadir porciones de código del

tipo INCLUDE con la instrucción: INCLUDE<reporte>.

En el código del INCLUDE no utilizaremos la sentencia REPORT (con la que

se empieza cualquier Programa).

Módulos de Funciones.

Esta es la vía para el manejo de Sub Rutinas en un Programa ABAP; como

vimos al comienzo de este capítulo, existe una tercera vía para la

comunicación modular de parámetros, llamados "Módulos de Funciones",

de ellos hablaremos en el siguiente capítulo.

Page 82: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de
Page 83: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

81

Día 6: Módulo de Funciones.

En el capítulo anterior estudiamos las Sub Rutinas, que son funciones

propias de un Programa o Include, pero no son objetos creados en el

Diccionario de Datos.

Pero en el Diccionario de Datos podemos crear Módulos de Funciones,

que cumplen unos objetivos más amplios, y permiten mayores opciones,

que las Sub Rutinas.

Prepara tu cuenta en el sistema, porque en este capítulo no solo

aprenderás de manera teórica como se crea un Módulo de Función, sino

tendrás un ejemplo práctico 100% funcional.

¿Qué son los Módulos de Funciones?

Los Módulos de Función son Módulos especiales guardados en una

librería central, y agrupados por la Función que realizan. Principalmente

se caracterizan por una interface definida y porque realizan tratamiento

de excepciones.

Se caracterizan por una interface definida ya que su diseño facilita el paso

de parámetros tanto de entrada como de salida.

CALL FUNCTION <función>.

EXPORTING<parámetros_entrada> = <valor_entrada>

...

IMPORTING<parámetros_salida>=<valor_salida>

...

TABLES<tablas_entrada>=<tablas_internas>

Page 84: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

82

...

EXCEPTIONS<excepciones>=<valor>

...

Donde en el EXPORTING especificamos los parámetros de entrada

para la Función, en el IMPORTING (opcional) el resultado o retorno de

la Función y en TABLES (opcional) las tablas que se utilizan como

parámetros.

Veamos en detalle las "partes" de una Función.

EXPORTING: Parámetros que van hacia el Módulo de Funciones, de

entrada (la Función por tanto no los modifica). Los valores estarán

declarados como IMPORT en la función.

IMPORTING: Parámetros de salida, son los valores resultantes de la

ejecución de la Función. (En la Función estarán declarados como

EXPORT).

CHANGING: Parámetros de entrada / salida (son modificables).

TABLES: Se usa para pasar Tablas Internas como parámetros.

EXCEPTIONS: Se usa para gestionar excepciones y errores. Cuando

se activa una excepción, en el campo de retorno SY-SUBRC se tendrá el

valor correspondiente asignado a dicha excepción en la parametrización

del Módulo de Función. Así se puede saber qué ocurrió al ejecutar la

misma.

Con la instrucción OTHERS se da tratamiento a errores no contemplados.

ERROR-MESSAGE. Se usa para tratar errores generando un mensaje. Se

tendrá el valor asignado para el error en el campo SY-SUBRC.

Page 85: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

83

Ver punto siguiente para su explicación.

Gestión de Excepciones

Los Módulos de Función también se caracterizan por realizar un

tratamiento de excepciones. En la interface de los Módulos de Función se

indican los valores de excepciones para el retorno del Módulo, que

posteriormente con el campo-variable SY-SUBRC se pueden comprobar.

El código de la Función puede activar excepciones mediante las

instrucciones:

MESSAGE...RAISING<excepción>.

ó

RAISE<excepción>.

La única manera de gestionar errores dentro de un Módulo de Función es

elevar excepciones, ya que NO se pueden usar mensajes en ellas. La

primera sentencia activa un mensaje, pero no lo muestra.

Para poder visualizarlo hay que acceder a los campos del sistema de la

Tabla SYST, donde se almacena el texto del mensaje, número,... pero

desde el Programa principal.

Esto responde al apartado ERROR-MESSAGE del punto anterior. Se

podrá mandar el mensaje desde el Programa que llama a la Función,

accediendo a los campos del sistema: SY-MSGID (nombre del

mensaje), SY-MSGNR (número del mensaje), SY-MSGTY (tipo del

mensaje), SY-MSGV1 ... SY- MSGV4 (4 textos para los 4 posibles

parámetros & del mensaje).

Creando una Función para simular una Calculadora.

Page 86: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

84

Recordemos el ejemplo del capítulo anterior (Sub Rutinas); vamos a crear

un Módulo de Función que cumpla con las 4 operaciones principales de

la aritmética, (suma, resta, multiplicación y división).

Para ello, vamos a definir en primera instancia que parámetros de

entrada recibiremos en la fFunción:

• OPER1: Variable con el valor del primer campo.

• OPER2: Variable con el valor del segundo campo.

• TIPO: Tipo de operación aritmética a ejecutar, la cual contiene un

código único por cada operación contemplada.

Como parámetros de salida, tendremos:

• RESUL: Variable que contendrá el resultado de la operación.

Como control de excepción, contemplaremos la división por cero:

Declararemos una excepción llamada BY_CERO, al cual le asignaremos el

valor de 1 cuando se produzca un intento de división por cero.

Luego de definido los parámetros que utilizaremos, ingresamos a nuestra

cuenta en SAP; y nos dirigimos a la Transacción SE37, que es la que

gestiona todo lo referente a Módulos de Funciones.

Page 87: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

85

Vamos a asignar un nombre a la función que empiece por Z

(recuerda que todos nuestros desarrollos deben empezar con Z o con Y).

La llamaremos ZCAL, y le damos al botón CREAR.

Nos pedirá que la asignemos a un Grupo de Funciones existente, e

indiquemos una breve descripción.

Page 88: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

86

Vamos a llegar a la siguiente ventana:

Veamos antes de continuar una breve descripción de cada objeto aquí

encontrado:

Atributos y parámetros: Una Función tiene los siguientes parámetros:

• EXPORTING (Entrada a la Función cuando se hace el llamado

desde un Programa, estos datos irán en la pestaña IMPORT en su

declaración).

Page 89: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

87

• IMPORTING (Salida. Resultado de la Función. Salida al momento

de invocar a la Función, en su declaración, la información irá en la

pestaña EXPORT).

• CHANGING (Entrada / Salida, pestaña MODIF).

• TABLES (Tablas Internas de Entrada / Salida, pestaña TABLAS).

• EXCEPTIONS (excepciones producidas por la Función. Se usa para

el manejo de errores, se declaran en la pestaña EXCEP).

Texto fuente: Código ABAP de la Función, se escribe en la pestaña

COD.FTE.

Documentación: Asociada a la Función, dependiente del idioma.

Datos globales: Código ABAP con las sentencias declarativas del Grupo de

Función.

Programa principal: Programa que llama a la Función. Cada Módulo de

Función tiene su correspondiente INCLUDE (CALL FUNCTION) en el

Programa.

Page 90: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

88

Primer Paso: Pestaña ATRIBUTOS

Pocas cosas debemos modificar aquí, salvo la forma en que se ejecutará

dicha Función, lo normal es dejarlo todo como está, es decir, con los

checks tildados de "Módulo de Funciones normal" y de "Inicio inmediato".

Interesante saber aquí, que si lo que nos piden es diseñar una Función

que haga las veces de interfaz entre un sistema externo y SAP, el check

que debemos tildar es el que dice "Módulo de acceso remoto", con

esto será suficiente para que desde fuera puedan comunicarse con

nuestra función.

Para nuestro ejemplo, lo dejamos como esta y pasamos a la pestaña

IMPORT.

Page 91: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

89

Segundo Paso: Pestaña IMPORT

En esta pestaña vamos a declarar los parámetros de entrada que

definimos anteriormente:

• OPER1: Variable con el valor del primer campo.

• OPER2: Variable con el valor del segundo campo.

• TIPO: Tipo de operación aritmética a ejecutar, la cual contiene un

código único por cada operación contemplada.

Asignaremos a los operadores, un Elemento de Datos que haga referencia

a cantidades, (BSEG- DMBTR) mientras que para el campo TIPO, cuya

función será simplemente indicar que tipo de operación se va a realizar, le

asignaremos un tipo de datos CHAR1, es decir, un texto de un solo

caracter.

Tercer Paso: Pestaña EXPORT

Habíamos definido que el único campo de salida sería el siguiente:

• RESUL: Variable que contendrá el resultado de la operación.

Le asignaremos el mismo elemento de datos de las variables de entrada

OPER1 y OPER2.

Page 92: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

90

Cuarto Paso: Pestaña EXCEP

Nos falta declarar la excepción que manejará nuestra Función, habíamos

definido lo siguiente: Declararemos una excepción llamada BY_CERO, al

cual le asignaremos el valor de 1 cuando se produzca un intento de

división por cero.

Quinto Paso: Pestaña CÓDIGO FUENTE

Procedemos ahora, a crear el código correspondiente para simular una

calculadora, lo haremos en la pestaña del código fuente, que como

veremos, nos presenta ya la información que acabamos de parametrizar

en las pestañas.

Page 93: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

91

La siguiente será nuestra estrategia de programación:

1. Declararemos una variable local llamada VAR que contendrá el

resultado parcial de las operaciones a realizar.

2. Construiremos un CASE-ENDCASE basado en el campo de entrada TIPO,

el cual contendrá como valores lo siguiente:

• 'S' para identificar la operación SUMA.

• 'R' para identificar la operación RESTA.

• 'M' para identificar la operación MULTIPLICACIÓN.

• 'D' para identificar la operación DIVISIÓN.

3. Dentro de cada condición del CASE, se realizará la operación aritmética

correspondiente con los campos OPER1 y OPER2, guardando el resultado

en la variable local VAR.

4. En el caso de la DIVISIÓN, previamente se validará que el campo OPER2

sea diferente de CERO, en caso contrario, se le asigna el valor de 1 a la

variable de excepción BY_CERO y no se realiza la división.

5. Al término del CASE, se le asigna al campo de salida RESUL, el resultado

almacenado previamente en VAR.

Page 94: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

92

Veamos cómo queda el ejemplo:

Recuerda que la instrucción RAISE activa la excepción, esto hará que si se

produce un intento de división por cero, la función devolverá, en lugar de

resultado de la operación en el campo RESUL, un código SY-SUBRC

diferente de cero en el campo de excepción BY_CERO. Este valor

retornable se puede definir en el llamado a la función, ahora veremos

cómo.

Primero vamos a probar nuestra Función directamente desde la SE37.

Page 95: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

93

Luego de activar nuestra Función en el botón ,

procedemos a ejecutarla en el siguiente botón:

Se nos presenta la siguiente ventana, en la cual nos pedirá los parámetros

de entrada:

Primero probaremos la suma entre los valores 17.25 y 14.50.

Page 96: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

94

Damos clic en el botón ejecutar:

Obtendremos el resultado de la Función, el cual nos indica que la suma

dio como resultado 31.75:

Ahora vamos a probar una división por cero, para evaluar si la Función

captura la excepción de manera correcta:

Page 97: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

95

Y obtenemos el siguiente resultado:

Vemos que el campo RESUL no tiene valor, y en la parte posterior, el test

nos indica que se produjo la excepción BY_CERO, garantizándonos así

que la Función procesa la información de forma correcta.

Programa de Control

Ahora vamos a crear un pequeño Programa Z, en la SE38, en la que

capturemos por pantalla los 2 valores a operar, el tipo de operación, con

los que internamente vamos a llamar a esta Función,, y ofrezcamos el

resultado en una salida por pantalla, y de esta manera practicamos un

poco la creación de Programas Z.

Page 98: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

96

Vamos a crear un Programa llamado ZCALCULADORA.

Indicamos el tipo de Programa, y una descripción.

Page 99: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

97

Indicamos que el Programa será un objeto local.

Y listo, ya podemos escribir nuestro código.

Page 100: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

98

El primer paso es declarar un bloque de datos de selección, en el que

pediremos los dos importes que corresponderán a los parámetros OPER1

y OPER2 de la Función, les asignaremos el mismo nombre y tipo de datos.

Posteriormente, crearemos otro bloque de datos, en el que

tendremos una selección de 4 opciones, para determinar el tipo de

operación a realizar.

Si ejecutamos el Programa ahora mismo, la pantalla de selección quedaría

así:

Page 101: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

99

Podemos asignarles nombres legibles y títulos a los bloques o cajas,

ingresando a Pasar a > Elementos de Texto > Textos de selección.

En textos de selección, le asignaremos descripciones a las variables de

entrada definidas:

Page 102: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

100

En Símbolos de texto definiremos los títulos descriptivos a los bloques o

cajas diseñadas.

Una vez activados todos los objetos, tendremos el siguiente aspecto

en nuestra pantalla de selección:

Ahora continuamos con la programación, en las variables OPER1 y OPER2

tenemos ya los importes a tratar, vamos a definir a través de sentencias

IF-ENDIF cual pulsador (tipo de operación) fue seleccionada, y le

Page 103: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

101

asignaremos el valor correspondiente que debemos pasar como

parámetro a la Función (S, R, M o D).

Pasamos ahora a construir la llamada a la Función, la mejor práctica para

hacer esto es utilizando el ícono "Modelo" en la barra de pulsadores.

Indicamos el nombre de la Función que queremos invocar, y damos OK.

Page 104: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

102

Se nos presenta en el código, lo siguiente:

Page 105: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

103

Procedemos a completar el código necesario para un correcto llamado a

la Función.

Ahora configuraremos la salida del resultado por pantalla, para ello nos

adelantaremos un poco en materia y crearemos un sencillo informe con la

instrucción WRITE, (esto lo veremos en detalle en el siguiente capítulo).

Además controlaremos la excepción BY_CERO configurada en la función.

Quedándonos el código estructurado de la siguiente manera:

Page 106: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

104

Listo!

Ya tenemos todo el trabajo hecho, ahora vamos a probar nuestro

programa con las mismas dos pruebas que utilizamos directamente en la

Función.

Primero probaremos la suma entre los valores 17.25 y 14.50.

Page 107: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

105

Y obtendremos el reporte con el resultado correcto de la operación:

Ahora vamos a probar una división por cero, para evaluar si la Función

captura la excepción de manera correcta:

Page 108: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

106

Espero te haya sido útil esta sección práctica, ahora te invito a que

practiques tú mismo para que poco a poco vayas familiarizándote con el

sistema.

Page 109: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

107

Día 7: Reportes o Informes.

En la mayoría de los casos, recibirás requerimientos en los que te pidan

crear algún tipo de Reporte o Informe, en el que se muestren ciertos

datos.

Muchas veces el formato final del Reporte lo podrás decidir tu, y en otras,

tendrás que adaptarte a lo requerido.

Existen dos tipos de Reportes que podemos construir en SAP.

• Reportes de texto hechos “a mano”, denominados tipo LIST o

WRITE.

• Reportes basado en funciones estándar, denominados Reportes

ALV.

Reportes tipo LIST o WRITE

Para este tipo de Reportes, existen una serie de sentencias que nos

permitirán construir nuestro Reporte "a mano", es decir, paso por paso,

línea por línea.

Todo empieza por la sentencia WRITE, con ella podremos visualizar una

variable por pantalla, su estructura es la siguiente:

WRITE / (<offset>) (<long>) <datos a visualizar>.

Con la barra (/) indicaremos si deseamos un salto de línea o no antes de

imprimir, esta barra es opcional.

Con el (<offset>) indicaremos si queremos en que columna de la pantalla

empezará la impresión.

Page 110: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

108

Con el (<long>) indicaremos la longitud de los valores a utilizar.

Todos estos campos son opcionales.

Ejemplo:

WRITE / (15) <variable>.

Con la sentencia ULINE, podremos imprimir una línea horizontal, ideal

para la construcción de tablas en un Reporte; esta sentencia cuenta con

las mismas propiedades de la sentencia WRITE explicada arriba; en el caso

de pintar líneas verticales, utilizamos la sentencia VLINE.

Para saltar una o varias líneas en la impresión, contamos con la sentencia

SKIP, que por defecto, responde al salto de una única línea, a menos que

se le indique explícitamente cuantas líneas de salto se quieren con la

siguiente instrucción:

SKIP <n> (n = número de líneas).

Ahora bien, si deseamos saltar a una línea específica de la pantalla,

utilizaríamos la sentencia SKIP TO LINE <n> (n = número de la línea

destino).

Si el salto que queremos dar, es hacia la siguiente página, la instrucción

que nos sería de utilidad sería NEW-PAGE.

Al utilizar la sentencia WRITE, en ocasiones imprimiremos cantidades

en monedas, para una correcta impresión, completaremos con las

siguientes sentencias:

WRITE<campo>CURRENCY<moneda> o WRITE<campo>CURRENCY

LOCAL.

Page 111: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

109

Si vamos a imprimir, por ejemplo, el código de un material, y no

deseamos que aparezcan los ceros a la izquierda del código, utilizamos la

siguiente instrucción:

WRITE<variable>NO-ZERO.

Para imprimir fechas estableciendo su formato de salida, contamos con:

WRITE<fecha>DD/MM/YY.

WRITE<fecha>MM/DD/YY.

WRITE<fecha>DD/MM/YYYY.

WRITE<fecha>MM/DD/YYYY.

Atributos de Pantalla y Formatos de Páginas

Dejamos atrás el WRITE para entrar en otros aspectos, como añadirle

colores o estilos a ciertas variables para diferenciarlas de otras, como por

ejemplo, la cabecera de una tabla.

FORMAT NTENSIFIED ON/OFF.

FORMAT INVERSE ON/OFF.

FORMAT INPUT ON/OFF.

FORMAT COLOR <n>.

FORMAT RESET.

Con estas instrucciones, podemos jugar con el look y el diseño de nuestro

Reporte.

También hay un grupo de instrucciones destinadas a dar formato de salida

a nuestro Reporte. Podemos controlar ambos extremos de una página con

los eventos TOP-OF-PAGE y END-OF-PAGE;

Page 112: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

110

Debes saber que éste último no se ejecutará si el salto de página se

produce con un NEWPAGE.

Si no queremos que la cabecera del Reporte sea la estándar de SAP, sino

controlarla nosotros mismos a través del evento TOP-OF-PAGE, lo que

haremos es que la primera instrucción de nuestro programa sea la

siguiente:

REPORT<Zxxx>NO STANDARD PAGE HEADING.

El formato de la página del Reporte se define también desde la instrucción

REPORT.

REPORT<Zxxx>LINE-SIZE<n>. (ancho de la línea).

REPORT<Zxxx>LINE-COUNT<n(m)>. (n = líneas por páginas; m = líneas

reservadas para pie de página).

REPORT<Zxxx>PAGE-COUNT <n>. (n = número máximo de páginas).

Con la instrucción RESERVE, podemos impedir que un bloque de

líneas que presentan una coherencia juntas, se corten y se pierda la

misma, para esto podemos reservar un número determinado de líneas

con la instrucción:

RESERVE <n> LINES.

Esta instrucción se debe colocar justo antes del WRITE sobre el que se

quiere "reservar" ese bloque de líneas; de no haber espacio suficiente

para imprimir estas líneas, éstas se imprimirán en la siguiente página.

Page 113: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

111

Elementos de Texto.

En el entorno de desarrollo ABAP se nos permite manejar Elementos de

Texto sin necesidad de escribir el código en el Programa.

Estos Elementos de Texto pueden ser títulos de Reportes, cabeceras,

textos de selección, entre otros.

Para acceder a la pantalla de edición de estos textos, desde el editor

ABAP, ubicamos el menú Pasar a -> Elementos de Texto.

Títulos y Cabeceras: para tratar el título y cabeceras del Reporte y las

cabeceras de columna que saldrán por pantalla e impresora.

Textos de Selección: para tratar las descripciones que acompañan a los

parámetros de entrada del tipo PARAMETERS o SELECT-OPTIONS.

Textos Numerados: para tratar constantes de tipo texto sin necesidad de

declararlas dentro del Programa. Los nombres de estas constantes serán

TEXT-nnn donde <nnn> es un número de 3 dígitos. Además podemos

mantener los textos numerados en varios idiomas.

Mensajes de Diálogo.

Son aquellos mensajes que aparecen en la línea de mensajes y que son

manejables desde un Programa. Estos mensajes están agrupados en

áreas de mensajes. Para indicar que área vamos a usar en un Reporte,

utilizamos MESSAGE-ID en la instrucción REPORT.

REPORT <reporte> MESSAGE-ID <area>.

Para el tratamiento de las áreas de mensajes, encontramos su editor en el

menú Pasar a -> Mensajes.

Page 114: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

112

Para visualizar un mensaje dentro del código utilizamos la sentencia

MESSAGE Tnnn.

Donde "nnn" es el número del mensaje dentro de su respectiva área y "T"

es el tipo de mensaje.

Los diferentes tipos de mensajes que permite el sistema son los

siguientes:

• A = Cancelación del proceso.

• E = Error. es necesaria una corrección de los datos.

• I = Información. Mensaje meramente informativo. El proceso

continuará con un ENTER.

• S = Confirmación; información en la pantalla siguiente.

• W = Warning. Nos da un aviso, podemos cambiar los datos o

pulsar ENTER para continuar.

Solo los mensajes tipo A y E interrumpirán la ejecución del Programa,

obligando su finalización antes de tiempo, el resto de mensajes, permitirá

continuar con la ejecución hasta el final.

Podemos acompañar los mensajes con variables como parámetros:

MESSAGE Tnnn WITH <var1><var2>.

En su definición veremos símbolos &, éstos símbolos se podrán sustituir

por variables en el código del Programa; dependiendo del tipo de

mensaje permite más símbolos que otros, hasta un máximo de 4

variables.

Page 115: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

113

Ejemplo de un reporte con WRITE.

A continuación te dejo un ejemplo funcional de cómo construir un

Reporte tipo WRITE o LIST.

************************************************************

********************

REPORT zrr.

DATA: it_flights LIKE TABLE OF mara, wa_flights LIKE LINE OF it_flights.

START-OF-SELECTION.

SELECT *

FROM mara

INTO TABLE it_flights

WHERE matnrBETWEEN '000000000080003050' and

'000000000080003060'.

END-OF-SELECTION.

SORT it_flightsBY matnrersda.

* Data output

PERFORM data_output.

TOP-OF-PAGE.

NEW-LINE.

Page 116: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

114

WRITE: / sy-uline.

FORMAT COLOR COL_HEADING .

WRITE: sy-vline,

AT (3) ' ',

AT (10) 'Material', AT (1) sy-vline,

AT (15) 'Fecha',

AT (1) sy-vline,

AT (25) 'GrupoArtículos', AT (1) sy-vline,

AT (30) 'NúmeroAntiguo', AT (1) sy-vline.

FORMAT COLOR OFF .

WRITE: / sy-uline.

FORM data_output.

LOOP AT it_flightsINTO wa_flights.

NEW-LINE.

WRITE: sy-vline.

WRITE: AT (3) ' ' ,

AT (10) wa_flights-matnr COLOR COL_KEY, AT (1) sy-vline,

AT (15) wa_flights-ersda COLOR COL_NORMAL , AT (1) sy-vline,

Page 117: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

115

AT (25) wa_flights-mtart COLOR COL_NORMAL,AT (1) sy-vline,

AT (30) wa_flights-bismt COLOR COL_NORMAL , AT (1) sy-vline.

AT END OF matnr.

ULINE.

ENDAT.

ENDLOOP.

ENDFORM. "DATA_OUTPUT

************************************************************

********************

Reportes ALV

Page 118: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

116

Desde la versión 4.6C; existen funcionalidades avanzadas para el

desarrollo de Reportes, mucho más sencillos de construir que los

Reportes WRITE, y mucho más elegantes y prácticos que estos, ya que

permiten cierto dinamismo, como agrupar, totalizar columnas numéricas,

añadir y quitar columnas, guardar los cambios realizados, exportar a Excel

y otros formatos, etc.

Cuando se crea un Reporte utilizando funciones ALV es necesario:

Incluir en el Programa la librería SLIS, que tiene definidas todas las

Estructuras de los parámetros de entrada y de salida de esta Función.

Esta librería se importa con la instrucción TYPE-SPOOLS: slis.

Definir correctamente el catálogo de campos.

Definir en el Programa todas las sub rutinas que implementarán el

comportamiento de éste ante la ejecución de determinados eventos o

ante la interacción del usuario.

Pasarle los datos que deben ser mostrados en el reporte a la Función

utilizando Tablas Internas.

Utilizando las Funciones ALV, ninguna sentencia WRITE aparecerá en el

Programa.

Se informa a la correspondiente Función de los datos que van a ser

mostrados, la definición y características de cada uno de éstos datos y de

la apariencia y todo es implementado por la Función.

En el momento que llamamos a una de las Funciones ALV para que

imprima el Reporte, perdemos el control del Programa. Esto es, cualquier

Evento del Programa como ‘Nueva página’, ‘Top of page’, ‘End of page’,

etc. será controlado e implementado por la Función, a no ser que le

Page 119: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

117

indiquemos qué Eventos queremos que sean implementadas en el

Programa.

Se llamará a la Función, informándole obligatoriamente los siguientes

parámetros:

• I_CALLBACK_PROGRAM: Se informa a la Función con el nombre

del Programa que la está llamando.

• IT_FIELDCAT: Este parámetro será una Tabla Interna que

contiene la definición de los campos que aparecerán en el

listado.

• T_OUTTAB: Nombre de la Tabla Interna que contiene toda la

información recogida por el Programa y la cual debe ser impresa

en el Reporte.

Cada tipo de ALV cuenta con diferentes parámetros de entrada

opcionales, pero estos 3 son obligatorios en todos los casos.

Existen 3 tipos principales de Reportes ALV, el uso de cada uno dependerá

de lo se requiera en un momento dado.

• ALV List: permite simular el trazado de un reporte WRITE, pero

con las funcionalidades y bondades de un ALV.

• ALV Grid: Permite generar una Tabla gráfica, totalmente editable

desde su presentación (añadir y quitar columnas, agrupar y

ordenar, totalizar valores, entre otras).

• ALV Jerárquico: Es un tipo de reporte que consta de 2 cabeceras,

y permite enlazar la información de ambas partes de una manera

gráficamente legible.

Page 120: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

118

Cada uno de ellos tiene su propio Módulo de Funciones con sus

respectivas Estructuras, veamos un poco como se construyen cada uno.

NOTA: Se mostrarán solo algunos de los parámetros de mayor uso

de las Funciones ALV, lasmismas cuentan con otros parámetros que

aquí no se muestran por razones de espacio.

ALV LIST

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING

i_callback_program = g_repid

i_structure_name = gc_structure

it_fieldcat = gt_fieldcat_list

i_save = gc_save

is_layout = gs_layout

is_variant = gs_variant

is_print = gs_print

TABLES

t_outtab = gt_output_value

EXCEPTIONS

program_error = 1

OTHERS = 2.

Page 121: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

119

I_CALLBACK_PROGRAM: Recibe el nombre del Programa que invoca a la

Función.

I_STRUCTURE_NAME: Indica la Estructura de Datos del Diccionario que se

tomará como base en la construcción del Reporte.

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catálogo de

Objetos"; esto es, la lista de campos (o columnas) que se van a listar en el

Reporte.

I_SAVE: En este parámetro se indicará que tipos de "layouts" se podrán

"pre cargar", (deben existir en el sistema); se le puede indicar a la función

ALV tres posibles opciones; que muestre aquellos layouts grabados como

estándares ('X'); los layouts específicos de usuarios ('U'), o todos los

layouts disponibles ('A').

IS_LAYOUT: Se le puede indicar a la Función que el diseño del Reporte

aparezca con una serie de ajustes; (con cabecera o sin ella, con colores en

las filas o columnas, entre otras).

IS_VARIANT: Este parámetro contendrá la variante de visualización

(layout) que el usuario haya seleccionado, de la lista de opciones para

dicho Reporte.

IS_PRINT: Esta Tabla Interna controla parametrizaciones de impresión,

como no mostrar la cabecera, asignar impresora, saltarse la ventana de

diálogo que solicita la impresora, entre otras.

T_OUTTAB: Esta será la Tabla Interna que contendrá la información

que se requiere desplegar en un Reporte ALV.

La siguiente imagen es una muestra de los resultados que obtendremos

para este tipo de ALV

Page 122: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

120

ALV GRID

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING

i_callback_program = v_repid

I_BACKGROUND_ID = 'ALV_BACKGROUND'

i_callback_top_of_page = l_form_cabecera

i_save = 'A'

it_fieldcat = gt_fieldcat

is_variant = variante

TABLES

t_outtab = p_output.

I_CALLBACK_PROGRAM: Recibe el nombre del Programa que invoca a la

Función.

I_BACKGROUND_ID: Permitirá asignarle una imagen de fondo al Reporte.

Page 123: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

121

I_CALLBACK_TOP_OF_PAGE: Permite indicarle a la Función que

controlaremos la cabecera del Reporte desde nuestro Programa.

I_SAVE: En este parámetro se indicará que tipos de "layouts" se podrán

"pre cargar", (deben existir en el sistema); se le puede indicar a la Función

ALV tres posibles opciones; que muestre aquellos layouts grabados como

estándares ('X'); los layouts específicos de usuarios ('U'), o todos los

layouts disponibles ('A').

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catálogo de

Objetos"; esto es, la lista de campos (o columnas) que se van a listar en el

Reporte.

IS_VARIANT: Este parámetro contendrá la variante de visualización

(layout) que el usuario haya seleccionado, de la lista de opciones para

dicho Reporte.

T_OUTTAB: Esta será la Tabla Interna que contendrá la información

que se requiere desplegar en un Reporte ALV.

Veamos que se obtiene con este tipo de ALV.

Page 124: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

122

Page 125: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

123

ALV JERÁRQUICO

Este tipo de ALV consiste en anidar dos tablas (una con la estructura de

cabecera y otra con la estructura del detalle), que permite enlazar la

información de ambas tablas.

Es muy útil cuando se quiere un reporte que contenga doble cabecera; la

función necesitará recibir la información en dos Tablas Internas

separadas.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' EXPORTING

i_callback_program = gv_repid

i_callback_pf_status_set = slis_ev_pf_status_set

i_callback_user_command = slis_ev_user_command

is_layout = gs_layout

it_fieldcat = gt_fieldcat

it_sort = gt_sortinfo

i_save = 'A'

is_variant = gs_variant

it_events = gt_event

i_tabname_header = 'IT_HEADER'

i_tabname_item = 'ITAB'

is_keyinfo = gs_keyinfo

Page 126: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

124

is_print = gs_print

TABLES

t_outtab_header = IT_HEADER

t_outtab_item = ITAB

EXCEPTIONS

program_error 1

OTHERS 2

_CALLBACK_PROGRAM: Recibe el nombre del Programa que invoca a la

Función.

I_CALLBACK_PF_STATUS_SET: Permite indicarle a la Función cual será el

Status GUI (barra de pulsadores) que queremos desplegar con el Reporte.

I_CALLBACK_USER_COMMAND: Permitirá controlar los Eventos que

puedan ocurrir en el Reporte (pulsar un campo del listado y saltar a otra

Transacción, pulsar un botón añadido en la barra de pulsadores, entre

otros).

IS_LAYOUT: Se le puede indicar a la Función que el diseño del Reporte

aparezca con una serie de ajustes; (con cabecera o sin ella, con colores en

las filas o columnas, entre otras).

IT_FIELDCAT: Contiene lo que en ALV se conoce como el "Catálogo de

Objetos"; esto es, la lista de campos (o columnas) que se van a listar en el

Reporte.

Page 127: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

125

IT_SORT: Con esta Tabla se le indicará a la Función cual será el criterio de

ordenamiento con el cual se desplegará la información.

I_SAVE: En este parámetro se indicará que tipos de "layouts" se podrán

"pre cargar", (deben existir en el sistema); se le puede indicar a la Función

ALV tres posibles opciones; que muestre aquellos layouts grabados como

estándares ('X'); los layouts específicos de usuarios ('U'), o todos los

layouts disponibles ('A').

IS_VARIANT: Este parámetro contendrá la variante de visualización

(layout) que el usuario haya seleccionado, de la lista de opciones para

dicho Reporte.

IT_EVENTS: Se le indicará a la Función cuales serán los Eventos del

sistema que controlará.

I_TABNAME_HEADER: Contendrá el nombre de la Tabla de cabecera.

I_TABNAME_ITEM: Contendrá el nombre de la Tabla del detalle de

posiciones.

IS_KEYINFO: Esta Tabla contendrá las conexiones de enlaces entre las dos

Tablas, como se puede deducir, ambas Tablas deberán contener el mismo

campo con el mismo nombre, para poder servir de enlace entre ambas.

IS_PRINT: Esta Tabla Interna controla parametrizaciones de impresión,

como no mostrar la cabecera, asignar impresora, saltarse la ventana de

diálogo que solicita la impresora, entre otras.

T_OUTTAB_HEADER: Esta será la Tabla Interna que contendrá la

información de cabecera del Reporte, será la primera línea de desglose en

la doble cabecera.

Page 128: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

126

T_OUTTAB_ITEM: Esta Tabla contendrá los datos a mostrarse, relativos al

detalle, o lo que es lo mismo, la información de la segunda Tabla, con las

posiciones del Reporte.

Veamos qué tipo de Reportes logramos obtener con esta Función.

La Tabla T_OUTTAB_HEADER contiene las líneas de color naranja,

mientras que la Tabla T_OUTTAB_ITEM contendrá el desglose de líneas

en fondo blanco, que corresponden a la cabecera de color azul.

Si observamos bien, el desglose es el detalle de la línea naranja

respectiva; dentro de la jerarquía indicada.

Por eso se les conoce como Reportes Jerárquicos.

Ejemplo de ALV

Si quieres ver un ejemplo práctico y funcional sobre la construcción de un

Reporte ALV, revisa el siguiente enlace, en donde encontrarás más

información de los tipos de ALV con sus respectivos ejemplos.

Page 129: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

127

Plantilla para Construir un ALV

Con esto ya tienes diversas vías para construir Reportes en un Programa Z,

hemos llegado al final, espero que puedas poner en práctica lo aprendido,

y te invito a formar parte de nuestra comunidad AprendeABAP.

En las siguientes páginas encontrarás toda la información que necesitas

para no perderte nada.

SALV: Una vía rápida para generar un ALV Orientado a Objetos

Existe una versión Orientada a Objetos para generar reportes ALV, que al

igual que el modelo basado en Funciones, nos permite una gran cantidad

de opciones disponibles para controlar los eventos y escenarios de un

reporte.

Veamos un ejemplo sencillo de las instrucciones requeridas para generar

rápidamente un reporte ALV base.

Con el siguientesencillo programa se desarrolla un ALV mediante Objetos

de forma rápida usando tablas internas para mostrarlos.

Para empezar, contamos con una Tabla Interna llamada TI_SALIDA que

cuenta con los siguientes 3 campos:

• Sociedad: BUKRS.

• Nº Documento: BELNR.

• Ejercicio: GJAHR.

Una vez llenada la tabla con datos, se seguirá el siguiente procedimiento:

1) Se aginauna Estructura de Datos abierta con la instrucción TYPE

ANY TABLE, pudiendo meter cualquier dato o tabla (interna o no)

dentro de la variable correspondiente.

Page 130: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

128

FIELD-SYMBOLS <tabla> TYPE ANY TABLE .

2) Declaramos una variable llamada GR_TABLE, asignándole como

Tipo de Datos por referencia la Clase CL_SALV_TABLE.

DATA: gr_table TYPE REF TO cl_salv_table.

3) Asignamos los datos de la Tabla Interna TI_SALIDA al Field Symbol

declarado anteriormente.

ASSIGN ti_salida[] TO <tabla>[].

4) Invocamos al Método FACTORYpara crear todo lo relacionado con

el ALV (tabla, ventana, cabecera, etc).

5) Invocamos al Método DISPLAY para generar el reporte ALV y

desplegarlo por pantalla.

gr_table->display( ).

Como se mencionó anteriormente, este modelo de ALV cuenta con una

serie de funcionalidades para capturar eventos, controlar botones, editar

el catálogo de campos, entre otros, que se pueden definir luego del

llamado al Método FACTORY.

Podemos encontrar más información detallada del mundo de los reportes

ALV en nuestra sección del Blog:

Reportes ALV

Page 131: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

129

RECURSOS

RECOMENDADOS

Page 132: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de
Page 133: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

131

Aprende ABAP. –¿Qué hay aquí para ti?

La estrategia de contenidos en AprendeABAP busca cubrir los dos grandes

bloques en que se dividen la carrera de un Consultor ABAP, entiéndase

tanto el período de APRENDIZAJE como el de POSICIONAMIENTO.

Pensando en estos dos grandes bloques, con las respectivas etapas que

conforman cada uno, contamos con una estrategia de contenidos

dinámica, en la ofrecemos contenidos gratuitos como contenidos

Premium.

Dentro del bloque de APRENDIZAJE, hemos clasificado la información de

acuerdo a su temática:

• Diccionario de Datos.

• Entorno de Programación.

• Reportes.

• Formularios.

• Módulos de Funciones.

• Ampliaciones.

• Module-Pool.

Clasificación que puede ir variando en el tiempo a medida que se

considere oportuno. En cada sección encontrarás contenido relevante,

principalmente bajo el enfoque ¨HOW-TO¨, sobre como realizar

determinadas tareas dentro del sistema.

Estas secciones son de libre acceso, y el objetivo es ir añadiendo nuevos

contenidos periódicamente, tanto en texto escrito, como apoyados en

videos tutoriales.

Page 134: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

132

Dentro del bloque de POSICIONAMIENTO, destaca la categoría “Crea tu

Marca”, dentro de la cual iremos desglosando todo el contenido de libre

acceso correspondiente a este bloque, cuyo objetivo no es aprender

temas del sistema sino en cómo posicionarte como un experto en el

sector.

Te invito a que lo descubras por ti mismo en el siguiente enlace:

http://aprendeabap.com

Page 135: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

133

Aprende ABAP. - Desarrollo de Contenidos Etapa APRENDIZAJE

A lo largo del tiempo, me he encontrado mucha gente que quiere iniciarse

en el Mundo SAP, pero no tiene formación en informática, siendo esta la

base para poder triunfar dentro de este mundo. Incluso conozco muchos

Consultores SAP funcionales a quienes les gustaría aprender a debugar,

pero no disponen de esta base de programación necesaria para

comprender los procesos, pensando entonces, en aquellos que necesitan

empezar de cero, aprendiendo las nociones de lógica y de programación

para ver cumplidos sus objetivos, hemos diseñado el curso ¨Aprende a

Programar¨.

http://aprendeabap.com/abap-store/aprende-programar

Para aquellos que completan esta formación o para aquellos estudiantes

de informática que ya la dominan, pero quieren entrar al mundo SAP de la

mano de ABAP, hemos desarrollado un programa en dos formatos, uno de

ellos es un libro introductorio llamado ¨AprendeABAP en 10 lecciones¨ en

la cual vivirán su primera interacción con el sistema.

http://aprendeabap.com/abap-store/libro-aprende-abap

Si ya cuentas con cierta experiencia dentro del sector, y buscas seguir

creciendo para cubrir el resto de las etapas del bloque de Aprendizaje,

también contamos con el ¨ClubABAP¨, el cual es un club privado en

donde mensualmente nos reuniremos para abordar temas concretos que

nos permitan ir avanzando en las diferentes etapas de tu carrera.

Adicionalmente, dentro del ClubABAP desarrollamos un curso 100%

práctico para aquellos que inician desde cero, un curso que complementa

Page 136: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

134

al libro, diseñado para aquellos que no conocen el sistema y están

buscando opciones alternativas a los tantos cursos de formación que

existen en el mercado.

Toda la información del Club en el siguiente enlace:

http://aprendeabap.com/clubabap/

Como puedes ver, todas las etapas del bloque de APRENDIZAJE están

estratégicamente cubiertas en Aprende ABAP; por lo que no importa en

que momento de tu carrera hayas encontrado este sitio, bien seas

estudiante de Informática, un Consultor ABAP en sus primeros 4 años de

carrera, o una persona que busca reinventarse, en Aprende ABAP

encontrarás justo lo que se adapta al momento en que te encuentres.

Page 137: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

135

Aprende ABAP. - Contenidos Etapa POSICIONAMIENTO

Si ya eres un Consultor ABAP Senior, con la suficiente experiencia para

considerar que ya has superado el bloque de APRENDIZAJE, pero aun no

logras sacarle el rendimiento económico adecuado a tu nivel, te invito a

que conozcas el bloque de POSICIONAMIENTO y los contenidos que

hemos diseñado en Aprende ABAP.

Dentro de esta categoría contamos con el Club de Membresía “Consultor

de Éxito”, en el que mensualmente abordaremos temas que nos permitan

ir acercándonos a nuestro objetivo de posicionarnos como expertos, tales

como:

• La importancia de escribir un libro y como convertirlo en nuestra

tarjeta de presentación.

• Como escribirlo y publicarlo, tanto en físico como en digital.

• La importancia de construir una Plataforma digital en la web para

darte a conocer.

• Los componentes que debes contar en dicha Plataforma.

(contenidos, testimonios, presentación personal y profesional,

etc.)

• Como empaquetar tus conocimientos para crear vías de ingresos

pasivos con el propósito de aumentar tus posibles fuentes de

ingresos.

• Como ofrecer servicios a través de tu plataforma y que tipos de

servicios puedes ofrecer, tanto a posibles empleadores como a

compañeros de profesión.

• Como afrontar entrevistas para conseguir que te contraten.

• Entre otros.

Page 138: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

136

La información de este Club la puedes encontrar en el siguiente enlace:

http://aprendeabap.com/club-consultor-exito/

Para aquellos que no tienen claro la importancia de esta segunda etapa

en tu carrera hacia el éxito como Consultor, he creado un libro que cuenta

la historia de Eddie, un Consultor ABAP que empezó de la nada en el que,

mediante un relato de su vida, vemos cómo ha ido evolucionando hasta

convertirse en el exitoso Consultor que es hoy en día.

http://aprendeabap.com/abap-store/libro-eddie-consultor

Page 139: Material de regalo disponible en · 2019-02-04 · ABAP. Las siglas ABAP significan: Advanced Business Application Programming. Al lenguaje se le conoce como ABAP/4 por tratarse de

www.aprendeabap.com – AprendeABAP en 7 días

137

Aprende ABAP. - ABAP Store

¿ Recuerdas los distintos programas detallados que cubren las dos

grandes etapas ?

Aprende ABAP cuenta con la Abap Store, su propia Tienda Virtual en

donde podrás encontrar en un solo lugar todos los programas que hemos

desarrollado para cubrir las 7 etapas de tu carrera profesional, puedes

visitarla en el siguiente enlace.

http://aprendeabap.com/abap-store/

Si buscas algo más personalizado, disponemos de nuestra sección de

productos y servicios, en donde podrás encontrar una gama que va desde

talleres prácticos para determinada herramienta (debugging, smartforms,

etc.) hasta servicios por horas o grupales, más información en el siguiente

enlace.

http://aprendeabap.com/abap-store/servicios