Está en la página 1de 177

ABAP WORKSHOP

Versin 2.0 Xioma Centroamrica 2009

______________________________________________________________________________________ Xioma Consulting 1

Introduccin
ABAP (Advanced Business Application Programming), o ABAP/4 es un lenguaje de programacin desarrollado por la empresa alemana SAP (Systeme, Anwendungen, Produkte in der Datenverarbeitung)1. Los alcances del lenguaje ABAP se han ampliado segn se ha ido desarrollando el escenario de desarrollo de software. Han sido actualizaciones peridicas, como la reciente adicin de

instrucciones orientadas a objetos dentro del lenguaje. ABAP fue desarrollado en la dcada de los 80 a partir de una investigacin que produjo toda una serie de lenguajes de cuarta generacin de aplicacin especfica y cuyo objetivo apuntaba a la produccin de alto nivel de reportes. Fue incluido al producto SAP R/2. El objetivo de ste

producto era brindar una aplicacin de negocios en mainframe para grandes corporaciones para la administracin de materiales, finanzas y contabilidad. Originalmente se supona que los usuarios del lenguaje de programacin serian usuarios, que pudieran manipular la informacin por s mismos, pero el lenguaje result ser demasiado complejo para usuarios ordinarios, haciendo necesario que fueran programadores quienes lo manipularan debido a que se requera de una alta destreza. Segn fueron disminuyendo las

consideraciones de desempeo, el lenguaje empez a convertirse en un componente central del sistema SAP. En los 90, SAP empez a convertir todo el cdigo clave del SAP R/3 a ABAP, de tal forma que para el ao 2003 el proyecto SAP se basaba ya en ABAP para las funciones ms bsicas.

Systems, Applications & Products in Data Processing

______________________________________________________________________________________ Xioma Consulting 2

Arquitectura de SAP
El sistema R/3 posee una arquitectura de software modular que sigue los principios de la arquitectura Cliente/Servidor. El modelo en 3 capas compuesto por una capa de presentacin, una de aplicacin y una de base de datos; pueden estar alojadas en diferentes computadores sirviendo esto como base para la escalabilidad del sistema.

Capa de presentacin: Esta es la capa donde se ejecuta la interfase de usuario (SAPGUI) para brindar el acceso a las aplicaciones por parte de los usuarios finales. Capa de Aplicacin: Es en esta capa donde se ejecuta ABAP, tanto las aplicaciones desarrollas por SAP como las desarrolladas por los usuarios. Desde esta capa ABAP envia y recibe datos a la capa de base de datos. Capa de Base de datos: Este es el nivel ms bajo en el modelo, y es donde se administra la informacin con la ayuda del sistema de administracin de base de datos relacional (RDBMS). Este nivel almacena no solamente datos maestros y transaccionales, sino tambin los programas y metadatos que describen el sistema R/3 son administrados y almacenados aca. Toda la distribucin tcnica del software es independiente de la ubicacin fsica del hardware, tanto vertical como horizontalmente.

______________________________________________________________________________________ Xioma Consulting 3

Composicin de un programa ABAP


Cdigo fuente
Contiene todas las sentencias ABAP.

Pantallas
Contiene toda la disposicin de pantallas y la lgica de flujo asociada a las mismas. Normalmente se crea la disposicin de pantallas utilizando una herramienta llamada screen painter o desde el ABAP Workbench. Sin embargo existen pantallas especiales, como el selection screen y los reportes, que poseen una disposicin y lgica que se controla nicamente a travs de sentencias ABAP.

Interfase
Contiene todas las opciones de los mens, la barra estndar de herramientas, la barra de herramientas de aplicacin y los botones. Contiene tambin los ttulos y status.

Elementos de Texto
Estos son dependientes del idioma. Puede ser traducidos directamente desde la herramienta de mantenimiento de textos o utilizando una herramienta especial de traduccin.

Documentacin
La documentacin es dependiente del idioma. Es importante recordar escribir la documentacin orientada al usuario. En caso de querer documentar cdigo, se hace a travs de comentarios en el cdigo directamente.

Variantes
Las variantes permiten predefinir valores en la pantalla de seleccin (selection screen) de los programas. Esto suele ser muy til durante los periodos de prueba o para la ejecucin de tareas repetitivas.

______________________________________________________________________________________ Xioma Consulting 4

Editor
El editor ABAP se invoca a travs de la transaccin SE38, o por la ruta del men SAP HERRAMIENTAS->WORKBENCH ABAP->DESARROLLO->SE38 - EDITOR ABAP.

Imagen Inicial

En la imagen inicial del editor se indica el nombre del programa que se desea tratar, y cuenta con las siguientes opciones en la barra de herramientas:

______________________________________________________________________________________ Xioma Consulting 5

1. Verificar Esta opcin se encarga de revisar la sintaxis del programa.

2. Activar La activacin ejecuta una revisin sintctica, almacena y posteriormente deja disponible al programa para ser ejecutado en el ambiente del R/3. 3. Ejecutar Ejecuta el programa. 4. Referencia de Utilizacin Las referencias de utilizacin sirven para identificar otros objetos del ambiente que utilicen el programa indicado.

5. Anlisis de Entorno Verifica todos los objetos de repositorio a la cual se les hace referencia dentro del programa. 6. Manual Online Invoca la ayuda de ABAP disponible en lnea en el sistema.

______________________________________________________________________________________ Xioma Consulting 6

7. Borrar Elimina el programa, y otros componentes que formen parte del mismo de serle indicado.

8. Copiar Crea una copia del programa con otro nombre.

9. Renombrar Cambia el nombre del programa.

10. Debugging Ejecuta el programa a travs del de la herramienta de Debugging

______________________________________________________________________________________ Xioma Consulting 7

11. Con Variante Ejecuta el programa con una variante creada con la opcin de variantes.

12. Variantes Crea una variante para el programa, siempre y cuando el programa reciba algn tipo de parmetro de entrada.

______________________________________________________________________________________ Xioma Consulting 8

13. Crear Crea el programa e invoca el editor de cdigo.

14. Visualizar Invoca el editor de cdigo en modo de solo visualizacin.

15. Modificar Invoca el editor de cdigo para modificar un programa que ya existe.

______________________________________________________________________________________ Xioma Consulting 9

Editor de Cdigo
El editor de Cdigo es el ambiente donde se encuentran las herramientas bsicas de desarrollo y donde se introduce el cdigo ABAP.

La barra del editor contiene las siguientes herramientas:

1. Objeto Anterior Se desplaza al objeto anterior cuando existe ms de un objeto en la lista de objetos. 2. Objeto Siguiente Se desplaza al objeto siguiente en la lista de objetos cuando existe ms de un objeto en la lista de objetos.

3. Visualizar <-> Modificar Cambia el estado del editor entre modo de visualizacin o modo de modificacin. 4. Activo <-> Inactivo Cambia el estado del programa entre activo e inactivo.

______________________________________________________________________________________ Xioma Consulting 10

5. Otro Objeto sta opcin permite cambiar el objeto actual por otro que se desee editar. Se divide en varias categoras de las cuales las ms importantes son: diccionario de datos, bibliotecas de clases, programa y grupo de funciones.

6. Verificar sta opcin se encarga de revisar la sintaxis del programa. 7. Activar La activacin ejecuta una revisin sintctica, almacena y posteriormente deja disponible al programa para ser ejecutado en el ambiente del R/3. 8. Verificar (Ejecutar) Ejecuta el programa. 9. Referencia de Utilizacin Las referencias de utilizacin sirven para identificar otros objetos del ambiente que utilicen el programa indicado. 10. Visualizar Lista de Objetos Ejecuta el ABAP Development Workbench donde se muestran los objetos relacionados con el programa. 11. Visualizar Ventana de Navegacin Muestra la ventana de navegacin que consiste en una pila con los ltimos objetos revisados.
______________________________________________________________________________________ Xioma Consulting 11

12. Imagen Completa Muestra la ventana del objeto en revisin maximizada. 13. Ayuda Invoca la ayuda del sistema. 14. Fijar/Borrar Break Point Si el programa se encuentra en modo activo, se fija un Break-point en la lnea actual, que ser ejecutado solamente para el usuario que lo fij. 15. Patrn Inserta una plantilla a partir de la lnea actual. Sobre todo en el caso de la invocacin de funciones o la invocacin del mtodo de un objeto, sta funcin puede ser de gran utilidad para conocer los parmetros que pueden ser utilizados.

16. Pretty Printer Ajusta el formato del cdigo para que sea mucho ms fcil de leer por el usuario.

______________________________________________________________________________________ Xioma Consulting 12

Creacin de un nuevo programa


Los programas en SAP que no pertenecen al estndar deben iniciar su nombre con la letra Z, distinguindose as los programas de usuarios. En la imagen inicial se digita el nombre del programa y se utiliza el botn CREAR. En ste momento se deben llenar las propiedades bsicos del programa en la ventana de atributos.

Entre los tipos de programa que se pueden crear, estn los siguientes:

1. Programa ejecutable Estos son los programas que pueden iniciarse directamente sin cdigo de transaccin y en fondo, desde la transaccin SE38 o la SA38. 2. Modulpool para dynpros2 SAP Screen Painter Contiene pasos para procesar mdulos de dynpro de las transacciones y slo puede llamarse mediante un cdigo de transaccin o una funcin de men.

Un dynpro se suele llamar una pantalla de SAP ______________________________________________________________________________________ Xioma Consulting 13

3. Report de Include Contiene un cdigo de programa que no puede ejecutarse por s slo. Esta parte de programa puede incluirse en otro programa mediante la instruccin INCLUDE. 4. Pool de subrutinas Contiene partes de programa (FORM) que pueden ser invocadas desde instrucciones PERFORM externas. 5. Grupo de funciones Contiene mdulos de funciones. Estos grupos y mdulos se administran en la biblioteca de funciones, que se invoca por medio de la transaccin SE37. 6. Pool de interfaces Contiene interfaces. El generador de clases gestiona las interfaces y las clases. 7. Pool de clases Contiene clases. El generador de clases gestiona las interfaces y las clases.

El status del programa indica, si se trata de un programa productivo, de test o de sistema. Dependiendo de esta propiedad se genera cierto tipo de control en la administracin de los programas. La propiedad de grupo de autorizaciones indica a que grupo ha sido asignado el programa, sirviendo como referencia para validar los derechos que un usuario pueda tener sobre el programa. El sistema verificar si el usuario pertenece a este grupo de autorizaciones:

Antes de lanzar o editar un programa Al actualizar los atributos Al utilizar otra utilidad del desarrollo de programas

Al ejecutar la opcin de grabar, es necesario indicar la clase de desarrollo a la que pertenece el programa, o definirlo como un objeto local.

Las clases de desarrollo agrupan a los objetos que pertenecen al ABAP Workbench. La asignacin a una clase de desarrollo se indica en el catlogo de objetos. Los objetos locales pertenecen a la clase de desarrollo $TMP (Objeto Local) y no son transportables.
______________________________________________________________________________________ Xioma Consulting 14

Una vez seleccionada la clase de desarrollo, si sta no es local, el sistema procede a solicitar una orden de transporte vlida a la que se encontrar atado el programa. Esta puede ser una orden ya existente o una orden nueva. Las rdenes de transporte pueden ser revisadas y editadas por medio de la transaccin SE09.

Para crear la orden se oprime el botn de crear , posteriormente se le asigna la descripcin a la nueva orden y se graba . El sistema asignar automticamente un nmero para la orden de transporte y otro para la nueva tarea vinculada al programa.

______________________________________________________________________________________ Xioma Consulting 15

Programa Hola Mundo


Los programas tipo REPORT son el tipo ms bsico, y se utilizan primordialmente para la generacin de reportes, batch inputs 3 e interfases. Un ejemplo de un programa tipo REPORT es el siguiente:

REPORT ZHOLA no standard page heading. WRITE 'Hello World!'.

Todos los programas ejecutables deben iniciar con la instruccin REPORT <Nombre del programa>, el parmetro adicional NO STARNDARD PAGE HEADING elimina del reporte la lnea que imprime el ttulo del reporte. Para imprimir un texto en la pantalla se utiliza la instruccin WRITE <string>. Una vez finalizado el programa es necesario activarlo y posteriormente puede ser ejecutado .

Programas de carga., usualmente a partir de archivos planos. ______________________________________________________________________________________ Xioma Consulting 16

Transport Organizer
El Transport Organizer permite la administracin de las rdenes de transporte de un usuario.

Con la opcin de visualizacin se puede ver la lista objetos locales y aquellos que se encuentren en una orden de transporte esperando a ser liberados. Las rdenes que pertenecen a la clase Workbench incluyen todos los objetos relacionados con el desarrollo de aplicaciones. En el caso de las rdenes de Customizing, stas contienen a los objetos generados por los cambios en la parametrizacin del sistema. Existen dos estados posibles para las ordenes, las liberadas que son aquellas ordenes que estn listas para ser transportadas a otro mandante y las modificables que son aquellas ordenes que estn esperando una liberacin. Las rdenes liberadas pueden ser visualizadas desde una fecha especfica.

______________________________________________________________________________________ Xioma Consulting 17

Para liberar la orden, se debe liberar primero todas las tareas incluidas en la orden de transporte y posteriormente la orden. Se libera un objeto a la vez, seleccionndolo y pulsando el botn LIBERAR DIRECTAMENTE . Solamente se pueden liberar las ordenes propias, por lo que si fuera necesario liberar una tarea o una orden que perteneciera a otro usuario es necesario reasignarla utilizando el botn MODIFICAR TITULAR .

______________________________________________________________________________________ Xioma Consulting 18

Eventos
ABAP es un lenguaje estructurado orientado a eventos, los cuales se disparan dependiendo de una condicin. El cdigo dentro de cada evento se ejecuta siguiendo el clsico comportamiento TOP-DOWN. Los eventos ms utilizados se presentan a continuacin en el orden que son ejecutados:

LOAD-OF-PROGRAM
Este evento se ejecuta justamente despus de que el sistema ha cargado un programa de tipo 1, M, F o S en memoria. Siendo este bloque ejecutado nicamente una vez por cada programa en cada sesin interna.

INITIALIZATION
Este evento se ejecuta antes de que se muestre la pantalla de seleccin. Normalmente es utilizado para inicializar valores clave para la ejecucin del programa. Sintaxis:
INITIALIZATION. <inicializacin de variables>

Ejemplo:
PARAMETERS QUAL_DAY TYPE D DEFAULT SY-DATUM. INITIALIZATION. QUAL_DAY+6(2) = '01'. QUAL_DAY = QUAL_DAY - 1.

START-OF-SELECTION
Se puede interpretar como el evento principal y es ejecutado justo despus del evento SELECTION-SCREEN. Sintaxis:
START-OF-SELECTION. <Cdigo a ejecutar> END-OF-SELECTION.

Ejemplo:
START-OF-SELECTION. WRITE Hola Mundo!. END-OF-SELECTION. ______________________________________________________________________________________ Xioma Consulting 19

END-OF-SELECTION
Se procesa despus de que toda la informacin se ha ledo, y justo antes de que se muestre la impresin del reporte.

TOP-OF-PAGE
Se ejecuta antes de que se imprima informacin en la primera pgina de un reporte. De esta forma permite la creacin de una cabecera definida por el programador siempre que se haya suprimido la cabecera estndar (REPORT <NOMBRE> NO STANDARD PAGE HEADING).

AT SELECTION-SCREEN
Este evento solamente tiene sentido en los reportes. El evento se disparar una vez que se haya procesado la pantalla de seleccin. En el caso que se genere un error todos los campos presentes en la pantalla de seleccin estarn disponibles nuevamente para recibir datos.

Sintaxis:

AT SELECTION-SCREEN. <Cdigo>.

Ejemplo:
Parameters: numero(2).

AT SELECTION-SCREEN. IF NUMERO > 10. message s333(s1) with Nmero mayor que 10'. ENDIF.

______________________________________________________________________________________ Xioma Consulting 20

Definicin de Datos
Tipos de Datos
Los tipos de datos indican el mbito al que pertenece un objeto de datos. Estos pueden ser nativos del sistema, o nuevos tipos de datos definidos por el usuario (ya sea local en un programa o en el diccionario de datos de SAP). En ABAP/4 existen los siguientes tipos de datos estndar: Tipo C N D T X I P F String Xstring Descripcin Texto (Caracter) Texto Numrico Fecha (AAAAMMDD) Hora (HHMMSS) Hexadecimal Entero (Integer) Nmero Empaquetado Nmero de Punto Flotante Cadena de caracteres Secuencia de bytes Tamao 1 1 8 6 1 4 8 8 Valor Inicial Blanco 000 00000000 000000 X00 0 0 0.0 Blanco Blanco

Definicin de Tipos
Es posible la definicin de nuevos tipos de datos utilizando la instruccin TYPES. Al igual que en los tipos de datos estndar los nuevos tipos sern utilizables al crear nuevos objetos de datos y al asignar los tipos a los parmetros formales y smbolos de texto. Sintaxis: TYPES <Nuevo tipo> TYPE <tipo>. Ejemplos:
TYPES Numero TYPE I. TYPES: BEGIN OF PERSONA, NOMBRE(20) TYPE C, EDAD TYPE I, END OF PERSONA.

______________________________________________________________________________________ Xioma Consulting 21

Comentarios
Los comentarios se utilizan para documentar el cdigo, y de esta manera ayudar a mejorar su interpretacin. Existen dos tipos de comentarios en ABAP: 1. Lnea Completa: Este se activa al colocar el smbolo * en la primera posicin de la lnea. 2. Al final de la lnea: Se utiliza el smbolo . Ejemplos: *------------------------------------------------------* Autor: * Fecha de creacin * Fecha de Modificacin *-------------------------------------------------------

Contador = Contador + 1. Contador de impresin

Variables
Las variables son valores que puede cambiar en el transcurso de la ejecucin de un programa dependiendo de ciertas condiciones o informacin recibida en un programa. La declaracin de las variables en ABAP se realiza con la instruccin DATA. sta puede ser invocada desde cualquier lugar de un programa ABAP. Sintaxis: DATA <Variable> [TYPE <tipo>]. Ejemplos:
DATA Cumpleaos TYPE D. DATA Nombre(40).

______________________________________________________________________________________ Xioma Consulting 22

Constantes
La instruccin CONSTANTS permite la definicin de objetos de datos estticos declarados en un programa ABAP. stos pueden ser de cualquier tipo definido en el sistema. Sintaxis: CONSTANTS <Constante> [TYPE <tipo>] VALUE <valor>. Ejemplos:
CONSTANTS: CHAR1 VALUE X, INT TYPE I VALUE 99. 'XX', '12', 'FF', 99, 99, '9.99E9', '19950101', '235959',

CONSTANTS: BEGIN OF CONST_REC, C(2) TYPE I VALUE N(2) TYPE N VALUE X TYPE X VALUE I TYPE I VALUE P TYPE P VALUE F TYPE F VALUE D TYPE D VALUE T TYPE T VALUE END OF CONST_REC.

Field Symbols
Los field symbols son nombres simblicos a los que se les asigna un rea de memoria durante el tiempo de ejecucin. Se pueden utilizar en lugar de objetos de datos en las sentencias de ABAP. Para crear un field symbol se utiliza la siguiente sintaxis: Sintaxis:
FIELD-SYMBOLS: <Smbolo1>, <Smbolo1>.

Para asignar la referencia al smbolo creado se utiliza la instruccin ASSIGN: Sintaxis:


ASSIGN <OBJETO> TO <SIMBOLO>.

Ejemplo:
FIELD-SYMBOLS: <E1>. DATA: FECHA LIKE SY-DATUM. START-OF-SELECTION. ASSIGN FECHA TO <E1>. <E1> = '19751130'. WRITE FECHA.

