Vous êtes sur la page 1sur 66

Contenido

1 Introduccin a SAP R/3........................................iii


1.1 Caractersticas de SAP R/3.............................................................vii
1.2 Entorno de Desarrollo ABAP.............................................................x
1.3 Aplicaciones del ABAP..................................................................xiv
Modularizacin......................................................................................... xv

16 BATCH INPUTS..............................................xviii
16.1 Introduccin.............................................................................xviii
16.2 Batch input ................................................................................xix
16.2.1 Generar Juego de datos..................................................................xix
16.2.2 Abrir el juego de datos...................................................................xxiii
16.2.3 Llenar la tabla BDCDATA...............................................................xxiii
16.2.4 Llamar a la transaccin..................................................................xxv
16.2.5 Cerrar juego de datos...................................................................xxvi
16.2.6 Call transaction............................................................................ xxvi

17 PROGRAMAS DE CARGA DIRECTA...................xxviii


17.1 Ficheros del PC......................................................................xxviii
17.2 Ficheros del Servidor.................................................................xxix

18 TECNICAS DE REPORTING..............................xxxii
18.1 Introduccin al reporting interactivo.............................................xxxii
18.1.1. ALVs Orientados a Objetos..........................................................xxxv
18.1.2. Listados Interactivos.......................................................................xl

19 PROGRAMACION DE DIALOGO...........................xlii
19.1 Introduccion............................................................................xlii
19.2 Logica de proceso..................................................................xliii

19.2.1

Llamar a los mdulos de dilogo ABAP........................................xliv

19.3 Creacion de DYNPRO ............................................................xlv


19.3.1

Screen painter........................................................................xlvi

19.4 Menu Painter........................................................................xlix


19.4.1

Creacion de un STATUS..........................................................xlix

19.4.2

Barra de men............................................................................ l

19.4.3

Barra de pulsadores...................................................................li

19.4.4

Teclas de funcin.......................................................................lii

19.4.5

Codigos de Funcion.....................................................................liv

19.4.1.1

Tipos de funcin...................................................................liv

1 Introduccin a SAP R/3


SAP R/3 es un sistema empresarial integrado diseado para ayudar a las
organizaciones a ejecutar procesos empresariales tales como gestionar
inventarios, crear solicitudes, procesar pedidos de venta, pagar facturas, etc.
SAP R/3 abarca un amplio espectro de procesos empresariales.

SAP R/3 proporciona un sistema nico integrado de gestin de las necesidades


comn a todos los departamentos de una empresa. Esta integracin es la gran
ventaja que aporta SAP R/3. Adems, como SAP R/3 es un sistema basado en
cliente-servidor, su versatilidad es an mayor.

SAP R/3 consiste en una serie de reas de aplicacin las cuales estudiaremos
ms adelante.

Desde el punto de vista funcional y de su arquitectura tcnica, SAP R/3 puede


definirse como un software abierto basado en la tecnologa cliente-servidor,
diseado para manejar las necesidades de informacin de una empresa.

Se trata de un paquete de software estndar (en contraposicin al desarrollo a


medida ) que puede modelar los procesos de negocios de una empresa en su
propio modelo de datos.

Los niveles o componentes del SAP R/3 y la funcin que realizan estn
representados dentro de la elipse.

S
A
P

APLICACIONES R/3
NIVEL FUNCIONAL

SISTEMA BASICO

SISTEMA OPERATIVO, BASE DE DATOS


Y RED

Componentes de SAP R/3


1. Aplicaciones funcionales, Los diferentes mdulos que componen el
sistema R/3 son:
Finanzas

FI
- Gestin financiera
CO - Controlling o Contabilidad de costes
EC
- Controlling Corporativo
IM
- Gestin de inversiones
TR -Tesorera)
Logstica

LO - Logstica general
SD - Ventas y Distribucion
MM - Gestin de Materiales
PP - Planeamiento de la Produccion
PM - Mantenimiento
QM - Control de calidad
PS - Sistema de control de proyectos
WM - Gestin de almacenes
Recursos Humanos

PA - Administracion de Personal
PD - Desarrollo y planificacin personal
IS - Solucin vertical para industrias
2. Sistema bsico, es el encargado de la interfaz entre el sistema operativo y
las aplicaciones R/3 incluyendo componentes tales como el entorno de

desarrollo ABAP, herramientas de administracin del sistema, manejo de jobs,


autorizaciones, etc.
3. Sistema Operativo, gestin de la base de datos y la red cuyo software viene
incluido en SAP R/3.

1.1 Caractersticas de SAP R/3


SAP R/3 ofrece para gestionar los distintas funciones de una empresa las
siguientes caractersticas:

Sistema Cliente Servidor.

Sistema Cliente Servidor.- en la computacin cliente-servidor, una parte del


procesamiento se ejecuta en el PC de sobremesa ( cliente ) y la otra en
computadoras centrales compartidas ( servidores ).

La presentacin y el

preprocesamiento se ejecutan en el PC mientras que la informacin se


almacena en los servidores.

Servidor Base de Datos.- Este es el servidor central que contiene la base de


datos ( el sistema de gestin de base de datos ) y se conoce generalmente
como servidor de base de datos.
Servidor de Aplicaciones.- Contienen la lgica de proceso del sistema
incluyendo servicios como el de impresin, peticiones de usuario, servicios
para procesar los jobs de fondo, etc.

La comunicacin entre los tres niveles anteriores se realiza mediante el


protocolo estndar TCP/IP.
Tecnologa de Sistemas Abiertos
Significa que las aplicaciones pueden funcionar sobre mltiples sistemas
operativos (UNIX, WINDOWS NT, AS/400, etc. ) y diferentes gestores de bases
de datos ( ORACLE, INFORMIX, ADABAS, etc. ), siendo el cdigo fuente de las
aplicaciones ABAP completamente reutilizable y transportable entre los
distintos sistemas.
SAP soporta muchas GUI (Interfaces Grficas de Usuario ) tales como
Windows 3.11, Windows 95, Windows 98, Windows NT, Macintosh, etc. La GUI
diseada por SAP es la SAP GUI y est orientada a ventanas, botones, iconos,
barras de men, barras de herramientas, etc. Esta GUI depende de la versin
con la que se est trabajando.

Integracin de Aplicaciones
Todas las aplicaciones R/3 estn integradas y relacionadas con capacidad de
hacerlo en tiempo real, es decir, la informacin se actualiza constantemente.
Qu significa esto? Cualquier cambio que se realice por ejemplo en una base
de datos se reflejar inmediatamente en todos los componentes de SAP:
screen painter, menu painter, diccionario de datos, etc.

Entorno de desarrollo

2 CARACTERSTICAS DE SAP R/3

Incluye todas las herramientas necesarias para el diseo y desarrollo de


programas, pantallas, mens, mdulos de funciones, etc. Contiene tambin
funciones para realizar la depuracin de programas y pruebas de rendimiento.
Todas las aplicaciones estndar de R/3 estn realizadas en ABAP.

Se ha diseado un entorno de desarrollo llamado Development Workbench que


