Blog

Sentencias ABAP elementales Parte 2 (Loops, campos de sistema y código retorno)

Sentencias ABAP elementales Parte 2 (Loops, campos de sistema y código retorno).

En esta lección vamos a complementar el post anterior  sentencias ABAP elecmentales Parte 1 y a continuar repasando la base de la programación ABAP con las sentencias ABAP esenciales, como cualquier lenguaje de programación el uso de Loops, campos del sistema y códigos de retorno se hace imprescindible. Hay que tener en cuenta las singularidades de este lenguaje a la hora del uso de estas instrucciones.

Loops

Hasta el momento existen cuatro construcciones de loop en ABAP. Si bien esto es así y hay que conocer las cuatro por si nos encontramos con cualquiera de ellas, a lo largo de un programa, también conviene saber en qué caso utilizar cada para que la ejecución del programa sea lo más eficiente posible.

Además, hay algún tipo Loops de ABAP está en desuso ya que es poco eficiente con los recursos del sistema y que probablemente la persona que tiene que aprobar tu código fuente ABAP en cuanto lo vea se eche las manos a la cabeza y te lo eche el código para atrás.

Dentro de los Loops es muy importante tener claro los campos del sistema, tendrán sentido solo si se consultan dentro de un loop. En los loops anidados, sy-index por ejemplo contiene siempre el número de la iteración de loop del loop en el que está situado.

En los loops DO y WHILE, el campo de sistema sy-index contiene el número de iteración de loop actual. Por ello, solo debe consultar este campo de sistema dentro de un loop.

Imagen ejemplo loops ABAP

 

Construcciones de loop:

 

  • Loops incondicionales y controlados por índice

El bloque de sentencia entre DO y ENDDO se ejecuta de forma continua hasta que se abandona el loop mediante sentencias de terminación como EXIT. Especifique el número máximo de transferencias de loop; de lo contrario, puede obtener un loop interminable.

 

  • Loops controlados por la cabecera

El bloque de sentencia entre WHILE y ENDWHILE se ejecuta de forma continua hasta que no se cumpla la condición especificada. Siempre se verifica la condición antes de ejecutar el bloque de sentencias.

 

  • Loops de lectura.

El loop SELECT lee varias entradas de una tabla de bases de datos sucesivamente. En una tabla interna (variable de tabla en el programa), la misma función de lectura se implementa con el LOOP. Sentencia poco eficiente que hay que evitar, sobretodo cuando se trata de la lectura de tablas  con muchos registros que se actualizan frecuentemente.

 

Campos de sistema.

Campos de sistema más habituales. Significado
sy-mandt

sy-uname

sy-langu

Mandante de trabajo

Nombre de inicio de sesión del usuario

Idioma de inicio de sesión del usuario

sy-datum

sy-uzeit

Fecha local del sistema ABAP

Hora local del sistema ABAP

sy-tcode

sy-repid

Código de transacción actual

Nombre del programa ABAP actual

sy-index Contador de loops DO y WHILE

 

En el código fuente ABAP, puede usar varios objetos de datos sin declararlos explícitamente antes (por ejemplo, sy-datum y sy-index). El sistema de tiempo de ejecución utiliza estos campos de sistema para suministrar información al programa de aplicación acerca del status de sistema real.

 

Para acceder a los campos de sistema de los programas, utiliza el acceso de solo lectura. El acceso de escritura puede causar pérdidas de información importante de algunas partes del programa que requieren esta información. Además, el sistema de tiempo de ejecución puede modificar nuevamente el contenido del campo. Por ello, SAP recomienda solo leer estos campos.

 

Código de retorno de una sentencia ABAP.

Imagen ejemplo código retorno ABAP

 

Uno de los campos de sistema más importantes es el campo sy-subrc. Con muchas sentencias, el sistema de tiempo de ejecución ABAP suministra este campo con el código de retorno correspondiente para indicar si la sentencia se ha ejecutado correctamente. El valor cero significa que la secuencia se ha ejecutado correctamente. Lea la documentación de palabras clave de las sentencias correspondientes para averiguar si se fija este valor de retorno y cómo se lleva a cabo en casos individuales.

 

Resumen, estas son algunas de las sentencias ABAP esenciales, las que hemos visto se encuentran dentro de la programación estructurada con elementales desarrollo SAP/ABAP y que tienes que tener muy en cuenta antes de sentarte a programar.