______________________________________________________________________________________ Xioma Consulting 23

Creacin de textos
Se puede crear textos dependientes del idioma o smbolos de texto para todos los programas ABAP. Se asigna un cdigo de tres dgitos <xxx> a cada smbolo de texto. Para accesarlo en el programa se utiliza de la siguiente manera: Sintaxis:
text-<xxx>.

Ejemplo:
WRITE text-t01.

Parmetros
Los parmetros son variables de entrada en un programa tipo REPORT. Estos generan una pantalla automtica de entrada donde los parmetros tienen ciertas caractersticas especiales segn el tipo al que pertenecen.

Parameters
La instruccin PARAMETERS crea una variable de entrada con las mismas caractersticas que la instruccin DATA. Sintaxis:
PARAMETERS <param>.

Ejemplos:
PARAMETERS Nombre(40).

Select-Options
Select-options indica un parmetro de tipo especial (RANGES) que permite que el usuario defina un conjunto de valores para el parmetro.

______________________________________________________________________________________ Xioma Consulting 24

Controles de Seleccin de Pantalla


Utilizando el comando SELECTION-SCREEN es posible brindar un formato a la pantalla de seleccin en un reporte.

Recuadros y Ttulos
Es posible crear recuadros que encapsulen los parmetros de seleccin y textos. Sintaxis:

SELECTION-SCREEN BEGIN OF BLOCK bloque <WITH FRAME> <TITLE ttulo> <NO INTERVALS>. <Parmetros> SELECTION-SCREEN END OF BLOCK bloque.

Ejemplo:
Report Zejemplo.

*Ejemplo 1 SELECTION-SCREEN BEGIN OF BLOCK EJE_1 WITH FRAME TITLE EJE_1 NO INTERVALS. SELECT-OPTIONS: S_FECHA FOR SY-DATUM. PARAMETERS: P_PARA(20). SELECTION-SCREEN END OF BLOCK EJE_1. *Ejemplo 2 SELECTION-SCREEN BEGIN OF BLOCK EJE_2 WITH FRAME TITLE EJE_2. SELECT-OPTIONS: S_FECHA2 FOR SY-DATUM. PARAMETERS: P_PARA2(20). SELECTION-SCREEN END OF BLOCK EJE_2. *Ejemplo 3 SELECTION-SCREEN BEGIN OF BLOCK EJE_3. ______________________________________________________________________________________ Xioma Consulting 25

SELECT-OPTIONS: S_FECHA3 FOR SY-DATUM. PARAMETERS: P_PARA3(20). SELECTION-SCREEN END OF BLOCK EJE_3.

INITIALIZATION. MOVE EJE 1 TO EJE_1. MOVE EJE 2 TO EJE_2.

El recuadro se genera alrededor del cdigo incluido en el mbito del SELECTION-SCREEN al utilizar la adicin WITH FRAME. En combinacin con el WITH FRAME se puede utilizar la adicin TITLE para agregar un ttulo al recuadro, pero ste no puede superar los 8 caracteres. La adicin NO INTERVALS hace que el SELECT-OPTIONS aparezca dentro del recuadro como un campo nico.

______________________________________________________________________________________ Xioma Consulting 26

Agrupacin de temes
Utilizando el SELECTION-SCREEN es posible agrupar parmetros o textos en una misma lnea, para ello se utiliza la adicin BEGIN OF LINE y END OF LINE. Sintaxis:
SELECTION-SCREEN BEGIN OF LINE. <parmetros / texto> SELECTION-SCREEN END OF LINE.

Ejemplos:

REPORT EJEMPLO2. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: PARAM1(8), PARAM2(8), PARAM3(8). SELECTION-SCREEN END OF LINE.

______________________________________________________________________________________ Xioma Consulting 27

REPORT EJEMPLO2. SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: P_PARAM1(10). SELECTION-SCREEN COMMENT (15) W_NOMBRE. SELECTION-SCREEN ULINE (10). SELECTION-SCREEN PUSHBUTTON (10) W_BOTON USER-COMMAND UCOM. SELECTION-SCREEN END OF LINE. INITIALIZATION. W_NOMBRE = Comentario. W_BOTON = Botn.

Es posible incluir parmetros, botones, comentarios o bloques subrayados como campos de entrada en el mbito del BEGIN OF LINE y END OF LINE. El SELECT-OPTIONS no es permitido dado que la naturaleza de ste es crear mltiples objetos en una sola lnea (la cota inferior y la cota superior).

______________________________________________________________________________________ Xioma Consulting 28

Posicionamiento de temes
Dentro del conjunto de instrucciones posibles para la adicin BEGIN OF LINE se encuentra la opcin POSITION. sta opcin se utiliza para definir la posicin en la lnea definida por el BEGIN OF LINE.

Sintaxis:
SELECTION-SCREEN POSITION <posicin>.

Ejemplo:
SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: PARAM1(8). SELECTION-SCREEN POSITION 20. PARAMETERS: PARAM2(8). SELECTION-SCREEN POSITION 30. PARAMETERS: PARAM3(8). SELECTION-SCREEN END OF LINE.

______________________________________________________________________________________ Xioma Consulting 29

Subrayado
El subrayado puede ser generado en las pantallas de seleccin as como en los reportes ABAP. Sin embargo difieren en su sintaxis.

Sintaxis:
SELECTION-SCREEN UNLINE <formato>

Ejemplos:
SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: P_PARAM1(10). SELECTION-SCREEN ULINE (10). SELECTION-SCREEN END OF LINE.

El formato puede tener la forma POS(TAM) o (TAM).


SELECTION-SCREEN BEGIN OF LINE. PARAMETERS: P_PARAM1(10). SELECTION-SCREEN ULINE 11(3). PARAMETERS: P_PARAM2(10). SELECTION-SCREEN ULINE 26(3). PARAMETERS: P_PARAM3(10). SELECTION-SCREEN END OF LINE.

______________________________________________________________________________________ Xioma Consulting 30

Comentarios
En el SELECTION-SCREEN tambin es posible generar comentarios. Siempre que se utilice el comando COMMENT. Sintaxis:
SELECTION-SCREEN COMMENT <formato> <nombre> FOR FIELD <campo> MODIF ID <id de modificador> VISIBLE LENGHT <lenght>.

Ejemplo:
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (15) W_NOMBRE. PARAMETERS: P_PARAM1(10).

SELECTION-SCREEN END OF LINE. INITIALIZATION. W_NOMBRE = Comentario.

Al igual que con el comando ULINE, es necesario que exista un campo de entrada definido de lo contrario la pantalla de seleccin no ser generada. Si se incluye el parmetro FOR FIELD, entonces el comentario queda oficialmente atado a un campo de entrada.
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT (15) W_NOMBRE FOR FIELD P_PARAM1. PARAMETERS: P_PARAM1(10).

SELECTION-SCREEN END OF LINE. INITIALIZATION. W_NOMBRE = Comentario.

______________________________________________________________________________________ Xioma Consulting 31

Botones
Los botones son utilizados para ejecutar una funcin del usuario dentro del cdigo para interactuar dinmicamente con el usuario. Sintaxis:

SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON fmt name USER-COMMAND ucom. SELECTION-SCREEN END OF LINE.

Ejemplo:
TABLES: SSCRFIELDS. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (10) W_BUTTON USER-COMMAND UCOM. SELECTION-SCREEN END OF LINE. INITIALIZATION. W_BUTTON = 'Botn'. AT SELECTION-SCREEN. IF SSCRFIELDS-UCOMM = 'UCOM'. MESSAGE S333(S1) WITH 'Se ha oprimido el botn'. ENDIF.

Puede notarse en el ejemplo que el botn puede existir por si mismo dado que es un campo de entrada. Cuando se hace click sobre el botn, el campo del sistema SSRFIELDS-UCOMM obtiene el valor del valor que se le ha asignado al botn en su definicin. Entonces se puede hacer una evaluacin de este campo en el evento SELECTION-SCREEN para poder determinar si un ste fue o no oprimido y ejecutar el cdigo que corresponde.
______________________________________________________________________________________ Xioma Consulting 32

Botones en la Barra de Herramientas


Muchos de los reportes estndar de SAP poseen botones en la barra de herramientas junto al botn de ejecucin . Este tipo de botn tambin puede ser utilizado en el momento que se genera la pantalla de seleccin, y se pueden crear en sta hasta cinco botones en el nivel de la barra de herramientas.

Sintaxis:
SELECTION-SCREEN FUNCTION KEY <nmero>.

Ejemplo:
TABLES: SSCRFIELDS. SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (10) W_BUTTON USER-COMMAND UCOM.

SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP 9. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (10) W_BUTTO2 USER-COMMAND UCOW.

SELECTION-SCREEN END OF LINE. INITIALIZATION. MOVE Botn de Aplicacin to SSCRFIELDS-FUNCTXT_01. W_BUTTON = Botn 1. W_BUTTO2 = Botn 2.

______________________________________________________________________________________ Xioma Consulting 33

Al ejecutar el programa, el campo SSCRFIELDS-FUNCTXT_01se asocia al botn 1 de la barra de herramientas en el evento de inicializacin. Este valor es entonces desplegado en el botn en tiempo de ejecucin. Se puede asociar el campo FUNCTXT_02 al botn dos, y as sucesivamente hasta el botn cinco. Algunas variables del sistema son inicializadas cuando se utiliza este comando. El sistema inicializa el campo SSCRFIELDS-UCOMM a FC01 para la tecla de funcin 1, FC02 para la tecla de funcin 2 y as sucesivamente. La variable toma el valor en el momento de realizar el click sobre el botn y puede ser evaluado en el evento AT SELECTION-SCREEN. Para asignar texto al botn que se esta creando, es necesario asegurarse de asignar un texto al campo SSCRFIELDS-FUNCTXT_01 para la tecla de funcin 1, para el campo SSCRFIELDS-FUNCTXT_02 para la tecla de funcin 2, y as sucesivamente. El momento para realizar estas asignaciones es en el evento INITIALIZATION.

______________________________________________________________________________________ Xioma Consulting 34

Lneas en Blanco
Las lneas en blanco permiten dejar espacios en la pantalla de seleccin para facilitar la lectura de sta. Para dejar una lnea en blanco se utiliza el comando SKIP de la misma manera que se hace en un reporte ABAP. Sintaxis:
SELECTION-SCREEN SKIP <nmero de lneas>.

Ejemplo:
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (10) W_BUTTON USER-COMMAND UCOM. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN SKIP 9.

SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (10) W_BUTTO2 USER-COMMAND UCOW. SELECTION-SCREEN END OF LINE. INITIALIZATION. W_BUTTON = 'Botn 1'. W_BUTTO2 = 'Botn 2'.

______________________________________________________________________________________ Xioma Consulting 35

Variables de Ambiente (SY)


SY es una estructura que contiene las variables de ambiente que se modifican en tiempo de ejecucin por el sistema mientras se ejecuta un programa. No es necesario definir la estructura y sta estar disponible desde cualquier parte de un programa.

El siguiente cuadro describe los campos que pueden resultar de uso ms frecuente:

Ejemplo:

Select single * from T001. IF SY-SUBRC EQ 0. WRITE: Existen valores en la tabla T001. ENDIF.

______________________________________________________________________________________ Xioma Consulting 36

Operadores Aritmticos
Existen varias operaciones en el estndar, muchas de stas se pueden conseguir bajo la clusula COMPUTE. Sin embargo en el presente documento solamente se nombraran los operadores aritmticos de uso ms frecuente.

La suma
Para realizar una suma se utiliza el smbolo + o la instruccin ADD. Sin embargo se recomienda utilizar la primera forma del ejemplo por ser ms eficiente. Ejemplo:
A = A + 1. ADD 1 to A.

La Resta
El smbolo - indica la operacin de sustraccin, as mismo es posible la utilizacin de la instruccin SUBSTRACT. Es ms eficiente la utilizacin del smbolo -. Ejemplo:
A = A 1. SUBSTRACT 1 TO A.

La Multiplicacin
La Multiplicacin utiliza el smbolo * o en su defecto puede utilizarse la instruccin MULTIPLY, siendo esta ltima la menos eficiente. Ejemplo:
A = A * 2. MULTIPLY A BY 2.

______________________________________________________________________________________ Xioma Consulting 37

La Divisin
Para la divisin se utiliza el smbolo / o al igual que en los otros casos existe una instruccin equivalente en lenguaje natural llamada DIVIDE siendo esta menos eficiente. Ejemplo:
A = A / 2. DIVIDE A BY 2.

El exponente
Para elevar un valor a una potencia n se utiliza dos veces el smbolo * quedando de la siguiente manera: **. Ejemplo:
A = A ** 2.

______________________________________________________________________________________ Xioma Consulting 38

Instrucciones de Decisin
Las instrucciones de decisin evalan una expresin y en base al valor de verdad que tenga dicha expresin se ejecuta el cdigo que corresponda..

OPERADORES LGICOS o BOOLEANOS


Los operadores lgicos sirven para definir relaciones entre expresiones generando de esta manera nuevos valores de verdad. En la lgica Booleana solamente existen dos valores: VERDADERO o FALSO. Los operadores que existen en ABAP son los siguientes: AND, OR y NOT. Estos operadores respetan las reglas de la lgica Booleana.

Valor 1 Verdadero Verdadero Falso Falso

AND Valor 2 Verdadero Falso Verdadero Falso

Resultado Verdadero Falso Falso Falso

Es posible agrupar las expresiones encerrndolas entre parntesis. Los valores y campos deben separarse utilizando espacios en blanco.
Ejemplo: Incorrecto:
f1 EQ f2 AND (f3 EQ f4).

Correcto:
f1 EQ f2 AND ( f3 EQ f4 ).

______________________________________________________________________________________ Xioma Consulting 39

OPERADORES RELACIONALES
Los operadores relacionales sirven para determinar el valor de verdad entre dos operndos. En ABAP existen los siguientes:

IF
IF evala una expresin lgica. En caso que el valor de la expresin sea verdadera, ejecuta el cdigo que contiene su bloque, de lo contrario continua con el cdigo siguiente. El bloque debe cerrarse con la instruccin ENDIF. Sintaxis:
IF <expresin>. ENDIF. <Cdigo>.

Ejemplo:
IF A GT 10. WRITE:/ A es mayor que 10.

ENDIF. Comparacin de 10 IF A GT 10. IF A LT 20. WRITE:/ A es mayor que 10 y menor que 20.

ENDIF. MENOR QUE 20

ENDIF. MAYOR QUE 10

ELSE (ELSEIF)
Las sentencias que se coloquen despus del ELSE, sern ejecutadas solo si la expresin en la sentencia IF no se cumple. Si se desea hacer otra verificacin si la primera no se cumple, se recomienda utilizar ELSEIF. Se puede colocar tantos ELSEIF como se necesiten.
______________________________________________________________________________________ Xioma Consulting 40

Sintaxis:
IF <expresin>. <Cdigo>. ELSE. <Cdigo>. ENDIF. IF <expresin>. <Cdigo>. ELSEIF. <Cdigo>. ELSEIF. <Cdigo>. ELSE. <Cdigo>. ENDIF.

Ejemplo:
IF A LT 20. WRITE:/ A es menor que 20. ELSEIF A GT 50. WRITE:/ A es mayor que 50. ELSE. WRITE:/ A es mayor o igual a 20 y menor que 50. ENDIF.

CASE
Dependiendo del valor del campo, se ejecutarn diferentes bloques de sentencias de ejecucin. Con la instruccin WHEN especificas las condiciones que se quieren evaluar sobre dicho campo. Sintaxis:
CASE f. WHEN f11 OR f12 ... OR f1n. ... WHEN f21 OR f22 ... OR f2m. ... WHEN OTHERS. . . . ENDCASE.

Ejemplo:
CASE A. WHEN 1 OR 2. WRITE:/ A es igual a 1 o a 2. WHEN 3. WRITE:/ A es igual a 3. WHEN OTHERS. WRITE:/ A tiene un valor diferente a 1,2 o 3. ENDCASE.

______________________________________________________________________________________ Xioma Consulting 41

Instrucciones de Iteracin
A continuacin instrucciones que permiten ejecutar un bloque de sentencias de forma repetitiva, ya sea por cantidad de veces determinada o hasta que se cumpla cierta expresin lgica.

DO
Repite las sentencias encerradas entre el DO y el ENDDO, de forma infinita hasta que es detenido por un EXIT, STOP o REJECT. Tiene dos variaciones: Sintaxis: 1. DO N TIMES. 2. ... VARYING f Ejemplo:
DO. WRITE: / 'SY-INDEX - Begin:', (3) SY-INDEX. IF SY-INDEX = 10. EXIT. ENDIF. WRITE: 'End:', (3) SY-INDEX. ENDDO. DATA COUNT TYPE I. DO 10 TIMES. ADD SY-INDEX TO COUNT. ENDDO.

Permite hacer iteraciones de forma limitada. FROM f1 NEXT f2. Permite hacer iteraciones entre f1 hasta f2.

WHILE
Repite las sentencias encerradas entre el WHILE y el ENDWHILE, mientras se cumpla la expresin lgica asociada. Sintaxis:
WHILE <expresin>. <Cdigo>. ENDWHILE.

Ejemplo:
SEARCH_ME = 23. WHILE NUMBER <> SEARCH_ME. ADD 1 TO NUMBER. WRITE: / NUMBER. ENDWHILE.

______________________________________________________________________________________ Xioma Consulting 42

CHECK
Verifica que la expresin lgica subsecuente es verdadera. Si es as, pasa a la siguiente sentencia, pero si no, sale de la iteracin, si se encuentra en un DO, WHILE, LOOP o SELECT, o sale de la rutina, si se encuentra en un FORM, FUNCTION y MODULE. Sintaxis:
CHECK <expresin>.

Ejemplo:
DO. Contador = contador + 1. CHECK contador LT 10. ENDDO.

En el ejemplo, el CHECK evala la condicin y no permite que se ejecute el resto del cdigo sino hasta que el contador sea mayor que 10.

EXIT
Permite salir de la iteracin, si se encuentra en un DO, WHILE, LOOP o SELECT, o sale de la rutina, si se encuentra en un FORM, FUNCTION y MODULE.

Sintaxis:
EXIT.

Ejemplo:
DO. ENDDO. Contador = contador + 1. IF contador GT 9. EXIT. ENDIF.

______________________________________________________________________________________ Xioma Consulting 43

Despliegue
Existen dos maneras de enviar la informacin en SAP hacia la pantalla y/o impresora. La ms elaborada es la elaboracin de formularios (va Smartforms o SAPScript) y la otra por medio de reportes que se construyen utilizando nicamente instrucciones de ABAP. Las ms utilizadas para generar estos reportes se describen a continuacin.

WRITE
Despliega un valor en la pantalla o en su defecto puede utilizarse para trasladar un valor entre variables (incluso de diferente tipo). Sintaxis:
WRITE <posicin> <(tamao)> <variable/constante>.

Ejemplo:
Write Hola Mundo!.

FORMAT
Se utiliza para modificar el formato de salida de los textos en el reporte controlando el color del fondo del texto y la intensidad del mismo. Sintaxis:
FORMAT <adicin> <ON/OFF>.

Ejemplo:
FORMAT INTENSIFIED ON COLOR = 5. WRITE 'Marca el texto con verde oscuro'. FORMAT INTENSIFIED OFF COLOR = 5. WRITE 'Marca el texto con verde claro'.

ULINE
Esta sentencia imprime una lnea continua por todo el ancho de la salida del reporte. Sintaxis:
ULINE.

Si se desea imprimir una lnea continua pero de un tamao determinado, se puede utilizar la variable del sistema SY-ULINE. Esta variable contiene una lnea continua de 255 caracteres en tiempo de ejecucin.

Ejemplo:
WRITE: / SY-ULINE(80).

