Вы находитесь на странице: 1из 38

Capacitacin ABAP & IS-H

Capacitacin SAP
Proyecto Soporte Foscal

unciones, Reportes y Objetos

apacitacin SAP
royecto Soporte Foscal

Pgina 2

nguaje y herramientas ABAP

Contenido

Grupos y mdulos de funciones


Reportes ALV mediante mdulos de funciones
Objetos ABAP
Modelo de objetos ALV

Pgina 3

upos y mdulos de funciones

Grupos y mdulos de funciones


Los mdulos de funciones son procedimientos que se crean con
la finalidad de ser reutilizados en distintos programas, a
diferencia de los forms que se crean para ser utilizados dentro
del mismo programa que lo define.
Los mdulos de funciones solo pueden ser creados en un tipo
especial de programa ABAP que se llaman grupos de funciones.
Los grupos de funciones actan como contenedores para
mdulos de funciones que funcionalmente pertenecen a un
mismo proceso de negocios. stos no pueden ser ejecutados
directamente.
El grupo de funciones puede agrupar muchos mdulos de
funciones y en ste se pueden definir datos globales que pueden
ser compartidos por los diferentes mdulos. Tambin se pueden
definir subrutinas (forms) globales dentro del grupo de funciones
para ser usada por los diferentes mdulos.
Pgina 4

upos y mdulos de funciones

Esquema de la relacin entre grupos y


mdulos
de funcin
Grupo
Grupo de
de funciones
funciones
Definicin de datos globales

Mdulo de funciones 1

Mdulo de funciones 2

Mdulo de funciones 3

Pgina 5

upos y mdulos de funciones

Nombramiento de componentes
Grupo
Grupo de
de funciones
funciones ZFGR_TEST
ZFGR_TEST
Function Pool SAPLZFGR_TEST
Include LZFGR_TESTTOP
FUNCTION-POOLZFGR_TEST.
* Definicin de datos globales
Include LZFGR_TESTUXX.
INCLUDELZFGR_TESTU01.
INCLUDELZFGR_TESTU02.
Include LZFGR_TESTU01
FUNCTIONZFMOD_1.
ENDFUNCTION.
Include LZFGR_TESTU02
FUNCTIONZFMOD_2.
ENDFUNCTION.

Pgina 6

upos y mdulos de funciones

Creacin del grupo y mdulos de funciones


En la transaccin SE80 elegimos la opcin Grupo de funciones y
escribimos el nombre que queremos, iniciando con Z. En este
caso ZFGR_TEST

Si no existe nos pide crearlo. Luego tenemos que darle una


descripcin al grupo de funciones:

Pgina 7

upos y mdulos de funciones


Los objetos que se crean hasta ahora, incluso sin que haya
mdulos de funciones son los siguientes:

Los includes que figuran en la lista estn incluidos en el programa


de control que se llama SAPLZFGR_TEST.

Pgina 8

upos y mdulos de funciones


Para crear el grupo de funciones hacemos click derecho en el
nombre del grupo de funciones y elegimos Crear > Mdulo de
funciones:

Elegimos el nombre y la descripcin:

Pgina 9

upos y mdulos de funciones

Parmetros de los mdulos de funciones


Los mdulos de funciones tienen parmetros del tipo IMPORT,
EXPORT, CHANGING, TABLES y EXCEPTION.
Los parmetros IMPORT se utilizan para pasar valores a las
funciones que pueden ser utilizados dentro de sta en modo
lectura.
Los parmetros de EXPORT se utilizan para devolver valores al
programa llamador del mdulo de funciones.
Los parmetros del tipo CHANGING se utilizan para pasar
variables del programa llamador que pueden ser modificadas
dentro del mdulo de funciones.
Los parmetros del tipo TABLES se utilizan para pasar tablas
internas al mdulo de funciones.
Los parmetros del tipo EXCEPTION sirven para indicar los tipos
de errores que se pueden presentar dentro del mdulo de
funciones.
Pgina 10

dulos de funciones para reportes ALV

Mdulos de funciones para


reportes ALV
Qu es ALV?

Pgina 11

dulos de funciones para reportes ALV

Mdulos de funciones para