se encuentra integrado dentro del sistema R/3 y permite al cliente desarrollar
soluciones especficas o ampliar las estndard en el ncleo de entorno de
desarrollo se encuentran el Repositorio de objetos y el Diccionario de datos.

Dentro del Diccionario de Datos se encuentran la definicin de tablas, valores


permitidos, relaciones entre tablas, etc. Repositorio de Objetos: programas,
datos del diccionario, dynpros, documentacin, etc.

Herramientas para la configuracin del sistema


La parametrizacin es la piedra angular de una implantacin SAP R/3. Algunas
tareas de parametrizacin son tan sencillas como introducir el pas donde est
situada la empresa y otras son ms complicadas, orientadas a reas o
industrias especificas que requiere conocimientos tcnicos de configuracin
como de actividades empresariales.

Servicios de Soporte, Formacin, Consultora e Implantacin ( OSS )


SAP ha dispuesto un amplio conjunto de servicios de calidad para ayudar a su
cliente durante el proceso de implantacin y soporte de los sistemas R/3. Estos
servicios abarcan desde informacin de aplicaciones, formacin, servicio de
instalacin hasta consultora.

SAP realiza la gran mayora de los servicios a travs de conexiones remotas


con red de comunicacin internacional. El sistema de servicio en lnea de SAP
se llama OSS ( Online Service System ).

1.2 Entorno de Desarrollo ABAP


El entorno de desarrollo ABAP consiste de las siguientes herramientas :

Para

La

herramienta

/ Se utiliza para

componente
Programacin

Diccionario ABAP

Definir,

mantener

almacenar el diccionario
de datos del sistema R/3.
Contiene todos los objetos
del diccionario, tales como
tablas,

relaciones,

documentacin, etc.
Editor ABAP

Crear

programas

mantener
ABAP

los
para

editar mdulos de funcin,


bases de datos lgicas y la
lgica de programacin de
las pantallas ( Dynpros )
Librera de Funciones

Definir y mantener modulo


de funcin ABAP ( rutinas
de propsito general que
pueden ser utilizadas en
otros programas ABAP )

3 ENTORNO DE DESARROLLO ABAP

Screen Painter

Disear y mantener las


pantallas

interfaces

grficas de usuario en R/3.


Menu Painter

Disear y mantener los


mens para los interfaces
grficos de usuario.

Navegacin

Object Browser

Gestionar y revisar los


objetos de desarrollo de
modo

jerrquico

para

permitir una navegacin


fcil entre los objetos y el
entorno de desarrollo.
Sistema de informacin del Navegar y buscar objetos
Repositorio ABAP

del diccionario, objetos de


desarrollo
entre

relaciones

objetos

de

desarrollo.

Visualizar los objetos de


Jerarqua Aplicacin

desarrollo desde un punto


de vista organizativo y de
aplicacin.

Data Browser

Navegar y visualizar los


contenidos de las tablas
de la base de datos.

Debugging

Trace SQL

Seguir

rastrear

los

accesos y llamadas a la
base de datos desde los
programas y transacciones

del sistema
Anlisis Tiempo Ejecucin

Analizar el rendimiento de
las llamadas al sistema.

Debugger en lnea

Detener un programa y
analizar el resultado de la
ejecucin

de

cada

sentencia del programa.


Log del Sistema

Seguimiento de los errores


y

mensajes

que

se

producen

durante

la

ejecucin

de

los

programas.
Organizacin

del Workbench Organizer

desarrollo

Controlar

seguir

el

trabajo de desarrollo y los


proyectos
para

en

equipo

gestionar

y
las

versiones de los objetos


de desarrollo.
Sistema de Transporte

Realizar y gestionar los


transportes de los objetos
de

desarrollo

entre

distintos sistemas SAP.

Concepto de Mandante (cliente).- Muchas veces se entiende de manera


equivocada el este concepto, en realidad es el nombre del sistema SAP R/3 al
que nos conectamos, la mayora de las compaas cuentan con un cliente para
cada tarea especfica.

Se define como una unidad independiente dentro del sistema R/3, desde el
punto de vista fiscal, legal y organizativo. Por ejemplo un mandante se puede
decir que representa a una empresa dentro de una corporacin. Tcnicamente
se puede decir que un mandante se comporta dentro de SAP como una base
de datos lgica independiente, es decir, los datos de una tabla en un mandante
no pueden ser modificados ni visualizados desde otro mandante.

Por ejemplo una compaa podra tener la siguiente configuracin:

El sistema cliente de formacin 400, que se utiliza para la formacin de


nuevos usuarios.

El sistema cliente de desarrollo 100, que se utiliza para nuevos


desarrollos as como etapa de prueba de los nuevos desarrollos.

El sistema de produccin 100 es el sistema activo utilizado para dirigir la


empresa. sta es un rea nada recomendable para practicar.

Es importante conocer el cliente o mandante en que se requiera realizar la


tarea especfica debido a los posibles problemas que se puedan generar. Cada
cliente

mandante

determinadas tarea.

tiene

especificadas

autorizaciones

para

realizar

La realizacin de las tareas en cada mandante est

restringida y asignada dependiendo del nivel del usuario.


Por ejemplo un usuario final no siempre tiene autorizacin para manipular todos
los mens de SAP R/3, as como un programador puede tener un lmite dentro
del sistema de desarrollo ( no estar autorizado para actualizar bases de datos,
eliminar elementos de SAP, etc. ), un funcional no tendr acceso a los recursos
del sistema base (administracin de la base de datos)

Concepto de Transaccin.- De un modo genrico una transaccin es una


operacin que permite a un usuario realizar cambios en la base de datos. Todo
el sistema R/3 se puede considerar como un sistema de proceso de
transacciones de negocios.

1.3 Aplicaciones del ABAP


ABAP es el lenguaje de programacin de SAP. En versiones anteriores a la 4.0
era un lenguaje de programacin de 4 generacin ( se denominaba ABAP/4); a
partir de entonces, se puede decir que es un lenguaje de programacin
orientada a objetos. El significado de ABAP es:
A - Advanced
B - Business
A - Aplication
P - Programming

Las aplicaciones del ABAP son:


Reporting ( Clsico e interactivo )
Programacin de dilogo o transacciones ( diseo de pantallas )
Otras aplicaciones ( Batch-Input, programas de comunicaciones, etc. )
Una vez instalado SAP, la principal aplicacin del ABAP es la generacin de
informes ya sea porque no han sido contemplados por SAP o se requiere un
formato muy completo (al margen de posibles modificaciones, ampliaciones,
etc.).

El Reporting Clsico se caracteriza por listados voluminosos o muy frecuentes


con mezcla de informacin detallada y resumida.
El Reporting Interactivo est orientado a pantallas, listados cortos y ventanas
controladas por teclas de funcin.

Ambos reporting se pueden ejecutar en Online ( tiempo real ) mientras que


nicamente el clsico se puede ejecutar en Batch ( diferido/proceso de fondo ).
La programacin en dilogo se caracteriza por estar enfocado a pantallas
que estarn controladas por mdulos ABAP.

Otras aplicaciones posibles en lenguaje de programacin son la generacin de


Batch Input y programas de comunicaciones. Un Batch Input es una utilidad de
SAP para transferir informacin de forma segura y automatizada. Para ello se
simula mediante un proceso en batch la introduccin de datos en el sistema a
travs de una transaccin online.