______________________________________________________________________________________ Xioma Consulting 44

SKIP
Permite saltar n lneas en una salida de reporte. Si no se indica la cantidad de lneas, solo saltar una lnea. Sintaxis:
SKIP [N].

Ejemplo:
SKIP 5.

STRINGS
En ABAP un string es una cadena de caracteres que se almacenan en una variable vectorial donde la primera posicin ser la cero. Se puede usar el tipo STRING para definir un string de longitud indefinida, as como darle una longitud fija al definirlo como tipo C (char). Ejemplo: DATA: Nombre TYPE STRING, String de longitud indefinida Apellido(40) TYPE C, Cadena de 40 caracteres Apellido2(40). Cadena de 40 caracteres

Substrings
Para manipular el contenido de un string se utiliza el smbolo + para indicar el desplazamiento en el string (de izquierda a derecha) y entre parntesis el tamao del substring. Ejemplo:
DATA: descripcin(40) value Mazanas, Peras y Uvas, Fruta(7). Fruta = descripcin+0(7). * Fruta obtiene el valor Manzanas. Fruta = descripcin+9(5). * Fruta obtiene el valor Peras. Es posible tambin utilizar el substring sin asignarlo a una variable.

IF descripcin+9(5) EQ Peras. Descripcin+9(5) = Fresa. ENDIF.

______________________________________________________________________________________ Xioma Consulting 45

Concatenate
Permite concatenar cadenas de caracteres de distintas variables o textos. Sintaxis: CONCATENATE f1 f2 f3 f4 Ejemplo:
DATA: ONE(10) VALUE ' John ', TWO(3)VALUE 'F.', THREE(10) VALUE ' Kennedy', NAME(20), FIRST TYPE STRING. CONCATENATE ONE TWO THREE INTO NAME. fn INTO target.

Condense
Permite desplazar toda la cadena de caracteres que se encuentre en una variable hacia el lado izquierdo, eliminando todos los espacios que ese encuentren antes del primer carcter. Sintaxis:
CONDENSE f1.

Ejemplo:
DATA NAME (30). NAME(10)= ' Dr.'. NAME+10(10) = 'Michael'. NAME+20(10) = 'Hofmann'. CONDENSE NAME. WRITE NAME.

El valor final de la variable NAME ser entonces Dr. Michael Hofmann.

______________________________________________________________________________________ Xioma Consulting 46

Replace
Se utiliza REPLACE para reemplazar una ocurrencia dentro de una cadena de caracteres. Una vez que la instruccin encuentra la primera ocurrencia, la reemplaza. En ese momento finaliza la bsqueda. En la variable SY-SUBRC se retorna el valor 0 si el reemplazo fue exitoso 4 en caso de que no lo fuera. Sintaxis:
REPLACE <substring> WITH <ocurrencia> INTO <string>.

Ejemplo:
DATA FIELD(10). MOVE 'ABCB' TO FIELD. REPLACE 'B' WITH 'string' INTO field.

Al ejecutar, el valor de field es AstringCB.

STRLEN
Esta funcin calcula el tamao de un string y lo retorna a una variable. Sintaxis:
STRLEN( <variable> ).

Ejemplo:
DATA: TAM TYPE I. tam = STRLEN( nombre ).

______________________________________________________________________________________ Xioma Consulting 47

Otras Instrucciones
CLEAR
Permite inicializar una variable con los valores iniciales. Sintaxis:
CLEAR <variable>.

MOVE
Mueve el contenido de una variable a otra, sin modificar el contenido de la variable original. No necesariamente la variable de destino es del mismo tipo que la variable de origen. Sintaxis:
MOVE <v_origen> TO <v_destino>.

Ejemplo:
DATA: A(2) value 'A1', B(2), C(1). MOVE A TO B. MOVE A+0(1) TO C.

Esto es equivalente a:
B = A. C = A+0(1).

MESSAGE
Enva un mensaje al usuario debidamente clasificado en el repositorio de SAP que aparece en la parte inferior de la ventana, contempla los tipos W (advertencia), E (error), S (mensaje), A (Abortar transaccin), X(Salir con un mensaje de dump), I (informativo) . Sintaxis:
MESSAGE ID <Clase>TYPE <tipo>NUMBER <nmero>WITH <param 1> <param n>.

Ejemplo:
MESSAGE ID BC400TYPE I NUMBER 040 WITH wa_itab-campo1 wa_itab-campo2.

______________________________________________________________________________________ Xioma Consulting 48

La administracin de las clases de mensajes se realizan a travs de la transaccin SE91.

Despus de darle al botn Crear, se pasa a la siguiente pantalla.

______________________________________________________________________________________ Xioma Consulting 49

Se selecciona transporte.

y se asigna el nuevo objeto su respectivo paquete y orden de

Seleccionando la pestaa Mensajes, se puede empezar a insertar los mensajes que se desea utilizar. Cada mensaje puede contener parmetros que son indicados con el smbolo &.

______________________________________________________________________________________ Xioma Consulting 50

Procedimientos y Funciones
Los procedimientos son subprogramas que se utilizan para modulizar una aplicacin. El uso de los mismos hace que los programas sean ms entendibles. En ABAP los procedimientos reciben y retornan valores por medio de parmetros. Los procedimientos pueden definirse en cualquier parte del cdigo ABAP. Las funciones son similares a los procedimientos, pero se comportan como una caja 4 negra . Su definicin es global en el sistema, por lo cual no es necesario definirlas en el programa. Las funciones en ABAP se manipulan por medio de la transaccin SE37 5. Existen ya una cantidad considerable de funciones estndar definidas en el sistema y que estn disponibles para el desarrollador.

FORM
Se utiliza para indicar el inicio del procedimiento y los parmetros de entrada y salida. Una vez que se define el procedimiento todas las definiciones que se hacen de constantes y variables son locales. Esta instruccin debe finalizar con un END FORM. Sintaxis:
FORM <procedimiento> [USING <variables de entrada>] [CHANGING <variables de salida>]. <Cdigo>.

ENDFORM.

Ejemplo:
FORM WELCOME. WRITE / 'Hello world'. ENDFORM.

FORM suma USING num1 num2 CHANGING resultado. resultado = num1 + num2. ENDFORM. "suma

Caja negra es un trmino que se utiliza para referirse a un sistema que recibe una entrada y retorna una salida, pero del cual se desconoce su mecanismo interno.
5

La utilizacin de la SE37 esta contemplada en este manual mas adelante ______________________________________________________________________________________ Xioma Consulting 51

PERFORM
Sirve para realizar la invocacin de un procedimiento. Sintaxis:
PERFORM <procedimiento> USING <variables de entrada> CHANGING <variables de salida>.

Ejemplo:
PERFORM suma USING 2 3 CHANGING total.

CALL
Este comando invoca a una funcin. Normalmente es ms sencillo utilizar la opcin de PATRON en el editor ABAP (SE38) para seleccionar del pool de funciones la funcin que se desea utilizar, y ste genera el CALL con los parmetros de entrada y salida. Sintaxis:
CALL <funcin> <IMPORTING param 1 = valor 1 param n = valor n> <EXPORTING param 1 = valor 1 param n = valor n>.

Ejemplo:
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = total IMPORTING OUTPUT = salida.

Invocacin de una funcin


Para hacer la invocacin de una funcin lo haremos utilizando el botn de Patrn . Esta opcin nos permite insertar en nuestro programa toda la estructura que deber tener la sentencia CALL FUNCTION con cada uno de los parmetros requeridos.

______________________________________________________________________________________ Xioma Consulting 52

Solamente se debe escribir el nombre de la funcin que deseamos invocar en nuestro programa. En este caso utilizaremos la funcin creada anteriormente (ZF_FUNCION1).
CALL FUNCTION 'ZF_FUNCION1' EXPORTING I_MATNR = I_WERKS = I_LGORT = I_LGPLA = I_CHARG = * IMPORTING * E_VERME CHANGING ERROR MESSAGE * EXCEPTIONS * EXCEP1 * OTHERS . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. = = = = 1 = 2

Una vez cargada la estructura en nuestro programa, se deben colocar, a la derecha del igual = los valores que sern enviados a la funcin y las variables en las que se recibirn los resultados. Los parmetros opcionales pueden ser omitidos comentando la lnea con un asterisco (*).

______________________________________________________________________________________ Xioma Consulting 53

SUBMIT
Ejecuta un programa tipo reporte desde otro programa. Sintaxis:
SUBMIT <REPORT> <VIA SELECTION-SCREEN> <AND RETURN>.

Ejemplo:
SUBMIT REPORT01 VIA SELECTION-SCREEN.

INCLUDES
Los programas includes se utilizan para modularizar los programas ABAP y crear bloques de cdigo reutilizables. Estos programas no son ejecutables por si mismos y no necesitan de ninguna sentencia de inicializacin.

Para crear un programa tipo include se puede utilizar la transaccin SE38 o desde el ABAP Workbench (SE80) . Se de indicar en el tipo que el programa es de include.

______________________________________________________________________________________ Xioma Consulting 54

Los programas tipo include puede ser muy tiles cuando se desea crear librerias de procedimientos, macros, definicin de datos, etc. Sintaxis:
INCLUDE <programa tipo include>.

Ejemplo:
INCLUDE ZINC_EJEMPLO.

______________________________________________________________________________________ Xioma Consulting 55

Estructuras de Datos
Las estructuras de datos son conjuntos de variables, quizs de tipos distintos, relacionadas (conectadas) entre s de diversas formas y las operaciones definidas sobre esa agrupacin. Ejemplos de estructuras de datos las podemos encontrar en muchos mbitos, desde las matemticas (estructuras algebraicas: grupo, anillo o cuerpo) hasta el mundo de los negocios (estructura de una empresa). Los elementos de una estructura de datos dependen del lenguaje de programacin a travs de los tipos de datos que los definen. Sin embargo, la estructura en s, que est definida por el tipo de relacin entre los elementos, no depende del lenguaje de programacin empleado. Las estructuras de datos se caracterizan por el tipo de los elementos de la estructura, las relaciones definidas sobre los elementos y las operaciones permitidas sobre la estructura. Operaciones tpicas sobre estructuras de datos suelen ser: acceder a los elementos (por la posicin que ocupan o por la informacin que contienen), buscar elementos, insertar o borrar elementos, modificar las relaciones entre los elementos, etc... En ABAP los tres tipos de estructuras que son ms utilizados son: los registros, las tablas internas (llamadas ITABS) y las tablas transparentes.

Registros
Un registro se puede definir como una variable subdividida en varios campos. Para acceder a cada campo se utiliza el nombre del registro, el smbolo - y el nombre del campo. Para definir el registro se utiliza la instruccin DATA con la opcin BEGIN OF. Sintaxis:
DATA: BEGIN OF <nombre>, <Campo 1> <[TYPE] [LIKE]> <Tipo>, <Campo n> <[TYPE] [LIKE]> <Tipo>, END OF <nombre>.

Ejemplo:
Start-of-Selection. Camisa-NrMaterial = 60001. Camisa-color = 1. Color Blanco Camisa-Talla = M. Camisa-Precio = 4000. Camisa-PrecioUSD = Camisa-Precio / TipoCambio. DATA: TipoCambio type P decimals 2 value 470. DATA: BEGIN OF Camisa, NrMaterial LIKE MARA-MATNR, Color(2), Talla(2), Precio Type P decimals 2, PrecioUSD type P decimals 2, END OF Camisa.

______________________________________________________________________________________ Xioma Consulting 56

MOVE-CORRESPONDING
La instruccin MOVE-CORRESPONDING se utiliza para mover informacin entre los campos de estructuras que posean el mismo nombre. Aquellos campos en la estructura destino que no coincidan con los definidos en la estructura origen son ignorados y no se modifican. Sintaxis:
MOVE-CORRESPONDING <ESTRUCTURA ORIGEN> TO <ESTRUCTURA DESTINO>.

Ejemplo:
DATA: BEGIN OF origen, Campo1(20), Campo2(10), Campo3 type i, Campo4(3), END OF origen. DATA: BEGIN OF destino, Campo9(10), Campo3 type i, Campo1(20), Campo4(5), Campo8(15), END OF destino. origen-campo1 = 'Hola'. origen-campo2 = 'Mundo!'. origen-campo3 = 1701. origen-campo4 = 'NCC'. destino-campo8 = 'NCC-74656'. MOVE-CORRESPONDING origen TO destino.

Es importante considerar en el ejemplo, que el orden de los campos en la estructura no es relevante, as como no lo es el tamao. Si el campo destino es de menor tamao que el origen, la informacin ser truncada.

______________________________________________________________________________________ Xioma Consulting 57

Tablas Internas
Las tablas internas se utilizan para almacenar los datos provenientes de la base de datos o de informacin que ha sido generada en tiempo de ejecucin. Se puede definir dos tipos de tablas internas: Con Cabecera: La cabecera es un espacio de la tabla interna donde se almacena la informacin del registro al que se esta apuntando en el cuerpo de la tabla. Se declara en forma similar a un registro incluyendo la opcin OCCURS. Esta opcin especifica cuantas lneas debe reservar el sistema para los bloques de la tabla interna, normalmente se utiliza 0, sin embargo dependiendo del volumen de informacin, asignar un nmero muy grande o uno muy pequeo puede tener una repercusin en el rendimiento del programa. Sintaxis:
DATA: BEGIN OF <nombre> OCCURS <n>, <Campo 1> <[TYPE] [LIKE]> <Tipo>, <Campo n> <[TYPE] [LIKE]> <Tipo>, END OF <nombre>.

Ejemplo:
DATA: BEGIN OF Camisa OCCURS 0, NrMaterial LIKE MARA-MATNR, Color(2), Talla(2), Precio Type P decimals 2, PrecioUSD type P decimals 2, END OF Camisa. Start-of-Selection. Camisa-NrMaterial = 60001. Camisa-color = 1. Color Blanco Camisa-Talla = M. Camisa-Precio = 4000. Camisa-PrecioUSD = Camisa-Precio / TipoCambio. APPEND Camisa. DATA: TipoCambio type P decimals 2 value 470.

Otra manera de agregar la cabecera es utilizar la instruccin WITH HEADER LINE. Sintaxis:
DATA: <ITAB> [LIKE | TYPE] <estructura> [OCCURS <n>] WITH HEADER LINE.

Ejemplos:
DATA: ITAB LIKE MARA OCCURS 0 WITH HEADER LINE. DATA: ITAB2 TYPE T_ITAB WITH HEADER LINE.

______________________________________________________________________________________ Xioma Consulting 58

Sin Cabecera: Es un tipo de tabla interna que esta compuesto nicamente de cuerpo y su definicin se hace con respecto a un tipo definido previamente o a una estructura ya existente. Sin embargo es necesario definir un registro de cabecera para poder agregar o leer registros de la tabla. Sintaxis:
DATA: <itab> TYPE <tipo> OCCURS <n>.

Ejemplo:
TYPES: BEGIN OF PERSONA, NOMBRE(20) TYPE C, EDAD TYPE I, END OF PERSONA. DATA: C_Miembro type persona. DATA: Miembro TYPE PERSONA OCCURS 0. Start-of-selection. C_Miembro-Nombre = Jose. C_Miembro-Edad = 20. Append C_miembro to Miembro.

Las tablas internas pueden ser de 3 tipos: estndar (que son las que tratamos en este manual), Sorted y Hashed. Estos tres tipos de tablas puede ser declarados de la siguiente manera:
TYPES: BEGIN OF S_ITAB, Nombre(10) TYPE C, Edad TYPE I, END OF S_ITAB. TYPES: T_ITAB1 TYPE STANDARD TABLE OF S_ITAB, T_ITAB2 TYPE SORTED TABLE OF S_ITAB WITH KEY Nombre, T_ITAB3 TYPE HASHED TABLE OF S_ITAB. DATA: ITAB1 TYPE T_ITAB1, ITAB2 TYPE T_ITAB2, ITAB3 TYPE T_ITAB3.

______________________________________________________________________________________ Xioma Consulting 59

Existen varias instrucciones que se utilizan para la manipulacin de las tablas internas, a continuacin se van a describir las ms comunes.

Refresh
Borra todo el contenido de la tabla interna. Sintaxis:
REFRESH <ITAB>.

Append
Agrega un registro a una tabla interna con los valores que se encuentren en la cabecera o en un registro que corresponda con la estructura de la tabla. Sintaxis:
APPEND [<registro> TO] <itab>.

Ejemplo:
APPEND C_Miembro TO Personas.

Delete
Esta instruccin borra un registro de la tabla interna. Sintaxis:
DELETE [TABLE] <ITAB> [FROM wa] [WHERE <Cond>].

Ejemplo: 1. Registro actual de una tabla con cabecera:


DELETE Camisa. 2.

Registro de una tabla sin cabecera


DELETE TABLE Miembro FROM Miembro.

3. Utilizando una condicin.


DELETE Camisa WHERE Talla EQ XL.

______________________________________________________________________________________ Xioma Consulting 60

Modify
Se utiliza para actualizar los cambios realizados al registro de la cabecera en la tabla interna. Sintaxis:
MODIFY <ITAB>.

Collect
El COLLECT asume que todos los valores alfanumricos de izquierda a derecha, hasta conseguir un valor numrico, son la llave de la tabla interna. Y empieza a acumular los valores numricos que se encuentran a la derecha de la llave. Si el registro no existe lo agrega a la tabla interna. Sintaxis:
COLLECT <ITAB>.

Ejemplo:
DATA: BEGIN OF COMPANY OCCURS 0, NAME(20) TYPE C, SALES TYPE I, END OF COMPANY. COMPANY-NAME = 'Duck'. COMPANY-SALES = 10. COLLECT COMPANY. COMPANY-NAME = 'Tiger'. COMPANY-SALES = 20. COLLECT COMPANY. COMPANY-NAME = 'Duck'. COMPANY-SALES = 30. COLLECT COMPANY.

Describe
La funcin de esta instruccin es obtener el nmero de registros que contiene una tabla interna y almacenarlo en una variable. Sintaxis:
DESCRIBE TABLE <ITAB> LINES <Variable>.

Ejemplo:
DESCRIBE TABLE camisa LINES cant_reg.

______________________________________________________________________________________ Xioma Consulting 61

SORT
Se utiliza SORT para ordenar una tabla interna indicndole que campos debe asumir como referencia para dicho ordenamiento. Sintaxis:
SORT <ITAB> BY <campo1> <campo2> ... <campo n> [DESCENDING] [ASCENDING].

Ejemplo:
SORT camisa. *Aqu al no indicarle criterios la ordena por todos los campos *exceptuando los de tipo: I, F y P de forma ascendente. SORT camisa BY talla precio. *Ordena TABLA por los campos CIUDAD y PAIS de forma descendente. SORT camisa BY talla ASCENDING color DESCENDING. *Ordena TABLA por los campos CIUDAD (Ascendentemente) y PAIS *(Descendentemente).

LOOP
Esta instruccin permite recorrer una tabla interna para acceder a todo su contenido o puede ser utilizado con ciertas condiciones para obtener informacin especfica. Sintaxis:
LOOP AT <ITAB> [INTO <variable>] [WHERE <condiciones>] [FROM <ndice 1> TO <ndice 2>]. . <Cdigo>. . ENDLOOP.

Ejemplos:
LOOP AT ITAB INTO WA_ITAB. WRITE WA_ITAB-CAMPO1. ENDLOOP. LOOP AT ITAB INTO WA_ITAB WHERE CAMPO1 GT 1000. WRITE WA_ITAB-CAMPO1. ENDLOOP. LOOP AT ITAB INTO WA_ITAB FROM 1 TO 100. WIRTE WA_ITAB-CAMPO1. ENDLOOP.

______________________________________________________________________________________ Xioma Consulting 62

