W Pub: ABAP Curso Parte 1

Parte I

Utilizaremos los listados (report) cuando deseemos crear un programa ejecutable, con o sin intervencin del usuario, con o sin salida de datos, con o sin proceso por lotes.

Declaracin de Variables
Una variables no es ms que una zona de memoria donde se va a almacenar la informacin de una forma temporal. Para ello SAP utiliza la sentencia DATA. Tambin nos podremos crear nuestro propios TYPE de datos. E incluso definir constantes cuyo valor ser inamovibles a lo largo del programa. Para borrar las variables podemos utiliza la sentencia clear, refresh y free.

CONSTANTS: EQUIX(1) VALUE 'X'.
DATA: SINO(1) VALUE EQUIX,
      MIVAR TYPE I,
      MONEDA LIKE BSEG-WAERS,
      BEGIN OF COPIABSEG OCCURS 0 TIMES WITH HEADER LINE.
      INCLUDE STRUCTURE BSEG.
DATA: END OF COPIABSEG.
CLEAR: MIVAR.
REFRESH: COPIABSEG.

Declaracin de Tablas
SAP es un paquete orientado a la entrada y salida de informacin y por lo tanto es necesario disponer de unos centros de almacenado de dicha informacin, que son conocidos como tablas. Para poder acceder a una de estas tablas, bastar con declararlas con un TABLES, ms adelante, veremos como sacarle provecho.

TABLES: BSEG, BKPF.

Asignacin de valores
Existen varias formas de asignar los valores, el ms sencillo es invocndolo con el smbolo '=' o tambin podemos utilizar la sentencia MOVE o para estructuras de datos la sentencia MOVE-CORRESPONDING. Otra forma mover valores es con la sentencia WRITE ... TO ..., esta se utiliza cuando se tienen que mover numricos tipo P o cuando se quiere trabajar con iconos.

DATA: MIVAR(12)  DEFAULT 'JOHN',
      MIVAR2(12) DEFAULT 'DOE',
      MIVAR3 LIKE MIVAR2.
WRITE SPACES TO MIVAR3.
MOVE  MIVAR TO MIVAR3.
MOVE  MIVAR2 TO MIVAR.
MIVAR2 = MIVAR3.

Escritura por pantalla
Ahora es el momento de escribir los datos por la pantalla, para ello utilizaremos la sentencia WRITE.

Para hacer que nuestra escritura sea ms bonita, podemos utilizar los FORMAT o instrucciones predeterminadas del estilo: SUMMARY y DETAIL

DATA CADENA(30).
CADENA = 'Hola Mundo'.
WRITE CADENA FORMAT COLOR 4 HOTSPOT.
WRITE SY-DATUM DD/MM/YY.
WRITE BSEG-WRBTR CURRENCY MONEDA

Operaciones
Matemticas

Resulta muy comn que nuestro programa realice operaciones matemticas, para ello contamos con las ya habituales directivas:

+, ADD, ADD-CORRESPONDING

DATA: VAR01 TYPE I,
      VAR02 TYPE I.
VAR01 = 12.
ADD VAR01 TO VAR02. "VAR02 = 12.
''o''
VAR02 = VAR02 + VAR01.

-, SUBTRACT, SUBTRACT-CORRESPONDING

SUBTRACT 10 FROM VAR02. "VAR02 = 2.
''o''
VAR02 = VAR02 - 10.

\*, MULTIPLY, MULTIPLY-CORRESPONDING

MULTIPLY VAR02 BY 6. "VAR02 = 12.
''o''
VAR02 = VAR02 * 6.

/, DIVIDE, DIVIDE-CORRESPONDING

DIVIDE VAR02 BY 2. "VAR02 = 6.
''o''
VAR02 = VAR02 / 2.

COMPUTE

COMPUTE VAR02 = VAR02 + ( VAR02 * 2) - 6.
''o''
VAR02 = VAR02 + ( VAR02 * 2) - 6.

PACK y UNPACK

DATA: CANTIDAD TYPE P VALUE 12500,
      CADENA(12).
UNPACK CANTIDA TO CADENA. "CADENA = 000000012500

Cadenas

Tambin disponemos de otras directivas para poder trabajar con las cadenas de caracteres, de esta forma podemos:

CONCATENATE

DATA: CADENA01(20) VALUE 'Jhon',
      CADENA02(20) VALUE 'Doe'.
CONATENATE CADENA02 ',' CADENA01 INTO CADENA02 SEPARATED BY ' '.
"CADENA02 = 'Doe               , Jhon             '.

CONDENSE

CONDENSE CADENA02. ""CADENA02 = 'Doe , Jhon'.

SPLIT

SPLIT CADENA02 BY ',' INTO CADENA02, CADENA01. "Queda igual que al principio

SHIFT

CONCATENATE '-->' CADENA01 CADENA02 INTO CADENA02 SEPARATED BY ' '.
SHIFT CADENA02 LEFT DELETING LEADING '-'. "CADENA02 = '>Jhon Doe'
SHIFT CADENA02 LEFT. "CADENA02 = 'Jhon Doe'

REPLACE

REPLACE 'Jhon' BY 'Jane' INTO CADENA02. "CADENA02 = 'Jane Doe'

TRANSLATE

TRANSLATE CADENA02 TO UPPER CASE. "CADENA02 = 'JANE DOE'.
TRANSLATE CADENA02 USING ' #'. "CADENA02 = 'JANE#DOE'.

OVERLAY

SEARCH

SEARCH '#' FOR CADENA02.

CHECK SY-SUBRC = 0. "SY-FDPOS = 4.

Tambin disponemos de herramientas de desplazamientos para situarnos dentro de nuestras cadenas. As pues si tenemos una variable declarada podemos acceder a la tercera posicin mediante la instruccin variable+<segmento>(<desplazamiento>) donde el segmento ser el primer carcter a situarnos y desplazamiento el nmero de caracteres que vamos a seleccionar.

Interactividad con el usuario
Muchas veces es necesario recoger informacin que nos da el usuario y cuando de un report se trata, la nica forma de hacerlo es mediante una pantalla previa a la ejecucin del programa. Simplemente poniendo tres directivas podremos construir pantallas lo suficientemente complejas, pero de diseño sencillos. Para ello utilizaremos:

  • PARAMETERS, para cuando slo necesitamos un valor
  • SELECT-OPTIONS, para cuando necesitamos varias selecciones, incluso rangos.

Y para ponerles adornos (marcos, ttulos, comentarios, saltos de lnea) utilizaremos:

Mediante la segunda opcin, SELECT-OPTIONS, podemos hacer selecciones mltiples, y en la pantalla al lado de nuestro campo de entrada nos saldr un icono donde se nos abrir otra pantalla (como la que se muestra bajo estas lineas) dndonos la posibilidad para entrar dichos datos.