Modularizacin
Una unidad de modularizacin es una parte de un programa encapsulada con
una funcionalidad determinada. La modularizacin hace ms fcil mantener
los programas
Por modularizacin dentro de los programas ABAP, entendemos el hecho de
facilitar su lectura y mejorar su estructura. Modularizar programas facilita el
mantenimiento y la actualizacin de los mismos a comparacin de los que no
estn debidamente modularizados. A este nivel, modularizacin es sinnimo de
estructuracin.

Principio de Modularizacin
No modularizado
PROGRAM

..
Block de Sentencias

..

Modularizado
PROGRAM
..
CALL UNIDAD DE MODULARIZACION
..
CALL UNIDAD DE MODULARIZACION
..
CALL UNIDAD DE MODULARIZACION
..

Block de Sentencias

..
CALL UNIDAD DE MODULARIZACION
Block de Sentencias
Block de Sentencias

..

1.3.1.1 Tcnicas para facilitar la modularizacin:


1) MODULARIZACION LOCAL
Definicion de subrutinas internas y externas para evitar secuencias de
sentencias similares o idnticas, es decir, evitar redundancia de contextos.
Las subrutinas mejoran la estructura de tu programa ( esto significa
modularizacin ) y facilitan su lectura. Una secuencia de sentencias
definida dentro de una subrutina puede ser llamada desde varios puntos de
un programa.
Para mayor claridad se deben colocar las subrutinas al inicio o al fin del
programa (por convenio, es mejor hacerlo al final).

Definir de includes dentro de la biblioteca.

S se desea utilizar la misma secuencia de sentencias en varios programas,


es aconsejable realizar el cdigo dentro de un programa include.

Metodos en clases locales.

2) MODULARIZACION G LOBAL
Definir mdulos de funcin. stos son almacenados dentro de la biblioteca
de funciones, en donde son asignados a un grupo de funcin.
El sistema R/3 proporciona diversos mdulos de funcin predefinidos, los
cuales pueden ser llamados desde cualquier programa ABAP.
Adems estos mdulos de funcin pueden ser creados por el propio
programador.
A diferencia de las subrutinas, los mdulos de funcin cuentan con una
interface, siendo capaz de esta forma de estandarizar el paso de
parmetros.

Metodos en clases globales.

llamadas a programas externos Llamadas a interfaces abiertas.

16 BATCH INPUTS
16.1 Introduccin
Cuando se instala una aplicacin en productivo es necesario dar de alta toda la
informacin indispensable para que la empresa pueda funcionar (proceso de
migracin de datos o conversin).
Por ejemplo, antes de poder generar facturas reales ser necesario introducir
todos los clientes activos y todos los productos que se encuentran a la venta.
Para realizar la carga de productos que estn a la venta se debera ejecutar
manualmente la transaccin Alta de materiales tantas veces como productos
sean precisos y la misma operacin mediante Alta de clientes para todos los
clientes. En el caso de que la empresa tenga muchos productos y muchos
clientes, la carga inicial ser muy costosa.
Generalmente todos estos datos maestros (clientes, materiales, proveedores,...
) ya se encuentran almacenados en el antiguo sistema informtico. Por lo tanto
lo ideal ser disponer de un mecanismo que permitiese trasladar los datos de
un sistema a otro de forma eficaz.
A la hora de la migracin de datos de un sistema externo a SAP, existen dos
posibilidades:
1

Realizar programas que llenen todas las bases de datos SAP


involucradas,
mediante
instrucciones
directas
de
SAP-SQL
(insercin/modificacin directa de las tablas de las bases de datos).
Utilizar la tcnica del Batch Input de SAP.

Para muchas transacciones, la primera de las opciones es inviable,


debido a la complejidad de la estructura de datos SAP y la dificultad dea
mantener la integridad de la misma, ya que sera necesario utilizar una
elevada cantidad de validaciones sobre los datos de entrada. Como
consecuencia, tanto el coste en diseo, codificacin y pruebas sera
altsimo.

En cambio, mediante la tcnica de los Batch Input de SAP se realizan todas las
verificaciones automticamente, con un coste en diseo y desarrollo mnimos.
En este captulo se explica cmo utilizar la tcnica de los Batch Input.

16.2 Batch input .


El Batch input es un proceso que se lanza en fondo ( sin la presencia de un
usuario) y que realiza tareas costosas y largas como por ejemplo leer los datos
de un fichero e introducirlos en una tabla. Consiste en simular las
transacciones, todas las pantallas, pasos teclas a pulsar y dems acciones que
se debern realizar para cumplir una tarea.
Todo se almacena en el juego de datos.

Los pasos a la hora de crear el juego de datos son:

Abrir el juego de datos.


Llenar la tabla BDCDATA.
Llamar a la transaccin.
Cerrar el juego de datos.

Estos tres pasos suelen estar almacenados en FORMS para que su uso sea
mas sencillo.

16.2.1 Generar Juego de datos.


SAP incorpora una herramienta que genera el juego de datos de forma
auotmatica sin tener que anotar una por una las pantallas por las que se
quiere pasar.Se accede a herramienta desde el men o llamando a la
transaccin.

Servicios-> Batch Input->Grabadora.

Transaccin. SHDB.

Fig Transaccion SHDB

Para crear un juego nuevo de datos pulsamos sobre Grabacion nueva,

Indicamos nombre para la grabacin y la transaccin que se quiere llamar,


pulsar el botn iniciar grabacin y simular la accin deseada para la
transaccin.

No siempre los juegos de datos son para ser utilizados desde los programas,
pueden ser lanzados directamente. Para ello acceder a la transaccin SM35.
Aparecera una lista con todos los juegos de datos creados en el sistema.

Fig Transaccion SM35 . Resumen juego de datos Batch input.

Para lanzar el proceso de batch input hay que marcar el juego de datos y
pulsar en ejecutar.

Apararecera una pantalla para elegir el modo de

procesamiento y otras funciones

Fig- Ejecutar juego de datos Batch Input

Una vez ejecutado el proceso podemos ver el resultado y analizar los errores
en la misma transaccion SM35 mediante el log de errores .
Una sesin de Batch Input puede encontrarse en uno de los siguientes
estados:

A procesar: Si la sesin todava no ha sido procesada.

Procesada: Si las transacciones que componen la sesin han sido


ejecutadas ntegramente sin errores.

Errnea: Si en la sesin an quedan transacciones que no se han


procesado correctamente.
Cuando una sesin est en estado
incorrecto, no quiere decir que las transacciones que contena no hayan
sido procesadas, sino que algunas se han procesado y otras no. Estas
transacciones errneas podrsn ser reprocesadas ms adelante, es
decir nunca se pierde una transaccin a no ser que explcitamente la
sesin sea borrada.

Siendo creada: Si hay un programa Batch Input que est generando


una sesin en ese momento.

En proceso: Si se est procesado en ese instante la transaccin.

Fondo: Si se ha lanzado la sesin para que se procese pero todava no


ha comenzado a ejecutarse por falta de recursos del sistema.

16.2.2 Abrir el juego de datos.