READ
El Read nos permite acceder a un registro de la tabla interna a travs de un ndice o de una llave. Sintaxis:
READ TABLE <ITAB> INTO <variable> [WITH TABLE KEY <campo> = <valor>] [INDEX <ndice>].

Ejemplos:
READ TABLE ITAB INTO WA_ITAB WITH TABLE KEY CAMPO1 = 100 CAMPO2 = ALFA CAMPO3 = SY-DATUM. IF SY-SUBRC EQ 0. WRITE WA_ITAB-CAMPO4. ENDIF. READ TABLE ITAB INTO WA_ITAB INDEX 1. IF SY-SUBRC EQ 0. WRITE WA_ITAB-CAMPO1. ENDIF.

______________________________________________________________________________________ Xioma Consulting 63

Rangos
Los rangos en ABAP se utilizan para definir un conjunto de valores que posteriormente se pueden utilizar como parte de un filtro en una consulta SQL, con SUBMIT, CHECK, IF o en el WHILE. Su utilizacin y estructura es idntica a la que se logra con la instruccin SELECT-OPTIONS. Al definir un rango se genera una tabla interna donde se almacenan los valores que definen el rango. Cada registro de la tabla se puede asumir como un subrango que define al rango. La estructura de la tabla es la siguiente: Campo LOW HIGH SIGN OPTION Descripcin Valor de la cota inferior, el tipo de este campo se define al definir el rango. Valor de la cota superior, el tipo de este campo se define al definir el rango. Indica que operador relacional (EQ,LT,BT,...) define el comportamiento del subrango. Indica si el subrango es inclusivo o exclusivo. Los valores son: I (Inclusivo) y E (exclusivo)

Cuando se utiliza el campo SIGN diferente de BT (entre), el valor que se almacena en HIGH es ignorado, y la comparacin se realiza nicamente contra el campo LOW. Sintaxis:
RANGES:

<nombre> FOR <Tipo>.

Ejemplo:
RANGES: FECHA FOR SY-DATUM. FECHA-LOW = 200510010. FECHA-HIGH = ''. FECHA-SIGN = 'EQ'. FECHA-OPTION = 'E'. APPEND FECHA. FECHA-LOW = 20051001. FECHA-HIGH = 20051201. FECHA-SIGN = 'BT'. FECHA-OPTION = 'I'. APPEND FECHA. IF SY-DATUM IN FECHA. WRITE:/'El da de hoy esta entre el 1ero de octubre', ' y el 1ero de diciembre.'. WRITE:/'Y no es 10 de octubre'. ENDIF.

______________________________________________________________________________________ Xioma Consulting 64

Tablas Transparentes
Una tabla transparente es aquella tabla que, estando definida en el diccionario de datos, tiene una relacin uno a uno contra su equivalente en la base de datos (mismo nombre de tabla, mismos nombres de campos y mismo nmero de registros). El diccionario de datos puede ser definido como una interfase a datos (informacin, programas, pantallas, etc) que son independientes de la plataforma que se este usando, y que se encuentran almacenados en una base de datos (Oracle, SQL Server, Informix, etc). En SAP existen otros tipos de tablas en el diccionario como las Pooled tables y las Cluster tables.

SE11/SE16
Existe en SAP dos formas de acceder al diccionario de datos, la transaccin SE16 que se utiliza para visualizar datos en las tablas del diccionario, y la SE11 que contiene todas las herramientas necesarias para manipular el diccionario de datos.

Fig de la transaccin SE16.

______________________________________________________________________________________ Xioma Consulting 65

FIG. de la transaccin SE11.

Creacin de una Tabla Z


La creacin se realiza utilizando la transaccin SE11 y seleccionando la opcin Tabla base de datos. Y oprimir el botn Crear. Es importante tomar en cuenta que al igual que en la mayora de las adiciones de nuevos objetos en el sistema, al crear una nueva tabla se le debe agregar la letra Z al inicio.

______________________________________________________________________________________ Xioma Consulting 66

Es necesario indicar una descripcin para la tabla, adems de especificar la clase de entrega con el valor A para indicar que la tabla es de tipo aplicacin (especficamente para almacenar datos maestros y movimientos). Seguidamente se deben definir los campos de la tabla transparente, para ello se selecciona la pestaa etiquetada como Campos.

En esta parte se indican todos los campos que se utilizaran. Para agregar campos en una lnea determinada se puede utilizar el botn de agregar o en caso de que se quiera eliminar una lnea se selecciona y se oprime el botn de eliminar campo . La columna llamada Tipo campo sirve para indicar uno de los tipos ya definidos en el sistema, del cual tomar las caractersticas el campo de la tabla que se esta creando. Por ejemplo en el cuadro anterior se puede observar que el campo NOMBRE toma el tipo CHAR20 que es un tipo definido en el sistema como de 20 caracteres. Es posible definir nuevos tipos en el diccionario, o bien se puede utilizar el botn Elemento datos/Tipo directo para poder agregar una definicin personalizada. Una vez que se han definido todos los campos que tendr la tabla, es importante asignar cual es la tabla de referencia o verificacin que puedan tener valores como moneda y cantidad. En algunos casos, como la moneda, establecer esta relacin es obligatorio.

______________________________________________________________________________________ Xioma Consulting 67

En el cuadro anterior TCURC-WAERS hace referencia al tipo de moneda que utiliza el campo SALARIO. Una vez definido todo esto, hace es necesario definir la configuracin bsica en las opciones tcnicas de la tabla oprimiendo el botn correspondiente en la barra de herramientas. En esa opcin es necesario definir los parmetros de memoria lgicos. La clase de datos indica en el sistema administrador de bases de datos a que mbito fsico al que pertenece la tabla. En el caso de la seleccin APPL0, indica que pertenece al mbito de datos maestros. La categora de tamao se refiere a la cantidad de espacio que debe reservar por bloque la base de datos, esta opcin se considera dependiendo del volumen de informacin que se almacenar en la tabla.

______________________________________________________________________________________ Xioma Consulting 68

Para finalizar se almacenan estas modificaciones y se retorna a la pantalla principal, donde se puede realizar una verificacin de la definicin de la tabla utilizando el botn verificar . Para que la tabla pueda ser accesada en el sistema

es necesaria activarla utilizando el botn de activacin (ste botn realiza la verificacin, guarda los cambios y finalmente activa el objeto en el sistema).

TABLES
Se utiliza para declarar las tablas del diccionario de datos que se desean utilizar en un programa. Sintaxis:
TABLES: <tabla 1>, <tabla 2>, , <tabla N>.

Ejemplo:
TABLES: T001, MARA.

______________________________________________________________________________________ Xioma Consulting 69

Insert
Para aadir registro a registro o varios registros a la vez. En los dos casos se puede usar la orden INSERT pero con diferentes opciones. REGISTRO A REGISTRO Sintaxis:
INSERT INTO <tabla> [CLIENT SPECIFIED] VALUES <estruct>.

VARIOS REGISTROS. Se puede guardar una tabla interna en una tabla de diccionario con una sola instruccin sin tener que hacer ningn ciclo. Sintaxis:
INSERT <tabla> FROM TABLE <ITAB>.

Delete
Con sta instruccin se borran los registros de la tabla. Existen tres formas distintas para hacerlo. UN SOLO REGISTRO. Sintaxis:
DELETE <tabla> FROM <estruc>.

VARIOS REGISTROS Sintaxis:


DELETE FROM <tabla> [CLIENT SPECIFIED] WHERE <condiciones>.

A TRAVS DE UNA TABLA INTERNA Sintaxis:


DELETE tabla_dicc FROM TABLE tabla-int.

______________________________________________________________________________________ Xioma Consulting 70

UPDATE
Actualiza una tabla del diccionario y puede ser utilizado de tres formas diferentes. UN SOLO REGISTRO Para modificar un slo registro utilizamos la orden UPDATE. Sintaxis:
UPDATE <tabla> FROM <estructura>.