reportes ALV
Qu es ALV?
ALV es una abreviacin que significa ABAP List Viewer. Es una
herrmienta ABAP que nos permite el rpido desarrollo de reportes
ayudandonos en el formateo de la lista asi el desarrollador no
tiene que invertir tanto tiempo en el armado del reporte.
Adems nos presenta una interfaz de usuario de reportes
unificada para todos los reportes/listados de datos.
El ALV tambin nos provee de herramientas para trabajar con el
listado una vez en pantalla que incluyen funcionalidades como
ordenamiento, subtotales, filtrado de datos y download de
listados a archivos locales.
Pgina 12

dulos de funciones para reportes ALV

En resumen ALV nos ofrece:


Desde el punto de vista del usuario
ALV es un elemento de la interfaz de usuario
Para mostrar listados de datos
Provee un conjunto de funcionalidades estndares como
ordenamiento, filtro de informacin, sumarizaciones,
personalizacin de la salida, etc.

Desde el punto de vista del desarrollador

ALV es un conjunto de APIs


Puede ser usado en cualquier aplicacin
Ofrece una funcionalidad para listado de datos
Nos ahorra tiempo en el desarrollo del formateo de la
informacin
Nos ahorra tiempo en el desarrollo de funcionalidades
Pgina 13

dulos de funciones para reportes ALV

Herramientas ALV
El conjunto de herramientas ALV a cambiado con el tiempo y
existen 3 herramientas en la actualidad:
La primer herramienta que cre SAP fue el conjunto de
mdulos de funciones REUSE_ALV* que llegaron con la versin
Basis release 4.0. Este conjunto de herramientas naci con
finalidad de uso interno de SAP, aunque los clientes
comenzaron a usarla y SAP permiti que se hiciera.
Luego con la versin Basis release 4.6 SAP liber otra
herramienta, ya basada en objetos. Parte de este conjunto de
herrmientas permaneci para uso interno de SAP pero permiti
para uso de clientes la clase CL_GUI_ALV_GRID.
Finalmente en la versin SAP NetWeaver2004 (Basis 6.40) SAP
intrujo un nuevo conjunto de herramientas llamado ALV Object
Model, este conjunto de herramientas fue liberado por SAP
tanto para uso interno como para uso de clientes.

Pgina 14

dulos de funciones para reportes ALV

REUSE_ALV_GRID_DISPLAY
SELECT
SELECT
DB
DB

Tabla
Tabla
Intern
Intern
aa

Tabla
Tabla
Intern
Intern
aa

FIELDCAT
FIELDCAT

CALL
CALL FUNCTION
FUNCTION
REUSE_ALV_GRID_DISPLAY
REUSE_ALV_GRID_DISPLAY

Listado
Listado en
en
Pantalla
Pantalla

Pgina 15

dulos de funciones para reportes ALV


Ejemplo de invocacin de la funcin con los
parmetros mnimos:
En este caso se invoca la funcin pasandole slo los
parmetros necesarios:
it_fieldcat que representa la tabla con las propiedades de

las columnas
T_outtab que representa la tabla con los registros del
reporte

Pgina 16

Objetos ABAP

Objetos ABAP
En la versin Basis 4.0 SAP introdujo el concepto de orientacin a
objetos como parte del lenguaje de programacin ABAP,
extendiendo el mismo. Esta extensin se basa en el lenguaje ya
existente, siendo compatible con l. Se pueden usar objetos en
programas existentes, de la misma manera que se pueden usar
sentencias ABAP convencionales en programas ABAP orientados a
objetos.
La programacin orientada a objetos en ABAP utiliza los
componentes CLASE y OBJETO como la base fundamental de
esta herramienta como se hace en la mayora de los lenguajes de
programacin que permiten este tipo de modelo de
programacin. Las clases en ABAP poseen 3 tipos de
componentes:
Atributos
Mtodos
Eventos
Pgina 17

Objetos ABAP
Una clase no es ms que una serie de cdigo que define a todos
los elementos relacionados con ella. As, podramos escribir la
clase Perro colocando en ella todas las caractersticas que tienen
los perros (altura, peso, color, etc) esas caractersticas las
llamaremos atributos.
Los perros poseen mecanismos para realizar acciones, como
comer, dormir, ladrar, etc. A estos mecanismos los llamamos
mtodos.
Por ltimo, tambin sabemos que las perros reaccionan ante
ciertos sucesos, como peligro, atraccin, hambre, etc. A esto lo
llamaremos eventos.
Una clase simboliza la definicin de un objeto, pero no es el
objeto en s, del modo como una idea no es una cosa fsica. As
que para sentarnos necesitaremos convertir esa idea en algo, en
un objeto real; a ese objeto lo llamamos instancia.
Cada vez que creamos una nueva instancia, sta adquiere
atributos, mtodos y eventos de la clase a la que pertenece,
sin 18
Pgina