Para abrir el juego de datos vamos a utilizar una funcin de diccionario
BDC_OPEN_GROUP, indicndole el nombre de juego de datos, el usuario y el
mandante. Se puede crear un form con un parmetro de entrada que ser el
nombre del juego de datos que se desea crear.

FORM ABRIR_JUEGO USING p_juego


CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
Client

= SY-MANDT

Group

= p_juego

User

= SY-UNAME

Keep

= X

EXCEPTIONS
ENDFORM.

16.2.3 Llenar la tabla BDCDATA


Para indicar las pantallas por las que se va a pasar y que datos hay que
rellenar en cada uno de los campos, hay que informar la tabla interna llamada
I_BDCDATA que estar declarada con la misma estructura que la tabla
BDCDATA del diccionario de datos.

Se puede crear un form con tres parmetros p_name p_value y p_dynbegin. El


primero de ellos indica si es una pantalla nueva, en cuyo caso vendr con el
valor X. Los otros dos paramentros dependen de este.

Si se esta en una pantalla nueva p_name nos indicara el programa y


p_value el numero de pantalla.

Si no es una pantalla nueva p_name indica el campo donde hay que


indicar un dato y p_value su valor.

Ejemplo:

Transaccin: FSSI
Programa: SAPMF02H
Dynpro : 0102

Ejemplo:

Rellenar campo RF02H-SAKNR con variable VAR_CTA.


Rellenar campo RF02H-BUKRS con variable VAR_SOC.

FORM CREAR_TABLA USING p_dynbegin p_name p_value.


CLEAR i_bdcdata.

IF p_dynbegin = X.
i_bdcdata-program = SAPMF02H.
i_bdcdata-dynpro - DYNPRO = 0102.
i_bdcdata-dynbegin = X.
ELSE.
i_bdcdata-fnam

= RF02H-SAKNR

i_bdcdata-fval

= VAR_CTA.

ENDIF.
APPEND i_bdcdata

Si es necesario proveer de una tecla de funcin a la pantalla, se utilizar el


campo BDC_OKCODE. El valor del campo ser el nmero de la tecla de
funcin precedido por una barra inclinada.
.

Ejemplo:
CLEAR i_bdcdata.
i_bdcdata-fnam

= BDC_OKCODE.

i_bdcdata-fval

= /13.

F13= Grabar

APPEND i_bdcdata.

Si se necesita colocar el cursor en un campo en particular, se utilizar el campo


BDC_CURSOR. El valor del campo ser el nombre del campo sobre el cual se
desee situarse.

Ejemplo:
CLEAR i_bdcdata..
i_bdcdata-fnam
i_bdcdata-fval

= BDC_CURSOR.
= RF02H-BUKRS

APPEND i_bdcdata.

16.2.4 Llamar a la transaccin.


Para llamar a la transaccin, se utiliza la funcin BDC_INSERT. Se puede
crear un form que reciba el parmetro D_CODE que indique el cdigo de la
transaccin a ejecutar.

FORM INSERTAR USING VALUE (D_CODE).


CALL FUNCTION BDC_INSERT
EXPORTING
TCODE = D_CODE
TABLES
DYNPROTAB = I_TAB_BDC
EXCEPTIONS.
ENDFORM

16.2.5 Cerrar juego de datos.


Para cerrar juego de datos creado, hay que llamar a la transaccin
BDC_CLOSE_GROUP. Se puede crear un form con el siguiente cdigo.
FORM CERRAR.
CALL FUNCTION BDC_CLOSE_GROUP
EXCEPTIONS
NOT OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
ENDFORM.

16.2.6 Call transaction.


El call transaction sirve para llamar a una transaccin desde un punto del
programa. Al finalizar esta, se retornara a la siguiente lnea desde el programa
que le llamo.
El programa que llama la transaccin puede enviar datos para que esta se
ejecute, al igual que en un batch input. La principal diferencia entre un batch
input y un call transaction es que el primero genera un juego de datos y el
segundo no.
Ademas la ejecucin de las transacciones es inmediata en el CALL
TRANSACTION es decir la ejecucin de las transacciones y es controlada
mediante un programa ABAP y no posteriormente desde la transaccin SM35,
lo cual puede resultar interesante en determinadas ocasiones.

Para llamar a un CALL TRANSACTIONse utiliza la siguiente sentencia:

CALL TRANSACTION tcod


[AND SKIP FIRST SCREEN]

-> Se salta la pantalla de seleccin

[USING itab] -> Tabla interna para datos de otras pantallas en formato BI
[OPTIONS FROM opt]
[MODE mode]

-> opciones de control de ejecucion

-> Modo de ejecucin visible o invisible

[UPDATE f] -> Modo de actualizacin sncrona o asncrona.


[MESSAGES INTO itab] ->mensajes que devuelve tras la ejecucin.

La opcin MODE sirve para indicar que el call transaction se realicen visible o
en invisible. Si se indica el modo A ser visible y si se indica el modo N se
ejecutara en invisible y si es una E solo se mostraran los errores.

La opcin UPDATE sirve para indicar el modo de actualizacin: A indica una


actualizacin asncrona, S una sncrona y L una actualizacin local.

17 PROGRAMAS DE CARGA
DIRECTA
El manejo de ficheros en SAP es distinto para ficheros que se encuentran en el
PC que para ficheros que se encuentran en el servidor.

17.1 Ficheros del PC


La informacin que se encuentra en un fichero del PC en forma de tabla
se puede subir a un programa llamando al mtodo de una clase.
cl_gui_frontend_services=>gui_upload
parmetros.

Filename:
Filetype:
Data_tab:

indicndole

los

siguientes

ruta y nombre del fichero


tipo del fichero ASC o DAT
tabla interna de tipo estndar para guardar los datos.

Para bajar informacin de una tabla interna del programa de un fichero se


puede utilizar el mtodo cl_gui_frontend_services=>gui_download indicndole
los siguientes parmetros.

Filename:
Filetype:
Data_tab:

ruta y nombre del fichero


tipo del fichero ASC o DAT
tabla interna de tipo estndar para guardar los datos.

El fichero generado ser separado por tabulacin (.txt)

17.2 Ficheros del Servidor


Para trabajar con un fichero que esta en el servidor, primero hay que abrirlo con
la sentencia, se leen los datos y por ultimo se cierra el fichero:

OPEN DATASET <path_fichero>.


FOR OUTPUT / (INPUT) /

Escritura / Lectura (por


defecto).

IN BINARY MODE / IN TEXT MODE


Si SY-SUBRC = 0
SY-SUBRC = 8

Binario (por defecto) / Texto.

Fichero abierto correctamente.


Fichero no se ha podido abrir.

Las opciones de apertura tienen el siguiente significado:

FOR INPUT. Apertura de lectura


FOR OUTPUT. Apertura de escriturta. Borra el contenido del fichero y
escribe nuevos registros unos seguidos de otros.
FOR APPENDING. Apertura de escritura pero sin borrar el contenido,
sino que aade los registros al final.
IN BINARY MODE se usa cuando el contenido del fichero no esta
estructurado en lneas.
IN TEXT MODE para transferir lnea a lnea del registro.

Para cerrar un fichero se utiliza la instruccin CLOSE.


