7 campos de sistema que debes conocer si eres programador ABAP

martes, 15 de julio de 2014

Los campos de sistema sy son variables internas que SAP carga en memoria cada vez que se ejecuta un programa. Da igual que no las hayamos declarado en ningún punto del programa, siempre están disponibles para ser utilizadas. Por lo tanto, si estamos programando y las necesitamos bastará con incluirlas en nuestro código ABAP.



campos de sistema
Sobre una imagen de PublicDomainPictures

Clasificación de campos de sistema

Estos campos se subdividen en:

1. Campos generales de información de sistema.
2. Campos de programación ABAP.
3. Campos internos de sistema.
4. Campos obsoletos.

Campos de sistema

De entre el grupo de campos de sistema que existen los que más normalmente he llegado utilizar y que creo que son más interesantes son los siguientes.

1. Campo sy-subrc
Nos indica si el resultado de la anterior sentencia ejecutada se ha procesado correctamente o no. Cuando el resultado es correcto entonces toma un valor '0', pero si no es así tomará un valor diferente a '0'. Es muy útil en selecciones de datos sql o en excepciones de módulos de funciones.

sy-subrc de select

El resultado de un select como el que se ve en pantalla siempre imprimirá el texto 'Correcto'. ¿Por qué? Porque la búsqueda de la transacción SE38 en la tabla de transacciones TSTC devolverá un registro y, por lo tanto, la variable sy-subrc tomará el valor '0'.

2. Campo sy-ucomm
Un campo sy-ucomm devuelve el valor del último código de función pulsado en pantalla. Sirve para determinar cómo el usuario interactúa en cada pantalla de un programa. Su valor suele traspasarse a una variable llamada ok_code y, a partir de ella, tratarla. Por ejemplo, cuando un usuario pulsa una opción de un menú sy-ucomm se informará con el código de función de esa opción para poder realizar la función correspondiente. Es un campo es muy utilizado en la programación de modulpools y dynpros.
3. Campo sy-datum
Guarda siempre el valor de la fecha actual en formato AAAAMMDD (año mes día). Junto a ella también se puede mencionar la variable sy-uzeit que contiene el valor de la hora actual. Es útil en la programación de reports cuando queremos mostrar claramente fecha y hora de ejecución de un informe.

4. Campo sy-tabix
Incorpora el número de registro de una tabla interna en el cual nos encontramos cuando estamos en un bucle loop...endloop. Es útil si, por ejemplo, sólo queremos mostrar un determinado número de registros de una tabla interna.

5. Campo sy-batch
Indica si el programa se está lanzando en modo on-line o en proceso de fondo. Cuando esté llene indicará que el programa está en proceso de fondo. A veces queremos controlar que un determinado programa no se lance nunca on-line. Entonces, ésta será la variable a utilizar.

6. Campo sy-msgid
Contiene el valor de una clase de mensaje. Suele utilizarse en combinación con los campos de sistema sy-msgno, sy-msgv1, sy-msgv2, sy-msgv3 y sy-msgv4. Sin duda, más de una vez habréis visto que cuando escribís una función a través de la opción modelo del editor (Ctrl+F6) aparecen después de una sentencia sy-subrc estas seis variables. Eso es para controlar las excepciones del módulo de funciones. Si como resultado de la función se genera una excepción entonces podremos utilizar estas variables para determinar de qué excepción se trata.

message sy-msgid


7. Campo sy-cucol
Al posicionar el cursor en la pantalla la variable sy-cucol guarda el valor de la posición horizontal. Se usa juntamente con el campo sy-curow. Entre ambos nos permitirá determinará el valor del campo que el usuario está marcando en la pantalla.

Podéis encontrar un listado completo de campos de sistema en ABAP System Fields. La declaración de todos ellos se encuentra en la tabla de diccionario SYST.

No hay comentarios:

Publicar un comentario