VARIOS CAMPOS A LA VEZ Para este campo utilizamos tambin la orden UPDATE, pero de diferente forma. Sintaxis:
UPDATE <tabla> [SET <S1> .. <Sn> [WHERE <condicin>].

En el SET se colocan los campos a modificar con sus nuevos valores, o sea, S1 a Sn pudindose desglosar de la siguiente manera: f = n Donde f es el nombre del campo a modificar y n es su nuevo valor. f = f+g Al campo f se le suma lo que vale g. f = fg Al campo f se le resta lo que vale g.

______________________________________________________________________________________ Xioma Consulting 71

Elementos de datos.
Describen el significado de un campo independientemente de las tablas dnde se utilizan. Es decir, tienen un carcter semntico. El elemento de datos puede ser uno ya existente en el diccionario, uno creado por el usuario ( Z, Y ) o una subestructura. Si en el nombre del campo se utiliza .INCLUDE hace referencia a una substructura. El elemento de datos proporciona la informacin sobre la funcionalidad de este tipo de datos en el sistema, es decir indica qu se est almacenando en el campo que tiene este elemento de datos (por ejemplo un n de factura, un importe, etc). Los elementos de datos estn definidos por un dominio. Para crear un nuevo elemento de datos utilizamos la transaccin SE11, y colocamos el nombre del nuevo elemento de datos en la referencia del nuevo campo seguido de un doble click.

Al oprimir el botn S se muestra la pantalla de creacin para el elemento de datos, ac se debe definir a que dominio pertenece el elemento de datos o si el elemento de datos hace referencia a un tipo instalado o a otro elemento de texto. Tambin es importante definir para el elemento de texto una descripcin y los denominadores de campo respectivos que permiten al sistema desplegar la descripcin de los campos del diccionario que utilicen el elemento de texto. Una vez definido todo esto se debe activar el elemento de texto para que este disponible.

______________________________________________________________________________________ Xioma Consulting 72

______________________________________________________________________________________ Xioma Consulting 73

Dominios
El dominio es una agrupacin de propiedades formales de campos, tales como tipo de datos y cantidad de posiciones del campo. Define principalmente el mbito de valores para todos los campos que hacen referencia al dominio, de tal forma que al cambiar la definicin de un dominio todos los elementos de datos relacionados cambian automticamente. En la definicin de un dominio se puede introducir una rutina de conversin para los datos de este dominio. Con esto lo que se consigue es que la introduccin o salida de datos se hagan con un formato determinado a partir de otro formato de datos. Por ejemplo, el cdigo de los materiales tienen el dominio MATNR el cual se tienen las siguientes rutinas de conversin : CONVERSION_EXIT_MATN1_INPUT (para entrada) CONVERSION_EXIT_MATN1_OUTPUT (para salida) Estas rutinas almacenan los datos aadindoles ceros hasta completar 18 posiciones. La creacin de nuevos dominios se realiza a travs de la transaccin SE11.

Se debe indicar para el dominio una descripcin, un tipo de datos (que proviene de los tipos de datos que existen en el sistema, una cantidad de posiciones. Tambin es posible indicar los atributos de salida, los cuales van a determinar la longitud que puede desplegar el dominio, si existe una rutina de conversin de datos, si es un valor numrico indicar si es posible que represente valores negativos y si es un valor de texto si es posible que contenga letras minsculas.
______________________________________________________________________________________ Xioma Consulting 74

En la pestaa de mbito se definen los valores posibles que puede tomar el dominio, o los rangos en los que puede estar. Igualmente puede hacerse referencia a una tabla que contenga esos valores. Al finalizar la definicin del rango, este debe ser activado para que pueda ser utilizado en el sistema.

______________________________________________________________________________________ Xioma Consulting 75

Vistas de Base de Datos


Una vista es una visin lgica de una ms tablas, es decir, no se almacena fsicamente, sino que se deriva de una o ms tablas. Para crear una vista se utiliza la transaccin SE11. Siempre que sea posible es importante tomar campos que sean parte de la llave primaria para establecer la relacin entre las tablas, y siempre indicar el campo MANDT en tablas que son dependientes de mandante. Con el boton RELACIONES es posible invocar relaciones predefinidas en el sistema para las tablas que se hayan indicado.

En la pestaa de campos de vista se han de seleccionar cuales son los campos que se desean mostrar y con que nombres han de aparecer.

______________________________________________________________________________________ Xioma Consulting 76

En la pestaa condiciones de seleccin se determinan una serie de condiciones bsicas para filtrar los resultados de la seleccin.

______________________________________________________________________________________ Xioma Consulting 77

Estructuras
Las estructuras son objetos de datos globales en el sistema que estan formados por varios campos. Sin embargo no permiten el almacenamiento de informacin en la base de datos. Su creacin es a travs de la transaccin SE11.

______________________________________________________________________________________ Xioma Consulting 78

Las estructuras no son objetos dependientes de mandante, por lo que no es importante declarar el campo MANDT, igualmente no requieren de la definicin de llaves.

Ayudas de Bsqueda
Las ayudas de bsqueda permiten crear un dilogo de seleccin para un campo de la interfase de usuario donde los usuarios pueden seleccionar valores dentro de una lista de valores propuestos. La creacin se realiza a travs de la transaccin SE11, y se pueden crear ayudas de bsqueda elemental o compuestas (basadas en otras ayudas de bsqueda ya existentes).

______________________________________________________________________________________ Xioma Consulting 79

El campo mtodo de seleccin indica cual tabla del diccionario contiene los datos sobre los cuales se basa la propuesta. Los parametros indican los campos que deben salir y el orden en que han de ser desplegados. El check de import indica que el campo es relevante para la seleccin de la ayuda de bsqueda, el check de export indica que el parmetro es de salida y debe indicarse al menos uno. P.I indica el orden de las columnas en la ventana de seleccin y PosS el orden en la ventana de filtros.

______________________________________________________________________________________ Xioma Consulting 80

Vista de Actualizacin
Las vistas de actualizacin se generan desde la transaccin SE11. Se debe seleccionar la tabla transparente a la que se le desea crear la vista de actualizacin, y en el men seleccionar Utilidades->Generador actualiz tab. Es importante que la tabla en las opciones de entrega permita la actualizacin y que con anterioridad se tenga claro cual es el grupo de funciones que se utilizar para generar la vista. La creacin de grupos de funciones ser explicada ms adelante.

En las vistas de actualizacin es posible indicar un grupo de autorizaciones que permite brindar mayor seguridad, en la descripcin de este proceso se utilizara el grupo &NC& que indica que no se desea utilizar ningn grupo de autorizacin. Es necesario tambin definir el paquete donde se crear la vista. El tipo de actualizacin determinara si la modificacion o inclusin de nuevos registros se har en una o dos imgenes.

______________________________________________________________________________________ Xioma Consulting 81

Para realizar la edicin o inclusin de registros se debe utilizar la transaccin SM30. Y oprimir el botn Actualizar.

______________________________________________________________________________________ Xioma Consulting 82

En la siguiente imagen se muestra como se despliega el contenido de la tabla transparente. Los ttulos que aparecen sobre las columnas son derivados de los elementos de texto de cada campo. Si un campo no tuviese asignado un elemento de texto se mostraria nicamente el smbolo +.

Las vistas de actualizacin son muy tiles para crear dilogos de parametrizacin y pueden ser asignadas a transacciones mediante la transaccin SE93.

______________________________________________________________________________________ Xioma Consulting 83

Transferencia de Datos
Normalmente en SAP las transferecias de datos estan relacionadas con la necesidad de establecer una interfase con algn sistema externo. Las ms comunes se establecen por medio de Idocs, funciones RFC y por medio de archivos planos. En esta seccin se explicar sta ltima.

Transferencia Local
La transferencia de archivos planos de manera local se refiere a la creacin o lectura de archivos en el servidor SAP. Se suele establecer una ruta donde se colocan los archivos de entrada y los archivos de salida, que posteriormente pueden ser extrados por el medio del sistema operativo o por medio de FTP. En este caso siempre es necesario realizar una apertura del archivo, luego ejecutar la transferencia del contenido y finalmente cerrar el archivo.

Open dataset
Esta instruccin hace la apertura del archivo. De ser xitoso la instruccin retornar 0 en la variable SY-SUBRC, sino retornar 8. El mximo de archivos que pueden estar abiertos en una sesin es de 100. Sintaxis:
OPEN DATASET <dataset> FOR {INPUT | OUTPUT | APPENDING | UPDATE} IN {BINARY MODE | TEXT MODE} ENCODING DEFAULT.

Close dataset
Close dataset cierra un archivo. Sintaxis:
CLOSE DATASET <dataset>.

Transfer
La instruccin TRANSFER envia el contenido de un objeto de datos a un dataset abierto. Sintaxis:
TRANSFER <Objeto de datos> TO <DATASET>.

Ejemplo:
DATA: file TYPE string VALUE `test.dat`.

OPEN DATASET file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. TRANSFER `1234567890` TO file.

CLOSE DATASET file.

______________________________________________________________________________________ Xioma Consulting 84

Read Dataset
READ permite la lectura de un dataset abierto. En la variable SY-SUBRC queda el valor 0 despues de una lectura exitosa y 4 cuando se ley el ltimo registro del archivo o si se trata de leer despus del EOF. Sintaxis:
READ DATASET <dataset> INTO <objeto datos>.

Ejemplo:
DATA: file TYPE string VALUE `test.dat`, Line type string. OPEN DATASET file FOR INPUT IN TEXT MODE.

READ FILE TO LINE.

CLOSE DATASET file.

Delete Dataset Se utiliza para eliminar un archivo. No requiere de un OPEN, y retornar 0 si logro borrar el archivo 4 en caso de no lograrlo. Sintaxis:
DELETE DATASET <dataset>.

______________________________________________________________________________________ Xioma Consulting 85

Transferencia Remota
En el caso de la transferencia remota, se asume que la creacin de los archivos o la carga de los mismos se hace desde la terminal desde la cual se esta ejecutando el SAP GUI. Para esto se utilizan funciones de SAP que se hacen cargo de la apertura, lectura y cierre de los archivos dejando el contenido de stos en una tabla interna. GUI_DOWNLOAD. Esta funcin carga el contenido de un archivo plano a una tabla interna. Los parmetros ms importantes son: FILENAME: Debe ser de tipo string y determina el nombre del dataset. FILETYPE: Determina el tipo de archivo. WRITE_FIELD_SEPARATOR: Permite indicar si es un archivo tipo PRN. DATA_TAB: Indica cual es la tabla interna.

Ejemplo:
CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = ARCHIVO FILETYPE = 'ASC' WRITE_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = ITAB EXCEPTIONS FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

______________________________________________________________________________________ Xioma Consulting 86

GUI_UPLOAD.
Esta funcin carga el contenido de un archivo plano a una tabla interna. Los parmetros ms importantes son: FILENAME: Debe ser de tipo string y determina el nombre del dataset. FILETYPE: Determina el tipo de archivo. WRITE_FIELD_SEPARATOR: Permite indicar si es un archivo tipo PRN. DATA_TAB: Indica cual es la tabla interna.

Ejemplo:
CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = ARCHIVO FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = ITAB EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_READ_ERROR = 2 NO_BATCH = 3 GUI_REFUSE_FILETRANSFER = 4 INVALID_TYPE = 5 NO_AUTHORITY = 6 UNKNOWN_ERROR = 7 BAD_DATA_FORMAT = 8 HEADER_NOT_ALLOWED = 9 SEPARATOR_NOT_ALLOWED = 10 HEADER_TOO_LONG = 11 UNKNOWN_DP_ERROR = 12 ACCESS_DENIED = 13 DP_OUT_OF_MEMORY = 14 DISK_FULL = 15 DP_TIMEOUT = 16 OTHERS = 17 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

______________________________________________________________________________________ Xioma Consulting 87

Open SQL
El Structured Query Language (SQL) se ha convertido en uno de los lenguajes computacionales ms populares, y es utilizado para crear, modificar y obtener informacin de los sistemas administradores de base de datos relacionales. ABAP cuenta con una serie de adaptaciones que provienen de este lenguaje para facilitar la manipulacin de la informacin en su base de datos, incluso permite invocar SQL nativo desde su cdigo en caso de ser estrictamente necesario.

Select
Esta es una de las instrucciones ms importantes en el lenguaje, y es la que permite la manipulacin de la informacin de la base de datos. El select se comporta como una instruccin de iteracin, correspondiendo cada ciclo con uno de los registros seleccionados en la ejecucin. Si la bsqueda fue exitosa SY-SUBRC obtiene el valor de cero. Sintaxis:
SELECT <campos> FROM <TABLA>.

Ejemplo:
SELECT * FROM ztest. ENDSELECT. ztest

Where
La opcin WHERE en el SELECT sirve para especificar un filtro en la seleccin de informacin Sintaxis:
SELECT <campos> FROM <tabla> WHERE <condiciones>. <cdigo>.

ENDSELECT.

Ejemplo:
SELECT * FROM ztest WHERE salario GT 100000 AND salario LT 500000. ENDSELECT.

ztest

______________________________________________________________________________________ Xioma Consulting 88

Single
La opcin Single trae nicamente el primer registro de la tabla que cumpla con las condiciones del Select. Al utilizar esta opcin no es necesario utilizar el ENDSELECT. Sintaxis:
SELECT SINGLE <campos> FROM <tabla>.

Ejemplo:
SELECT SINGLE * FROM ztest.

Into
Coloca los valores de los campos indicados en los que indique el into. Sintaxis:
SELECT f1 f2 fn INTO (v1, v2, , vn) FROM <tabla>.

<cdigo> ENDSELECT.

Ejemplo:
DATA: CARRID LIKE SCARR-CARRID, CARRNAME LIKE SCARR-CARRNAME,

SELECT CARRID CARRNAME INTO (CARRID, CARRNAME) FROM SCARR. WRITE: / CARRID, CARRNAME. ENDSELECT.

Order by
Esta opcin indica en el select de que manera debe ordenar la informacin que se obtiene con la consulta. Es importante recordar que el campo por el cual se realizar el ordenamiento debe estar incluido en los campos que se estn seleccionando en la consulta. Sintaxis:
SELECT <campos> FROM <tabla> ORDER BY <campo> [ASCENDING | DESCENDING].

Ejemplo:
SELECT * FROM ztest ORDER BY apellido DESCENDING Salario ASCENDING. ______________________________________________________________________________________ Xioma Consulting 89

Join
Se utiliza para realizar enlaces dinmicos a travs de instrucciones del lenguaje ABAP.

Inner Join
De esta manera se enlazan dos tablas por medio de n campos, donde la interseccin de ambas tablas genera una nueva tabla por medio de los campos comunes establecidos. En el siguiente ejemplo el join se establece a travs del campo D.

Sintaxis:
SELECT <campos> INTO (<campos>) FROM <tabla1> AS <alias1> INNER JOIN <tabla2> AS <alias2> ON <alias1>~<campo1> = <alias2>~<campo1> WHERE <condiciones>. ENDSELECT.

Ejemplo:
DATA: DATE LIKE SFLIGHT-FLDATE,

CARRID LIKE SFLIGHT-CARRID, CONNID LIKE SFLIGHT-CONNID. SELECT F~CARRID F~CONNID F~FLDATE INTO (CARRID, CONNID, DATE) FROM SFLIGHT AS F INNER JOIN SPFLI AS P ON F~CARRID = P~CARRID AND F~CONNID = P~CONNID ______________________________________________________________________________________ Xioma Consulting 90

WHERE P~CITYFROM = 'FRANKFURT' AND P~CITYTO = 'NEW YORK'

AND F~FLDATE BETWEEN '19970910' AND '19970920' AND F~SEATSOCC < F~SEATSMAX. WRITE: / DATE, CARRID, CONNID. ENDSELECT.

Left Outer Join


Al realizar un Left Outer Join la unin se basa en la tabla de la izquierda, an cuando no existe interseccin con la tabla de la derecha, aquellas tuplas en la tabla de la derecha que esten excluidas quedan como campos nulos en la nueva tabla.

Sintaxis:
SELECT <campos> INTO (<campos>) FROM <tabla1> AS <alias1> LEFT OUTER JOIN <tabla2> AS <alias2> ON <alias1>~<campo1> = <alias2>~<campo1> WHERE <condiciones>. ENDSELECT.

Ejemplo:
DATA: CUSTOMER TYPE SCUSTOM, BOOKING TYPE SBOOK.

SELECT SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY ______________________________________________________________________________________ Xioma Consulting 91

SBOOK~FLDATE SBOOK~CARRID SBOOK~CONNID SBOOK~BOOKID INTO (CUSTOMER-NAME, CUSTOMER-POSTCODE, CUSTOMER-CITY, BOOKING-FLDATE, BOOKING-CARRID, BOOKING-CONNID, BOOKING-BOOKID) FROM SCUSTOM LEFT OUTER JOIN SBOOK ON SCUSTOM~ID = SBOOK~CUSTOMID AND SBOOK~FLDATE = '19971015' ORDER BY SCUSTOM~NAME SBOOK~FLDATE. WRITE: / CUSTOMER-NAME, CUSTOMER-POSTCODE, CUSTOMER-CITY, BOOKING-FLDATE, BOOKING-CARRID, BOOKING-CONNID, BOOKING-BOOKID. ENDSELECT.

______________________________________________________________________________________ Xioma Consulting 92

ABAP List Viewer (ALV)


Mediante el ALV Grid es posible implementar la funcionalidad de un listado y muchas opciones ms dentro de un dynpro.

Uso de la funcion REUSE_ALV_GRID_DISPLAY


Esta funcin permite mostrar el contenido de una tabla en formato ALV Grid. Es importante conocer algunos de sus parmetros ms importantes a la hora ajustar la visualizacin del ALV segn lo que se necesite.

IT_FIELDCAT: (Catlogo del campo con sus descripcines)

Campos ms comunes:

ROW_POS: nmero de fila COL_POS: posicin de la columna FIEDNAME: campo de la tabla interna TABNAME: nombre de la tabla interna KEY: columna marcada como llave DO_SUM: indicador para sumar columna NO_OUT: indicador para que se muestre o no el campo OUTPUTLEN: longitud de salida REF_FIELDNAME: campo de la tabla de referencia REF_TABNAME: nombre de la tabla de referencia SELTEXT_S: descripcin corta de la campo SELTEXT_M: descripcin media de la campo SELTEXT_L: descripcin larga de la campo

______________________________________________________________________________________ Xioma Consulting 93

IT_LAYOUT: (Especificacin del formato de la lista)

Campos ms comunes: COLWIDTH_OPTIMIZE: optimizacin del ancho de la columna ZEBRA: filas en formato de zebra F2CODE: cdigo para ejecutar codigo con F2 EDIT: para editar KEY: columna marcada como llave NO_VLINE: columnas separadas por espacio NO_HLINE: filas separadas por espacio

IT_EVENTS: (Tabla de los eventos que pueden ser requeridos)

Campos ms comunes: NAME: nombre del tipo de evento (top of page, end of list) FORM: nombre de la subrutina q se desea invocar

IT_SORT: (Criterios para ordenar la primera salida de la lista)

Campos ms comunes: FIELDNAME: campo q se desea ordenar TABNAME: nombre de la tabla interna UP: indicador de orden ascendente DOWN: indicador de orden descendente SUBTOT: para mostrar subtotales

I_CALLBACK_USER_COMMAND: nombre de la subrutina q se ejecutara al momento de que se realice alguna accin sobre algn campo.

______________________________________________________________________________________ Xioma Consulting 94

Como subir una imagen


Primero ingresar a la transaccin OAOR

Se coloca la informacin necesaria y se ejecuta. Por medio de la clave del objeto (LOGO XIOMA) se invoca la imagen.

En la pestaa Crear se le da click en Imagen, aparece un explorador y se selecciona la imagen.

______________________________________________________________________________________ Xioma Consulting 95

Muestra la informacin

Muestra el siguiente mensaje si se subio con xito.

Se regresar a la OAOR pero esta vez no se inserta la clave del objeto, de ese modo se pueden ver las imagenes que han sido cargadas.

______________________________________________________________________________________ Xioma Consulting 96

Aqui se verifica que la imagen si se encuentra en el servidor

______________________________________________________________________________________ Xioma Consulting 97

Creacin de un ALV simple

Primero se debe incluir la clase de desarrollo SLIS.

Type-pools: slis. ***** Declaraciones globales ***** tables: rseg. data: begin of tab_arseg occurs 0. include structure rseg. data: end of tab_arseg. gt_fieldcat type slis_t_fieldcat_alv, catalogo de campos gd_layout type slis_layout_alv, formato de salida gt_header type slis_t_listheader, encabezado gt_footer type slis_t_listheader, pie de pagina t_event type slis_t_event. tabla con los eventos data: it_sort type slis_sortinfo_alv occurs 1, criterio de ordenamiento gt_sort like line of it_sort. ***** Declaracion de subrutinas data:

*****

form fieldcat.

data: fieldcat type slis_fieldcat_alv. clear fieldcat. fieldcat-fieldname fieldcat-tabname fieldcat-ref_tabname = 'BELNR'. = 'TAB_ARSEG'. = 'RSEG'.

fieldcat-ref_fieldname = 'BELNR'. ______________________________________________________________________________________ Xioma Consulting 98

fieldcat-hotspot fieldcat-col_pos fieldcat-key

= X. = 1.

= X.

append fieldcat to gt_fieldcat.

clear fieldcat. fieldcat-fieldname = 'GJAHR'. fieldcat-tabname = 'TAB_ARSEG'. fieldcat-ref_tabname = 'RSEG'. fieldcat-ref_fieldname = 'GJAHR'. fieldcat-hotspot = X. fieldcat-col_pos = 2. fieldcat-key = X. append fieldcat to gt_fieldcat.

clear fieldcat. fieldcat-fieldname = 'BUZEI'. fieldcat-tabname = 'TAB_ARSEG'. fieldcat-ref_tabname = 'RSEG'. fieldcat-ref_fieldname = 'BUZEI'. fieldcat-seltext_s = 'factura'. fieldcat-seltext_m = 'factura'. fieldcat-seltext_l = 'factura'. fieldcat-col_pos = 3. fieldcat-key = X. append fieldcat to gt_fieldcat.

clear fieldcat. fieldcat-fieldname = 'MENGE'. fieldcat-tabname = 'TAB_ARSEG'. fieldcat-ref_tabname = 'RSEG'. fieldcat-ref_fieldname = 'MENGE'. fieldcat-col_pos = 4. fieldcat-do_sum = X. append fieldcat to gt_fieldcat. end form. form layout. *** gd_layout-colwitdh_optimize = X. gd_layout-zebra = X. end form. form header_and_footer.

data: x_heading type slis_listheader, ______________________________________________________________________________________ Xioma Consulting 99

x_footer type slis_listheader, x_event type line of slis_t_event.

clear gt_header[]. clear x_heading. x_heading-typ = 'H'. x_heading-info = 'Encabezado'. append x_heading to gt_header. clear gt_footer[]. clear x_footer. x_footer-typ = 'S'. x_footer-KEY = 'Footer: '. x_footer-info = 'Ejemplo Pie de Pagina'. append x_footer to gt_footer.

*** Top of page event ***

x_event-name = slis_ev_top_of_page. x_event-form = 'TOP_OF_PAGE'. append x_event to t_event. *** End of list event

x_event-name = slis_ev_end_of_list. x_event-form = 'END_OF_LIST'. append x_event to t_event.

endform. form sort_alv.

clear gt_sort. gt_sort-fieldname = 'gjahr'. ______________________________________________________________________________________ Xioma Consulting 100

gt_sort-subtot = X. gt_sort-comp = X. gt_sort-up = X. append gt_sort to it_sort.

endform. form TOP_OF_PAGE.

call function 'reuse_alv_commentary_write' exporting i_logo = 'logo xioma' "subir logo en transaccion

oaor

it_list_commentary = gt_header. endform. form END_OF_LIST.

call function 'reuse_alv_commentary_write' exporting it_list_commentary = gt_footer i_end_of_list_grid = X. indicador para pie de pagina

endform. ***** Codigo ***** START-OF-SELECTION. select * up to 10 rows from rseg into table tab_arseg. perform fieldcat. perform layout. perform header_and_footer. perform sort_alv. call function 'reuse_alv_grid_display' exporting ______________________________________________________________________________________ Xioma Consulting 101

i_buffer_active i_callback_program * * i_callback_user_command i_structure_name it_sort is_layout it_events it_fieldcat tables t_outtab exceptions program_error others

= space = sy-repid = = = it_sort = gd_layout = t_event = gt_fieldcat[]

= TAB_ARSEG

= 1 = 2.

El resultado final despues de la ejecucin sera el siguiente:

______________________________________________________________________________________ Xioma Consulting 102

Depuracin (Debugger)
El Debugger es una herramienta de programacin que se puede utilizar para ejecutar programas ABAP por lnea o por seccin con el proposito de depurar el cdigo. Con esta herramienta se visualiza el contenido de las variables y se sigue la ejecucin de la lgica del programa.

Si se desea debuggear una transaccion desde el inicio, se utiliza /h en la linea de comandos para activar el debugging y despues se indica el nombre de la transaccin

Modos de Visualizacin
Campos: Esta opcin proporciona el contenido de hasta ocho campos. El contenido de los tres campos ms importantes del sistema se visualiza siempre. Tablas: Visualiza el contenido de una tabla interna. Esta opcin permite visualizar y corregir las entradas en una tabla interna. Breakpoints: Se pueden utilizar hasta 30 breakpoints. Al lado de cada uno existe un contador. Se puede tambin agregar o suprimir breakpoints en esta opcin. Watchpoints: Se puede fijar un watchpoint para un campo e interrumpir el programa siempre que el valor de ese campo cambie. Este modo de visualizacin contiene una lista de watchpoints, los campos y los programas a los cuales se asignan, los valores actuales de los campos, y las condiciones sobre las cuales se activa el mismo. Llamadas: Esta opcin visualiza el evento actual y las llamadas hasta el breakpoint actual. La tlima llamada activa es desplegada al principio de la lista; las llamadas anteriores se enumeran en orden cronolgico inverso. Cuando un evento (por ejemplo, START-OFSELECTION) concluye, se elimina de la visualizacin. Resumen: Visualiza la estructura del programa. Enumera sus eventos, subrutinas, y mdulos, y muestra cuales secciones pertenecen a cuales eventos. Tambin visualiza la seccin que es procesada actualmente. Opciones: Visualiza las configuraciones actuales del debugger. Se pueden cambiar las configuraciones seleccionandolas.

______________________________________________________________________________________ Xioma Consulting 103

Recorriendo el cdigo fuente


Single Step: Utilice esta opcin para ejecutar el programa lnea por lnea. Execute: Tambin permite ejecutar el programa lnea por lnea pero en caso de encontrar una subrutina o una funcin se ejecuta en un solo paso. Return: El Debugger vuelve al programa anterior despus de ingresar a una subrutina o funcin.

Continue: Se utiliza para procesar el programa hasta el siguiente breakpoint. Si no hay mas breakpoints en el programa, el sistema da salida al modo de debugging y ejecuta el resto del programa normalmente.

Visualizacion y modificacion de campos


Para visualizar el contenido de un campo, digite el nombre y oprima <Enter> . Otra manera es dando doble click a la variable en el cdigo del programa

______________________________________________________________________________________ Xioma Consulting 104

Visualiza el contenido del campo en formato hexadecimal. Visualiza el contenido del campo en su formato original de la salida. Borra todos los nombres de los campos. Modifica el contenido de los campos.

Procesar tablas internas


Se puede visualizar y cambiar el contenido de las tablas internas en tiempo de ejecucion (Debugger).

______________________________________________________________________________________ Xioma Consulting 105

Header Line: Si la tabla interna tiene una lnea de la cabecera, es indicado por este icono. Si se le da doble click al icono, el sistema abre la visualizacin estructurada del campo.

Breakpoints
Existen varias formas de establecer breakpoints: 1) Con la sentencia break-point:
IF SY-SUBRC NE 0. BREAK-POINT. ENDIF.

Tambin se pueden enumerar (BREAK-POINT 1, BREAK-POINT 2) para que sean ms fciles de identificar 2) Breakpoint para usuario especfico:
IF SY-SUBRC NE 0. BREAK <nombre_usuario>. endif.

3) En tiempo de ejecucin se puede colocar a la izquierda de la lnea haciendo click en el botn .

Tambin se pueden establecer breakpoints al momento

que se esta debuggeando el

programa como por ejemplo breakpoints en sentencias, subrutinas, llamadas a funciones, mtodos y en excepciones del sistema.

Watchpoints
Si se desea interrumpir un programa cuando el contenido de un campo o de una estructura cambia, se puede utilizar un watchpoint. Es posible fijar hasta cinco watchpoints, incluyendo los watchpoints para los strings.

______________________________________________________________________________________ Xioma Consulting 106

Para crearlos se hace de la siguiente forma

Click en

y seguido indicamos el nombre del campo

Adems se puede modificar el contenido y borrar los watchpoints mediante los botones y respectivamente que aparecen al lado de cada uno.

______________________________________________________________________________________ Xioma Consulting 107

Creacin de Funciones
Las funciones son similares a los procedimientos, pero como ya se mencion anteriormente se comportan como una caja negra. Su definicin es global en el sistema, por lo cual no es necesario definirlas en el programa. Las funciones en ABAP se manipulan por medio de la transaccin SE37. Existen ya una cantidad considerable de funciones estndar definidas en el sistema y que estn disponibles para el desarrollador. A continuacin se explicarn los pasos necesarios para crear una funcin. Primero se deber crear un grupo de funciones y luego se crear la funcin.

Creacin de un grupo de funciones


Los grupos de funciones contienen mdulos de funciones. Estos grupos y mdulos se administran en la biblioteca de funciones, que se invoca por medio de la transaccin SE37.

______________________________________________________________________________________ Xioma Consulting 108

Para crear un grupo de funciones se utiliza el men principal con la opcin Pasar a > Gestin gr. funciones > Crear grupo

En esta pantalla se debe ingresar el nombre del grupo de funciones, una descripcin breve y el responsable.

Al hacer click en Grabar el sistema solicitar la creacin de una orden de transporte. Una vez creado satisfactoriamente el grupo de funciones, se puede crear la funcin.

______________________________________________________________________________________ Xioma Consulting 109

Creacin de una funcin


Para crear una funcin se utiliza la transaccin SE37. Se introduce el nombre de la funcin y se da click en Crear.

Luego se coloca el Grupo de Funciones dentro del cual estar la funcin y una descripcin breve. Se indicar el grupo de funciones ZGRUPO_PRUEBA creado en el paso anterior.

______________________________________________________________________________________ Xioma Consulting 110

Una vez colocados los datos se da click en Grabar.

El sistema mostrar el Function Builder. Aqu se tienen cuatro tipos de parmetros que pueden ser creados: IMPORTING, EXPORTING, CHANGING y TABLES. Adems de una pestaa EXCEPTIONS y otra para el CODIGO FUENTE de la funcin.

______________________________________________________________________________________ Xioma Consulting 111

Importing Estos son los parmetros de entrada de la funcin. Cuando la funcin es invocada, un parmetro actual vlido debe ser especificado para cada parmetro importing que no sea opcional. El valor que se les transfiere en la invocacin no cambia durante la ejecucin de la funcin.

______________________________________________________________________________________ Xioma Consulting 112

Exporting Estos son los parmetros de salida de la funcin. Cuando se invoca la funcin, un parmetro actual puede ser especificado para cada parmetro exporting. El contenido del parmetro exporting es transferido al parmetro actual si la ejecucin de la funcin finaliza sin errores.

