Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. ¿Qué es SAP?
2. El modelo de datos
3. La lógica de negocio
4. Interfaz de usuario
2
¿Qué es SAP?
mySAP Solutions
3
¿Qué es SAP?
SAP Netweaver
4
¿Qué es SAP?
SAP Netweaver
5
¿Qué es SAP?
SAP Netweaver
6
¿Qué es SAP?
SAP Netweaver
7
¿Qué es SAP?
SAP Netweaver
8
¿Qué es SAP?
SAP Netweaver
9
¿Qué es SAP?
SAP Netweaver
10
¿Qué es SAP?
MySAP Business Suite
11
¿Qué es SAP?
MySAP Business Suite
Self Services
Strategic Enterprise
Analytics Financial Analytics Operations Analytics Workforce Analytics
Management
Financial Supply Chain
Financials Corporate Governance Financial Accounting Management Accounting
Management
Human Capital Employee Relationship Employee Lifecycle Employee Transaction
Workforce Deployment
Management Management Management Management
Operations: Inventory Sales Order Service Order
Purchasing Manufacturing Distribution
Value Generation Management Management Management
Operations: Product Structure
Project Management Quality Management Asset Management
Support Management
Incentive and Commission Real Estate
Corporate Services Travel Management Environment, Health & Safety
Management Management
Solution and
People Integration Information Integration Process Integration Application Platform
Integration Platform
Internet Sales
Exchange
SAP NetWeaver Enterprise Business Infrastructure
Portal Warehouse
12
¿Qué es SAP?
SAP Graphic User Interface (GUI)
13
¿Qué es SAP?
SAP Graphic User Interface (GUI)
OK Code
Enter
Menú de SAP Atrás
se38 Salida
PF Status
Cancelar
Nueva sesión
Configuración
local de pantalla
14
¿Qué es SAP?
Editor ABAP
Tips:
Configuración: Información que
determina el funcionamiento del sistema.
Programa: Unidad lógica de ejecución. Puede ser un reporte, Module pool, etc. Todos los desarrollos
ABAP deben empezar por Z.
Transacción: Nombre técnico o etiqueta de aplicación, Ejp: SE38. También, las transacciones
hechas
en casa deben empezar por Z.
15
índice
1. ¿Qué es SAP?
2. El modelo de datos
3. La lógica de negocio
4. La interfaz de usuario
16
El modelo de datos
17
El modelo de datos
El modelo de datos relacional
Conjunto de tablas y relaciones entre tablas que permiten representar y gestionar datos, en una base de datos.
• Tabla
• Campo
• Campo clave
• Clave foránea
18
El modelo de datos
El Data Dictionary (DDIC) de SAP
19
El modelo de datos
La Tabla y sus elementos principales
20
El modelo de datos
Índices
21
El modelo de datos
Vistas de tablas
22
El modelo de datos
Estructuras
23
El modelo de datos
Tipo Tabla
24
índice
1. ¿Qué es SAP?
2. El modelo de datos
3. La lógica de negocio
4. La interfaz de usuario
25
La lógica de negocio
26
La lógica de negocio
¿Qué entendemos por lógica de negocio?
Lógica de negocio es toda aquella programación necesaria para representar uno o varios procesos
de negocio.
•…
27
La lógica de negocio
Programación estructurada vs. ABAP Objects
La programación estructurada es aquella que se basa en el diseño descendente y en la procedimientación de
funcionalidades.
En contraposición a esta técnica de programación, hace años que existe la programación orientada a objetos. Esta
técnica hace énfasis en la representación de las entidades del proceso de negocio en el propio modelo programado.
Transformado las entidades en objetos, sus funcionalidades en métodos y sus características en atributos.
SAP ha desarrollado sus aplicaciones con programación estructurada tradicional. Hasta hace unos años (a partir de la
versión 4.6) no empezó a incorporar la programación orientada a objetos a la implementación de sus aplicaciones.
Para ello desarrolló la tecnología de los ABAP Objects. Desde la aparición del nuevo servidor de aplicaciones WAS, la
apuesta de SAP por ABAP Objects es total y todas las nuevas aplicaciones de SAP se desarrollan mediante esta
técnica de programación.
¿Qué recomienda SAP? Pues utilizar ABAP Objects. Estos son algunos de los principales motivos:
• Encapsulación de datos
• Instanciación explicita de objetos Gestión más eficiente de la memoria
• Mejor reutilización de código gracias a la herencia
• Gestión de eventos propia
• Más simple de aprender y utilizar que la programación estructurada tradicional
• Chequeo de sintaxis más estricto que previene de la utilización de elementos obsoletos de programación
• Proporciona acceso más simple a las nuevas tecnologías de SAP
28
La lógica de negocio
Elementos básicos programación
Como cualquier lenguaje de programación, ABAP/4 dispone de toda una serie de elementos básicos
para implementar la lógica de negocio que se requiera.
Estos serían los siguientes:
29
La lógica de negocio
Elementos básicos programación - Tipos de datos
30
La lógica de negocio
Elementos básicos programación - Declaración de variables
AA 0064 12300
AA 0064 10100
Lista
DL 0400 5000
SAP recomienda la utilización de tablas internas sin cabecera y la utilización de estructuras tipo
working area para acceder a la lista de registros de la tabla interna.
• Ejemplos de declaración de tablas internas sin cabecera
DATA: t_sflight type table of sflight.
32
La lógica de negocio
Elementos básicos programación – Instr. control de proceso
• Sentencia IF
IF <condición>. IF <condición>. IF <condición>
… … ...
ENDIF. ELSE. ELSEIF <condición>
… ...
ENDIF. ELSEIF <condición>
…
ENDIF.
• Sentencia CASE
CASE <campo>.
WHEN <valor>.
…
WHEN <valor>.
…
WHEN OTHERS.
…
ENDCASE.
33
La lógica de negocio
Elementos básicos programación – Instr. control de proceso
• Sentencia DO: Permite ejecutar un bloque de instrucciones tantas veces como se especifique.
• Sentencia WHILE: Permite ejecutar un bloque de instrucciones mientras se cumpla una condición.
EXIT: Dentro de un bucle saldrá del mismo y si se encuentra fuera de un bucle saldrá del
programa. Si la instrucción EXIT está dentro de varios bucles anidados, únicamente saldrá del
bucle en proceso.
34
La lógica de negocio
Elementos básicos programación – Acceso al modelo de datos
Para acceder al modelo de datos, ABAP/4 dispone de su propio SQL. Se trata de un SQL que permite
independizar el desarrollo, del SQL nativo que pueda tener el gestor de BBDD que utilice la
instalación de SAP.
Las instrucciones principales del SQL de ABAP/4 son las siguientes:
35
La lógica de negocio
Elementos básicos programación – Tratamiento tablas internas
Los datos recuperados del modelo de datos mediante SQL, se pueden almacenar en una tabla interna.
El tratamiento de estos datos, se realizará a través del tratamiento de la tabla interna.
Las sentencias principales para el tratamiento de tablas internas son:
AT FIRST: Realiza las instrucciones que hay a continuación del AT FIRST para la primera
entrada de la tabla.
AT LAST: Realiza las instrucciones que hay a continuación del AT LAST para la última
entrada de la tabla.
AT NEW <campo>: Realiza las instrucciones que hay a continuación del AT NEW para cada
inicio de nivel de ruptura.
AT END OF <campo>: Realiza las instrucciones que hay a continuación del AT END para
cada final de nivel de ruptura.
Dentro de este apartado, trataremos como objeto de desarrollo propio de la lógica de negocio los
módulos de función (Function Modules) y los ABAP Objects, dado que su utilidad es, básicamente, la
encapsulación de funcionalidades.
El resto de objetos de negocio se tratarán en el apartado que hace referencias a las interfaces con el
usuario.
38
La lógica de negocio
Módulos de Función
Los módulos de función son rutinas que se definen en grupos de funciones y que pueden ser
llamadas desde cualquier programa ABAP. Los grupos de función actúan como contenedores de
módulos de función que están relacionados de alguna forma. Tanto los módulos de función como los
grupos de función se crean desde el ABAP Workbench, mediante el Function Builder (SE37).
Dentro del concepto de módulo de función valdría la pena mencionar dos casos particulares:
• Módulo de Función RFC (Remote Function Call): Los módulos de función definidos como RFC,
tienen la capacidad de poder ser invocados desde un sistema externo a SAP. Este sistema puede ser
otro sistema SAP o un sistema no SAP.
39
La lógica de negocio
Módulos de Función – Crear MF’s
Un módulo de función se compone de los siguientes elementos.
• Parámetros Import: Se definen los parámetros de entrada del módulo de función. Para ello se
especifica lo siguiente:
– Nombre del parámetro
– Tipo: Se especifica si el parámetro es un tipo del DDIC o bien un es una referencia a una clase
– Tipo referenciado: Se especifica el tipo referenciado que puede ser una estructura, un campo de una tabla,
un elemento de datos, … .
– Opcional: Indica si el parámetro es opcional u obligatorio al llamar al módulo de función
• Parámetros Export: Se definen los parámetros de salida del módulo de función. Se especifican
básicamente los mismos elementos que para los parámetros Import.
40
La lógica de negocio
Módulos de Función – Crear MF’s
• Tablas: Se definen parámetros de entrada/salida de tipo tabla interna.
• Excepciones: Se definen las excepciones (errores) que puede retornar el módulo de función. Para
ello se define la excepción y un texto descriptivo. Al lanzar la excepción desde el módulo de función,
el programa que la invoca recibirá en el parámetro de sistema SY-SUBRC un valor númerico
determinado.
• Código fuente: Dentro del código fuente se escribirá toda la lógica de negocio que implementa la
funcionalidad que deba llevar a cabo el módulo de función.
41
La lógica de negocio
Módulos de Función – Llamar a MF’s
Se ha te contemplar que:
• Bajo la cláusula EXPORTING se deben poner todos los parámetros que se desean proporcionar al
MF.
• Bajo la cláusula IMPORTING se deben poner los parámetros que se deseen recibir como respuesta
del MF.
• Bajo las cláusulas CHANGING y TABLES se suministran los valores para todos los parámetros de
ese tipo del MF. Cuando el MF finaliza su ejecución, los valores modificados se retornan a través de
estos tipos de parámetros.
42
La lógica de negocio
ABAP Objects – Glosario de términos
Algo de terminología de ABAP Objects:
• Objeto: Es un fragmento de código fuente que contiene datos y proporciona servicios. Los datos se
identifican con los atributos del objeto. Los servicios se conocen como los métodos. Normalmente, los
métodos operan sobre datos privados, que sólo son visibles para los métodos del objeto. De esta
manera los atributos de un objeto no pueden ser cambiados directamente por un usuario, solo por los
métodos de un objeto. Esto garantiza la consistencia interna del objeto.
• Clase: Una clase describe un objeto. Desde un punto de vista técnico, un objeto es una clase
instanciada en tiempo de ejecución. En teoría, es posible crear multitud de objetos basados en una
única clase. Cada instancia (objeto) de una clase tiene un único identificador y tiene su propio conjunto
de valores para sus atributos.
• Encapsulación: Los objetos restringen la visibilidad de sus recursos (atributos y métodos) de los
otros usuarios. Cada objeto tiene su propia interfaz, que determina como otros objetos pueden
interactuar con él. La implementación de un objeto esta encapsulada, de manera que, sea invisible
fuera del objeto mismo.
43
La lógica de negocio
ABAP Objects – Glosario de términos
• Polimorfismo: Métodos idénticos (con igual nombre) actúan de forma diferente en clases diferentes
(es decir la implementación es específica de cada clase). Esto permite direccionar métodos con el
mismo nombre en diferentes objetos. De esta manera, la rutina que haga la llamada puede ser
siempre la misma para todos los objetos.
• Herencia: Es posible utilizar una clase existente para derivar una nueva clase. La clase derivada
hereda los atributos y métodos de la superclase. En todo caso, es posible reescribir los métodos
existentes y, además, añadir de nuevos.
44
La lógica de negocio
ABAP Objects – Clases – Definición
Existe la posibilidad de implementar clases a nivel local (con visibilidad limitada al desarrollo en que se
definen) o a nivel global (la clase es instanciable desde cualquier desarrollo de SAP).
La definición e implementación de una Clase Global se lleva a cabo en el Class Builder (Transacción
SE24) del ABAP Workbench.
Las Clases Locales consisten en código ABAP encerrado entre las sentencias CLASS y ENDCLASS.
Una completa definición de una Clase consiste en un bloque de declaraciones y, si es necesario, de
un bloque de implementaciones.
El bloque de declaración de una Clase sería:
Contendrá la declaración de todos los componentes (atributos, métodos, eventos) de la clase (Class
Components).
45
La lógica de negocio
ABAP Objects – Clases – Definición
Si se definen métodos en el bloque de declaraciones, entonces es obligatorio definir el bloque de
implementaciones (de esos métodos).
PUBLIC SECTION.
METHODS: SET_COUNTER IMPORTING VALUE(SET_VALUE) TYPE I,
INCREMENT_COUNTER,
GET_COUNTER EXPORTING VALUE(GET_VALUE) TYPE I.
PRIVATE SECTION.
DATA COUNT TYPE I.
ENDCLASS.
METHOD SET_COUNTER.
COUNT = SET_VALUE.
ENDMETHOD.
METHOD INCREMENT_COUNTER.
ADD 1 TO COUNT.
ENDMETHOD.
METHOD GET_COUNTER.
GET_VALUE = COUNT.
ENDMETHOD.
ENDCLASS. 46
La lógica de negocio
ABAP Objects – Clases – Class Components
Los componentes de una Clase determinan su contenido. Al definir la clase, cada componente es
asignado a uno de las tres secciones de visibilidad, que determinan la interfaz de la clase.
Los Class Components que pueden definir una Clase son los siguientes:
• Atributos: Se identifican con los campos de datos de una Clase. El estado de una clase se
determina por los valores de estos atributos. Los tipos de atributos se enumeran a continuación:
– Instance Attributes: El contenido de estos atributos define el estado de una instancia específica. Se
declaran mediante la sentencia DATA.
– Static Attributes: El contenido de estos atributos define el estado de todas las instancias de la Clase. Esto
quiere decir que el valor del atributo es compartido por todas las instancias de Clase, si se cambia el valor
en una instancia repercute en todas ellas. Se declaran mediante la sentencia CLASS-DATA.
• Eventos: Se utilizan para lanzar métodos específicos para el tratamiento de eventos (event handler
methods). Los eventos pueden ser lanzados desde métodos de la propia Clase, mediante la sentencia
RAISE EVENT <evento>. Se deberá haber definido un método como event handler para el evento en
cuestión mediante la adición a su definición de la sentencia FOR EVENT <evento> OF <clase>.
• Tipos
• Constantes
47
La lógica de negocio
ABAP Objects – Clases – Visibilidad
La parte de declaración define la visibilidad de los diferentes Class Components, mediante tres áreas
diferenciadas:
• Public section: Los componentes definidos bajo esta sección son accesibles tanto desde dentro
(métodos) como desde fuera de la Clase. Los componentes de esta sección definen la interfaz entre la
Clase y sus usuarios.
• Protected section: Los componentes definidos bajo esta sección son accesibles sólo por los
métodos de la Clase y por las Clases que hereden de ella.
• Private section: Los componentes definidos bajo esta sección son accesibles sólo por los métodos
de la propia Clase.
48
La lógica de negocio
ABAP Objects – Clases – Objetos
Como ya se indicado antes, un objeto es la instancia de una clase. Cada objeto tiene su propio
identificador y sus propios atributos. Todos los objetos funcionan en el contexto de la ejecución de un
programa ABAP (en su área de memoria).
Para utilizar un Objeto se debe crear una referencia sobre él. Una referencia, es un puntero sobre el
objeto. La referencia sobre un objeto se almacena en una variable.
La definición de una variable que referencie a un objeto se realizará mediante la siguiente sentencia:
A partir de la variable, será posible crear un objeto mediante la sentencia CREATE OBJECT <var_ref>.
Para hacer referencia a los Class Components del Objeto se deberá hacer lo siguiente:
1. ¿Qué es SAP?
2. El modelo de datos
3. La lógica de negocio
4. La interfaz de usuario
50
La interfaz de usuario
51
La interfaz de usuario
Reports
En SAP se entiende por programa ejecutable aquel que puede ejecutarse el mismo sin necesidad de
tener vinculada una transacción. Este tipo programas se pueden, además, ejecutar en fondo.
Dentro de esta categoría se clasificaría los siguiente tipos de programa:
52
La interfaz de usuario
Reports
Básicamente, un report es la generación de una lista de salida (por pantalla, impresora u otro medio)
con datos seleccionados del modelo de datos.
La generación de esta lista está sujeta a toda una serie de eventos, que permiten su tratamiento. Los
eventos serían los siguientes:
• INITIALIZATION : Este evento se inicia en el momento que se lanza la ejecución del report. En el
podemos inicializar variables o realizar cualquier tarea previa a la selección de datos
• START-OF-SELECTION : Este evento marca el momento en que se puede iniciar la selección de
datos para el report.
• END-OF-SELECTION : Este evento marca el momento en que se finaliza la selección de datos y se
puede iniciar su tratamiento, y en caso que aplique, su listado mediante las técnicas existentes.
se compone de las siguientes partes:
Existen otros eventos que permiten tratar situaciones más concretas del tratamiento de un report:
• TOP-OF-PAGE : Este evento marca el momento en que se inicia una página nueva en el listado.
• END-OF-PAGE : Este evento marca el momento en que se finaliza una página en el listado.
• AT LINE-SELECTION : Este evento indica que se ha seleccionado un línea del report. Sólo tiene
sentido cuando la salida del report es por pantalla.
• AT USER-COMMAND : Este evento permite gestionar botones (de un menu status) en un informe.
53
La interfaz de usuario
Reports
Pantalla de selección.
Como ya se ha indicado antes, existe la opción de definir una pantalla previa para solicitar al usuario
parámetros a fin de filtrar el resultado del informe.
Para ello se utilizan dos sentencias diferentes:
PARAMETERS:<var>
TYPE <tipo>
LIKE <tipo>
DEFAULT <valor> Igual que el VALUE.
OBLIGATORY. Obliga a introducir algún valor.
LOWER CASE. Permite introducir minúsculas.
55
La interfaz de usuario
Reports
56
La interfaz de usuario
Reports
Para escribir un campo, variable o literal justamente debajo de otros sin tener que calcular
la columna, utilizamos la cláusula UNDER del WRITE.
POSITION <columna>.
57
La interfaz de usuario
Reports
Ejemplo:
DATA NUMERO TYPE P DECIMALS 2 VALUE -123456.
WRITE NUMERO.
1.234,56-
y si no cabe el número:
WRITE (6) NUMERO.
*4,56-
Podemos formatear la salida de un número empaquetado.
Evitamos que aparezca el signo con NO-SIGN.
58
La interfaz de usuario
Reports
Si se desea formatear la salida de un campo según una cierta máscara utilizaremos el
parámetro USING EDIT MASK “<mascara>” de la instrucción WRITE.
Ejemplo:
WRITE /(8) SY-UZEIT IJSING EDIT MASK “_:_:_”.
59
La interfaz de usuario
Reports
Si queremos suprimir los ceros iniciales de una cadena de caracteres haremos:
60
La interfaz de usuario
Reports
Formato de página.
Podemos hacer tratamientos por inicio y fin de página con los eventos:
TOP-OF-PAGE y END-OF-PAGE.
61
La interfaz de usuario
Reports
Podemos impedir que con un salto de página se corten líneas que pertenezcan a
una agrupación de líneas con significado lógico propio. Con la instrucción RESERVE
reservamos un número de líneas.
62
La interfaz de usuario
Reports
63
La interfaz de usuario
Reports
Con lo visto hasta ahora, es posible implementar un programa que liste una serie de datos por
pantalla, o que genere un fichero o que en fondo realice cualquier tarea. Pero mediante la aplicación
de otra serie de técnicas de programación, es posible dar más funcionalidad a los reports, de manera
que puedan interactuar con el usuario.
En el Reporting Interactivo se aprovecha la tecnología SAP para ofrecer informes que van
detallando la información bajo la interacción del usuario, es decir se realizan listados generales que se
visualizan por pantalla y mediante teclas de función o seleccionando posiciones de pantalla, se irá
desarrollando aquella información que solicite el usuario.
En contraste con el reporting clásico, que está asociado con procesos de entornos Batch, el reporting
interactivo es un desarrollo que toma todas las ventajas del entorno online.
Un ejemplo de listado interactivo podría ser una lista de clientes, que permita visualizar sus datos de
dirección, datos bancarios, partidas... etc. en pantallas diferentes , que van apareciendo conforme
vamos seleccionando un cliente y/o solicitamos una función.
64
La interfaz de usuario
Reports
Desde esta lista inicial, el usuario será capaz, de dirigirse a una lista secundaria mediante una
tecla de función o posicionándose con el cursor. Al igual que en las listas básicas, se
implementan el listado con la instrucción WRITE.
Los datos de las listas secundarias aparecerán en una ventana, por encima de la lista principal,
solapando una parte u ocultándola totalmente.
65
La interfaz de usuario
Reports
Para controlar el flujo del report interactivo, tendremos una serie de eventos como :
Un report interactivo puede tener como máximo 9 listados secundarios. Si el usuario selecciona
la función BACK el sistema vuelve al listado anterior. ABAP/4 numera los listados a medida que
se van generando, empezando desde 0 (listado básico).
En el listado básico podemos visualizar cabeceras con TOP-OF-PAGE o con la cabecera estándar,
pero en los listados de ramificación no podemos utilizar cabeceras estándares, utilizaremos el
evento TOP-OF -PAGE DURING LINE-SELECTION.
66
La interfaz de usuario
Reports
67
La interfaz de usuario
Reports
68
La interfaz de usuario
Reports
Selección de línea.
La selección de una línea del listado interactivo , ya sea mediante un doble-click o mediante la
función Seleccionar (con Código de función 'PICK'), activa el evento AT LINE -SELECTION.
El proceso de este evento creará una nueva lista, que aparecerá por encima de la anterior. Para
facilitar la orientación del usuario, podemos crear una ventana, (instrucción WINDOW), donde
aparecerá los datos de esta nueva lista, solapándose parcialmente con la lista anterior.
Ejemplo:
TABLES LFAI.
GET LFA 1.
WRITE LFA1-LIFNR.
WRITE LFA1 -NAME1.
HIDE LFAL-LIFNR.
AT LINE-SELECTION.
IF SY-LSIND = 1.
SELECT * FROM LFBK
WHERE LIFNR = LFA1 -LIFNR.
WRITE LIFBK-BANKL,...
ENDSELECT. 69
ENDIF.
La interfaz de usuario
Reports
Selección de Función.
La selección de una función (botón) o tecla de función activa el evento, AT USER-COMMAND. El código
de la función solicitada se guarda automáticamente en la variable
SY-UCOMM. Si además el usuario selecciona una línea, el contenido de esta, podrá ser utilizado en el
proceso.
Existe una serie de funciones que excepcionalmente no pueden activar el evento AT USER-COMMAND .Ni
podrán ser utilizadas para realizar funciones propias:
70
La interfaz de usuario
Reports
Ejemplo:
TABLES LFAI.
GET LFAI.
WRITE LFA1-LIFNR.
WRITE LFA1-NAME1.
HIDE LFA1-LIFNR.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'BANK'.
IF SY-LSIND = 1.
SELECT * FROM LFBK
WHERE LIFNR = LFA1-LIFNR.
WRITE LIFBK-BANKL,...
ENDSELECT.
ENDIF.
ENDCASE.
71
La interfaz de usuario
Reports
HIDE <campo>.
72
La interfaz de usuario
Reports
Cambio de ‘Status’.
Un Status (GUI Status) describe que funciones están disponibles en un programa y como se
pueden seleccionar, vía menús, teclas de función o ‘pushbuttons’. Como ya veremos en el
siguiente capítulo, podemos definir un Status mediante el ‘Menu Painter’.
Si un report genera diversas listas, cada una puede utilizar sus propias combinaciones de teclas.
Con la instrucción SET PF-STATUS podemos cambiar la interface de cada lista.
73
La interfaz de usuario
Reports
Manipular listas
Para leer una línea determinada de la lista en visualización, utilizaremos la instrucción READ LINE
después de un evento AT LINE-SELECTION o AT USER COMMAND.
74
La interfaz de usuario
Reports
Es posible conectar reports interactivos con otros reports o con transacciones.
Podemos llamar a otro report con la instrucción SUBMIT.
En este caso no se ejecutará la pantalla de selección del report que llamamos y asignaremos el
criterio de selección con la cláusula WITH.
Para visualizar la pantalla de selección utilizamos la cláusula VIA SELECTION SCREEN del
SUBMIT.
Si queremos que una vez ejecutada la transacción el report recupere el control tendremos que hacer:
75
La interfaz de usuario
Modul pools
Se trata de un programa que permite el diálogo con el usuario y tiene asociado una serie de dynpros
(pantallas) con una lógica de proceso. Todos los módulos de SAP funcionan con transacciones.
Un programa de diálogo debe ofrecer:
• Un interfaz ágil para el usuario.
• Verificaciones de formato y consistencia de los datos introducidos por el usuario.
• Fácil corrección de errores en la entrada de datos.
• Acceso a los datos almacenados en la Base de datos de SAP.
• Layout de pantalla.
• Atributos de pantalla.
• Atributos de los campos.
• Lógica de proceso.
76
La interfaz de usuario
Modul pools – La lógica de proceso
La lógica de proceso de un dynpro se basa en la gestión de dos eventos. Estos eventos permiten
gestionar el aspecto de la dynpro y la interacción de la misma con el usuario.
DYNPRO
77
La interfaz de usuario
Modul pools – La lógica de proceso
La lógica de proceso se realiza mediante la programación de MODULES. Los modules se entienden
como subrutinas propias de las dynpros a las que se pueden vincular condiciones de ejecución.
La sentencia para la definición de los modules es la siguiente:
MODULE <nombre_module>.
En el PAI es posible definir agrupaciones de campos para su tratamiento común. Para ello se utiliza
las sentencias:
• CHAIN : Indica el inicio del bloque.
• ENDCHAIN: Indica el final del bloque.
Dentro del bloque definido mediante estas sentencias se deben definir los campos de la estructura que
forman parte. Para ello se utiliza la sentencia FIELD. Ha esta sentencia se le puede vincular la
ejecución de un module con un evento asociado.
CHAIN.
FIELD <campo1> MODULE <nombre_module1> [ON INPUT/ON REQUEST/ON CHANGE/ON *-INPUT].
…
FIELD <campon> MODULE <nombre_modulen> [ON INPUT/ON REQUEST/ON CHANGE/ON *-INPUT].
MODULE <nombre_module> [ON CHAIN-INPUT/ON CHAIN-REQUEST].
ENDCHAIN.
78
La interfaz de usuario
ALV Grid
El ALV Grid es uno de los componentes más utilizados en SAP para la presentación de datos al
usuario. Permite tanto la visualización, como la creación y modificación de datos.
Se trata básicamente de la utilización de una Clase Global que encapsula los atributos y métodos
necesarios para su utilización.
79
La interfaz de usuario
ALV Grid
La implementación de un listado mediante un ALV Grid supone la preparación de toda una serie de
componentes:
• Lista de datos: Se deberá disponer de una tabla interna que contenga los datos a listar. Ésta puede
estar implementada mediante cualquier tipo de estructura plana. Los campos estructurados sólo están
permitidos para determinadas funcionalidades del ALV Grid (p.e. atributos de color de las celdas).
• Field Catalog: Se deberá disponer de otra tabla interna que contendrá las especificaciones de cómo
deben visualizarse los campos de la lista de datos. Esta tabla interna se deberá referenciar sobre el
tipo “LVC_T_FCAT”.
• Layout: Se deberá rellenar una estructura para especificar las opciones del layout del ALV Grid.
Mediante esta estructura es posible definir opciones de visualización generales para el componente
(p.e. mostrar o no líneas de total). Esta estructura se deberá referenciar sobre el tipo “LVC_S_LAYO”.
• Event Handler: Se deberá definir e implementar (en el programa) una Clase para gestión de eventos
si de desean gestionar los eventos que pueda lanzar el ALV Grid. Después de crear la instancia de
ALV Grid, se deberá registrar también una instancia sobre la clase gestora de eventos que se haya
definido en el programa.
• Datos adicionales: Para poner en marcha algunas funcionalidades que proporciona el control ALV
Grid, se deberán pasar algunos parámetros más al componente. Por ejemplo para predefinir criterios
de ordenación o la desactivación de botones del control.
80