Esto ha sido todo por hoy, próximamenteeee, más!! 😀

Publicado por José Jiménez en Blog

Sentencias ABAP esenciales Parte1 (variables, constantes y condicionales).

Sentencias ABAP esenciales (Variables, constantes y condicionales).

En esta lección vamos a complementar el post anterior Tipos de datos SAP ABAP y a continuar repasando la base de la programación ABAP con las sentencias ABAP esenciales, como cualquier lenguaje de programación el uso de variables, constantes, operadores lógicos y condicionales se hace imprescindible. Hay que tener en cuenta las singularidades de este lenguaje a la hora de declaración y el uso de estas instrucciones.

Al iniciar un programa, se carga el contexto del programa en una memoria del servidor de aplicación y se pone la memoria a disposición de los objetos de datos definidos en el programa. Cada objeto de datos elemental se preasigna al valor inicial específico del tipo de datos, excepto si se ha fijado un valor distinto mediante el suplemento VALUE.

 

Variables.

Ejemplo de declaración y asignación de 1 variable.

DATA gv_var1 type i value 18.

 

Ejemplo de declaración y asignación de varias variables.

DATA: gv_var1 type i value 18,

gv_var2(7) type c value ‘asiento’.

 

Nota: Si la sentencia anterior te suena a mandarín profundo, no te preocupes, estás empezando. Te animo a que sigas leyendo para comprenderlo. Conviene que vayas leyendo líneas de código, te ayudaré a familiarizarte con la sintaxis, sobre todo si no tienes base en programación.

 

Puede utilizar la sentencia MOVE para transferir el contenido de un objeto de datos a otro objeto de datos.

Las siguientes variantes de sintaxis tienen el mismo efecto:

MOVE gv_var1 TO gv_var2.

gv_var2 = gv_var1.

 

Si ambos objetos de datos gv_var1 y gv_var2 son de tipos diferentes, existe un conflicto de tipos. En este caso, si existe una regla de conversión, se realiza automáticamente una conversión de tipo de datos.

La sentencia CLEAR reinicializa el contenido de un objeto de datos al valor inicial ligado al tipo.

 

Constantes.

Ejemplo de declaración y asignación de constante.

CONSTANTS c_constante(18) type c value ‘Asiento_de_pasillo’.

 

Sobre las constantes es importante conocer que al contrario que la variable, se declaran al principio del programa y su valor nunca podrá modificarse durante la ejecución del programa. Se utilizan habitualmente para evitar escribir valores literales. En próximos posts veremos que existe otro método más eficiente que las constantes de evitar los literales en los textos.

 

Cálculos y expresiones aritméticas ABAP.

Imagen declaracion y operacion ABAP

En ABAP, puede programar expresiones aritméticas hasta cualquier nivel de anidamiento.

Operadores válidos en ABAP.

+ (suma)

– (resta)

* (multiplicación)

/ (división)

** (Potencia)

DIV (división integral sin resto)

MOD (Resto después de la división integral)

 

Condicionales y expresiones lógicas ABAP.

Imagen ejemplo condicionales if elseif y case ABAP

 

ABAP ofrece 2 modos de ejecutar diferentes secuencias de código dependiendo de las condiciones:  Estos son los famosos IF ELSEIF y CASE.

 

En la construcción IF, puede definir cualquier expresión lógica como condición de verificación. Si se cumple la condición, el sistema ejecuta el bloque de sentencias correspondiente. De lo contrario, se verifica la condición especificada en la siguiente bifurcación ELSEIF (es posible incluir varias bifurcaciones). Si no se cumple ninguna de las condiciones especificadas, se ejecuta la bifurcación ELSE, si es que existe. Las bifurcaciones ELSEIF y ELSE son opcionales.

 

En la construcción CASE, puede distinguir casos de forma precisa. El contenido del campo especificado en la parte CASE se verifica con respecto a los objetos de datos listados en la bifurcación WHEN para comprobar si coinciden. Si el contenido del campo coincide, se procesa el bloque de sentencias correspondiente. Si ninguna comparación coincide, el sistema ejecuta la bifurcación OTHERS si está disponible. Es obligatoria primera bifurcación WHEN (al menos un caso), todas las otras bifurcaciones son opcionales.

 