CLOSE DATASET <path_fichero>.

Si se desean leer datos de un fichero se utilizar READ.


READ DATASET <path_fichero> INTO <registro>
(LENGTH <long>)

Guarda en <long> la longitud


del registro ledo

.
Ejemplo: Lectura de un fichero
DATA: BEGIN OF REC,
LIFNR LIKE LFA1-LIFNR,
BAHNS LIKE LFA1-BAHNS,
END OF REC.
OPEN DATASET /usr/test.
DO
READ DATASET /usr/test INTO REC.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
WRITE: / REC-LIFNR, REC-BAHNS.
ENDDO
CLOSE DATASET /usr/test.
Notas:
1. Se puede leer de hasta 4 ficheros simultaneamente.
2. Si SY-SUBRC = 0
Fichero ledo correctamente.
3. SY-SUBRC = 4
Fin de fichero encontrado.

Para escribir sobre un fichero se dispone de la instruccin TRANSFER.


TRANSFER <registro> TO <fichero>
(LENGTH <long>) Transfiere la longitud especificada
en la variable <long>.

Por defecto la transferencia se realiza sobre un fichero secuencial (texto) a no


ser que el fichero sea abierto en formato binario.
En el caso de que el fichero no se encuentre todava abierto, la instruccin
TRANSFER lo intentar en modo binario y escritura.

Nota: Este tratamiento es vlido solo sobre ficheros UNIX: es necesario


distinguir la declaracin de ficheros UNIX como de DOS y otros.

Los ficheros UNIX se identifican por:


1. file(30) default /tmp/TELXX. Su tratamiento es anlogo a la utilizacin
de sentencias anteriores: open dataset, read dataset, transfer.
A diferencia de los no exclusivos de UNIX.

2. File(30) default c:\prueba\prueba02.txt, su tratamiento se realiza


mediante llamadas a funciones ( mdulos de funcin ), como por
ejemplo: UPLOAD y DOWNLOAD. (Normalmente WS_UPLOAD y
WS_DOWNLOAD).

18 TECNICAS DE REPORTING
18.1 Introduccin al reporting interactivo.
En el Reporting Interactivo se aprovecha la tecnologa SAP para ofrecer
informes que van detallando la informacin bajo la interaccin del usuario, es
decir, se realizan listados generales que se visualizan por pantalla y mediante
teclas de funcin o seleccionando teclas de pantalla, se desarrolla aquella
informacin que va siendo solicitada por el usuario.

En contraposicin con el reporting clsico, que es asociado con procesos de


entornos Batch (fondo), el reporting interactivo es un desarrollo que adopta
todas las ventajas del entorno on-line.

Un ejemplo de listado interactivo podra ser una lista de clientes, que permita
visualizar sus datos de direccin, datos bancarios, partidas... etc. en pantallas
diferentes, que van apareciendo a medida que vaya siendo seleccionado un
cliente y/o se solicita una funcin.

Existen dos tipos de salida distintos

1.

ALVs (Abap List Viewer). Listados con una presentacin mas


amigables que la que tienen los que se hacen mediante la sentencia
WRITE.

2.

Listados Interacivos. Son listados normales hechos con la


sentencia write, pero con la caracterstica de que son navegables.

Fig. imagen de un ALV simple.

Hay tres tipos de Alvs en funcin de su presentacin y para cada tipo de alv
utilizaremos una clase predefinida en sap:
-

Lista Simple.
-> cl_salv_table
Lista Jerarquica secuencial. -> cl_salv_hierseq_table
Lista forma de arbol.
-> cl_salv_tree

Fig- Tipos de ALV

18.1.1. ALVs Orientados a Objetos.


El ALV Grid Control, es una herramienta que permite la visualizacin de listados
por pantalla. Est basada en programacin orientada a objetos.
La utilizacin de esta herramienta ofrece funciones estndar tales como
ordenacin

de

columnas,

aadir

columnas,

totalizaciones,

extraer

la

informacin a fichero como por ejemplo excel. Adems de permitirnos el


desarrollo de otras funcionalidades propias.

La clase que encapsula la funcionalidad del ALV GRID es cl_gui_alv_grid.

Para que una lista pueda mostrarse por el ALV GRID control necesitamos
definir unos componentes bsicos:

CONTENEDOR: El contenedor de datos es en el que se visualizar el


listado, y podremos definirnos un men a medida, con las
funcionalidades que deseemos, adems de aquellas que por defecto nos
ofrecer SAP.

DATOS: los datos estarn almacenados en una tabla interna esta tabla
la pasaremos como parmetro de entrada al ALV GRID.
La tabla interna debe de ser plana.

CATALAGO: tabla interna para definer y especicar los campos que se


visualizaran en el ALV esta tabla interna se denomina field catalog y
debe ser del tipo de diccionario LVC_T_FCAT. El catalogo contiene
informacion tecnica adicional ademas de las opciones de visualizacion
de cada campo.

Nota: utilizar este mtodo CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'


nos devolver el catalogo de la estrutura que le pasemos en el parmetro de
entrada

LAYOUT: estructura que contiene las opciones de visualizacin del


layout del ALV GRID, podemos utilizar las opciones por defecto o
podemos customizarlas. Tiene que ser del tipo de diccionario
LVC_S_LAYOUT.
MANEJADOR DE EVENTOS: Deberemos definir e implementar una
clase manejadora de eventos si queremos lanzar eventos del ALV GRID.

DATOS ADICIONALES: Para tener alguna mejora del ALV, podemos


pasar datos adicionales como parmetros por ejemplo un criterio de
orden inicial,botones que deben estar desactivados etc.

Ejemplo: REPORT ZALV_CSC

Paso 1. Nos creamos un report con una dynpro por ejemplo 100.
Paso 2. en el Layout de la dynpro dibujamos un contendor.
CONTAINER1.

Paso 3. Populamos tabla interna con los datos a mostrar por el ALV
y llamo a la dynpro donde mostrare los datos .

18 REPORTING INTERACTIVO

* DEFINICION DE VARIBLES LOCALES


DATA: lt_SFLIGHT TYPE TABLE OF SFLIGHT,
ls_SFLIGHT TYPE SFLIGHT.

* seleccion de los datos


SELECT * FROM SFLIGHT INTO TABLE lT_SFLIGHT.
CALL SCREEN 100.

Paso 4. Creacion del Contendor.


Paso 5. Creacion del ALV GRID

* DEFINICION DE VARIBLES GLOBALES


DATA:

go_container TYPE REF TO cl_gui_custom_container,


go_grid TYPE REF TO cl_gui_alv_grid.

* CREACION DEL CONTENEDOR


IF

go_container IS INITIAL.
CREATE

OBJECT go_container

EXPORTING

container_name

= 'CONTAINER1'

EXCEPTIONS

cntl_error

= 1

cntl_system_error

= 2

create_error

= 3

lifetime_error

= 4

lifetime_dynpro_dynpro_link = 5
OTHERS
ENDIF.

* CREACION DEL CONTROLADOR ALV GRID


CREATE

OBJECT go_alvgrid

EXPORTING

= 6.

iparent

go_container
EXCEPTIONS