Objetos ABAP

Tipos de clases
SAP desarroll esta funcionaliad de manera que las clases puedan
ser declaradas de dos maneras distintas, como clases locales o
como clases globales.
Las clases locales se definen e implementan dentro del programa
donde queramos utilizarla y slo puede ser accedida desde ese
programa.
Las clases globales en cambio se definen en el generador de
clases, a travs de la transaccin SE24 en el ABAP Workbench.
Estas clases son almacenadas en el Class Pools en la librera de
clases en el Repositorio R/3. Todos los programas ABAP en un
sistema R/3 pueden acceder a las clases globales.
Cuando se usa una clase en un programa ABAP el sistema busca
primero una clase local con el nombre especificado. Si no
encuentra ninguna entonces busca una clase global. A parte de la
cuestin de la visibilidad, no hay ninguna diferencia entre usar
Pgina 19
una clase global o una clase local. Lo que si cambia

Objetos ABAP
Si se define una clase que se va a usar en un nico programa,
normalmente es suficiente con definir los componentes visibles
de manera que la clase se ajuste a nuestro programa. Por otro
lado, las clases globales deben estar preparadas para ser usadas
en cualquier parte.

Definicin de clases locales


Las clases locales son el conjunto de sentencias que estn entre
las sentencias CLASS...ENDCLASS.
Una definicin completa de una clase constar de una parte
declarativa, lo que se conoce como definicin de la clase, en la
que se definen los componentes, y una parte de implementacin,
lo que se conoce como implementacin de la clase, en la que se
implementan estos componentes.
La parte declarativa o definicin de una clase est comprendida
entre las sentencias:
CLASS <nombre_clase> DEFINITION.

Pgina 20

Objetos ABAP
La parte declarativa contiene la declaracin de todos los
componentes de la clase (atributos, mtodos y eventos). Cuando
se definen clases locales, la parte declarativa pertenece a los
datos globales del programa, por tanto se habr de situar al
principio del programa.
Si se declaran mtodos en la parte declarativa de una clase, se
deber escribir tambin su parte de implementacin. sta es la
que va incluida entre las siguientes sentencias:
CLASS <nombre_clase> IMPLEMENTATION.
ENDCLASS.
La parte de implementacin contiene la implementacin de todos
los mtodos de la clase. Esta parte acta como un bloque, esto
quiere decir que cualquier seccin de cdigo que no forme parte
del bloque no ser accesible.

Pgina 21

Objetos ABAP

Estructura y componentes de una clase


La estructura de una clase se define principalmente basndose
en:
Una clase contiene componentes.
Cada componente se asigna a una seccin de visibilidad
(pblico, protegido o privado).
Las clases implementan mtodos.
Los componentes de una clase representan sus contenidos. Todos
los componentes son declarados en la parte declarativa de la
clase. Los componentes definen los atributos de los objetos en
una clase.
Cuando se define una clase, cada componente es asignado a una
de las tres distintas secciones de visibilidad que definen la
interface externa de la clase. Todos los componentes de una clase
son visibles dentro de la clase. Adems todos comparten el
mismo espacio por lo que sus nombres deben ser nicos dentro
de la clase.

Pgina 22

Objetos ABAP
Hay dos tipos de componentes en una clase, aquellos que existen
separadamente para cada objeto de una clase, y aquellos que
existen slo una vez para la clase entera, independientemente
del nmero de instancias. Estos componentes son conocidos
como dependientes de instancia o estticos
respectivamente.

Atributos
Existen dos tipos de atributos:
Dependientes de instancia: donde el contenido de los
atributos es especfico de cada objeto. Se declaran usando la
sentencia DATA.
Independientes de instancia o estticos: donde el
contenido de los atributos define el estado de la clase y es
vlido para todas las instancias de la clase. Los atributos
estticos existen slo una vez para la clase. Se declaran
usando la sentencia CLASS-DATA. Son accesibles desde todo
el entorno de ejecucin de la clase. Todos los objetos de una
clase pueden acceder a sus atributos estticos. Si se cambia un
Pgina 23
atributo esttico en un objeto, el cambio es visible en todos los

Objetos ABAP