______________________________________________________________________________________ Xioma Consulting 113

Changing Estos son parmetros tanto de entrada como de salida. Cuando la funcin es invocada, un parmetro actual vlido debe ser especificado para cada parmetro changing que no sea opcional. El contenido del parmetro changing es transferido al parmetro actual si la ejecucin de la funcin finaliza sin errores.

Tables Igual que los parmetros changing, estos son parmetros tanto de entrada como de salida, pero solo pueden ser usados para transferir tablas estndar con header line. En este ejemplo no utilizaremos este tipo de parmetro.

______________________________________________________________________________________ Xioma Consulting 114

Exceptions Se utilizan para capturar un tipo de error especfico durante el tiempo de ejecucin, de tal manera que se produzca un dump (error fatal) que cancele bruscamente la ejecucin de la funcin.

Para ejecutar la excepcin se utilizara un cdigo como el siguiente:


MESSAGE I013(ZMM) RAISING EXCEP1.

Si durante la ejecucin de la funcin ocurre un error correspondiente con la excepcin EXCEP1, se desplegara en pantalla el mensaje 013 de tipo informativo (I) de la clase ZMM, deteniendo el programa al ejecutar el RAISING.

______________________________________________________________________________________ Xioma Consulting 115

Cdigo Fuente Aqu se escribe el cdigo de la funcin.

En este ejemplo la funcin lo nico que hace es devolver el stock disponible para un material que se encuentra en un lote, una ubicacin, un centro y un almacn. Si no se encuentra el material, la funcin devuelve un mensaje de error.

______________________________________________________________________________________ Xioma Consulting 116

BAPIs
Una BAPI (Business Application Programming Interface) es una funcin de SAP que permite llevar a cabo una tarea funcional. Por ejemplo, una BAPI puede decir la disponibilidad de un material, crear un pedido o incluso un documento financiero. Existen una gran cantidad de BAPIs disponibles para que sean utilizados por los desarrolladores, de ah su nombre que viene del viejo concepto de API (Application Programming Interface). Su aparicin en SAP R/3 fu a partir de la versin 3.1 y se hizo para permitir la integracin de software entre SAP R/3 y otros fabricantes de software. El nmero total de BAPIs se ha ido incrementando con la liberacin de nuevas versiones de SAP R/3. Los objetos contenidos en el repositorio encapsulan los datos y procesos. De esta forma el acceso a los datos y procesos, por agentes externos, es permitido solo mediante mtodos especficos; representados estos por su BAPI correspondiente. De esto ltimo se desprende que una BAPI no es ms que un mtodo de un Objeto de Negocio de SAP R/3. Por ejemplo, la funcionalidad implementada para el objeto tipo "Customer" incluye una verificacin para la existencia del cliente. De esta forma el tipo de objeto "Customer" posee una BAPI llamada "Customer.CheckExistence". Para que un programa de aplicacin sea capaz de usar la BAPI de un mtodo, solo necesita saber como invocar el mtodo; es necesario conocer la definicin de la interface del mtodo. La interfase de una BAPI se define por:

.- Parmetros de Entrada( Import Parameters ) .- Contiene datos a ser pasados desde el programa llamante a la BAPI .- Parmetros de Salida( Export Parameters ) .- Contiene los datos que la BAPI pasa al programa invocante .- Tablas de Entrada/Salida( Import/Export Table Parameters )

______________________________________________________________________________________ Xioma Consulting 117

Para conocer los parmetros que utiliza una BAPI especfica se puede hacer de las siguientes maneras: 1. Ingresando a la transaccin BAPI.

A. rbol de Navegacin Organizado ya sea de manera jerrquica o alfabticamente, aqu se busca el nombre de la BAPI requerida segn sea su categora o su nombre, es importante recordar que por lo general todas las BAPIs comienzan con esta palabra en sus nombres como por ejemplo: BAPI_GOODSMVT_CREATE, la cual es utilizada para el movimiento de mercancas. B. Pestaa de opciones y propiedades de una BAPI, aqu se ve informacin relacionada con una BAPI especifica como es su descripcin, modulo de funciones a la que pertenece y documentacin entre otras. C. En el Campo Mdulo de Funciones al dar doble-click aparece la pantalla donde se encuentra el cdigo fuente de la BAPI.

______________________________________________________________________________________ Xioma Consulting 118

2. Ingresando a la Transaccin SE37.

A. SE coloca el nombre de la BAPI en caso de conocerlo, de no ser as, se puede colocar en este campo BAPI* y de esta manera obtener como resultado todas las BAPIs disponibles, una ves seleccionada la BAPI se selecciona visualizar y aparece el cdigo fuente de la BAPI. Cdigo Fuente BAPI. Al ser una funcin la visualizacin de los parmetros, cdigo o pruebas de la BAPI se realizan desde la transaccin SE37. Las diferentes pestaas ubicadas en la parte superior muestran los parmetros de entrada, de salida y las tablas que requiere la BAPI para realizar un proceso especfico. Generalmente es complicado saber para un proceso determinado, usando una BAPI X que datos se deben enviar para poder obtener el resultado requerido la manera ms comn es analizar estos parmetros basndose en sus descripciones para as reunir todo lo necesario para realizar el proceso. En la actualidad las BAPIs del sistema SAP R/3 se implementan como mdulos de funciones que se tratan con el Function Builder del Workbench ABAP. Cada mdulo de funcin que da soporte a una BAPI debe cumplir los requisitos siguientes: .- Soportar el Protocolo Remote Function Call( RFC ) .- Haber sido asignada como un mtodo a un Objeto de Negocio SAP .- Debe procesarse sin retornar ventanas de dilogo al programa llamante

______________________________________________________________________________________ Xioma Consulting 119

Ventajas de usar BAPIs


Las BAPIs son mtodos estandarizados de los Objetos de Negocio SAP R/3, que permiten la integracin de los componentes de software de los clientes y de terceros. Algunas de las ventajas de usar BAPIs son: .- Es un Estndar de Negocio .- Es un Estndar Consensuado .- Garantiza estabilidad y compatibilidad futura .- Garantiza orientacin a objetos .- Independencia de entorno( apertura )

Usar BAPIs en programas de aplicacin


Actualmente una BAPI puede ser invocada de dos formas diferentes: .- Llamar la BAPI en el repositorio .- Hacer llamada RFC a la funcin que implementa la BAPI Ejemplo de llamada de una BAPI
Fecha de posteo lw_goodsmvt_header-pstng_date = SY-DATUM. * Fecha de documento lw_goodsmvt_header-doc_date = SY-DATUM. * tipo de movimiento lw_goodsmvt_item-move_type = c_move_type. * codigo de material lw_goodsmvt_item-MATERIAL = WG_M. * Material Receptor lw_goodsmvt_item-MOVE_MAT = WG_M. call function 'BAPI_GOODSMVT_CREATE' exporting goodsmvt_header = lw_goodsmvt_header goodsmvt_code = c_goodsmvt_code importing materialdocument = l_materialdocument matdocumentyear = l_matdocumentyear tables goodsmvt_item = lt_goodsmvt_item return = t_return. IF SY-SUBRC NE 0. "Si no hubo errores CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. WL_RETURN-TYPE = 'S'. MESSAGE ID 'S1' TYPE 'S' NUMBER '333' WITH 'Creado Doc material: ' l_materialdocument 'Ao: ' l_matdocumentyear. ELSE. "Si hubieron errores WG_ERROR = 'X'. ENDIF.

______________________________________________________________________________________ Xioma Consulting 120

BATCH INPUTS
La creacin de Batch Inputs no es ms que un proceso automtico que permite usar un guin para ejecutar transacciones de forma masiva. Cuando se habla de Bacth-Input se puede estar refiriendo a un fichero plain-text que necesita que un programa standard (o propio) recoja dicha informacin, o un programa que simula el proceso de llenado de las pantallas como si el usuario estuviese delante.

Crear una grabacin


Para crear una grabacin se ingresa a la transaccion SM35 y se da click en el botn o se accesaa directamente desde la transaccion SHDB dando click en y aparece la siguiente ventana donde se coloca el nombre de la grabacin y el cdigo de transaccin. En este ejemplo es MM01 y se da click en Iniciar Grabacin.

______________________________________________________________________________________ Xioma Consulting 121

1. Ingresar los datos necesarios: a. Material: (si es nmero externo colocar el cdigo, si es nmero interno el sistema lo dar automticamente) Para este caso es externo. b. Ramo: Ramo de la empresa (en este caso es Alimentos) c. Tipo de material: es el tipo de material que vamos a crear ( en este caso es Salchicha)

______________________________________________________________________________________ Xioma Consulting 122

2. Dar Enter 3. En la siguiente pantalla seleccionar las vistas que se van a crear para este material. Para este ejemplo sern las de Datos bsicos 1 y 2.

______________________________________________________________________________________ Xioma Consulting 123

4. Dar Enter o clic en 5. En la vista de Datos bsicos 1 colocar los siguientes datos a. Descripcin del material b. UMB

______________________________________________________________________________________ Xioma Consulting 124

6. Dar Enter 7. En la vista de Datos bsicos 2 colocamos la informacin correspondiente en los siguientes campos: a. Denominacin estndar b. Formato DIN

______________________________________________________________________________________ Xioma Consulting 125

8. Dar Enter para la siguiente pantalla:

9. Dar click en la opcin Si para el mensaje que indica que se ha creado el material.

______________________________________________________________________________________ Xioma Consulting 126

Click en Guardar y volver a la transaccin SHDB donde aparece el ejemplo

Se marca y click en , y aparece la siguiente pantalla donde se coloca el nombre del programa donde se va a generar el cdigo de dicha grabacin.

______________________________________________________________________________________ Xioma Consulting 127

Se introduce la descripcin

Y por ltimo click en principal.

para que genere el cdigo que se va a utilizar en el programa

______________________________________________________________________________________ Xioma Consulting 128

Bases de Datos Lgicas


Las bases de datos lgicas son programas especiales ABAP que recuperan datos y los hacen disponibles para programas de uso. El empleo ms comn de bases de datos lgicas es leer informacin de la base de datos y unirlos a programas ejecutables ABAP.

Sin embargo, desde la versin 4.5A, tambin ha sido posible llamar bases de datos lgicas que usan el mdulo de funcin LDB_PROCESS. Esto le permite llamar varias bases de datos lgicas de cualquier programa ABAP. Es tambin posible llamar una base de datos lgica ms de una vez en un programa.

Funciones de las bases de datos lgicas


Adems de permitir leer datos de la base de datos, las bases de datos lgicas tambin son utilizadas para las siguientes tareas: Lectura de los mismos datos para varios programas: Los programas individuales no necesitan conocer la estructura exacta de las tablas de base de datos relevantes (y menos sus llaves forneas).

Definicin de la misma interfaz de usuario para varios programas: Las Bases de datos lgicas tienen una pantalla de seleccin establecida. Por lo tanto, todos los programas que usan la base de datos lgica tienen la misma interfaz de usuario.

Comprobacin de autorizacin central: Las comprobacin de autorizacin para datos centrales y sensibles pueden ser programadas en el centro de la base de datos para impedirlos y de ese modo evitar el uso de programas simples.

Mejor funcionamiento: Si se quiere mejorar los tiempos de respuesta, las bases de datos lgicas le permiten tomar un nmero de medidas para lograrlo (por ejemplo, el uso JOINS en vez de SELECT anidados).
______________________________________________________________________________________ Xioma Consulting 129

Creacin de una base de datos lgica (SE36)


Para la creacin, modificacin o uso de bases de datos lgicas se cuenta con un Generador de Bases de Datos Lgicas, y se puede acceder de la siguiente forma: 1)Al hacer login en la aplicacin, en la barra de men, click en herramientas -> Workbench ABAP -> Desarrollo -> Entorno de Programacin -> Bases Datos Lgicas.

______________________________________________________________________________________ Xioma Consulting 130

2)Directamente mediante la transaccin SE36.

Seguidamente aparece la pantalla del Generador de bases de datos lgicas.

El siguiente ejemplo utiliza 5 tablas Z que son: ZTESTUDIANTES, ZTNOTAS, ZTPROFES, ZTPROFES_CURSO y ZTCURSOS en donde ZTESTUDIANTES es el nodo raz o principal
______________________________________________________________________________________ Xioma Consulting 131

Se introduce la descripcin de la base de datos lgica

Se coloca el nombre del nodo raz, la descripcin y se especifica el tipo de nodo, para este caso el nodo raz se llamara ZTESTUDIANTES

______________________________________________________________________________________ Xioma Consulting 132

Aparece la base de datos lgica con el nico nodo creado hasta el momento

Se procede a insertar los nodos, se marca el nodo actual y click en Aparece una pantalla en donde se coloca el nombre del nodo q se va a insertar (ZTNOTAS), la descripcin, se escoge debajo de cual nodo se va a insertar y por ltimo se especifica el tipo

______________________________________________________________________________________ Xioma Consulting 133

Se repite el proceso con todos los nodos q se van a insertar y al final quedara la base de datos lgica de la siguiente forma

Se crean los campos de seleccin (SELECT-OPTIONS), click en Por ser la primera vez, nos va a mostrar la siguiente pantalla donde se marca para cuales nodos se quiere que hayan delimitaciones opcionales y SELECT-OPTIONS

______________________________________________________________________________________ Xioma Consulting 134

De esta forma se crea el include de los SELECT-OPTIONS en donde se cambian los ? que se generan automticamente por los nombres que se desean, para el ejemplo se crearon 3: S_EST(estudiantes), S_MAT(cursos) y S_PROF(profesores).

Se regresa a la pantalla principal con

y click en

El nombre del programa creado es SAPDBZLDB_EXAMPLE02 en donde: las primeras 5 letras son SAPDB y van a ser constantes, seguido del nombre de la base de datos logica ZLDB_EXAMPLE02

______________________________________________________________________________________ Xioma Consulting 135

Se genera el programa automticamente con dos includes principales

Donde el include TOP contiene la declaracin de las tablas que se insertaron como nodos

______________________________________________________________________________________ Xioma Consulting 136

Y el include NXXX contiene los includes de cada nodo insertado en la base de datos lgica.

En donde cada include creado por nodo van a haber dos FORMS generados automticamente y que se pueden modificar dependiendo de lo que se requiera, se puede ver el caso del include para el nodo ZTESTUDIANTES

El nombre del primer FORM creado es PUT_ZTESTUDIANTES en donde: los primeros 4 caracteres son PUT_ y van a ser constantes, seguido del nombre del nodo ZTESTUDIANTES. Y el segundo FORM AUTHORITYCHECK_ZTESTUDIANTES va a estar formado por AUTHORITYCHECK_, seguido del nombre del nodo ZTESTUDIANTES

______________________________________________________________________________________ Xioma Consulting 137

Importante: el FORM PUT_ZTESTUDIANTES tiene la siguiente lnea: PUT ZTESTUDIANTES. Ah es donde enva el resultado de la bsqueda realizada, en el programa de control el resultado se va a recibir por medio del evento: GET ZTESTUDIANTES. Despus de modificar los includes para cada nodo, se regresa a la pantalla principal y se da click en anteriormente para modificar el texto de los SELECT-OPTIONS que se crearon

______________________________________________________________________________________ Xioma Consulting 138

Creacin del programa (SE38)


Ahora se procede a crear el programa ejecutable para unirlo con la base de datos lgica. Se accesa directamente desde la SE38

Se crea el programa de ejemplo ZLDB_PRUEBA02

______________________________________________________________________________________ Xioma Consulting 139

En los atributos del programa se coloca la descripcin del mismo, adems se escoge el tipo (Programa Ejecutable) y lo mas importante se introduce el nombre de la Base de datos lgica que se creo anteriormente (ZLDB_EXAMPLE02)

Y por ltimo con un pequeo cdigo se extrae la informacin requerida

______________________________________________________________________________________ Xioma Consulting 140

Y as se vera el programa al momento de ejecutarlo (con los SELECT-OPTIONS que se crearon en la base de datos lgica)

Funcin LDB_PROCESS
El mdulo de funciones permite que se llame una base de datos lgica directamente en el mismo modo interno. Los registros ledos por la base de datos lgica se traspasan a las subrutinas CALLBACK indicadas.

La profundidad de lectura se determina mediante los eventos deseados que se han indicado en el parmetro CALLBACK. Puede haber como mximo dos llamadas por nodo que se correspondan con los eventos GET nodo o GET nodo LATE en SUBMIT. Es decir, si el campo "GET" est marcado, se llamar la subrutina CALLBACK directamente despus de la lectura de los datos y antes del procesamiento del subrbol que se halla en la base. Si est marcado "GET_LATE", se llamar la subrutina CALLBACK despus de procesar el subrbol que se halla en la base.

______________________________________________________________________________________ Xioma Consulting 141

A pesar de que se pueden llamar diferentes bases de datos lgicas anidadas de la forma que se desee, existen las siguientes restricciones en cuanto al procesamiento de la misma base de datos lgica:

1) No se puede volver a llamar la misma base de datos lgica mientras no est finalizada otra ejecucin (excepcin LDB_ALREADY_RUNNING). 2) Se puede llamar varias veces consecutivamente la misma base de datos lgica cuando est prevista para ello (excepcin LDB_NOT_REENTRANT). Que est prevista para ello significa que el programa de base de datos contiene una subrutina (LDB_PROCESS_INIT) que prepara la base de datos lgica para un paso posterior.

Existen varias posibilidades para indicar limitaciones de la base de datos que, en su mayora, se corresponden con el traspaso de parmetros en SUBMIT. SELECTIONS: estructura RSPARAMS. Se corresponde con el suplemento WITH SELECTION-TABLE en SUBMIT.

VARIANT: nombre de una variante que pertenece al programa de base de datos de la base de datos lgica. Se corresponde con el suplemento USING SELECTION-SET en SUBMIT.

EXPRESSIONS: delimitaciones opcionales en el formato RSDS_TEXPR. Se corresponde con el suplemento WITH FREE SELECTIONS en SUBMIT.

______________________________________________________________________________________ Xioma Consulting 142

La regulacin en caso de conflicto es idntica a SUBMIT: las delimitaciones almacenadas en la variante VARIANT se sobrescriben con las indicadas de forma explcita en SELECTIONS. De forma similar, las delimitaciones opcionales archivadas en la variante se sobrescriben con las traspasadas de forma explcita en EXPRESSIONS.

______________________________________________________________________________________ Xioma Consulting 143

El siguiente es un ejemplo del uso de la funcion LDB_PROCESS llamando a la base de datos logica ZLD_EXAMPLE02

REPORT

ZLDB_PRUEBA01.

TABLES ZTESTUDIANTES. SELECT-OPTIONS SL_EST FOR ZTESTUDIANTES-ZID_EST.

TYPE-POOLS: RSDS, RSFS. DATA: CALLBACK TYPE TABLE OF LDBCB, CALLBACK_WA LIKE LINE OF CALLBACK. DATA: SELTAB TYPE TABLE OF RSPARAMS, SELTAB_WA LIKE LINE OF SELTAB. DATA: TEXPR TYPE RSDS_TEXPR, FSEL TYPE RSFS_FIELDS.

***

FORM's que se ejecutan una vez que se llama la LDB = 'ZTESTUDIANTES'. = X. = X. = SY-REPID. = 'CALLBACK_ZTESTUDIANTES'.

***

CALLBACK_WA-LDBNODE CALLBACK_WA-GET CALLBACK_WA-GET_LATE CALLBACK_WA-CB_PROG CALLBACK_WA-CB_FORM

APPEND CALLBACK_WA TO CALLBACK.

CLEAR CALLBACK_WA. CALLBACK_WA-LDBNODE CALLBACK_WA-GET CALLBACK_WA-CB_PROG CALLBACK_WA-CB_FORM = 'ZTNOTAS'. = X. = SY-REPID. = 'CALLBACK_ZTNOTAS'.