error_cntl_create = 1

OTHERS

error_cntl_init

= 2

error_cntl_link

= 3

error_dp_create

= 4

= 5.

Paso 6. Creacion del Catalago. y con los campos que necistemos.

* DEFINICION DE VARIBLES LOCALES

ls_fieldcat TYPE lvc_s_fcat,


lt_fieldcat TYPE lvc_t_fcat.

* CREACION DEL CATALGO


clear

ls_fieldcat.

ls_fieldcat-fieldname

= 'MANDT'.

ls_fieldcat-no_out = 'X'.
APPEND

ls_fieldcat TO lt_fieldcat.

clear

ls_fieldcat.

ls_fieldcat-fieldname

= 'CURRENCY'.

ls_fieldcat-col_pos = 2.
ls_fieldcat-scrtext_l = 'moneda'.
APPEND

ls_fieldcat TO lt_fieldcat.

Paso 7. Creacion del Layout.

* DEFINICION DE VARIBLES LOCALES

ls_layout TYPE lvc_s_layo.

CREACION DEL LAYOUT

ls_layout-smalltitle = 'X'.
ls_layout-no_rowmark = ' '.
ls_layout-cwidth_opt = 'X'.
ls_layout-zebra
ls_layout-sel_mode

= 'X'.

= 'D'.

Paso 8. Display ALV.


* DISPLAY ALV.
CALL METHOD go_alvgrid->set_table_for_first_display
EXPORTING
is_layout
= ls_layout
CHANGING
it_outtab
= lt_sflight
it_fieldcatalog
= lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4.
IF sy-subrc IS NOT INITIAL.
MESSAGE text-e05 TYPE 'S' DISPLAY LIKE 'E'.
LEAVE TO LIST-PROCESSING.
ENDIF. "Insert correct name for <...>.

18.1.2. Listados Interactivos.


Son listados normales, hechos con la sentencia Write pero con la caracterstica
de que son navegables, es decir al hacer doble click sobre una liena se puede
navegar hacia otra pantalla o listado.
Para controlar el flujo del listado interactivo, existen una serie de eventos, tales
como:

AT LINE-SELECTION si lo que se selecciona es una lnea,

AT PFn

AT USER-COMMAND (si se pulsa una tecla).

Un listado interacivo puede tener como mximo 19 listados secundarios. Si el


usuario selecciona la funcin BACK el sistema vuelve al listado anterior.
ABAP numera los listados a medida que se van generando, empezando desde
0.
El nmero del listado en proceso estar en la variable del sistema SY-LSIND.

En el listado bsico se pueden visualizar cabeceras con TOP-OF-PAGE o con


la cabecera estndar, pero en los listados de ramificacin no es posible utilizar
cabeceras estndar; se utiliza el evento TOP-OF-PAGE DURING LINESELECTION.

1)

LA

INTERACCIN CON EL USUARIO.

El usuario tiene dos formas de interactuar con el sistema:


- Seleccionando una lnea del listado (con doble-click) o
utilizando la funcin seleccionar para controlar la entrada del
usuario se utiliza el evento de ABAP AT LINE-SELECTION. En
el momento que el usuario selecciona una lnea, el contenido
de sta se almacenar en la variable del sistema SY-LISEL

Seleccionando una funcin, pulsando su botn


correspondiente o una tecla de funcin. Para controlar la
entrada del usuario se utiliza el evento de ABAP, AT USERCOMMAND. El cdigo de la funcin solicitada se puede
obtener con la variable SY-UCOMM.

Ejemplo : Listado Interactivo

Report ZLISTADO_CSC

* Definicion de variables locales


DATA: ls_mara TYPE mara,
lt_mara TYPE TABLE OF mara.
* Inicializacion del programa
INITIALIZATION.
CLEAR lt_mara.
REFRESH lt_mara.
* Comienzo pantalla seleccion
START-OF-SELECTION.
* Populamos con datos la tabla interna
SELECT * FROM mara INTO TABLE lt_mara.
END-OF-SELECTION.
* mostramos el listado
LOOP AT lt_mara INTO ls_mara.
WRITE:/ ls_mara-matnr.
WRITE:ls_mara-ernam.
WRITE:ls_mara-mtart.
ENDLOOP.
AT LINE-SELECTION.
*

Si se hace docle clik sobre la linea


READ TABLE lt_mara INDEX sy-lilli into ls_mara.
IF sy-subrc EQ 0.

lo que queramos mostrar


ENDIF.

19 PROGRAMACION DE DIALOGO
19.1 Introduccion
Las Dynpro (tambin conocidas como una pantalla) estn formadas por la
pantalla y la lgica de proceso de la pantalla.
Las dynpros normales se crean utilizando la herramienta Screen Painter,
Tenemos tres tipos distintas de Dynpros :

Normal

Subscreen

Modal : pantalla emergente que se llama con la sentencia CALL


SCREEN XXX STARTING AT ENDING AT.

Pueden crearse Dynpros en un programa ejecutable, o en un grupo de


funciones.
Las Dynpros pueden combinarse para formar secuencias de Dynpros y
navegar de unas pantallas a otras. Podemos llamar a la Dynpros mediante un
cdigo de transaccin si llamamos desde fuera del programa o bien mediante
instrucciones ABAP CALL SCREEN si llamamos desde dentro de un
programa.

19.2 Logica de proceso.


La lgica de Proceso de pantalla llama a modulos de dialogo en el programa
ABAp, ya sea para preparar las pantallas de visualizacin (PBO) o para
procesar las entradas del usuario (PAI) .
La lgica de proceso esta fundamentalmente dividida en dos bloques:

Proccess Before Output. (PBO) Proceso que se llama antes de


mostrar los datos en pantalla. En este apartado se incluyen la
inicializacion de campos, valores por defecto situar el cursor en algn
punto derterminado de la pantalla, mostrar u ocultar campos, modificar
atributos de un campo o establecer botones para las acciones de
usuario.

Process After Input. (PAI) Proceso que se realiza despus de ejecutar


alguna accin en la pantalla. Se ejecuta despus del PBO. En esta
parte se realizan las validaciones de los campos de salida y se procesan
las entradas correctas e incorrectas.
Ademas se incluye un bloque de salida por si el usuario desea abandona
el programa y no procese ningn otro modulo. La llamada de salida se
hace mediante la siguiente instruccin: MODULE EXIT at EXITCOMMAND.
Fig - Flujo de proceso de dos Dynpros.
Screen 1

Screen 2

Ademas tambin existen otros dos procesos que se ejecutaran unicamente


cuando pulsemos la ayuda de un campo de la pantalla F4 o cuando pulsemos
a la ayuda de programa F1.

Process On Value-Request. Proceso que se ejecuta cuando un usuario


pulsa a la ayuda F4 sobre un campo de la pantalla .

Process On Help Request. Proceso que se ejecuta cuando el usuario


pulsa sobre la ayuda de programa F1.

EJEMPLO : De la lgica de proceso de una DYNPRO.


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE inicializar.
MODULE ocultar_campos.
MODULE set_cursor.
PROCESS AFTER INPUT.
MODULE user_command.
MODULE get_cursor.
FIELD: v_campo MODULE validar_campo