Mtodos
Los mtodos pueden acceder a todos los atributos de una clase.
Esto les permite cambiar el contenido de los atributos de un
objeto.
Los mtodos poseen tambin una interface con parmetros que
les permite recibir valores cuando son invocados y devolver
valores despus de la llamada. Los atributos privados de una
clase slo pueden ser cambiados por mtodos de la misma clase.
La definicin y la interface de un mtodo son similares a las de
los mdulos de funciones. Un mtodo se define en la parte
declarativa de la clase y se implementa en la parte de
implementacin usando las sentencias:
Definicin:
METHODS <nombre_metodo>.
Implementacin:
Pgina 24

Objetos ABAP
Se pueden declarar tipos de datos locales y objetos en los
mtodos de la misma manera que en cualquier otro
procedimiento ABAP. Los mtodos se llaman mediante la
sentencia CALL METHOD .
Existen tres tipos de mtodos:
Dependientes de instancia: estos mtodos se declaran
usando la sentencia METHODS. Pueden acceder a todos los
atributos de una clase y pueden desencadenar todos los
eventos de una clase.*
Independientes de instancia o estticos: estos mtodos se
declaran usando la sentencia CLASS-METHODS. Slo pueden
acceder a los atributos estticos y desencadenar eventos
estticos.
Especiales: adems de los mtodos normales que se pueden
llamar con la sentencia CALL METHOD, hay dos mtodos
especiales llamados CONSTRUCTOR y CLASS_CONSTRUCTOR
que son automticamente llamados cuando se crea un objeto
Pgina 25

Objetos ABAP

Eventos
Los eventos son un mecanismo mediante el cual una clase puede
llamar a mtodos de otras clases sin tener que instanciar las
mismas o incluso sin tener que conocer a tales clases.
El manejo de eventos implica 4 pasos:
Declaracin del evento en la clase.
Instruccin EVENTS <evento>
Disparo de un evento desde algun mtodo de la clase.
Instruccin RAISE EVENT <evento>
Creacin de un manejador de eventos en la misma o una clase
distinta.
Instruccin METHODS <nombre> FOR EVENT <evento>
Registro del manejador de evento.
Instruccin SET HANDLER <manejador> FOR <objeto>

Pgina 26

Objetos ABAP

Visibilidad de una clase


La parte declarativa o definicin de una clase se divide en tres
reas de distinta visibilidad:
CLASS <clase> DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.

PUBLIC SECTION: todos los componentes declarados en la


seccin pblica son accesibles para todos los usuarios de la
clase y para todos los mtodos de la clase y de cualquier clase
que herede de ella. Los componentes pblicos conforman la
interface entre la clase y el usuario.
PROTECTED SECTION: todos los componentes declarados en
la seccin protegida son accesibles para todos los mtodos de
la clase y de las clases que heredan de ella. Los componentes
protegidos conforman la interface entre una clase y todas sus
subclases.
PRIVATE SECTION: los componentes declarados en la seccin
privada son slo visibles en los mtodos de la misma clase.
Los27
Pgina

Objetos ABAP

Instancias
Los objetos son instancias de las clases. Cada objeto tiene una
identidad propia y tiene sus propios atributos. Todos los objetos
transitorios residen en el contexto de una sesin interna ( rea de
memoria de un programa ABAP ). Una clase puede tener un
nmero indefinido de instancias.
Para acceder a un objeto se utilizan las referencias. Las
referencias son un tipo especial de variable que apunta a un
objeto en memoria (o se encuentra en estado inicial). Se declaran
utilizando una variacin de la instruccin DATA de la siguiente
manera:
DATA <instancia> TYPE REF TO <clase>.
Una referencia a clase permite al usuario crear una instancia, o
sea un objeto, de la clase y acceder a un componente visible de
la siguiente manera:
<instancia>->componente

Pgina 28

Objetos ABAP
Antes de crear un objeto de una clase es necesario declarar una
variable referenciada con la referencia a la clase. Una vez que se
ha declarado la referencia a la clase , se puede crear el objeto
usando la sentencia CREATE OBJECT. Esta sentencia crea una
instancia de la clase y la variable referenciada contiene la
referencia al objeto.
Ejemplo:
DATA reporte TYPE REF TO cl_reporte.
CREATE OBJECT reporte.
Cuando se instancia una clase se invoca, si ste se ha definido, a
un mtodo especial llamado CONTRUCTOR que se utiliza para
inicializar los atributos internos de la clase.

