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.
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
+, 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 VAR02 = VAR02 + ( VAR02 * 2) - 6. ''o'' VAR02 = VAR02 + ( VAR02 * 2) - 6.
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:DATA: CADENA01(20) VALUE 'Jhon', CADENA02(20) VALUE 'Doe'. CONATENATE CADENA02 ',' CADENA01 INTO CADENA02 SEPARATED BY ' '. "CADENA02 = 'Doe , Jhon '.
CONDENSE CADENA02. ""CADENA02 = 'Doe , Jhon'.
SPLIT CADENA02 BY ',' INTO CADENA02, CADENA01. "Queda igual que al principio
CONCATENATE '-->' CADENA01 CADENA02 INTO CADENA02 SEPARATED BY ' '. SHIFT CADENA02 LEFT DELETING LEADING '-'. "CADENA02 = '>Jhon Doe' SHIFT CADENA02 LEFT. "CADENA02 = 'Jhon Doe'
REPLACE 'Jhon' BY 'Jane' INTO CADENA02. "CADENA02 = 'Jane Doe'
TRANSLATE CADENA02 TO UPPER CASE. "CADENA02 = 'JANE DOE'. TRANSLATE CADENA02 USING ' #'. "CADENA02 = 'JANE#DOE'.
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:
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.