19.2.1

Llamar a los mdulos de dilogo ABAP

Se uitilizara la instuccion ABAP para definir un modulo de dialogo PBO o PAI.


MODULE name_module
.
ENDMODULE.
Por tanto, un mdulo de dilogo del programa ABAP se puede llamar desde
diferentes pantallas. De esta manera las funciones requeridas en carias
pantallas solo necesitan ser programadas una vez y si fuese necesario
distinguir entre los nmeros de pantalla en un mdulo de dilogo, puede utilizar
el campo de sistema SY-DYNNR , que siempre contiene el nmero de la
pantalla actual.

NOTA: Cada apartado se agrupa en MODULES, se pueden crear includes para


agrupar los modules o bien en el programa principal.

19.3Creacion de DYNPRO .
Podemos crear pantallas desde la transaccin SE51, donde indicamos el
programa y el numero

de pantalla. Tambien desde el propio programa

podemos crear una dynpro si pulsamos en Crear->Dynpro y le indicamos el


numero.

Indicamos el numero de dynpro 100

Indicamos el tipo de Dynpro ( Normal)

Podemos indicar una serie de atributos que pueden ser de inters:


- la posicin del cursor en la dynpro

-El tamao de la ventana asi como el numero de las lneas.

Ademas Cuando Creamos una dynpro aparecen tres pestaas:

Atributos. Indicacin breve del tipo de pantalla y tamao asi como su


descripccion.

Lista de Elementos: Contendra todos los elementos que se dibujen en


la pantalla asi como sus atributos y propiedades

Logica de Proceso. Contendra la estructura de la lgica de proceso del


programa.

19.3.1

Screen painter.
Es la herramienta de sap que permite dibujar pantallas mas
amigables que las pantallas de seleccin
Nos permite disear la apariencia de la pantalla, diseando el layout
nos permite crear cada elemento de la pantalla y definir sus atributos
y definir sus eventos.
Podemos acceder a ella pinchando sobre el layout de la DYNPRO.
Screen painter

Fig- Imagen Screen Painter.


Lista de elementos

Atributos de un elemento
Podemos dibujar en la pantalla cualquier elemento de la lista haciendo Click
sobre el y situndolo sobre la zona que queremos dibujar y darle el tamao
desado.

Cuando coloquemos un elemento en la pantalla se pondrn de color rosa


aquellos datos que hay que informar obligatoriamente.

Si se hace doble clik sobre el elemento Dibujado aparecera la ventana con


todos sus atributos y propiedades. En funcion del tipo de elemento estaran
habilidatos unos campos u otros.

En vez de escoger un elemento de la lista de elementos tambien podemos


traernos del diccionario de datos o de las declaraciones del programa
pulsando sobre el icono

y nos aparecera la siguiente ventana.

Hay que indicar el campo en la parte superior y pulsar el boton traer del
diccionara o traer del programa, sera necesario que el programa este activado.

19.4Menu Painter
El Men Painter es una herramienta de SAP para personalizar los menus de
las transacciones y los botones en cada pantalla. Se accede desde la
transaccin SE41 o bien haciendo docle click el el module PBO STATUS de
una dynpro.
Nota: Al conjunto de botones y menus se le denomina STATUS.

19.4.1

Creacion de un STATUS

El primer paso para crear un status es indicar el nombre que debe existir
previamente, y el numero de pantalla y pulsar al botn crear.

A continuacion dar una breve descripcion y continuar.

La siguiente Pantalla aparecera dividida en tres partes:


- Barra de menu, Barra de pulsadores y teclas de funcion

19.4.2

Barra de men

La barra de men es donde se inidica el men de status que aparecer en la


aplicacin. Para poder introducir los nombres de los menus que pulsar
hacemos click sobre el icono
Escribir el nombre del menu. Al hacer doble click aparecera una tabla para
inidicar las entradas:

En la columna cdigo hay que indicar un cdigo para la entrada y el texto que
tiene que aparecer en pantalla. Por ejemplo BUSC Buscar.
El siguiente paso es asignar una tecla de funcin al botn haciendo doble click
sobre el cdigo.

No todas las opciones estn disponibles, ya que se reservan cdigos como el


F1 para las ayudas o el F4 para los matchcode.

Hay codigos que suele ser comunes en el resto de transacciones SAp como
son F8 para ejecutar, F2 o F5 para crear, F6 para modificar y F7 para visualizar.
Es conveniente utilizarlos para las mismas acciones, si el programa creado las
contempla.

19.4.3

Barra de pulsadores.

En la barra de pulsadores se definen los botones que se mostraran en la barra


de aplicacion.

Hay que introducir un cdigo y pulsar enter. Aparecera la siguiente ventana de


dialogo.

Fig Barra de pulsadores y popup con botn cancel.

Indicaremos la opcin de texto estatico y pulsar continuar.En la siguiente


pantalla hay que indicar el texto descriptivo para esta funcin y el texto de
informacin que aparecer al pasar el raton por encima del botn.
Opcionalmente se puede asignar un icono al botn y un texto que se podr
escoger del matchcode.

19.4.4

Teclas de funcin.

En este apartado se encuentran todas las teclas de funcin que tienen


asociado un botn o un men. En la parte superior se indican todos los botones
que hay en cualquier pantalla estndar de SAP: grabar, atrs, cancelar, salir,
imprimir Estan definidos por defecto, solo falta darles un cdigo para que se
habiliten (SAVE,BACK,CANC,LEAVE,..).

Si se quiere asignar un cdigo de funcin a las entradas de men, hay que


indicar los cdigos utiliados en el apartado barra men y la misma descripcin.
Para guardar el okcode (SY_UCOMM), se suelen utilizar dos variables, una
principal que se indica en la pestaa lista de elementos y otra que se guarda en
el module del user-command.

Ambas variable deben estar declaradas en el TOP.


TOP ( include con la declaracion de las variables globales de un programa)
Ejemplo:

* Declaraciones en el TOP
DATA: gv_okcode

TYPE sy-ucomm,

gv_save_okcode TYPE sy-ucomm.


* MODULE USER COMMAND

PAI
MODULE

user_command INPUT.

gv_save_okcode.

CLEAR

gv_save_okcode = gv_okcode.
gv_okcode.

CLEAR

CASE

gv_save_okcode.
*

...

ENDCASE.
ENDMODULE.

19.4.5

Codigos de Funcion

Todos los cdigos de funcin que se pulse y que tengan como resultado alguna
accin en el programa ( por ejemplo: BUSCA) se indicara en el campo
de la ventana de propiedades de campo.

19.4.1.1 Tipos de funcin


Una vez definido el cdigo de funcin en la barra de pulsadores se puede
inidcar que tipo de funcin es la que se le ha asignado. Haciendo doble click
sobre el cdigo, aparecer la siguiente ventana:

Fig Atributos de cdigos de Funcion

Los tipos de Funcion existentes son :


E Comando Exit ( MODULE xxx at EXIT-COMMAND)
S Funcion de sistema
T Llamada de transaccion
Funcion normal de Aplicacin
P Funcion GUI local
H Funcion interna.

19.5Modificacion dinamica del status