Pgina 29

Objetos ABAP

Acceso a los componetes de un objeto


Los programas slo pueden acceder a los componentes de las
instancias usando las referencias de las variables referenciadas.
La sintaxis es la siguiente, siendo ref la variable referenciada:
Para acceder al un atributo: ref->atributo.
Para llamar a un mtodo: CALL METHOD ref->metodo.
Manera alternativa de llamar a un mtodo: ref->metodo( )
(Slo funcionan para mtodos que no aceptan parametros o
aceptan uno solo en modo importing)
Dentro de una clase se puede acceder tambin a los
componentes individuales mediante la referencia a s mismo ME:
Para acceder al atributo attr en la propia clase: me->atributo.
Para llamar al mtodo meth en la propia clase: CALL METHOD
me->meth.

Pgina 30

Objetos ABAP

Acceso a los componetes staticos de una


clase
Para los componentes estticos o independientes de instancia,
slo dependientes de clase, se puede usar tanto el nombre de la
clase como la variable referenciada. Tambin es posible acceder a
los componentes estticos de una clase antes de que un objeto
de la clase haya sido creado.
La sintaxis, siendo class la clase es la siguiente:
Para acceder a un atributo esttico : class->atributo.
Para llamar a un mtodo esttico: CALL METHOD class>metodo.

Pgina 31

Objetos ABAP

Herencia
La herencia permite crear una nueva clase a partir de una
existente, heredando la nueva clase sus propiedades. Esto se
realiza aadiendo la adicin INHERITING FROM a la sentencia de
definicin de la clase:
CLASS <subclase> DEFINITION INHERITING FROM
<superclase>.
La nueva clase hereda todos los componentes de la clase ya
existente. Si no se aade ninguna declaracin a la subclase, esta
contiene los mismos componentes que la superclase. De
cualquier manera, slo los componentes pblicos y privados de la
superclase son visibles a la subclase. Aunque los componentes
privados de la superclase existen en la subclase, no son visibles.
Las clases a las que no se le declara una super clase,
automticamente heredan de una clase especial llamada OBJECT
la cual no tiene atributos ni mtodos.

Pgina 32

Modelo de objetos ALV

Modelo de Objetos ALV


El conjunto de herramientas ALV a cambiado con el tiempo y
existen 3 herramientas en la actualidad:
La primer herramienta que cre SAP fue el conjunto de
mdulos de funciones REUSE_ALV* que llegaron con la versin
Basis release 4.0. Este conjunto de herramientas naci con
finalidad de uso interno de SAP, aunque los clientes
comenzaron a usarla y SAP permiti que se hiciera.
Luego con la versin Basis release 4.6 SAP liber otra
herramienta, ya basada en objetos. Parte de este conjunto de
herrmientas permaneci para uso interno de SAP pero permiti
para uso de clientes la clase CL_GUI_ALV_GRID.
Finalmente en la versin SAP NetWeaver2004 (Basis 6.40) SAP
intrujo un nuevo conjunto de herramientas llamado ALV
Object Model, este conjunto de herramientas fue liberado por
SAP tanto para uso interno como para uso de clientes.

Pgina 33

Modelo de objetos ALV

Antes del Modelo de Objetos ALV

Pgina 34

Modelo de objetos ALV

Con el Modelo de Objetos ALV

Pgina 35

dulos de funciones para reportes ALV

Utilizacin de la funcin
REUSE_ALV_GRID_DISPLAY
SELECT
SELECT
DB
DB

Tabla
Tabla
Intern
Intern
aa

Tabla
Tabla
Intern
Intern
aa

FIELDCAT
FIELDCAT

CALL
CALL FUNCTION
FUNCTION
REUSE_ALV_GRID_DISPLAY
REUSE_ALV_GRID_DISPLAY

Listado
Listado en
en
Pantalla
Pantalla

Pgina 36

dulos de funciones para reportes ALV

Utilizacin de la clase CL_SALV_TABLE


SELECT
SELECT
DB
DB

Tabla
Tabla
Intern
Intern
aa

cl_salv_table=>factory
cl_salv_table=>factory

instancia_alv->display
instancia_alv->display

Listado
Listado en
en
Pantalla
Pantalla
Pgina 37

dulos de funciones para reportes ALV

Relaciones de objetos

Pgina 38

Вам также может понравиться