En ambos escenarios, la verificación de condiciones o de coincidencias se produce secuencialmente de forma descendente. Tan pronto como se ejecute el bloque de secuencias de una bifurcación, el sistema pasará inmediatamente a ENDIF o ENDCASE.

 

Consejo:

Si desea implementar verificaciones de semejanza entre un campo y distintos valores, es preferible utilizar la construcción CASE antes que la sentencia IF, puesto que es más transparente y rinde mejor.

Imagen ejemplo condicionales y expresiones logicas ABAP

En la imagen anterior se muestran varios ejemplos simples (negación, enlaces AND y OR con paréntesis, y negación antes de condiciones lógicas) de utilizar la sentencia IF.

Puede formular negaciones situando el operador NOT antes de la expresión lógica. Cuando niegue la consulta IS INITIAL, puede utilizar la consulta especial IS NOT INITIAL.

 

Consejo:

Una sentencia «IF NOT var IS INITIAL» es una sentencia válida también (sintaxis correcta). Sin embargo, para mejorar la legibilidad del código de programación, SAP recomienda no utilizar esta sentencia/sintaxis.

 

Podemos anidar las estructuras IF y CASE de cualquier forma, pero asegúrese de que la lógica de cada estructura sea correcta. Cada estructura debe estar cerrada, por ejemplo:

IF <log. condition1> . …

IF <log. condition2> . .. .

ENDIF.

ENDIF.

 

Resumen, estas son algunas de las sentencias ABAP esenciales, las que hemos visto se encuentran dentro de la programación estructurada y son elementales desarrollo SAP/ABAP.

Esto ha sido todo por hoy, próximamente más!!

Publicado por admin en Blog

Tipos de datos SAP ABAP

Los tipos datos en el estándar ABAP al igual que en casi cualquier lenguaje de 2 formas. Se puede clasificar por el tipo de dato y por el uso en la programación.

 

Los tipos de datos SAP ABAP estándar (por tipos de datos integrados) se dividen en dos grupos:

  • Completo.
  • Incompleto.

 

Tipos de datos estándar ABAP completos

Es importante saber que los tipos de datos estándar ABAP integrados que ya contienen una especificación según el tipo y de longitud fija se consideran un tipo de datos completo.

Tipos de datos estándar ABAP completos Tipos estándar Descripción
D Tipo para fecha (D), formato: AAAAMMDD, longitud 8 (fija)
T Tipo para hora (T), formato: HHMMSS, longitud 6 (fija)
I Tipo para entero (I), longitud 4 (fija)
F Tipo para número de punto flotante (F), longitud 8 (fija)
STRING Tipo para cadena de caracteres de longitud dinámica
XSTRING Tipo para secuencia de bytes de longitud dinámica (cadena heXadecimal)
DECFLOAT16 Tipo para grabar números (puntos DECIMALES FLOTANTE) con mantisa y exponente, longitud 8 bytes con 16 lugares decimales (fijo) (desde 7.0 EhP2)
DECFLOAT34 Tipo para grabar números (puntos DECIMALES FLOTANTE) con mantisa y exponente, longitud 16 bytes con 34 lugares decimales (fijo) (desde 7.0 EhP2)

 

 

Tipos de datos estándar ABAP incompletos

Los tipos estándar incompletos al contrario que los completos no contienen una longitud fija . Si se utilizan para definir objetos de datos, será necesario especificar la longitud de la variable.

Tipos de datos estándar ABAP incompletos. Descripción
C Tipo para cadena de caracteres (Carácter) para la que se debe especificar la longitud
N Tipo para cadena de caracteres numérica (carácter Numérico) para la que se debe especificar la longitud
X Tipo para secuencia de bytes (cadena heXadecimal) para la que se debe especificar la longitud
P Tipo de número empaquetado (número Empaquetado) para la que se debe especificar la longitud (En la definición de un número empaquetado, el número de puntos decimales también puede especificarse).

 

 

Tipos de datos SAP ABAP en su uso en la programación también se dividen en dos grupos:

  • Tipos de datos locales .
  • Tipos de datos globales.

 

Declaración de tipos locales

Mediante los tipos estándar, puede declarar tipos de datos locales en el programa, que pueden ser más completos o más complejos que los tipos de datos estándar subyacentes. Los tipos de datos locales solo existen en el programa en cuestión y, por consiguiente, solo se pueden utilizar allí. La declaración se realiza mediante la sentencia TYPES.

 

Consejo:

Existe una sintaxis alternativa para especificar la longitud con el suplemento LENGTH que encontrará en programas antiguos.

La longitud se especifica entre paréntesis directamente después del nombre del tipo como en el siguiente ejemplo:

 

TYPES gty_c_type(3) TYPE c.

TYPES gty_p_type(3) TYPE p DECIMALS 2.

 

Para mejorar la legibilidad del programa, no utilice esta sintaxis  (ojo en la longitud).

 

Tipos de datos globales.

Tipos de datos globales del Dictionary.

Un tipo de datos definido en el Dictionary ABAP se llama global, ya que puede utilizarse en todo el sistema SAP en cuestión.

En esta lección, solo aprenderá cómo los elementos de datos se usan como tipos de datos para los objetos de datos elementales.

 

Definición de objetos de datos variables

Definición de objetos de datos

Categorías de tipos de datos:

  • Integrado.
  • Local.
  • Global.

 

Estos tipos se utilizarán para definir variables (objetos de datos).

Los objetos de datos siempre se definen con la palabra clave DATA. Puede utilizar un tipo estándar, un tipo local o un tipo global ABAP para definir un objeto de datos.

Puede consultar un objeto de datos ya definido al definir variables adicionales (suplemento LIKE).

 

Importate:

Para que el código sea más legible, SAP recomienda utilizar convenciones para fijar nombres para los nombres de los tipos autodefinidos (declarados con la sentencia TYPES «Locales») o de las variables (declaradas con la sentencia DATA).

Utilización  Prefijo
 Tipo Global*  gty_
 Variable Global*  gv_
 Tipo Local**  lty_
 Variable Local**  lv_

 

Ejemplos de definición de objetos de datos elementales.

Puede utilizar el suplemento VALUE para asignar previamente el valor de un objeto de datos elemental.

 

Consejo:

En la sentencia DATA, también tiene la opción de especificar la longitud entre paréntesis después del nombre de la variable, como en el siguiente ejemplo:

DATA gv_myvar(15) TYPE c.

DATA gv_myvar_p(4) TYPE p DECIMALS 2.

 

Recapitulando, tener claro los tipos de datos y las opciones que ofrece ABAP a través del diccionario de datos es vital a la hora del desarrollo SAP/ABAP.

Esto ha sido todo por hoy, próximamente más!!

Publicado por José Jiménez en Blog
Repository y herramientas Workbench ABAP

Repository y herramientas Workbench ABAP

¿Qué es el Repository SAP?

El Repository consiste en todos los objetos de desarrollo del sistema, como programas, definiciones de tablas, módulo de funciones, etc. Contiene objetos proporcionados por Sap (podríamos llamarlos objetos de serie del programa Sap) y objetos específicos y definidos en exclusiva para ese cliente.

El Repository se encuentra en la base de datos y es independiente de mandante. Estas cualidades nos permiten acceder a un Objeto del Repository desde cualquier mandante y tiene la misma apariencia en cada mandante.

La base de datos además del Repository también contiene datos de aplicación y Customizing, que suele ser dependiente del mandante (sólo se guarda y se asigna a un mandante en particular y sólo los usuarios de este mandante pueden trabajar con el objeto).

El Repository se subdivide según los componentes de aplicación, en lenguaje coloquial se puede decir se subdivide en los diferentes módulos de Sap (MM, CO, FI, HR,…). Pero atención, que se subdividan no significan que sean excluyentes, es decir, en la ramificación de los módulos hay objetos que se comparten entre 2 o más módulos, por lo que se podría decir que pertenece a los dos o a ninguno (según veamos el vaso).

 

¿Qué es Workbench ABAP?

El Workbench de ABAP es el conjunto de todas las herramientas necesarias para crear y tratar objetos de desarrollo del Repository.

Hasta la fecha está compuesto por las siguientes y sólo cito las de desarrollo ABAP puro, sin embargo, existen también las del entrono Web. La última es IDE, herramienta que merece un post para ella sola.

  • Editor ABAP, imprescindible para tratar el código fuente.
  • Dictionary ABAP, para tratar definiciones de tabla, estructruras, tipos de datos globales, etc.
  • Screen Painter, para configurar las pantallas (entorno gráfico) y los mensajes de dialogo con los usuarios.
  • Menu Painter, herramienta para diseñar la barra de menú, barra de herramientas de aplicación, barra de herramientas estándar y las teclas de función.
  • La Biblioteca de funciones, para actualizar los módulos de funciones.
  • El generador de clases, para actualizar clases e interfaces globales.
  • Debugger, imprescindible para detectar y resolver problemas en la ejecución de un programa.

 