En el desarrollo del programa se puede controlar que botones se quieren
mostrar en la barra de status, ya que no hay porque mostrar todos los botones
definidos.

Ejemplo:
* Esto estara metido dentro del module status_0100 output

del PBO

MODULE status_0100 OUTPUT.


TYPES: BEGIN OF

ty_excluir.
codigo type sy-ucomm.

TYPES: END OF ty_excluir.


DATA: ls_excluir TYPE ty-excluir.
ls_excluir-codigo = SAVE.
APPEND ls_excluir.
SET PF-STATUS '0100' excluding ls_excluir.
ENDMODULE.

19.6Modificacion dinmica de atributos


Ciertos atributos de los elementos de la pantalla se pueden modificar durante la
ejecucin del programa. Esto se puede realizar desde un modulo del PBO que
se encargue de recorrer la pantalla y establecer los nuevos valores,
Para realizar estos cambios existe una estructura SCREEN, formada por los
siguientes campos

Tab Campos de la estructura SCREEN.


NOMBRE

TIPO

LONG

DESCRIPCION

Name

132

Nombre campo pantalla

Group1

Nombre grupo 1

Group 2

Nombre grupo 2

Group 3

Nombre grupo 3

Group 4

Nombre grupo 4

Required

Campo obligatorio

Input

Campo de entrada

Output

Campo de salida

intensified

Campo resaltado

iInvisible

Campo oculto

Ejemplo: ocultamos un campo en funcin de un elemento de la dynpro


Para ello programamos el modulo ocultar campos del PBO

MODULE ocultar_campos OUTPUT.


LOOP AT SCREEN.
IF screen-name = 'V_CAMPO'.
" deshabilitamos campo para escritura entrada de datos no permitida
screen-input = '0'.
ELSEIF screen-name = 'V_CAMPO2'.
screen-input = '1'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.

Nota: si un campo tiene deshabilitada la escritura como atributo inicial, durante


la ejecucin del programa no se podr habilitar.

Eventos: CHAIN ENDCHAIN

19.6.1

Se pueden incluir en el PAI y sirven para ejecutar determinado modulos


solamente cuando se producen cambios en determinados campos con los que
estn relacionados.

Ejemplos:
CHAIN.
FIELD: gv_campo MODULE validar_campo.
" llama a validar en cuanto se cambia la entrada el valor de entra
de datos

FIELD: gv_campo MODULE validar ON CHAIN-INPUT .


ENDCHAIN.

19. 6.2 Dynpros con pestaas.


Las pantallas se pueden agrupar en una misma dynpro incluyndolas en un
marco llamado tabstrip. Para crear este marco pulsar sobre el elemento .
de la barra de botones y situarlo en la zona del layout que queramos.
Aparecera lo siguiente:

La informacion necesaria para cada pestaa es:

El nombre

La descripcin que va a aparecer en pantalla

El cdigo de funcin asociado

El campo de referencia, es decir, la subscreen que contiene.

Tambin hay que darle nombre al Tabstrip e indicarle el numero de pestaas


que va a contener. Ademas hay que declararlo con la siguiente sentencia:
CONTROLS <nombre> TYPE tabstrip.

Una vez que esta definido el marco hay que definir las pantallas que contiene
cada pestaa, es decir a que subscreens van a hacer referencia. Para ello con
el botn

dibujamos una subscreen area por cada pestaa. Tomaran

automaticamente el nombre que se haya indicado en la pestaa.


En la logica de programa hay que indicar lo siguiente por cada pestaa:

PBO: CALL SUBSCREEN <nombre_area>


Including nom_programa

PAI: CALL SUBSCREEN <nombre_area>.

Por otra parte hay que crear cada una de las pantallas que se mostraran en las
pestaas.Estas pantallas ser de tipo subscreen, lo cual hay que indicarlo en la
pestaa de atributos, donde se indica el tipo de dynpro, marcar el radio button
subscreen.
En el user command de la pantalla con el marco, hay que indicar que pestaa
se va a activar en cada momento usando el campo ACTIVETAB del tabstrip.
Ejemplo: declaramos en function del codigo de la pestaa cual esta activa. PAI
MODULE user_command INPUT.
CASE gv_okcode.
WHEN 'CLIENT'.
pestanas-activetab = 'CLIENT'.
WHEN 'MAT'.
pestanas-activetab = 'MAT'.
ENDCASE.
ENDMODULE.

Hay que tener en cuenta que el status solamente se podr indicar en la pantalla
padre, la que tiene las llamadas a la subscreens.
Al crear la transaccin para este programa, se debe crear para la pantalla que
tiene el marco de las pestaas.

19.6.3

Table controls

La table control son tablas que sirven para mostrar en una dynpro la
informacin recogida por una tabla interna del programa.

Para crear un table control, escogemos el siguiente botn de la lista de


elementos

y dibujamos en el layout . Hay que darle un nombre y definir sus

propiedades: nombre,separacion entre filas y columnas, su queremos poner


cabecera.
Para inidicar las columnas que debe llevar pulsar sobre el boton

y escoger

los campos de la tabla interna del programa o del diccionario de datos.


Para dar nombre a las columnas hay que arrastrar hasta la cabacera de la tabla
un campo de texto.
En el programa el table control tiene que ser declarado con la siguiente
sentencia:
CONTROLS: <tc_nombre> TYPE tableview USING SCREEN <n dynpro>.
El nombre del table control de la dynpro y del programa debe ser el mismo.
Para que el contenido de la tabla interna se refleje en la pantalla y viceversa.
MODULE tablecontrol_init OUTPUT.
IF Lt_user IS INITIAL.
SELECT * FROM zuserinfo
INTO CORRESPONDING FIELDS
OF TABLE lt_user.
REFRESH CONTROL 'TC_NAME' FROM SCREEN '0100'.
ENDIF.
ENDMODULE.

19.6.4. Uso del Cursor.


Para tener el control del cursor y poscionar el campo deseado en cada
momento, existen las sentencias GET CURSOR y SET CURSOR que se
poenen como se indica a continuacion.
Ejemplo: Logica del proceso para el uso de cursor.
data: gv_cursor type screen-name,
gv_linea type sy-lilli.

PROCESS BEFORE OUTPUT.

MODULE set_cursor. " ultima sentencia del PBO


PROCESS AFTER INPUT.
MODULE get_cursor. " primera sentencia del PAI

MODULE set_cursor OUTPUT. Definicion del modulo set cursor


SET CURSOR FIELD gv_cursor LINE gv_linea.
ENDMODULE.
MODULE get_cursor INPUT.
GET CURSOR FIELD gv_cursor LINE gv_linea.
ENDMODULE.

19.6.4

Secuencias de Pantallas.

Para llamar a una pantalla desde un programa, se pueden usar las siguiente
sentencias:
SET SCREEN <n dynpro>
CALL SCREEN <n dynpro>
CALL SCREEN <n dynpro> STARTING AT <x1><y1> ENDING AT
<x2><y2>.
LEAVE SCREEN <n dynpro>.
Para abandoner una pantalla se usa la sentencia LEAVE SCREEN. Si lo que se
quiere es abandonar el programa se indicara LEAVE PROGRAM.

Vous aimerez peut-être aussi