APPEND CALLBACK_WA TO CALLBACK.

______________________________________________________________________________________ Xioma Consulting 144

***S_EST es el SELECT-OPTIONS creado en ZLD_EXAMPLE02*** SELTAB_WA-KIND = 'S'. SELTAB_WA-SELNAME = 'S_EST'.

LOOP AT SL_EST. MOVE-CORRESPONDING SL_EST TO SELTAB_WA. APPEND SELTAB_WA TO SELTAB. ENDLOOP.

********** Funcion para llamar LDB a partir de la version 4.5A ********** CALL FUNCTION 'LDB_PROCESS' EXPORTING **********Nombre de base de datos logica que se creo********** LDBNAME VARIANT EXPRESSIONS FIELD_SELECTION TABLES CALLBACK SELECTIONS EXCEPTIONS LDB_NOT_REENTRANT LDB_INCORRECT LDB_ALREADY_RUNNING LDB_ERROR LDB_SELECTIONS_ERROR = 1 = 2 = 3 = 4 = 5 = CALLBACK = SELTAB = 'ZLDB_EXAMPLE02' = ' ' = TEXPR = FSEL

LDB_SELECTIONS_NOT_ACCEPTED = 6 VARIANT_NOT_EXISTENT VARIANT_OBSOLETE VARIANT_ERROR FREE_SELECTIONS_ERROR CALLBACK_NO_EVENT = 7 = 8 = 9 = 10 = 11

CALLBACK_NODE_DUPLICATE = 12 ______________________________________________________________________________________ Xioma Consulting 145

OTHERS

= 13.

IF SY-SUBRC <> 0. WRITE: 'Exception with SY-SUBRC', SY-SUBRC. ENDIF.

FORM CALLBACK_ZTESTUDIANTES USING NAME WA EVT

TYPE LDBN-LDBNODE

TYPE ZTESTUDIANTES TYPE C

CHECK TYPE C. CASE EVT. WHEN 'G'. WRITE: / WA-ZNOMBRE, WA-ZAPE1, WA-ZAPE2. ULINE. WHEN 'L'. ULINE. ENDCASE. ENDFORM.

FORM CALLBACK_ZTNOTAS USING NAME WA EVT

TYPE LDBN-LDBNODE TYPE ZTNOTAS TYPE C

CHECK TYPE C. WRITE: / WA-ZNOTA. ENDFORM.

______________________________________________________________________________________ Xioma Consulting 146

Objetos de autorizacin
Creacin de un objeto de autorizacin (SU21)
Para crear un objeto de autorizacin se utiliza la transaccin SU21. A travs de esta transaccin se pueden crear, visualizar o modificar dichos objetos que, como se explic anteriormente, son verificados a travs de la instruccin Authority-check. Estos objetos se suelen agrupar por clases.

Para crear el nuevo objeto es necesario seleccionar la clase en la cual se debe incluir, a travs de un doble click. En caso de querer crear una clase nueva se da click en el botn donde se indicara el nombre de la clase y la descripcin. Una vez dentro de la clase se utiliza de nuevo el botn para crear el nuevo objeto de autorizacin.

______________________________________________________________________________________ Xioma Consulting 147

Creacin de la clase

Acceso a la clase creada

Los objetos de autorizacin estan compuestos por el nombre del objeto, una descripcin, la clase a la que pertenecen y los mbitos de autorizacin correspondientes. Estos ltimos definen el comportamiento del objeto y estan determinados por un elemento de datos y un dominio (pueden ser creados nuevos mbitos por medio de la transaccin SU20).

______________________________________________________________________________________ Xioma Consulting 148

Es usual utilizar un mbito que determine las acciones que se pueden ejercer sobre el objeto que se desea evaluar en el authority-check. El mbito ACTVT permite definir estas acciones.

______________________________________________________________________________________ Xioma Consulting 149

Una vez finalizado el proceso se visualiza el nuevo registro en el listado de objetos.

______________________________________________________________________________________ Xioma Consulting 150

Authority-check
Las verificaciones de autorizacin se deben realizar antes de tratar de acceder informacin en la base de datos. La instruccin AUTHORITY-CHECK verifica si el usuario tiene o no derechos sobre los valores que se desean acceder. Si la variable SYSUBRC vale 0, entonces el usuario tiene derechos suficientes para proseguir, si es 4 el usuario no tiene permiso suficiente y en el caso de 8 no se especificaron suficientes parmetros para validar la autorizacin. Para realizar la verificacin de la autorizacin se hace referencia a los objetos de autorizacin, estos definen la combinacin de campos que sirven como modelo tanto para las autorizaciones como para las verificaciones de autorizacin. Se organizan en clases de objetos para facilitar su administracin y localizacin (transaccin SU21). Sintaxis:
AUTHORITY-CHECK OBJECT <objeto> ID <identificador1> FIELD <campo1> | DUMMY ... ID <identificador10>FIELD <campo10>| DUMMY.

Ejemplo:
PARAMETERS carr TYPE spfli-carrid.

AT SELECTION-SCREEN. AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD carr ID 'ACTVT' IF SY-SUBRC NE 0. FIELD '03'.

MESSAGE 'Sin autorizacin' TYPE 'E'. ENDIF.

______________________________________________________________________________________ Xioma Consulting 151

Objetos de Bloqueo
SAP puede sincronizar el acceso simultneo de varios usuarios a los mismos datos con un mecanismo de bloqueo. Cuando se programan las transacciones interactivas, los bloqueos son fijados y lanzados llamando funciones de bloqueo y desbloqueo. Estas funciones se generan automticamente al crear los objetos de bloqueo en el diccionario de ABAP.

Estructura de un objeto de bloqueo


Las tablas en las que los datos se deben bloquear se definen en un objeto de bloqueo junto con sus campos llave. Cuando se seleccionan las tablas, hay una tabla (la tabla primaria) que es la que primero se selecciona. Otras tablas (tablas secundarias) se pueden tambin agregar usando llaves forneas.

Bloquear campos
Los argumentos a bloquear de una tabla en el objeto de bloqueo consisten en los campos llave de la tabla.

Los campos a bloquear de ese objeto de bloqueo son usados como parmetros de entrada en las funciones de bloqueo y desbloqueo. Cuando se llaman estas funciones, las filas de la tabla son especificadas definiendo valores en estos campos. Estos valores pueden tambin ser genricos. Los campos del bloqueo definen qu subconjunto de las filas de la tabla debe ser bloqueado.

______________________________________________________________________________________ Xioma Consulting 152

Crear un Objeto de Bloqueo


Para crear un objeto de bloqueo se utiliza la transaccin SE11.

Al presionar el botn de Crear, veremos la siguiente pantalla:

______________________________________________________________________________________ Xioma Consulting 153

Permitir RFC: Si este indicador est seleccionado, se podrn llamar los mdulos de funciones generados durante la generacin del objeto de bloqueo, los cuales fijan y liberan bloqueos mediante Remote Function Calls (RFC). Dependencias En caso de que active permitir RFC para un objeto de bloqueo existente, deber asegurarse de que la llamada de los mdulos de funciones generados se efecte con parmetros adecuados al tipo. Antes de activar el objeto de bloqueo con la nueva opcin, debera verificar todos los programas que utilicen los mdulos de funciones en cuestin. En el siguiente Tab se encuentran las Tablas a utilizar. En un objeto de bloqueo se indicarn las tablas en las que deben bloquearse registros con una orden de bloqueo.

______________________________________________________________________________________ Xioma Consulting 154

Tabla primaria

En la seleccin de tablas se partir de una tabla (tabla primaria). Modo de bloqueo

Determina cmo sincronizar el acceso de varios usuarios a los registros de la tabla. Existen los siguientes modos: Proteccin de escritura: los datos bloqueados pueden ser visualizados o tratados nicamente por un usuario. Tanto la peticin de otra proteccin de escritura como de otra proteccin de lectura sern rechazadas. Proteccin de lectura: Varios usuarios pueden tener acceso de slo lectura a los mismos datos simultneamente. No obstante, en el momento en que un usuario pase a tratar los datos, stos quedarn bloqueados para los dems usuarios. Las peticiones de nuevas protecciones de lectura se aceptarn incluso si stas provienen de otros usuarios. Las protecciones de escritura sern rechazadas. Proteccin de escritura ampliada: Igual a la de proteccin de escritura, pero slo puede ser solicitada una vez por la misma transaccin. Cualquier otra nueva peticin de una proteccin ser rechazada.

Tablas secundarias

A la tabla primaria pueden aadrsele otras tablas (tablas secundarias) mediante relaciones de llaves externas. El tercer Tab es de Parmetros de bloqueo, en el cual se indican los valores que sern pasados a las funciones de bloqueo y desbloqueo

______________________________________________________________________________________ Xioma Consulting 155

Nombre de parmetro bloqueo

Un parmetro de bloqueo tiene, por lo general, el mismo nombre que el campo de tabla correspondiente. Una modificacin ser precisa, por ejemplo, cuando varios campos de diferentes tablas del objeto de bloqueo tienen el mismo nombre. Indicador Pond

En caso de que este indicador est marcado para el campo, se incluir como parmetro en los mdulos de funciones generados durante la activacin del objeto de bloqueo. Estos parmetros sirven para la transmisin de la llave a bloquear o para el control del comportamiento de bloqueo en la transmisin del valor inicial. El indicador se fija por defecto. En caso de no necesitar el parmetro de bloqueo en los mdulos de funciones generados, se puede desmarcar. En este caso, en relacin a este parmetro, se bloquear siempre de forma genrica. Al finalizar de realizar los cambios solamente se la da al botn Activar queden listos los cambios. para que

Funciones de los Objetos de bloqueo


Cuando se ha creado un objeto de bloqueo automticamente se crean dos funciones, una para bloquear (ENQUEUE_<nombre objeto de bloqueo>) y otra para desbloquear objetos (DEQUEUE_< nombre objeto de bloqueo >) Los mdulos generados de la funcin se asignan automticamente a los grupos de la funcin. No se debe cambiar estos mdulos de la funcin y su asignacin a los grupos de la funcin puesto que los mdulos de la funcin son generados nuevamente cada vez que el objeto de bloqueo es activado.

______________________________________________________________________________________ Xioma Consulting 156

Parmetros de las funciones


Nombres de campo del objeto de Bloqueo Las llaves que se bloquearn se deben pasar aqu. Parmetros para pasar bloqueos al programa de actualizacin Un bloqueo se quita generalmente en el final de la transaccin o cuando se invoca la funcin de desbloqueo (DEQUEUE). Sin embargo, no sucede as si la transaccin ha llamado rutinas de actualizacin. En este caso, un parmetro debe comprobar que se haya quitado el bloqueo. El parmetro _SCOPE controla cmo el bloqueo o el desbloqueo se pasa al programa de actualizacin. Se tiene las opciones siguientes: _SCOPE = 1: Los bloqueos o los desbloqueos no se pasan al programa de actualizacin. Se quita el bloqueo cuando se termina la transaccin. _SCOPE = 2: El bloqueo o el desbloqueo se pasa al programa de actualizacin. El programa de actualizacin es responsable de quitar el bloqueo. El programa interactivo con el cual el bloqueo fue solicitada no tiene mas influencia en el comportamiento del bloqueo. sta es la configuracin estndar de la funcin de bloqueo (ENQUEUE). _SCOPE = 3: El bloqueo o desbloqueo tambin se pasa al programa de actualizacin. El bloqueo se debe quitar en el programa interactivo y en el programa de actualizacin. sta es la configuracin estndar para la funcin de desbloqueo (DEQUEUE).

Parmetros para el modo de Bloqueo Un parmetro MODE_<tabla> existe para cada tabla del objeto de bloqueo. El modo de bloqueo para esta tabla se puede fijar dinmicamente con este parmetro. Los valores permitidos para este parmetro son S (bloqueo de lectura), E (bloqueo en escritura), X (ampliado el bloqueo en escritura), y O (bloqueo optimista). El modo de bloqueo especificado para la tabla respectiva cuando el objeto de bloqueo fue creado es el valor por defecto para este parmetro. Este valor prefijado puede, sin embargo, ser eliminado como sea necesario cuando se invoca la funcin. Si se modifica este valor por defecto, cuando se haga el desbloqueo debe de tener el mismo valor que se asigno a la funcin de bloqueo.

______________________________________________________________________________________ Xioma Consulting 157

Control de transmisin de bloqueos El parmetro _COLLECT controla si la peticin de bloqueo o desbloqueo debe ser realizada directamente o si debe primero ser escrito al contenedor local de bloqueos (las peticiones de bloqueo y desbloqueo pueden ser almacenados en un contenedor local de bloqueos y ser enviados juntos invocando la funcin FLUSH_ENQUEUE). Este parmetro puede tener los valores siguientes: Valor inicial: La peticin de bloqueo o desbloqueo se enva directamente al servidor de bloqueos. X: La peticin de boqueo o desbloqueo se pone en el contenedor local de bloqueos. Estos se pueden entonces enviar al servidor de bloqueos agrupados invocando la funcin FLUSH_ENQUEUE.

Siempre que se usa el modo X del bloqueo (ampliar el bloqueo en escritura), los bloqueos no se deben enviar al contenedor local de bloqueos si hay asignados muchos bloqueos para determinada tabla. En este caso, habr una prdida considerable en funcionamiento en comparacin con la transmisin directa de bloqueos. Comportamiento en conflicto de bloqueos (solo al bloquear) La funcin ENQUEUE tambin tiene el parmetro _WAIT. Este parmetro determina el comportamiento del bloqueo cuando hay un conflicto al bloquear. Se tienen las opciones siguientes: Valor inicial: Si un intento de bloqueo falla porque ya hay un bloqueo, se acciona la excepcin FOREIGN_LOCK. X: Si un intento de bloqueo falla porque hay un bloqueo, el intento de bloquear se repite despus de esperar cierto tiempo. Se acciona la excepcin FOREIGN_LOCK solamente si ha transcurrido cierto lmite de tiempo desde el primer intento de bloqueo. El tiempo de espera y el lmite de tiempo son definidos por parmetros de perfil. Controlando borrado del bloqueo de entrada (DEQUEUE solamente) La funcin de desbloqueo tambin tiene el parmetro _SYNCHRON. Si se pasa el valor X, la funcin DEQUEUE espera hasta que la entrada de bloqueo se ha quitado de la tabla de bloqueos. Si no, entonces se suprime asincrnicamente, es decir, si la tabla de bloqueos del sistema se lee despus de que se quita el bloqueo, la entrada en la tabla de bloqueos puede existir. Excepciones de la funcin de ENQUEUE FOREIGN_LOCK': Ya existe un bloqueo. Se puedes obtener el nombre del usuario que tiene el bloqueo revisando la variable del sistema SY-MSGV1. SYSTEM_FAILURE: Se acciona esta excepcin cuando en el servidor de bloqueos ocurri un problema mientras se fijaba el bloqueo. En este caso, el bloqueo no podr ser fijado. Si las excepciones no son procesadas por el programa que lo llama, entonces los mensajes apropiados se despliegan.

______________________________________________________________________________________ Xioma Consulting 158

Campos de referencia para los objetos de bloqueo RFC activados El tipo de una funcin RFC debe ser definido completamente. Los parmetros de la funcin tienen los siguientes campos de referencia para los objetos RFC:

Ejemplo con objetos de bloqueo


Se tiene el caso de reservaciones de vuelos. Los vuelos se registran en la tabla SFLIGHT y las reservaciones para los vuelos en la tabla SBOOK. Las dos tablas se relacionan con una llave fornea. El objeto de bloqueo E_BOOKING debe por lo tanto contener la tabla SFLIGHT como tabla primaria y la tabla SBOOK como tabla secundaria.

El argumento de bloqueo de la tabla SFLIGHT contiene los campos MANDT, CARRID, CONNID y FLDATE. El argumento de bloqueo de la tabla SBOOK contiene los campos MANDT, CARRID, CONNID, FLDATE, BOOKID y CUSTOMID. Al seleccionar el modo exclusivo de bloqueo hace que los datos puedan ser vistos y modificados solo por el usuario que lo esta invocando. Cuando se activa el objeto de bloqueo, los mdulos siguientes de la funcin se generan de su definicin: * ENQUEUE_E_BOOKING (ejecuta el bloqueo) * DEQUEUE_E_BOOKING (libera el bloqueo)

______________________________________________________________________________________ Xioma Consulting 159

La funcin ENQUEUE_E_BOOKING se invoca de la siguiente manera:

Con esta llamada, el vuelo LH 400 del 29 de noviembre de 1998 esta bloqueado de manera exclusiva (modo E de bloqueo) en la tabla SFLIGHT junto con todas las reservaciones incorporadas a la tabla SBOOK para este vuelo (puesto que el valor inicial 0 se transfiere para BOOKID y CUSTOMID). El bloqueo se enva al programa de actualizacin (_SCOPE = `2'). Si hay un conflicto de bloqueos, se hace otra tentativa de fijar el bloqueo despus de cierto tiempo (_WAIT = `X'). El bloqueo puede ser quitado invocando la funcin DEQUEUE_E_BOOKING:

Las entradas exclusivas de bloqueo existentes para el vuelo LH 400 se suprimen en la tabla SFLIGHT. La peticin de suprimir las entradas de bloqueo se pasa al programa de actualizacin (_SCOPE = `3').

______________________________________________________________________________________ Xioma Consulting 160

ABAP Development Workbench

El ABAP development workbench es una aplicacin que rene prcticamente todas las herramientas tcnicas del entorno de SAP para dar soporte al desarrollo eficiente de aplicaciones empresariales de gran escala a travs del ambiente distribuido de cliente/servidor en el R/3. Esta integracin permite una mayor agilidad durante el desarrollo y el mantenimiento de las aplicaciones. El repositorio de R/3 contiene todos los objetos de desarrollo, por ejemplo programas, definiciones de la base de datos y tipos de datos globales. Es por esto que los objetos de desarrollo suelen ser conocidos como objetos del repositorio, y estos objetos son independientes del mandate. El repositorio de R/3 se encuentra organizado por aplicacin, y cada una de estas se encuentra dividida en subdivisiones lgicas llamadas clases de desarrollo (paquetes). Cada vez que se crea un nuevo objeto de desarrollo, ste debe ser asignado a un paquete.

______________________________________________________________________________________ Xioma Consulting 161

MIME Repository
El repositorio de objetos MIME se utiliza para almacenar estilos de hojas, grficos, iconos, audio, y otros tipos de objetos en el sistema SAP. Se crean como objetos en la base de datos de SAP y puede ser referidos como parte de diferentes aplicaciones tecnolgicas. Estos objetos utilizan la infraestructura de desarrollo de SAP. Cualquier cambio realizado en este repositorio implica la asignacin del objeto en una orden de transporte.

Repository Browser
Este repositorio representa una herramienta que se utiliza para editar todos los objetos de desarrollo, tales como la edicin de programas ABAP, creacin de transacciones, aplicaciones de dilogo, funciones, etc

Repository Information System


El repositorio del sistema de informacin facilita la bsqueda de objetos en el sistema SAP. Se pueden localizar objetos que encajan con un criterio particular.

Tag Browser
El navegador de etiquetas permite agregar etiquetas y sus atributos para el editor correspondiente. Por ejemplo es muy til para la implementacin del diseo de aplicaciones Web. Siempre se asume que el usuario entiende el significado de las etiquetas individuales y sus atributos.

Transport Organizer
El organizador de transportes brinda la funcionalidad para la creacin, documentacin y liberacin de ordenes de transporte durante todo el perodo de parametrizacin y desarrollo, as como posteriormente para la reorganizacin del entorno de desarrollo. Las herramientas que posee estas orientadas especficamente a los equipos de desarrollo y a los administradores de la implementacin.

______________________________________________________________________________________ Xioma Consulting 162

Aplicaciones de dilogo
El desarrollo de aplicaciones de dialogo posee como caracterstica principal el diseo de pantallas. Estas pantallas son realmente programas dinmicos (DYNPRO) que se encuentran integrados con el diccionario de ABAP, lo cual permite la verificacin de la consistencia de los campos automticamente. Por ejemplo la verificacin de campos obligatorios, tipos, llaves o valores prefijados. La disposicin de los DYNPRO es muy flexible permitiendo el uso de campos de entrada y salida, botones de radio, cajas de check, botones y otros objetos.

Screen Painter (SE51)

El screen painter permite la creacin de aplicaciones de dilogo por medio del desarrollo de DYNPROs. Cada DYNPRO estar asociado a un programa y su diferenciador es un nmero de 4 dgitos.

Lgica del proceso


La lgica del proceso dicta la manera en que un programa dinmico procesa la informacin que fluye por l. Esta lgica se compone de dos eventos principales que determinan el flujo del programa, el proceso antes de la salida (PBO) y el proceso despus de la entreda (PAI). Estos procesos se crean automticamente por el screen painter.

______________________________________________________________________________________ Xioma Consulting 163

Process Before Output (PBO)


El PBO se procesa inmediatamente antes de que la disposicin de pantalla sea mostrada, de tal forma que se pueden invocar todas las rutinas que se requieran para inicializar los campos y/o variables.

Process After Input (PAI)


El PAI es ejecutado justo despus que un usuario realiza una accin. Toda la lgica que se desea ejecutar en un programa debe ser invocada desde este evento.

Process on help-request (POH)


El POH se invoca cuando se dispara el evento de ayuda al oprimir la tecla F1. En este bloque se buscar ejecutar el mdulo que esta relacionado con el campo al que se le invoc la ayuda. Si existieran varios campos que cumplen el criterio solo se ejecutar el evento para el primero de ellos. Una vez finalizado el POH se reinicia la lgica del proceso ejecutando el PBO. Este proceso tiene prioridad sobre las ayudas definidas en el diccionario de datos.

Process on value-request (POV)


El POV se ejecuta cuando se dispara el evento de ayuda de bsqueda (matchcode) con la tecla F4. En este bloque se buscar ejecutar el mdulo que esta relacionado con el campo al que se le invoc el match-code. . Si existieran varios campos que cumplen el criterio solo se ejecutar el evento para el primero de ellos. Una vez finalizado el POH se reinicia la lgica del proceso ejecutando el PBO. Este proceso tiene prioridad sobre las ayudas definidas en el diccionario de datos.

MODULE
Dentro de los eventos PBO y PAI se deben crear bloques de cdigo llamados mdulos, estos son las subrutinas que contienen el cdigo que controla el programa. Sintaxis:
MODULE <mdulo> [ AT {EXIT COMMAND } | {CURSOR-SELECTION } ] [ ON {CHAIN-INPUT } | {CHAIN-REQUEST } ].

Ejemplo:
PROCESS BEFORE OUTPUT. * MODULE STATUS_0100. * PROCESS AFTER INPUT. MODULE USER_COMMAND_0100. *&------------------------------------------* *& Module USER_COMMAND_0100 INPUT ______________________________________________________________________________________ Xioma Consulting 164

*&------------------------------------------* * text *-------------------------------------------* MODULE USER_COMMAND_0100 INPUT. .... .... ENDMODULE. " USER_COMMAND_0100 INPUT

Para el caso del AT EXIT COMMAND la funcin que se utilice debe ser de tipo E6 y debe estar en el PAI. En caso de existir varios AT EXIT COMMAND, solo se ejecutar el primero. En el caso del AT CURSOR-SELECTION la funcin debe ser CS y el tipo ha de ser S. Adems el cursor debe estar posicionado en un campo de entrada o salida. Todo esto en el PAI.

ON CHAIN-INPUT y ON CHAIN-REQUEST se utilizan para ejecutar los eventos ON INPUT y ON REQUEST para los campos individuales en una cadena (CHAIN).

FIELD
Esta instruccin puede ser utilizada en cualquiera de los cuatro bloques de la lgica de procesos (PAI, PBO, POH y POV), sin embargo no tiene efecto alguno en el bloque PBO. Su funcin es regular el envio de informacin entre el DYNPRO y el programa ABAP. Se utiliza en conjunto con la instruccin MODULE cuando se desea condicionar un mdulo a ejecutar para un campo especfico. Sintaxis:
FIELD <campo> MODULE <mdulo> {ON INPUT} | {ON REQUEST} | {ON {CHAIN-INPUT}|{CHAIN-REQUEST}} | {AT CURSOR-SELECTION}.

ON INPUT implica que el mdulo se ejecutar solo si el valor del campo es vacio o cero en el caso de valores numricos. Si el campo posee un valor inicial tampoco se ejecutara, sin importar que el usuario lo haya vuelto a digitar.

Ver Menu Painter ______________________________________________________________________________________ Xioma Consulting 165

La condicin ON REQUEST har que se ejecute el mdulo si se da un cambio en el campo despus del PBO, sin importar el valor que sea.

CHAIN
La instruccin CHAIN permite encadenar una serie de campos en la lgica del proceso para ser evaluados en un mdulo invocado con un CHAIN-INPUT o con un CHAIN-REQUEST. CHAIN ha de terminar con un ENDCHAIN. Es importante recordar que aunque la instruccin es vlida en el PBO no tiene ningun efecto en ste bloque.

LOOP
El LOOP en la lgica de proceso sirve para interar en una tabla interna que se encuentre atada a un objeto en el DYNPRO. Por ejemplo a un TABLE CONTROL (GRID). Permitiendo as que se puedan evaluar los valores de la tabla interna.

Creacin del DYNPRO


Al crear un DYNPRO el primer paso es la definicin de los valores bsicos en la pestaa de atributos.

Descripcin Breve: Es obligatorio indicar una descripcin para el DYNPRO. Tipo de DYNPRO: Existen 4 tipos de dynpros. Normal: Es el DYNPRO que forma una pantalla por s mismo.
______________________________________________________________________________________ Xioma Consulting 166

Subscreen: Es una subrea en un DYNPRO normal, pero que posee su propia lgica de proceso. Modal: Es una ventana que depende de una ventana padre, y no retorna el control a la ventana padre sino hasta que es cerrada. DYNPRO Seleccin: Este tipo de DYNPRO es de uso interno de SAP y es generado automticamente. Manipular este tipo de DYNPROS por medio del screen painter no es muy recomendando dado que este tipo de DYNPRO puede ser regenerado. Opciones: Existen 5 tipos de opciones. Retener datos: Esta opcin permite retener los datos para la siguiente ejecucin del DYNPRO si las opciones del usuario estan activadas en Sistema -> Valor prefijado para usuario -> Retener datos-> Fijar datos -> Borrar datos. Desconectar compresin del dynpro para tiempo de ejecucin: Esta opcin comprime los campos en la pantalla que en tiempo de ejecucin no sean relevantes dependiente de una serie de criterios. Dynpro modelo: Esta opcin es de uso interno e identifica DYNPROs que se utilizan como modelos. Mantener posicin desplazamiento: Este atributo est pensado para dynpros largos en los cuales se ha perdido la posicin de desplazamiento debido a ciertas acciones. Indica que la posicin de desplazamiento del dynpro principal debe mantenerse en caso de que el dynpro se visualice sucesivamente. Sin barra herramientas de aplicacin: la barra de herramientas de aplicacin correspondiente al status actual del programa no se visualiza, independientemente de si contiene o no pulsadores.

Otros Atributos: DYNPRO Siguiente: Indica cual es el siguiente DYNPRO que ha de ejecutarse al finalizar el actual. Puede invocarse a s mismo para mantenerse en un DYNPRO y cambiarse en tiempo de ejecucin con la instruccin SET SCREEN. En caso de hacer un SET SCREEN 0 se finaliza el programa (en caso de estar en el DYNPRO principal) o al DYNPRO anterior. Posicin del Cursor: Si no se desea que el cursor sea posicionado en el primer campo de entrada, sino en otro campo, es necesario indicar el nombre de este campo. Esta funcin puede ser ejecutada de forma dinmica en el modulpool mediante la instruccin ABAP 'SET CURSOR FIELD <campo>'. Lneas/Columnas: La cantidad indicada de lneas y columnas determina el tamao de DYNPRO previsto para la actualizacin.
______________________________________________________________________________________ Xioma Consulting 167

Lista de Elementos: Esta pesataa contiene todos los atributos de los diferentes objetos o elementos que existen en la pantalla. Lgica del proceso: En la pestaa de lgica de proceso se inserta todo el cdigo que rige el comportamiento del DYNPRO. Disposicin: El botn de disposicin invoca al editor grfico (Graphical Screen Painter).

Graphical Screen Painter


El screen painter grfico muestra un canvas donde se colocan los diferentes objetos que pueden existir en un DYNPRO. La barra de componentes se encuentra a la izquierda.

1. Puntero: El puntero se utiliza para seleccionar y mover objetos en el canvas. 2. Campo de Texto: Se utiliza para colocar etiquetas en el canvas. 3. Campo de entrada/salida: Este objeto se relaciona con una variable para capturar o mostrar su valor en el DYNPRO. 4. Checkbox: Se utiliza para crear un campo de seleccin. 5. Radiobutton: Sirve para crear un conjunto de radio buttons. 6. Botn: Crea un botn. 7. Pestaas: Crea un control de pestaas.
______________________________________________________________________________________ Xioma Consulting 168

8. Wizard de Pestaas: Crea automticamente el cdigo para controlar las pestaas. 9. Marco: Crea un marco en el canvas. Permite agrupar una serie de objetos. 10. rea de subscreen: Define un rea donde ha de aparecer un subscreen. 11. Control de Tabla: Se utliza para crear una plantilla en el canvas (GRID). 12. Wizard de Control de Tabla: Genera automticamente el cdigo y los objetos que se requieren para un Control de Tabla. 13. Contenedor: Permite la creacin de un objeto nuevo en tiempo de ejecucin utilizando programacin orientada a objetos. 14. Icono: Permite colocar un icono en tiempo de ejecucin. 15. Ventana lista de elementos: Muestras todos los objetos en el canvas con sus atributos en forma de resumen. 16. Campos del diccionario: Permite seleccionar campos de estructuras del diccionario o de un programa para generarlos automticamente en el canvas. 17. Ventana de atributos: Muestra y permite la edicion de los atributos de un objeto. Esta ventana tambin se abre cuando se da doble click sobre un objeto. Los campos en rojo son obligatorios. Uno de estos campos obligatorios es el nombre del objeto. El campo texto se cambia en aquellos objetos donde sea relevante. En el campo despliegue se puede seleccionar si es un list box, cuando se refiere a un campo de entrada o visualizacin. Aquellos objetos que puedan contener iconos tendrn un campo para seleccionarlo de la lista de iconos de SAP. En el campo Quick Info se introduce un texto a desplegarse en tiempo de ejecucin al colocar el puntero sobre el objeto. Cada objeto puede pertenecer a 4 grupos diferentes (cada uno codificable con 3 dgitos), esto permite el cambio de atributos grupales. En el caso de los botones existe el campo cdigo de funcin, el cual se pasa a la variable SY-UCOMM al ser oprimido el botn. El tipo de botn de funcin que sirve para controlar el proceso y que puede ser de los siguientes tipos: E (ejecuta el mdulo AT EXIT COMMAND, el OK Code obtiene el valor /E), H Ayuda (ejecuta el ON HELP REQUEST dejando el OK CODE en ?, S Funcin del sistema (OK CODE /), P Funcin del GUI (OK CODE =), T Transaccin (OK CODE /n<transaccin>). Por defecto el tipo de funcin esta en vacio y no es obligatorio. La seccin de atributos contiene tres pestaas: diccionario, programa y visualizacin. La seccin de diccionario se encarga de brindarle al objeto caractersticas provenientes del diccionario de datos tales como el formato, si el
______________________________________________________________________________________ Xioma Consulting 169

campo proviene directamente del diccionario, una rutina de conversin, definir una ayuda de bsqueda, si existe un campo de referencia o un parameter ID, indicador de SET PARAMETER ID que sirve para enviar el valor que tome el campo al paramtro, indicador de GET PARAMETER ID que toma el valor del parmetro para el campo, verificacin de clave externa y finalmente el indicador para permitir maysculas y minsculas. En el caso de los atributos de programa se puede especificar para los campos de entrada o salida si el campo es solo de entrada o campo de salida, o si debe desplegarse en el Dynpro como un campo de slo salida. Cuando el campo es de entrada es posible especificar si el tipo de entrada es: posible, no posible, recomendada y requerida (obligatoria). El campo de pulsador de entradas posibles sirve para controlar la aparicin del boton de las ayudas de bsqueda en el campo. El check de alineacin derecha justifica el texto que acompaa el objeto a la derecha. El check de Cero a la izquierda rellena con ceros cuando el contenido del campo es numrico. Al activar el check Entrada * se indica que este campo debe invocar el mdulo en la lgica de proceso que est atado al campo mediante un FIELD ... MODULE ... ON *-INPUT, cuando el primer carcter del campo sea un *. El check de tipo de letra equidistante se encarga de definir un espaciado equidistante entre los caracteres. El indicador de Visible e invisible implican que el campo se pueda o no ver durante la ejecucin. El indicador de 2 dimenciones elimina el efecto de tridimencionalidad en los campos de entrada y salida durante el tiempo de ejecucin. Los denominadores de izquierda y derecha conectan el objeto de texto al siguiente objeto que se encuentre a la derecha o a la izquierda. La opcin de sensibilidad al doble click se encarga de asignar un OK CODE al dar doble click sobre el objeto de texto o de entrada y salida.

______________________________________________________________________________________ Xioma Consulting 170

Creacin de transacciones (SE93)

La transaccin SE93 permite la definicin de una transaccin que puede ser colocada en el men de SAP o ejecutada directamente desde la lnea de comando del SAP GUI. Las transacciones pueden entenderse como accesos directos a los programas que existen en el sistema. Todas las transacciones creadas por un usuario han de inciar por Z, y son objetos independientes del mandante.

______________________________________________________________________________________ Xioma Consulting 171

Al crear una nueva transaccin, estas pueden ser de 5 tipos: 1. Transacciones de Dilogo (Module Pool): son aquellas transacciones que estan atadas a un programa que posee Dynpros. 2. Transaccin de Reporte: Se utilizan para los programas que son imgenes de selecciones (Reportes). 3. Transaccin de Clase: Ejecuta el mtodo de una clase desde la transaaccin. 4. Transaccin con variantes: Crea una transaccion nueva para ejecutar la variante de otra transaccin. En este caso es importante recordar que las variantes son dependientes del mandante. 5. Transaccin con parmetros: Ejecuta otra transaccin enviando los parametros con los que se desea iniciar.

Menu Painter (SE41)

Los mens (tambin llamados Status GUI) permiten al usuario ejecutar funciones de un programa desde la barra de herramientas o la barra de mens. Estos mens son invocados desde el PBO en la lgica de proceso. Al crear un men se debe indicar el programa al que pertenece y el nombre del status (men).

______________________________________________________________________________________ Xioma Consulting 172

Existen 3 bloques principales que son: 1. La barra de men: Contiene todas las opciones del men para el dynpro. 2. La barra de pulsadores: Define todos los botones que se encuentran en la barra de pulsadores. 3. Teclas de funcin: Asigna el la funcin para las teclas de funcin y sus respectivas combinaciones con otras teclas. Tambin contiene la asignacin de los botones estndar de la barra de herramientas del GUI.

Una vez que el men ha sido creado y activado, debe ser invocado por cdigo de la siguientes manera:

PROCESS BEFORE OUTPUT. MODULE STATUS_0100. PROCESS AFTER INPUT. MODULE USER_COMMAND_0100. *&-----------------------------------------------------------*& Module STATUS_0100 OUTPUT *&------------------------------------------------------------* text *------------------------------------------------------------MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'PRINCIPAL'. * SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT ______________________________________________________________________________________ Xioma Consulting 173

En caso de querer excluir elementos del men ha de ser de la siguiente manera:


*&-----------------------------------------------------------*& Module STATUS_0100 OUTPUT *&------------------------------------------------------------* text *------------------------------------------------------------MODULE STATUS_0100 OUTPUT. DATA fcode TYPE TABLE OF sy-ucomm. ... MODULE status_0100 OUTPUT. APPEND 'BU' TO fcode.

APPEND 'BACK' TO fcode. SET PF-STATUS 'PRINICIPAL' EXCLUDING fcode. ENDMODULE.

ENDMODULE.

" STATUS_0100

OUTPUT

Otras Sentencias para DYNPRO


CALLSCREEN
Esta sentencia llama a un DYNPRO por su nmero. coordenadas donde ha de aparecer. Sintaxis:
CALL SCREEN dynnr [STARTING AT col1 lin1 [ENDING AT col2 lin2]].

Es posible especificar las

______________________________________________________________________________________ Xioma Consulting 174

SET TITLEBAR
En tiempo de ejecucin esta instruccin establece el ttulo que ha de desblegar el GUI para el DYNPRO actual. El nombre del ttulo actual queda almacenado en la variable de ambiente SY-TITLE. Es importante considerar que el ttulo ha de ser establesido en el PBO, de no ser definido ninguno la palabra SAP es desplegada en la barra de ttulos. Adems el mximo de caracteres que se soporta es de 70, y cualquier cadena superior a sta longitud ser truncada. Los ttulos puede ser editados mediante la transaccin SE41 y la opcin Lista de Ttulos. Sintaxis:
SET TITLEBAR 'XXX.

LOOP AT SCREEN.
La tabla de ambiente SCREEN almancena los atributos de los diferentes objetos que se encuentran en el canvas del DYNPRO. Para recorrer la tabla se utiliza la instruccin LOOP. Sin embargo la tabla SCREEN es una tabla sin cabecera y sobre la cual no es posible realizar un filtro a travs de la adicin WHERE. Por lo tanto ha de ser recorrida totalmente y filtrada mediante un IF o un CASE. Los campos en la tabla son los siguientes:

Componente NAME GROUP1 GROUP2 GROUP3 GROUP4 REQUIRED INPUT OUTPUT INTENSIFIED INVISIBLE LENGHT ACTIVE DISPLAY_3D VALUE_HELP REQUEST VALUE_IN_COMBO Syntaxis:

Atributo Nombre Grupo 1 Grupo 2 Grupo 3 Grupo 4 Campo Obligatorio Posible para entrada Campo de Salida Campo intensificado Elemento invisible Tamao visible Campo activo Tipo de caja Ayuda Existe entrada Existe valor en lista

LOOP AT SCREEN [INTO wa]. ... ENDLOOP. ______________________________________________________________________________________ Xioma Consulting 175

Al realizar un loop por los diferentes elementos que se encuentran en la pantalla es posible cambiar los atributos de la siguiente manera en el PBO:
MODULE modify_0100 OUTPUT. LOOP AT SCREEN. IF screen-name = 'VAL'. screen-required = '1'.

screen-intensified = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE.

SET CURSOR
Durante el proceso del bloque PBO la instruccin SET CURSOR permite que el cursor se posicione en una ubicacin del DYNPRO.

Sintaxis:
SET CURSOR FIELD <campo>.

Ejemplo:
SET CURSOR FIELD 'EDT_CAMPO2'.

______________________________________________________________________________________ Xioma Consulting 176

Bibliografa
http://en.wikipedia.org/wiki/ABAP de Bruyn, Gareth M. PRIMA TECH. 1999. Advanced ABAP Programming for SAP.

______________________________________________________________________________________ Xioma Consulting 177

También podría gustarte