Todas estas herramientas están recogidas en el “contenedor” Object Navigator, al que se puede acceder mediante la transacción SE80, es de las más importantes, si no la que más dentro del entorno de desarrollo ABAP.

desarrollo sap, developer Workbench ABAP, transacción SE80

Esto ha sido todo, ¡¡próximamente más!!

Publicado por José Jiménez en Blog
Arquitectura del sistema ABAP

Arquitectura del sistema ABAP

Arquitectura en capas de SAP

La arquitectura Sap, se basa en el modelo cliente/servidor de capas. Esto es algo que tenemos que tener muy en cuenta para el desarrollo ABAP y en general en cualquier implementación de software.

El modelo puede constar de 3 capas. Presentación, aplicación y base de datos.

En la siguiente imagen se puede ver el proceso de comunicación entre las capas.desarrollo sap, aprende ABAP, arquitectura SAP

Hay que tener en cuenta, que, aunque una capa se suele asociar a una máquina. (Modelo 3 capas = 3 máquinas), no tiene por qué ser así. La distribución técnica del software es independiente de su ubicación física, puede estar todo en una máquina, la capa base de datos, aplicación y presentación y ejecutarlo todo desde la misma máquina. Aunque no es lo habitual conviene tenerlo en cuenta por si en una pyme o en algún entorno de desarrollo nos lo encontramos, no nos pille por sorpresa.

Antes de continuar debemos saber en qué consiste cada capa, para asentar los conceptos y poner interpretar correctamente el flujo de trabajo en SAP.

Seguir leyendo →

Publicado por José Jiménez en Blog
¿Qué es ABAP?

¿Qué es ABAP?

¿Sabes lo que es ABAP?

Como algunos ya sabréis, ABAP es un lenguaje de programación de alto nivel en el que se ha desarrollado la base del software SAP. Hasta el momento es el lenguaje dominante en el sistema y probablemente lo siga siendo muchos años, aunque la tendencia, como explico más adelante está cambiando.

Os preguntareis ¿Por qué estos alemanes, de la multinacional SAP AG, que tiene su propio lenguaje de programación, incorporan otro lenguaje? La explicación es simple, la incorporación de otro lenguaje a SAP se da por necesidad. ABAP que recordemos que es un lenguaje exclusivo de la aplicación SAP, (no se puede programar algo en ABAP que funcione fuera de SAP), junto con las políticas de SAP de centralizar todos los procesos productivos de la empresa en un único software, no han dejado otra opción que para la comunicación entre SAP y otros softwares externos utilizar un lenguaje “catalizador” y por potencia y proyección de futuro, el elegido fue Java.

En el lenguaje ABAP en el que están programadas todas las aplicaciones y rutinas de negocios SAP (ERP, CRM, SRM, SCM, …), el grueso del software.

¿Lenguaje Java en SAP?

El lenguaje Java o J2EE se utiliza principalmente para las funciones de integración entre aplicaciones y procesos, desarrollo de aplicaciones, interfaz de usuario basada en Web, diseño de aplicaciones sencillas basada en un concepto de consumo de servicios, registro para consumo de servicios Web compatible con UDDI para SOA y las nuevas herramientas de modelado, ejecución y monitoreo de procesos.

El primer acercamiento de SAP con Java se dió a través del componente de interoperatibilidad (middleware) y ejecución de funcionalidad remota conocido como SAP Java Connector (JCo). Este permite la ejecución en Java de funciones encapsuladas en el ambiente ABAP, conocidos como BAPIS, a través de la interfaz de comunicación remota de SAP Remote Function Call (RFC).

Bueno tras esta chapa de terminología y conceptos que tenía que citar (creerme cuando que he sido bueno) y sólo he limado la superficie, debéis quedaros con lo esencial. ABAP es el lenguaje de SAP por antonomasia, pero que incorpora otro lenguaje que como es Java para la comunicación entre SAP y otras aplicaciones no SAP.

Espero que os haya servido esta pequeña introducción, para ir adquiriendo una visión global del programa y el lenguaje SAP/ABAP, próximamente más!!

Publicado por José Jiménez en Blog