Está en la página 1de 140

Curso

ABAP/4
Indce
CURSO ABAP/4
Parte I.- Introduccin a SAP R/3
1- Introduccin a SAP R/3
Qu es SAP R/3?
Componentes de SAP R/3
Aplicaciones Funcionales
Sistema Bsico
Sistema Operativo
!" Caractersticas de SAP R/3
Sistema Cliente"Servidor
#ecnolo$%a de Sistemas A&iertos
'nte$raci(n de Aplicaciones
)ntorno de desarrollo
*erramientas para la con+i$uraci(n del sistema
Servicio de Soporte, Formaci(n, consultor%a e implantaci(n - OSS .
)uro / A0o 111
3!" Entorno de Desarrollo ABAP/4
Pro$ramaci(n
2ave$aci(n
3e&u$$in$
Or$ani4aci(n del desarrollo
Concepto de 5andante
Concepto de #ransacci(n
6!" Aplicaciones del ABAP/4
Qu es ABAP/6?
Reportin$ - Clsico e 'nteractivo .
Pro$ramaci(n de dilo$o o transacciones - dise0o de pantalla .
Otras aplicaciones
5odulari4aci(n
Parte II.- Introduccin a ABAP/4
7!" unda!entos de la pro"ra!acin de Reports
7!8 #ipos de 'nstrucciones
7! O&9etos de datos
7!3 )structura de un pro$rama
#.- Declarando $ procesando datos
:!8 #ipos de campos
:! 3eclaraci(n de campos
:!3 Asi$nando valores
CURSO ABAP/4
:!6 Conversi(n de tipo
:!7 Operaciones aritmticas en ABAP/6
:!: Procesando campos de tipo te;to
:!< =aria&les del sistemas
<!" Control de %lu&o en los pro"ra!as ABAP/4
<!8 Formulando condiciones
<! Proceso de &ucles
<!3 Sentencias de control
>!" Introduccin a las sentencias de salida de Reports
?!" 'a(las Internas
?!8 Como declarar ta&las internas
?! @lenado de una ta&la interna
?!3 Ordenar una ta&la interna
?!6 Procesamiento de una ta&la interna
?!7 #ratamiento de niveles de ruptura
?!: @ectura de entradas de una ta&la
?!< 5odi+icando ta&las internas
81!" Su(rutinas
81!8 #ipos de su&rutinas
81! Su&rutinas internas
81!3 Su&rutinas );ternas / 5(dulos de Funci(n
81!6 'ntercam&io de datos mediante la memoria $lo&al de SAP
88!" Diccionario de Datos. Co!o leer $ procesar ta(las de la Base de Datos
88!8 3iccionario de 3atos
88! @os datos en el sistema SAP
88!3 'nstrucciones SQ@ de ABAP/6
88!3!8 Select
88!3! 'nsert
88!3!3 Apdate
88!3!6 5odi+/
88!3!7 3elete
88!6 Otros aspectos de la pro$ramaci(n de B33
8!" Bases de Datos )"icas
8!8 Qu es una Base de 3atos @($ica?
8! Atili4aci(n de las Bases de 3atos @($icas
83!" ield *roups
CURSO ABAP/4
86!" or!ateando un listado
86!8 Formato de los datos de salida
86! Formato de p$ina
86!3 Selecci(n de parmetros! Pantalla de Selecci(n!
86!6 )lementos de te;to / mensa9es
87!" ield S$!(ols
8:!" Batc+ Inputs
8:!8 'ntroducci(n
8:! Fase de $eneraci(n del BatcB 'nput
8:!!8 Sistema e;terno
8:!! )l pro$rama BatcB 'nput
8:!!3 )l +icBero de colas
8:!3 Fase de procesado de una sesi(n
8:!6 Conse9os prcticos en la utili4aci(n de BatcB 'nputs
8:!7 Codi+icaci(n de BatcB 'nputs
8<!" 'rata!iento de %ic+eros desde un pro"ra!a en ABAP/4
Ane,o 1
ABAP/6 )ditor
Comandos de ca&ecera
Comandos de l%nea
=aria&les del Sistema
Parte III.- ABAP/4 Conceptos A-an.ados
8!" Reportin" Interacti-o
8!8 'ntroducci(n al Reportin$ 'nteractivo
8! Cenerando listados interactivos
8!3 @a interacci(n con el usuario
8!6 Otras Berramientas del Reportin$ 'nteractivo
!" Pro"ra!acin de Di/lo"o
!8 'ntroducci(n
! Pasos en la creaci(n de transacciones
3!" Dise0o de 1en2s 3 1enu Painter 4 3 Release 3.5 4
3!8 'ntroducci(n
CURSO ABAP/4
3! @a Barra de 5enDs
3!3 @os EPusB&uttonsF
3!6 #eclas de Funci(n
3!7 Otras utilidades del 5enD Painter
3!7!8 Activaci(n de +unciones
3!7! EFastPatBsF
3!7!3 #%tulos de 5enD
3!7!6 Prue&a, cBeGueo / $eneraci(n de Status
3!: 5enDs de Am&ito de rea
6!" Dise0o de Pantallas 3 Screen Painter 4 3 Release 3.5 4
6!8 'ntroducci(n al dise0o de pantallas
6! 3ise0o de pantallas
6!!8 Atili4ando el Screen Painter
6!! Creando o&9etos en la pantalla
6!!3 Creando o&9etos desde el diccionario de datos
6!!6 3e+iniendo los atri&utos individuales de cada campo
6!3 @($ica de proceso de una pantalla
6!3!8 'ntroducci(n a la l($ica de proceso
6!3! Process Be+ore Output - PBO .
6!3!3 Process A+ter 'nput - PA' .
6!3!3!8 @a validaci(n de los datos de entrada
6!3!3! Respondiendo a los c(di$os de +unci(n
6!3!3!3 Procesando Step loops
6!3!6 )l +lu9o de la transacci(n
6!3!7 Actuali4ando la &ase de datos en una trnsacci(n
6!3!: )l &loGueo de datos en SAP
6!3!< A/udas pro$ramadas! )ventos PO* / PO=
7!" Creacin de nue-as ta(las en el diccionario de datos
7!8 )l proceso de creaci(n de una ta&la
7! @as claves +orneas
7!3 Otras posi&ilidades en la creaci(n de ta&las
CURSO ABAP/4
Introduccin
a
SAP R/3
1 Introduccin a SAP R/3
SAP R/3 es un sistema empresarial inte$rado dise0ado para a/udar a las or$ani4aciones
a e9ecutar procesos empresariales, como $estionar inventarios, crear solicitudes,
CURSO ABAP/4
procesar pedidos de venta, pa$ar +acturas, etc! SAP R/3 a&arca un amplio espectro de
procesos empresariales!
SAP R/3 proporciona un sistema Dnico inte$rado de $esti(n de las necesidades comDn a
todos los departamentos de una corporaci(n! )sa inte$raci(n es la $ran venta9a Gue
aporta SAP R/3! Adems, como SAP R/3 es un sistema &asado en cliente"servidor, su
versatilidad es aDn ma/or!
SAP R/3 consiste en una seria de reas de aplicaci(n las cuales estudiaremos ms
adelante!
3esde el punto de vista +uncional / de su arGuitectura tcnica SAP R/3 puede de+inirse
como un so+tHare a&ierto &asado en la tecnolo$%a cliente"servidor, dise0ado para
mane9ar las necesidades de in+ormaci(n de una empresa!
Se trata de un paGuete de so+tHare estndar - en contraposici(n al desarrollo a medida .
Gue puede modelar los procesos de ne$ocios de una empresa en su propio modelo de
datos!
@os niveles o componentes del SAP R/3 / la +unci(n Gue reali4an estn representados
dentro de la elipse!

AP@'CAC'O2)S R/3
2'=)@ FA2C'O2A@
S'S#)5A BAS'CO
S'S#)5A OP)RA#'=O, BAS) 3) 3A#OS
I R)3
S
A
P
1
6
3
Co!ponentes de SAP R/3

1 .- Aplicaciones %uncionales, entre las cuales mencionaremos las si$uientesJ
F' " 5odulo de Conta&ilidad!
'5 " 5odulo de Cesti(n de 'nversiones!
CO " 5odulo de Costes!
*R " 5odulo de Recursos *umanos!
S3 " 5odulo de =entas / 3istri&uci(n!
55 " 5odulo de Cesti(n de 5ateriales
PP " 5odulo de Producci(n!
PS " 5odulo de Pro/ectos!
#R " 5odulo de #esorer%a!
CURSO ABAP/4
Q5 " 5odulo de Calidad!
P5 " 5odulo de 5antenimiento!
'S " 5odulo de Soluciones Sectoriales!
KF " 5odulo de KorL FloH
6.- Siste!a (/sico, es el encar$ado de la inter+a4 entre el sistema operativo / las
aplicaciones R/3 inclu/endo componentes tales como el entorno de desarrollo ABAP,
Berramientas de administraci(n del sistema, mane9o de 9o&s, autori4aciones, etc!
3 .- Siste!a 7perati-o, $esti(n de la &ase de datos / la red cu/o so+tHare viene
incluido en SAP R/3!
6 Caractersticas de SAP R/3
SAP R/3 o+rece para $estionar los distintas +unciones de una empresa las si$uientes
caracter%sticasJ
Siste!a Cliente - Ser-idor
CURSO ABAP/4

S)R='3OR 3) BAS) 3) 3A#OS
S)R='3OR)S 3) AP@'CAC'O2
S)R='3OR)S 3) PR)S)2#AC'O2
PCFs
Ar8uitectura Cliente- Ser-idor
Siste!a Cliente Ser-idor.- en la computaci(n cliente"servidor, una parte del
procesamiento se e9ecuta en el PC de so&remesa - cliente . / la otra en computadoras
centrales compartidas - servidores .! @a presentaci(n / el preprocesamiento se
e9ecutan en el PC, la in+ormaci(n se almacena en los servidores!
Ser-idor Base de Datos.- )ste es el servidor central Gue contiene la &ase de datos
- el sistema de $esti(n de &ase de datos . / se conoce $eneralmente como servidor de
&ase de datos!
Ser-idor de Aplicaciones.- Contienen la l($ica de proceso del sistema inclu/endo
servicios como el de impresi(n, peticiones de usuario, servicios para procesar los
9o&s de +ondo, etc!
Ser-idores de Presentacin.- #areas relacionadas con la inter+ace usuario / la
presentaci(n de datos - normalmente PCFs .!
@a comunicaci(n entre los tres niveles anteriores se reali4a mediante el protocolo
estndar #CP/'P!
'ecnolo"a de Siste!as A(iertos
Si$ni+ica Gue la aplicaciones pueden +uncionar so&re mDltiples sistemas operativos
- A2'M, K'23OKS 2#, AS611, etc! . / $estores de &ases de datos - ORAC@),
'2FOR5'M, A3ABAS, etc! ., siendo el c(di$o +uente de las aplicaciones ABAP
completamente reutili4a&les / transporta&les entre los distintos sistemas!
SAP soporta mucBas CA' - inter+aces $r+icas de usuario . tales como KindoHs
3!88, KindoHs ?7, KindoHs ?>, KindoHs 2#, 5acintosB, etc! @a CA' dise0ada
por SAP es la SAP CA' / esta orientada a ventanas, &otones, iconos, &arras de menD,
&arras de Berramientas, etc!
Inte"racin de Aplicaciones
CURSO ABAP/4
#odas las aplicaciones R/3 estn inte$radas / relacionadas con capacidad de Bacerlo
en tiempo real, es decir, la in+ormaci(n se actuali4a constantemente! Que si$ni+ica
estoJ cualGuier cam&io Gue se realice por e9emplo en una &ase de datos se re+le9ar
inmediatamente en todos los componentes de SAPJ screen painter, menu painter,
diccionario, etc!
Entorno de desarrollo
'nclu/e todas las Berramientas necesarias para el dise0o / desarrollo de pro$ramas,
pantallas, menDs, m(dulos de +unciones, etc! Contiene tam&in +unciones para
reali4ar la depuraci(n de pro$ramas / prue&as de rendimiento!
#odas las aplicaciones estndar de R/3 estn reali4adas en ABAP!
Se Ba dise0ado un entorno de desarrollo llamado 3evelopment KorL&encB Gue se
encuentra inte$rado dentro del sistema R/3 / permite al cliente desarrollar soluciones
especi+icas o ampliar las estndar en el nDcleo de entorno de desarrollo se encuentran
el Repositorio de o&9etos / el 3iccionario de datos!


3iccionario
de
3atos
Repositorio
de
O&9etos
92cleo de Entorno de Desarrollo
3entro de el 3iccionario de datos se encuentra lo si$uienteJ de+inici(n de ta&las,
valores permitidos, relaciones entre ta&las, etc!
Repositorio de O&9etosJ pro$ramas, datos del diccionario, d/npros, documentaci(n,
etc!
:erra!ientas para la con%i"uracin del siste!a
@a parametri4aci(n es la piedra an$ular de una implantaci(n SAP R/3! Al$unas
tareas de parametri4aci(n son tan sencillas como introducir el pa%s donde esta situada
la empresa / otras son tan complicadas orientadas a reas o industrias especi+icas Gue
reGuiere conocimientos tcnicos de con+i$uraci(n como de actividades
empresariales!
Ser-icios de Soporte; or!acin; consultora e i!plantacin 3 7SS 4
SAP Ba dispuesto un amplio con9unto de servicio de calidad para a/udar a su cliente
durante el proceso de implantaci(n / soporte de los sistemas R/3, estos servicios
a&arcan desde in+ormaci(n de aplicaciones, +ormaci(n, servicio de instalaci(n Basta
consultor%a!
CURSO ABAP/4
SAP reali4a la $ran ma/or%a de los servicios a travs de cone;iones remotas con red
de comunicaci(n internacional! )l sistema de servicio en l%nea de SAP se llama OSS
- Online Service S/stem .!
Euro $ A0o 6555
Soporte completo para solucionar los pro&lemas del cam&io del milenio - A0o 111 .
/ la aparici(n de la moneda )uropea )ARO!
3 Entorno de Desarrollo ABAP/4
)l entorno de desarrollo ABAP/6 consiste de las si$uientes Berramientas J
Para )a +erra!ienta /
co!ponente
Se utili.a para
Pro"ra!acin 3iccionario ABAP 3e+inir, mantener /
almacenar el diccionario de
datos del sistema R/3!
Contiene todos los o&9etos
CURSO ABAP/4
del diccionario, tales como
ta&las, relaciones,
documentaci(n, etc!
)ditor ABAP Crear / mantener los
pro$ramas ABAP para
editar m(dulos de +unci(n,
&ases de datos l($icas / la
l($ica de pro$ramaci(n de
las pantallas - 3/npros .
@i&rer%a de Funciones 3e+inir / mantener modulo
de +unci(n ABAP - rutinas
de prop(sito $eneral Gue
pueden ser utili4adas en
otros pro$ramas ABAP .
Screen Painter 3ise0ar / mantener las
pantallas e inter+aces
$r+icas de usuario en R/3!
5enu Painter 3ise0ar / mantener los
menDs para los inter+aces
$r+icos de usuario!
9a-e"acin O&9ect BroHser Cestionar / revisar los
o&9etos de desarrollo de
modo 9errGuico para
permitir una nave$aci(n
+cil entre los o&9etos / el
entorno de desarrollo!
Sistema de in+ormaci(n del
Repositorio ABAP
2ave$ar / &uscar o&9etos
del diccionario, o&9etos de
desarrollo / relaciones entre
o&9etos de desarrollo!
NerarGu%a Aplicaci(n =isuali4ar los o&9etos de
desarrollo desde un punto
de vista or$ani4ativo / de
aplicaci(n!
3ata BroHser 2ave$ar / visuali4ar los
contenidos de las ta&las de
la &ase de datos!
De(u""in" #race SQ@ Se$uir / rastrear los accesos
/ llamadas a la &ase de
datos desde los pro$ramas /
transacciones del sistema
Anlisis #iempo )9ecuci(n Anali4ar el rendimiento de
las llamadas al sistema!
3e&u$$er en l%nea detener un pro$rama /
anali4ar el resultado de la
e9ecuci(n de cada sentencia
del pro$rama!
@ocL del Sistema Se$uimiento de los errores /
mensa9es Gue se producen
durante la e9ecuci(n de los
CURSO ABAP/4
pro$ramas!
7r"ani.acin del
desarrollo
KorL&encB Or$ani4er Controlar / se$uir el tra&a9o
de desarrollo / los
pro/ectos en eGuipo / para
$estionar las versiones de
los o&9etos de desarrollo!
Sistema de #ransporte Reali4ar / $estionar los
transportes de los o&9etos de
desarrollo entre distintos
sistemas SAP!
Concepto de 1andante 3 cliente 4.- 5ucBas veces se entiende de manera eGuivocada
el este concepto, en realidad es el nom&re del sistema SAP R/3 al Gue nos conectamos,
la ma/or%a de las compa0%as cuentan con un cliente para cada tarea espec%+ica!
Se de+ine como una unidad independiente dentro del sistema R/3, desde el punto de
vista +iscal, le$al / or$ani4ativo! Por e9emplo un mandante se puede decir Gue
representa a una empresa dentro de una corporaci(n! #cnicamente se puede decir Gue
un mandante se comporta dentro de SAP como una &ase de datos l($ica independiente,
es decir, los datos de una ta&la en un mandante no pueden ser modi+icados ni
visuali4ados desde otro mandante!
Por e9emplo una compa0%a podr%a tener la si$uiente con+i$uraci(nJ
)l sistema cliente de +ormaci(n 611, Gue se utili4a para la +ormaci(n de nuevos
usuarios!
)l sistema cliente de desarrollo 811, Gue se utili4a para nuevos desarrollos asi como
etapa de prue&a de los nuevos desarrollos!
)l sistema de producci(n 811 es le sistema activo utili4ado para diri$ir la empresa! Osta
es un rea nada recomenda&le para practicar!
)s importante conocer el cliente o mandante en Gue se reGuiera reali4ar la tarea
espec%+ica esto de&ido a los posi&les pro&lemas Gue se pueden $enerar! Cada cliente o
mandante tiene especi+icadas autori4aciones para reali4ar tal o cual tarea! @a
reali4aci(n de las tareas en cada mandante son restrin$idas / asi$nadas se$Dn el nivel
del usuario!
Por e9emplo un usuario +inal no siempre tiene autori4aci(n para manipular todos los
menDs de SAP R/3, asi como un pro$ramador puede tener un l%mite dentro del sistema
de desarrollo - no estar autori4ado para actuali4ar &ases de datos, eliminar elementos de
SAP, etc! ., un +uncional no tendra acceso a los recursos del sistema &ase
- administraci(n de la &ase de datos .P
Concepto de 'ransaccin!" 3e un modo $enrico una transacci(n es una operaci(n
Gue permite a un usuario reali4ar cam&ios en la &ase de datos! #odo el sistema R/3 se
puede considerar como un sistema de proceso de transacciones de ne$ocios!
CURSO ABAP/4
4 Aplicaciones del ABAP/4
Qu es ABAP/6 ?
ABAP/6 es el len$ua9e de pro$ramaci(n de cuarta $eneraci(n propio de SAP, su
iniciales nos indicanJ
A " Advanced
B " Business
A " Aplication
P " Pro$rammin$
@as aplicaciones del ABAP/6 sonJ
CURSO ABAP/4
Reportin" - Clsico e interactivo .
Pro"ra!acin de di/lo"o o transacciones - dise0o de pantallas .
7tras aplicaciones - BatcB 'nput, pro$ramas de comunicaciones, etc! .
Ana ve4 instalado SAP la principal aplicaci(n del ABAP/6 es la $eneraci(n de
in+ormes /a sea porGue no Ban sido contemplados por SAP o se reGuiere un +ormato
mu/ completo!
)l Reportin" Cl/sico se caracteri4a por listados voluminosos o mu/ +recuentes con
me4cla de in+ormaci(n detallada / resumidas!
)l Reportin" Interacti-o esta orientado a pantallas, listados cortos / ventanas
controladas por teclas de +unci(n!
Am&os reportin" se pueden e9ecutar en 7nline - tiempo real . mientras Gue
Dnicamente el clsico se puede e9ecutar en Batc+ - di+erido .!
@a pro"ra!acin en di/lo"o se caracteri4a por estar en+ocado a pantallas Gue
estarn controladas por m(dulos ABAP/6!
Otras aplicaciones posi&les en len$ua9e de pro$ramaci(n son la $eneraci(n de BatcB
'nput / pro$ramas de comunicaciones! An BatcB 'nput es una utilidad de Sap para
trans+erir in+ormaci(n de +orma se$ura / automati4ada! Para ello simula mediante un
proceso en &atcB la introducci(n de datos en el sistema v%a transacci(n online!
1odulari.acin
Por modulari4aci(n dentro de los pro$ramas ABAP/6, entendemos Bacer ms +cil
la lectura / me9orar su estructura! 5odulari4ar pro$ramas +acilita el
mantenimiento / la actuali4aci(n de los mismos a comparaci(n de los Gue no
estn de&idamente modulari4ados! - estructurados .
CURSO ABAP/4

9o !odulari.ado 1odulari.ado
PROCRA5 P
P!!
BlocL de Sentencias
BlocL de Sentencias
BlocL de Sentencias
BlocL de Sentencias
P!!
P!!
P!!
PROCRA5 P
P!!
CA@@ A2'3A3 3) 5O3A@AR'QAC'O2
P!!
CA@@ A2'3A3 3) 5O3A@AR'QAC'O2
P!!
CA@@ A2'3A3 3) 5O3A@AR'QAC'O2
P!!
CA@@ A2'3A3 3) 5O3A@AR'QAC'O2
Principio de 1odulari.acin
#cnicas para +acilitar la modulari4aci(nJ

1odulari.acin
PROCRA5 RS3)5O18!
Call calculateRta;
Su&rutina
CalculateRta;
!
PROCRA5 RS3)5O1!
Call calculateRta;
!
!
!
!
PROCRA5 RS3)5O16!
Su&rutine SAB8
Su&rutina
CalculateRta;
ABAP/6 +unction li&rar/
Function module
CalculateRta;
PROCRA5 RS3)5O13!
Call calculateRta;
!
!
Function module
CURSO ABAP/4
3e+inir su&rutinas internas / e;ternas para evitar secuencias de sentencias
similares o idnticas, o sea evitar redundancia! @as su&rutinas me9oran la
estructura de tu pro$rama - esto si$ni+ica modulari4aci(n . / Bace ms +cil la
lectura! Ana secuencia de sentencias de+inida dentro de una su&rutina puede ser
llamada desde varios puntos de un pro$rama!
Para ma/or claridad de&es colocar las su&rutinas al inicio o al +in del pro$rama!
Puedes de+inir pro$ramas include dentro de la &i&lioteca!
S% tu Guieres usar la misma secuencia de sentencias en varios pro$ramas, tu
puedes reali4ar el c(di$o dentro de un pro$rama include!
3e+inir / reali4ar llamados a m(dulos de +unci(n! @os cuales son almacenados
dentro de la &i&lioteca de +unciones donde son asi$nados a un $rupo de +unci(n!
)l sistema R/3 proporciona diversos m(dulos de +unci(n prede+inidos, los cuales
pueden ser llamados desde cualGuier pro$rama ABAP/6, adems estos m(dulos
de +unci(n pueden ser creados por el propio pro$ramador!
A di+erencia de las su&rutinas los m(dulos de +unci(n cuenta con una inter+aceS
adems de estandari4ar el pase de parmetros!
'nter+aces a&iertas - llamadas a pro$ramas e;ternos .
CURSO ABAP/4
Introduccin
a
ABAP/4
< unda!entos de la Pro"ra!acin de Reports
CURSO ABAP/4
<.1 'ipos de instrucciones.
An report consiste en una serie de instrucciones ABAP Gue empie4a por una
pala(ra cla-e / termina con un punto!
#ipos de pala&ras clavesJ
Declarati-as= Para declarar los datos Gue vamos a usar a lo lar$o del
pro$rama! Por e9emploJ 3A#A, #AB@)S!
E-entos= especi+ica un evento, es el punto donde ABAP e9ecuta un
cierto proceso! Por e9emploJ S#AR#"OF"S)@)C#'O2, #OP"OF"
PAC)!
ControlJ Sentencias de control de +lu9o de pro$rama! Por e9emploJ 'F,
K*'@)!
7perati-as= Reali4an +unciones propias se$Dn el tipo de pala&ra clave!
Por e9emploJ KR'#), 5O=)!
);isten dos +ormas de utili4ar comentarios en un report!
8! Con un asterisco -T. en la primera columna de una l%nea!
! Con comillas -U. en mitad de una l%nea, esto es una ve4 escrita la
sentencia puede ir un comentario a continuaci(n!
Podemos com&inar sentencias consecutivas del mismo +ormato! )sto si$ni+ica
a$rupar sentencias / evitar el escri&ir ms l%neas de c(di$o!
Por e9emplo=
es eGuivalente a J
<.6 7(&etos de datos.
);isten 3 clases de o&9etos de datosJ
Ca!pos de (ases de datos $uardadas en el diccionario de datos!
Podemos declarar las ta&las Gue Gueremos utili4ar en un pro$rama
con la sentencia #AB@)S!
)9emploJ
#AB@)SJ @FA8!
P!
KR'#)J @FA8"@'F2R, @FA8"2A5)8!
CURSO ABAP/4
KR'#) @FA8"@'F2R!
KR'#) @FA8"2A5)8!
KR'#) @FA8"OR#O18!
KR'#)J @FA8"@'F2R,
@FA8"2A5)8,
@FA8"OR#O18!
)iterales= literales de te;to entre comillas o nDmeros!
)9emploJ
KR'#) E3'R)CC'V2F!
CO5PA#) SA@)S W A5OA2# / 811!
>aria(les internas= Campos au;iliares con nom&re de menos de 31
caracteres -sin incluir el carcter &lanco.! Se declaran con la
sentencia
)9emploJ
3A#AJ =)2#AS"#O#A@)S #IP) P!
<.3 Estructura de un pro"ra!a.
REP7R' Xnom&reY 2om&re pro$rama
'AB)ES= #a&las Gue se utili4an
DA'A= =aria&les internas
'7P-7-PA*E. Por inicio de p$ina e9ecutar
XSentenciasY las instrucciones Gue se indiGuen!
E9D-7-PA*E. Por +in de p$ina e9ecutar las
XSentenciasY instrucciones Gue se indiGuen!
S'AR'-7-SE)EC'I79. Por inicio de pro$rama
XSentenciasY e9ecutar las instrucciones
indicadas!
E9D-7-SE)EC'I79. Por Fin de pro$rama
XSentenciasY e9ecutar las instrucciones
indicadas!
@a secuencia de eventos no es relevante!
# Declarando $ procesando datos
CURSO ABAP/4
#.1 'ipos de Ca!pos.
@os tipos de datos Gue se pueden utili4ar en ABAP /6 son=
'ipos )on" por
de%ecto
Posi(le
lon"itud
>alor inicial Descripcin
C 8 83111 )SPAC'OS #e;to
F > 8)"31<8)Z31> 1!1)Z11 Punto +lotante
' 6 "
38

38
"8 1 )ntero
2 8 83111 E1111F #e;to numrico
P > 8 8: 1 2Dm! )mpaGuetado
M 8 8?><1 ;F11F *e;adecimal
3 > > 11111111 FecBa IIII5533
# : : 111111 *ora **55SS
#.6 Declaracin de Ca!pos!
Se declaran campos del report con la sentencia DA'A.
Si no se indica lo contrario las varia&les sern del tipo carcter -#e;to. / la
lon$itud 8!
)9emploJ 3A#A =AR"CAR!
3A#A =AR"CAR->.! ""Y Crear una varia&le te;to de
lon$itud >!
Con el parmetro '?PE podemos utili4ar otros tipos de datos!
)9emploJ 3A#A 2A5"CAR-7. #IP) 2!
3A#A 2A5)RO-. #IP) P!
3A#A F)C*A @'5'#) #IP) 3!
Con el parmetro )I@E; podemos declarar una varia&le con los mismos
atri&utos de lon$itud / tipo Gue una varia&le de &ase de datos!
)9emploJ 3A#A ACR))3OR @'[) @FA8"@'F2R!
Con el parmetro >A)AE podemos indicar la varia&le con un valor distinto al
Gue tienen por de+ecto!
)9emploJ 3A#A CO2#A3OR #IP) P =A@A) 8!
An re"istro de datos es un con9unto de campos relacionados l($icamente en
una estructura!
)9emploJ 3A#AJ B)C'2 OF PRO=))3OR ,
@'F2R @'[) @FA8"@!'F2R,
2A5)8 @'[) @FA8"2A5)8,
CURSO ABAP/4
C'A3A3-1. =A@A) \BARC)@O2A\,
F)C*A #IP) 3,
)23 OF PRO=))3OR!
Posteriormente el acceso a los campos del re$istro de datos ser J
KR'#)J PRO=))3OR"2A5)8,
PRO=))3OR"F)C*A!
#am&in usaremos la instrucci(n 3A#A para declarar ta&las internas! @as ta&las
internas a di+erencia de las de &ase de datos se $uardarn en memoria / no en el
diccionario de datos.
)9emploJ
3A#AJ B)C'2 OF 5)NOR)SR PRO=))3OR)S OCCARS 81,
2O5BR) @'[) @FA8"2A5) 8,
C'A3A3 @'[) @FA8"OR#8,
=)2#AS @'[) @FC3"SO@@@,
)23 OF 5)NOR)SRPRO=))3OR)S!
@a clusula 7CCARS determina el nDmero de l%neas $uardadas en memoria
principal! )sto no si$ni+ica Gue el tama0o m;imo de la ta&la sea el indicado, /a Gue si
este se des&orda los datos se $uardan en un +icBero de pa$inaci(n, &a9ando l($icamente
el tiempo de proceso de las ta&las internas, pero evitando Gue el rea $lo&al de
almacenamiento destinado por SAP para ta&las internas se a$ote!
@as ta&las internas se declaran, iniciali4an / re+erencian como un re$istro de
datos!
#am&in podemos utili4ar la misma estructura Gue una ta&la de &ase de datos!
Para ello utili4aremos la instrucci(n I9C)ADE S'RAC'ARE.
)9emploJ
3A#A B)C'2 OF SOC')3A3) OCARRS 8 1!
'2C@A3) S#RAC#AR) #118!
3A#A )23 OF SOC')3A3)S!
#.3 Asi"nando -alores.
);isten diversas +ormas de asi$nar valores a una varia&le en ABAP/6! Ana
asi$naci(n directa, como resultado de una operaci(n aritmtica o como resultado de una
conversi(n automtica entre campos con valores de di+erente tipo de datos!
@a instrucci(n 17>E reali4a un transporte del contenido del -ar1 al campo
-ar6!
17>E B-ar1C '7 B-ar6C!
Podemos sustituir esta Dltima instrucci(n porJ
CURSO ABAP/4
B-ar6C D B-ar1C.
Gue es la simpli+icaci(n deJ
C71PA'E B-ar6C D B-ar1C.
donde la pala&ra clave CO5PA#) es opcional!
#am&in es posi&le re+erenciar o asi$nar valores a una parte de la varia&le
utili4ando el o%%set.
=AR'AB@)Zo%%set3lon"itud4
)9emploJ
3A#AJ =AR'-87. =A@A) \R'=)R@A23 BC2!\,
=AR-87. =A@A) \*O@A\!
5O=) =AR'Z81-6. #O =ARZ7-6.!
KR'#) =AR!
ResultadoJ :7)A BC9!
=AR8

R ' = ) R @ A 2 3 B C 2 !

=AR
* O @ A
17>E >AR1E15344 '7 >AR6E<344.
=AR
* O @ A B C 2 !
Si se desean utili4ar varia&les en el o++set o la lon$itud se usar la instrucci(n
FRI'E '7.

)9emploJ
OFF8 W 81!
OFF W 7!
@)2 W 6!
CURSO ABAP/4
KR'#) =AR8ZOFF8-@)2. #O =ARZOFF-@)2.!
Si desean cBeGuear la lon$itud o el tipo de una varia&le podemos utili4ar la
instrucci(n DESCRIBE IE)D!
Sinta;is J DESCRIBE IE)D ca!po )E9*': lon"itud.
G G '?PE tipo.
G G 7A'PA'-)E9*': lon" salida.
G G DECI1A)S P)ACES deci!ales.
Para cBeGuear la lon$itud de un campo utili4amos la clusula )E9*':.
Para conocer el tipo de datos del campo utili4amos '?PE.
Para conocer la lon$itud de salida utili4amos 7A'PA'-)E9*':.
Para sa&er el nDmero de decimales Gue tiene una cierta varia&le utili4aremos la
clusula DECI1A)S.
Para iniciali4ar las varia&les utili4amos la sentenciaJ
C)EAR Bca!poC.
C@)AR iniciali4a al valor Gue tiene asi$nado como valor inicial-ver ta&la. sin
tener en cuenta a las clusulas =A@A) Gue Ba/a!
@a asi$naci(n e iniciali4aci(n de los re$istros de datos +unciona de la misma
+orma Gue en las varia&les normales! An C@)AR iniciali4a todos los campos del
re$istro! Podremos conse$uir una asi$naci(n mas potente con 17>E-
C7RRESP79DI9*.
17>E-C7RRESP79DI9* Bre"1C '7 Bre"6C.
)sta instrucci(n mueve del re$8 al re$ aGuellos campos Gue ten$an idntico
nom&re!
#.4 Con-ersin de tipo!
Si intentamos reali4ar una asi$naci(n de varia&les de distinto tipo; ABAP/6
intenta reali4ar una conversi(n automtica de tipo!
Podemos ver un e;tracto de las posi&les conversiones en el A9EH7 6 ] #/pe
convesi(n ta&le^
);iste una instrucci(n adicional para la conversi(n P C
CURSO ABAP/4
A9PAC@ BpInu!C '7 Bstrin"C.
Que desempaGueta pRnum en la varia&le strin$ colocando ceros a la i4Guierda!
);iste una instrucci(n adicional para la conversi(n C -C P!
PAC@ Bstrin"C '7 BpInu!C.
#.< 7peraciones Arit!Jticas en ABAP/4.
)n ABAP/6 las 6 operaciones aritmticas &sicas se pueden implementarJ
Con la instrucci(n C71PA'E / los s%m&olos Z, ", / / T,
C71PA'E -ar1 D BE,p. Arit!JticaC.
donde la pala&ra CO5PA#) es opcional!
Si utili4amos parntesis de9aremos un espacio en &lanco precediendo
/ si$uiendo al parntesis!
Con las instrucciones J ADD '7; SABS'RAC' R71;
1A)'IP)? B? $ DI>IDE B?.
#am&in dispondremos de +unciones matemticas para los nDmeros de coma
+lotanteJ EHP; )7*; SI9; C7S, SKR'; DI>; 17D. S'R)E9.
#.# Procesando ca!pos de tipo te,to.
ABAP/6 o+rece al$unas instrucciones para el procesamiento de cadenas de
te;to!
Para reali4ar un despla4amiento del contenido de un campo utili4amos
S:I'!
S:I'Bca!poC Reali4a un
despla4amiento de un carcter Bacia la i4Guierda!
S:I'Bca!poC B? BnC P)ACES3RI*:'4! Reali4a un
despla4amiento de n caracteres Bacia la i4Guierda o si se especi+ica Bacia la derecBa,
introduciendo &lanco por el lado opuesto!
)9emploJ
CURSO ABAP/4
* O @ A
S*'#F campo BI P@AC)S!
@ A
S:I' Bca!poC B? 6 P)ACES CIRCA)AR 3RI*:'4. Reali4a un
despla4amiento c%clico Bacia la i4Guierda o si se especi+ica Bacia la derecBa!
)9emploJ
* O @ A
S*'F# campo BI P@AC)S C'RCA@AR
@ A * O

Podemos reempla4ar el contenido de ciertos campos con la 'nstrucci(n
REP)ACE.
REP)ACE Bcadena1C FI'II Bcadena6C I9'7 Bca!poC.
Reempla4a \cadena8\ por \cadena\ dentro de la varia&le \campo\! Si la varia&le
del sistema S?-SABRC BC 5 es Gue \cadena8\ no e;iste dentro de \campo\!
R)P@AC) Dnicamente sustituir la primera aparici(n de \cadena 8\!
);iste otra instrucci(n de sustituci(n, 'RA9S)A'E.
'RA9S)A'E Bca!poC '7 APPER CASE. Pasa a 5a/Dsculas
'7 )7FER CASE. Pasa a 5inDsculas!
ASI9* LBre"laCM. Reempla4a campo
se$Dn la re$la de
sustituci(n indicada!
donde la re$la W XC8S8CS!!!Y / Cn son los caracteres a sustituir / Sn los
caracteres de sustituci(n!!
@a instrucci(n SEARC: &usca la cadena dentro de un campo o una ta&la!
SEARC: Bca!poC/Bta(laC 7R
BcadenaC.
CURSO ABAP/4
Si el Resultado es positivo SI"SABRC W 1! )n caso de Gue sea una ta&la SI"
#AB'M contiene la l%neas de la ta&la donde se Ba encontrado!
Para &orrar los &lancos de una cadena utili4aremos C79DE9SE!

C79DE9SE Bca!poC 397-*APS4!
)sta instrucci(n &orra todos los &lancos Gue se encuentren comen4ando
la cadena por la i4Guierda / en caso de encontrar series de &lancos intermedios
de9ar Dnicamente uno por serie!
)9emploJ
] CARSO 3) ABAP/6U UCARSO 3) ABAP/6U
@a clusula 97-*APS &orra todos los &lancos estn donde estn!
#.N >aria(les del siste!a.
ABAP/6 tiene al$unas varia&les internas Gue se van actuali4ando
automticamente / Gue pueden ser utili4ados en los pro$ramas!
#odas ellas empie4an por el pre+i9o S?- / /a Bemos utili4ado al$una de ellas como
SI"SABRC Gue nos da el c(di$o de retorno de una instrucci(n o SI"#\AB'M Gue
contiene la l%nea de proceso de una ta&la interna!
)n el Ane,o 1 Ba/ una relaci(n de todas ellas!
N Control de %lu&o en los pro"ra!as ABAP/4
N.1 or!ulando condiciones
)n ABAP, como en todos los len$ua9es estructurados, disponemos de una serie de
instrucciones para su&dividir el pro$rama en &loGues l($icosS se e9ecutarn cuando se
cumpla una cierta condici(n!
CURSO ABAP/4
Para introducir una condici(n, utili4aremos la sentencia I!!! E)SE!!! E9DI ,
Gue podr aparecer en distintas modalidades!
I BCond.C. I BCond.C. I BCond.C.
O O O
E9DI. E)SE. E)SEI.
O O
E9DI. E)SEI.
O
E)SE.
O
E9DI.
)n las condiciones utili4amos los clsicos operadoresJ
I A9D
O 7R
'$ual D , EK
3istinto BC , E9
5a/or C , *'
5enor B , )'
5a/or o i$ual CD , *E
5enor o i$ual BD , )E
Adems e;isten operadores adicionales para comparar cadenas de caracteresJ
X+8Y C7 X+Y -Contains Onl/. J +8 s(lo contiene caracteres de +! )n caso de ser
cierta S?-DP7S contiene la lon$itud de +8, / si
es +alsa contiene el o++set del primer carcter Gue
no cumple la condici(n!
X+8Y C9 X+Y -Contains 2ot Onl/. J ne$aci(n de la anterior!
X+8Y CA X+Y -Contains An/. J +8 contiene como m%nimo al$Dn carcter de +! Si
es cierta S?-DP7S contiene el o++set del primer
carcter de +8 Gue est en +, / si es +alsa contiene
la lon$itud de +8!
X+8Y 9A X+Y -Contains 2ot An/. J ne$aci(n de la anterior!
X+8Y CS X+Y -Contains Strin$. J +8 contiene la cadena +! Si la condici(n
S?-DP7S es cierta contiene el o++set donde
empie4a + en +8, / si es +alsa contiene la
lon$itud de +8!
X+8Y 9S X+Y -Contains 2o Strin$. J ne$aci(n de la anterior!
X+8Y CP X+Y -Contains Pattern. J +8 corresponde al patr(n +! )n el patr(n
podemos
utili4ar J
CURSO ABAP/4
E como cualGuier carcter, T como cualGuier
cadena de caracteres,
P para utili4ar los caracteres Z,T,_ en la
comparaci(n!
Si la condici(n es cierta S?-DP7S contiene el
o++set de + en +8 / si es +alsa contiene la lon$itud
de +8!
X+8Y 9P X+Y -Contains 2o Pattern. J ne$aci(n de la anterior!
#am&in podremos utili4ar operadores especialesJ
I B%1C BE'FEE9 B%6C A9D B%3C. Para cBeGuear ran$os
I B%1C IS I9I'A). Para cBeGuear valores iniciales!
Si Gueremos e9ecutar di+erentes instrucciones en +unci(n del contenido de un
campo, podemos utili4ar la sentencia CASE.
CASE Bca!poC.
F:E9 B-alor1C.
O
F:E9 B-alor6C.
O
F:E9 7':ERS.
O
E9DCASE.
Por Dltimo, e;iste la instrucci(n condicional, 79 C:A9*E 7 ... E9D79,
Gue permitir la e9ecuci(n de un &loGue de instrucciones, si se Ba producido un
cam&io de valor de un cierto campo durante el acceso a &ase de datos o una ta&la
interna! C(mo procesar una ta&la interna o un acceso a &ase de datos, /a lo veremos
ms adelante!
79 C:A9*E 7 Bca!poC.
O
E9D79.
CURSO ABAP/4
N.6 Proceso de (ucles
Para reali4ar procesos repetitivos, utili4aremos D7 / F:I)E!
@a instrucci(n D7 permite e9ecutar un &loGue de instrucciones tantas veces como se
especi+iGue!
D7 BnC 'I1ES.
O
E9DD7.
)n la varia&le del sistema S?-I9DEH tendremos un contador del nDmero de
repeticiones!
)s posi&le anidar 3O\s! )n ese caso, el SI"'23)M Bar re+erencia al &ucle en
proceso!
@a instrucci(n F:I)E permite e9ecutar un &loGue de instrucciones mientras se
cumpla una condici(n!
F:I)E BcondC.
O
E9DF:I)E.
3e la misma +orma Gue la instrucci(n 3O, K*'@) permite anidar &ucles!
N.3 Sentencias de control
@as sentencias descritas a continuaci(n se utili4arn para terminar el
procesamiento de un &ucle o proceso!
@a instrucci(nJ C:EC@ BcondC.
Reali4a un cBeGueo de XcondY de +orma Gue si dentro de un &ucle la condici(n
es %alsa; saltar todas las instrucciones Gue si$uen al C*)C[ e iniciar la si$uiente
pasada al &ucle! Fuera de un &ucle si la condici(n es +alsa, saltar todas las
instrucciones Gue si$uen al C*)C[ Basta el +inal del evento o pro$rama en proceso!
@a instrucci(nJ EHI'.
3entro de un &ucle saldr del &ucle / +uera de un &ucle saldr del pro$rama!
Si la instrucci(n )M'# est dentro de varios &ucles anidados, Dnicamente saldr
del &ucle en proceso!
@a instrucci(nJ S'7P.
CURSO ABAP/4
Con S#\OP +inali4aremos el report -pro$rama. en e9ecuci(n; pero antes
e9ecutaremos el evento )23"OF"S)@)C#'O2!
@a instrucci(nJ )EA>E.
Con @)A=) +inali4aremos el report -pro$rama. en e9ecuci(n, sin e&ecutar el evento
)23"OF"S)@)C#'O2!
Q Introduccin a las sentencias de salida de Reports
CURSO ABAP/4
A continuaci(n veremos un resumen de las sentencias de salida de reports ms
&sicas!
Como /a Bemos visto en los e9emplos de los cap%tulos anteriores, para visuali4ar un
valor utili4aremos la sentencia FRI'E!
FRI'E / 3Bo%%setC43Blon"C4 RBdatos a -isuali.arCS.
Con la Barra / indicaremos si Gueremos saltar una l%nea o no antes de
imprimir -opcional.!
Con el 7%%set indicaremos la columna donde empe4ar la impresi(n
-opcional.!
Con )on" indicaremos la lon$itud de los valores a visuali4ar -opcional.!
Podemos imprimir una l%nea de Su&ra/ados con la sentencia A)I9E! #endr las
mismas propiedades Gue el KR'#)!
A)I9E /3Bo%%setC43BIon"C4.
Para saltar una o varias l%neas utili4aremos S@IP!
S@IP BnC.
Por de+ecto el salto ser de una Dnica l%nea!
Para saltar una p$ina utili4aremos 9EF-PA*E!
Para introducir parmetros en la e9ecuci(n del report e;isten varias opciones! @a
+(rmula ms sencilla es la sentencia PARA1E'ERS!
PARA1E'ERS= B-arC '?PE BtipoC
)I@E BtipoC
DEAA)' B-alorC '$ual Gue el
=A@A)!
7B)I*A'7R?. O&li$a a
introducir
al$Dn valor!
)7FER CASE. Permite
introducir
minDsculas!
)l nom&re del parmetro no puede ser superior a > caracteres!
)n el Captulo 14 se tratar todas las posi&ilidades para las selecciones / entrada
de parmetros!
T 'a(las Internas
CURSO ABAP/4
Si deseamos $uardar una coleccin de re"istros de datos de la !is!a
estructura en memoria sin necesidad de acceder a la &ase de datos / poder reali4ar
operaciones diversas con este con9unto de in+ormaci(n, utili4aremos las ta(las
internas.
T.1 C!o declarar ta(las internas
DA'A= BE*I9 7 Bta(laC 7CCARS BnC;
BDe%.Ca!poC;
O
E9D 7 Bta(laC.
3e+iniremos una ta&la interna con n"l%neas en memoria, ms una l%nea de ca&ecera o
rea de tra&a9o!
@a cantidad de l%neas Gue especi+iGuemos en el OCCARS no limita el tama0o de la
ta&la, sino la cantidad de re$istros Gue se $uardan en memoria simultneamente!
)sto Bace necesario un especial cuidado al proponer el nDmero de l%neas, /a Gue un
OCCARS mu/ $rande supone un $ran $asto de recursos del sistema / un OCCARS
peGue0o un acceso mu/ lento, /a Gue necesita de un proceso de pa$inaci(n!
T.6 )lenado de una ta(la interna.
APPE9D J A0ade un re$istro a una ta&la interna con los valores Gue
ten$amos en el rea de tra&a9o!
APPE9D Binta(C.
C7))EC' J A0ade o suma la l%nea de ca&ecera! Sumar los campos de tipo
P,F,', si e;iste una l%nea en la ta&la con campos idnticos -tipo C. a los del
rea de tra&a9o!
)l pro&lema de esta instrucci(n es Gue es &astante lenta! Se puede sustituir
por las instrucciones R)A3 e '2S)R# o 5O3'FI!
Podemos llenar una ta&la interna con el contenido de una ta&la de &ase de
datos! Siempre Gue la ta&la interna ten$a la misma estructura Gue la ta&la
de &ase de datos!
SE)EC' U R71 Bta(C I9'7 'AB)E Bta(intC.
CURSO ABAP/4
T.3 7rdenar una ta(la interna.
Para clasi+icar una ta&la interna utili4amos S7R'!
S7R' Binta(C.
)sta instrucci(n reali4a una ordenaci(n por la estructura de la ta&la sin tener en
cuenta los campos P,',F!
Para ordenar por el campo-s. Gue necesitemos -sea del tipo Gue sea.J
S7R' Binta(C B? Bca!po1C .... Bca!po nC.
Si no se indica lo contrario, la ordenaci(n por de+ecto es ascendente!
S7R' !!! ASCE9DI9*. o DESCE9DI9*.
T.4 Procesa!iento de una ta(la interna.
Podemos recorrer una ta&la interna con la instrucci(n )77P ... E9D)77P"
)77P A' BintalC 3 F:ERE BcondC4.
E9D)77P.
)n cada iteraci(n coloca la l%nea de la ta&la Gue se est procesando en la l%nea de
ca&ecera!
Podemos restrin$ir el proceso de una ta&la con una condici(n K*)R)!
Si no e;iste nin$Dn re$istro de la ta&la Gue cumpla la condici(n especi+icada en
la clusula K*)R), la varia&le del sistema S?-SABRC ser distinta Gue 1!
3entro del @OOP, la varia&le S?-'ABIH contiene el %ndice de la entrada Gue est
procesando en ese momento!
#am&in es posi&le Bacer unJ
)77P A'Binta(C R71 BinicioC '7 B%inC.
O
E9D)77P.
3onde XinicioY / X+inY son %ndices de la ta&la interna!
T.< 'rata!iento de ni-eles de ruptura.
CURSO ABAP/4
)n el tratamiento de un @OOP podemos utili4ar sentencias de control de
ruptura=
A' IRS'.
O
E9DA'.
Reali4a las instrucciones Gue Ba/ a
continuaci(n
del
A# F'RS# para la primera entrada de la
ta&la!
A' )AS'.
O
E9DA'.
Reali4a las instrucciones Gue Ba/ a
continuaci(n
del
A# @AS# para la Dltima entrada de la
ta&la!
A' 9EF Bca!poC.
O
E9DA'.
Reali4a las instrucciones Gue Ba/ a
continuaci(n
del
A# 2)K para cada inicio de nivel de
ruptura!
A' E9D 7 Bca!poC.
O
E9DA'.
Reali4a las instrucciones Gue Ba/ a
continuaci(n
del
A# )23 para cada +inal de nivel de
ruptura!
Si utili4amos la instrucci(n SA1 dentro de un A# !!! )23A#, reali4ar la
suma de todos los campos P,',F de ese nivel de ruptura - para el clculo de su&totales
.!
)l resultado lo encontraremos en el rea de tra&a9o de la ta&la!
Ser necesario Gue la ta&la interna est ordenada en el mismo orden Gue la utili4aci(n
de los niveles de ruptura!
CURSO ABAP/4
As% la utili4aci(n con9unta de todas estas instrucciones serJ
S7R' Binta(C B? Bc1C Bc6C.
)77P A' Binta(C.
A' IRS' ... 3SA14 ... E9DA'.
A' 9EF BclC.
... 3SA14 O
E9DA'.
A' 9EF Bc6C.
... 3SA14 O
E9DA'.
.......... GProceso 9or!al de la ta(la
A' E9D 7 Bc6C.
... 3SA14 ...
E9DA'.
A' E9D 7 Bc1C.
... 3SA14 ...
E9DA'.
A' )AS' O 3SA14 O E9DA'.
E9D)77P.
Podemos ver un e9emplo prctico de tratamiento de niveles de ruptura en el BC
ABAP/4 = Pro"ra!!in" Reports Q-1N; Q-1Q.
T.# )ectura de entradas de una ta(la.
Podemos &uscar un re$istro concreto en una ta&la sin necesidad de recorrerla!
READ 'AB)E Binta(C.
Para ello, en primer lu$ar rellenaremos la l%nea de ca&ecera con la clave de
&DsGueda / lue$o Baremos el R)A3!
)l resultado de la &DsGueda lo tendremos en S?-SABRC.
SiJ SI"SABRC W 1 , la &DsGueda Ba sido positiva!
SiJ SI"SABRC XY 1 , no Ba encontrado el re$istro solicitado!
);isten otras e;tensiones a la instrucci(n R)A3 Gue necesitarn Gue la
ta&la est ordenada!
Podemos &uscar por clave conJ
READ 'AB)E Binta(C F:I' @E? Bcla-eC.
2o necesita llenar la l%nea de ca&ecera! Buscar desde el inicio de la ta&la
Gu carcter a carcter coincida con la clave!
CURSO ABAP/4
)s posi&le una &DsGueda aDn ms rpida con una &DsGueda &inaria!
READ 'AB)E Binta(C FI': @E? Bcla-eC BI9AR? SEARC:.
Ana lectura directa de un re$istro de la ta&la la podemos reali4ar conJ
READ 'AB)E Binta(C I9DEH Bnu!C.
T.N 1odi%icando ta(las internas.
Ana ve4 llena la ta&la interna tenemos la posi&ilidad de modi+icar los
datos con una serie de sentencias ABAP/6!
17DI? J podemos so&reescri&ir el contenido de la entrada XiY con el
contenido de la l%nea de ca&ecera!
17DI? Binta(C 3I9DEH BiC4.
3entro de un @OOP, la clusula '23)M es opcional! Por de+ecto ser el
contenido de la varia&le SI"#AB'M!
I9SER' J a0ade una entrada delante de la entrada XiY con el contenido de
la l%nea de ca&ecera!
I9SER' Binta(C 3I9DEH BiC4.
DE)E'E J para &orrar una entrada de una ta&la!
DE)E'E Binta(C 3I9DEH BiC4.
Otras instrucciones de mane9o de ta&lasJ
'niciali4ar el rea de tra&a9o o l%nea de ca&ecera!
C)EAR Binta(C.
'niciali4ar -&orrar. el contenido de una ta&la!
RERES: Binta(C.
CURSO ABAP/4
@i&erar el espacio ocupado por una ta&la en memoria!
REE Binta(C.
Para o&tener in+ormaci(n so&re una ta&la interna!
DESCRIBE 'AB)E Bta(C
)I9ES BcontadorIentradasC
7CCARS B-alorIoccursC.
CURSO ABAP/4
15 Su(rutinas
15.1'ipos de su(rutinas.
);isten 3 tipos de su&rutinas o su&pro$ramas!
Internas= )l Su&pro$rama / la llamada a ste estn en el mismo
pro$rama!
E,ternas= )l Su&pro$rama / la llamada a ste estn en pro$ramas
distintos!
Bi(lioteca de %unciones 31dulos de %uncin4= Funciones e;ternas al
pro$rama con inter+ace de llamada claramente de+inido!
15.6 Su(rutinas internas.
PER7R1 B!oduloC @lamada a
un procedimiento o su&pro$rama!
7R1 B!oduloC Su&pro$rama!
E9D7R1
)l pro$rama principal / el procedimiento se podrn comunicar mediante parmetros!
P
PER7R1 B!oduloC ASI9* -arl -ar6 ...
P
7R1 B!oduloC ASI9* -arl -ar6 ...
P
E9D7R1.
@os parmetros pueden ser pasados por -alor -). o por re%erencia -)/S.! Por
de+ecto sern por re+erencia!
Si Gueremos utili4ar parmetros por valor, la ca&ecera del m(dulo serJ
7R1 B!oduloC ASI9* >A)AE 3-ar14
...
E9D7R1.
#anto las varia&les de+inidas al inicio del report como las ta&las son $lo&ales a todas
las su&rutinas / por tanto accesi&les en cualGuier momento!
CURSO ABAP/4
Si encontramos al$una instrucci(n del tipo C*)C[ o )M'# Gue si$ni+iGue salir de
un cierto FOR5, previamente e9ecutar el )23FOR5 / por tanto se pasarn los
parmetros Gue ten$a el procedimiento!
#am&in es posi&le pasar como parmetro ta&las internas!
PER7R1 B!oduloC 'AB)ES Binta(C ...
ASI9* B-arlC B-ar6C ...
7R1 B!oduloC 'AB)ES Binta(C ...
ASI9* B-arlC ...
)speci+icaremos las ta&las siempre antes Gue el resto de parmetros!
)n este caso s(lo se pueden Bacer operaciones con! +ilas enteras, pero no nos
podremos re+erenciar so&re campos concretos de la ta&la o Bacer CO@@)C#S, /a
Gue no se conocer la estructura de la ta&la!
Podemos pasar como parmetros re$istros de datos o reas de tra&a9o con J
PER7R1 B!duloC ASI9* Bre"C.
7R1 B!oduloC ASI9* Bre"C S'RAC'ARE BestructuraC.
E9D7R1.
)s decir con la clusula S#RAC\'\AR) podemos pasar la estructura de una ta&la,
entonces podemos acceder a campos de una ta&la pasada como parmetro conJ
PER7R1 B!oduloC 'AB)ES Binta(C ASI9* B-ar1C O
7R1 B!oduloC 'AB)ES Binta(C SMIMRAC'ARE
BestructuraC.
ASI9* B-ar1C O
E9D7R1.
3entro de cada su&rutina es posi&le declarar datos con la sentencia 3A#A, Gue s(lo
sern visi&les dentro del m(dulo donde est declarado! ABAP/6 crear un espacio
para esas varia&les Gue ser li&erado al salir del m(dulo. Por tanto se podrn utili4ar
varia&les con el mismo nom&re Gue varia&les $lo&ales, aunGue el valor Gue ten$an
ser siempre el local en el m(dulo!
@as ta&las de &ase de datos son $lo&ales a todo el pro$rama, si se Guiere utili4ar
una ta&la localmente en una su&rutina, se de&e declarar con )7CA), al inicio de la
su&rutina, en ve4 de con #AB@)S!
CURSO ABAP/4
)7CA) Bta(laC.
15.3 Su(rutinas E,ternas $ 1dulos de %uncin.
Si Gueremos llamar a una su&rutina Gue est en un pro$rama distinto utili4amosJ
PER7R1 Bsu(C3Bpro"ra!aC4 ASI9* O
#am&in e;iste la posi&ilidad de a0adir porciones de c(di$o del tipo include con
la instrucci(nJ
I9C)ADE BreportC.
)n el c(di$o del include no utili4aremos la sentencia R)POR#!!!
@os !dulos de %uncin son m(dulos especiales $uardados en una li&rer%a
central, / a$rupados por la +unci(n Gue reali4an! Principalmente se caracteri4an
por un inter%ace de%inido / porGue reali4an trata!iento de e,cepciones.
Se caracteri4an por un inter+ace de+inido /a Gue su dise0o +acilita el paso de
parmetros tanto de entrada como de salida!
CA)) A9C'I79 B%uncionC.
EHP7R'I9* BparIEC D B-alor-C
I1P7R'I9* BparISC D B-alorIretC
'AB)ES Bta(IuncC D Bta(IPro"C
EHCEP'I79S Be,cepC D B-alorC
3onde en el )MPOR#2C especi+icamos los parmetros de entrada, en el
'5POR\'\'2C -opcional. el resultado o retorno de la +unci(n / en #AB'!)S
-opcional. las ta&las, Gue se utili4an como parmetros!
@os m(dulos de +unci(n tam&in se caracteri4an por reali4ar un tratamiento de
e;cepciones! )n el inter+ace de los m(dulos de +unci(n se indican los valores, de
e;cepciones para el retorno del m(dulo, Gue posteriormente con el SI"SABRC se
pueden compro&ar!
)l c(di$o de la +unci(n puede activar e;cepciones mediante las instruccionesJ
1ESSA*E O. RAISI9* Be,cepcionC
o
RAISE Be,cepcionC
CURSO ABAP/4
Para acceder a la &i&lioteca de m(dulos de +unci(n es posi&le utili4ar el comando
S*O``\ FA2C#'O2T desde el editor de Pro$ramas o desde el tratamiento de
m(dulos de +unci(n del menD :erra!ientas -C CASE -C desarrollo -C Actuali.ar
pro"ra!as -C 1dulos de %uncin; desde donde podremos adems crearlos /
mantenerlos!
15.4 Interca!(io de datos !ediante la !e!oria "lo(al de SAP.
)s posi&le intercam&iar datos entre reports distintos -llamados desde instrucciones
SAB5'#. a travs de la memoria de SAP!
Para $ra&ar en memoriaJ
EHP7R' Bca!poC!!! I9'7 1E17R?.
Para recuperar de memoriaJ
I1P7R' Bca!poC!!! R71 1E17R?.
CURSO ABAP/4
11 Diccionario de Datos. Co!o leer $ procesar ta(las de la (ase
de datos.
11. 1 Diccionario de datos.
)l diccionario de datos -3!3!. es una +uente de in+ormaci(n centrali4ada!
@os distintos o&9etos del 3iccionario de datos estn estructurados enJ
Campo )lementos de datos 3ominio
@os ele!entos de datos descri&en el si$ni+icado de un campo independientemente
de las ta&las donde se utilicen! )s decir, tienen un carcter semntico!
@os do!inios descri&en el campo de valores posi&les! #endrn un carcter tcnico!
)9emplo J
#AB@ASJ S[B',S[5' !!!
CA5POJ S#)M#
)@)5!3A#OSJ S#)M'\ " S[B'
3O5'2'OJ #)M#71
FOR5A#O '2#)R2OJ #ipo C de 71 Posiciones
#endremos a nuestra disposici(n un sistema de in+ormaci(n del diccionario de datos,
In%o-S$ste!; Gue proporciona in+ormaci(n so&reJ contenido de las ta&las, carnpos,
dominios, pro$ramas, Petc!
);isten diversos tipos de ta&las"!)n el c(di$o del include no utili4aremos la sentencia
R)POR#!!!
-
#a&las 'RA9SP -transparentes.J #a&las nominales relacionales -SQ@.!
" \'\a&las P77)J \'\a&las SAP Gue se $uardan 9unto a otras
ta&las SAP en una Dnica ta&la +%sica de B33! 5e9orando el acceso a los
re$istros!
"
#a&las C)AS'ERJ varias ta&las Gue se $uardan en un cluster de B33!
Se $uardan re$istros de varias ta&las SAP con la misma clave cluster, en
el mismo cluster +%sico de la &ase de datos!
CURSO ABAP/4 Pgina 43
#a&la
)l diccionario de datos se dice Gue es inte$rado / activo! Inte"rado porGue inte$ra
el 3!3! con el Screen"Painter, pro$ramas ABAP, 3/npros, Super+icies CAA P /
Acti-o porGue si modi+icamos al$Dn o&9eto del diccionario de datos, el sistema
automticamente re$enera el ]#ime Stamp^ de los pro$ramas Gue utilicen esos
o&9etos!
11.6 )os datos en el siste!a SAP.
Podemos clasi+icar los datos del sistema en datos maestros, datos de movimientos; /
datos del sistema!
Datos !aestros= Son datos Gue no se modi+ican mu/ a menudo!
)9J 5ateriales, Cuentas, Bancos, Clientes!!!
Se almacenarn en ta&las transparentes!
Datos de !o-i!ientos= 3atos mu/ voltiles / con $ran volumen de
$eneraci(n!
)9J Facturas, Pedidos!!!
Se suelen $uardar en ta&las tipo C@AS#)R todos ellos con +ormato
parecido -documentos.!
Datos del siste!a o de control= 5ucBas ta&las con pocos datos! Se suelen
$uardar en ta&las de tipo POO@!
11.3Instrucciones SK) de ABAP/4.
ABAP/6 tiene un su&con9unto de sentencias SQ@ para su aplicaci(n so&re ta&las
de la &ase de datos SAP!
Ostas sonJ
SE)EC'; I9SER'; APDA'E; 17DI?; DE)E'E; C711I'
F7R@; R7))BAC@ F7R@.
Adems de las varia&les del sistemaJ
S? -SABRC= C(di$o de retorno de una operaci(n!
S9-DBC9'= Cantidad de re$istros a+ectados por la operaci(n procesada!
11.3.1 SE)EC'.
@a sentencia S)@)C# ser la instrucci(n +undamental para leer in+ormaci(n de la
&ase de datos!
CURSO ABAP/4 Pgina 44
" 7tras lecturas =
Podemos leer una ta&las de &ase de datos / simultneamente llenar una ta&la interna
con el resultado de la lectura!
SE)EC' U R71 Bta(C I9'7 'ABI;E Binta(C 3F:ERE BcondV4
@lena la ta&la interna Xinta&Y macBacando los re$istros Gue pudiera tener
sta! Si Gueremos Gue respete los re$istros Gue ten%a la ta&la interna antes de
reali4ar el S)@)C# tendremos Gue utili4arJ
SE)EC' U R71 Bta(C APPE9DI9* 'AB)E Binta(C
3F:ERE BcondC4.
Podemos indicar un orden en el proceso de selecci(n de re$istros!
SE)EC' U ... 7RDER B? Bca!polC Bca!po6C ...
Si Gueremos seleccionar un re$istro para &loGuearlo de posi&les
modi+icaciones!
SE)EC' SI9*)E 7R APDA'E U R71 Bta(C.
11.3.6. I9SER'.
@a sentencia I9SER' permite introducir re$istros sencillos o el contenido de una
ta&la interna en una &ase de datos SAP!
I9SER' Bta(C.
Cra&ar en la B33 el re$istro de ca&ecera! Por tanto previamente a esta instrucci(n
moveremos los valores Gue Gueremos introducir so&re el rea de tra&a9o de la ta&la!
Si S?-SABRC D 1
Re$istro insertado!
Si S?-SABRC Y 1
@a clave del re$istro Gue Guer%amos insertar /a e;ist%a en la
ta&la!
#am&in es posi&le introducir datos desde una ta&la interna.
I9SER' Bta(C R71 'AB)E Binta(C
CURSO ABAP/4 Pgina 45
Si S?-SABRC D 1
Re$istros insertados!
Si e;iste al$Dn re$istro en la &ase de datos con clave i$ual a al$Dn re$istro de la ta&la
interna, se producir un error de e9ecuci(n del pro$rama!
@a ta&la interna podr tener la misma estructura Gue la ta&la de &ase de datos
utili4ando I9C)ADE S'RAC'ARE en su declaraci(n!
11.3.3. APDA'E.
@a sentencia APDA'E permite modi+icar el contenido de uno o varios
re$istros!
APDA'E Bta(C.
5odi+ica el re$istro de la &ase de datos Gue est especi+icado en el re$istro de
ca&ecera!
Si Gueremos modi+icar el contenido de ms de un re$istro a la ve4J
APDA'E Bta(C SE' Bca!poC D B-alorC F:ERE BcondC.
Con este AP3A#), todos los re$istros Gue cumplan XcondY modi+icarn el
contenido del XcampoY por XvalorY!
#am&in es posi&le utili4ar la clusula S)# con
Bca!poC D Bca!poC E B-alorC
o
Bca!poC D Bca!poC - B-alorC
)s posi&le modi+icar re$istros desde una ta&la internaJ
APDA'E Bta(C R71 'AB)E Binta(C.
Si el sistema no puede actuali4ar un re$istro, el proceso no +inali4ara sino Gue
continuar con el si$uiente re$istro!
Si S?-SABRC D 5 #odos los re$istros modi+icados!
Si S?-SABRC W 4 2o todos los re$istros Ban sido modi+icados!
)n S?-DBC9' #endremos la cantidad de re$istros modi+acados!
11.3.4 17DI?.
CURSO ABAP/4 Pgina 46
@a sentencia 17DI? se utili4ar cuando no estemos se$uros si utili4ar un
'2S)R# o un AP3A#)! )s decir, cuando no sepamos con certe4a si un
re$istro e;iste o no, para modi+carlo o a0adirlo!
17DI? Bta(C.
17DI?Bta(C R71 'AB)E Binta(C
En caso de Gue sepamos si e;iste o no un re$istro, por e+icacia utili4aremos
'2S)R#s o AP3A#)s!
11.3.< DE)E'E.
Para reali4ar &orrados de datos se aplica la sentencia DE)E'E.
DE)E'E Bta(C.
Borrar el re$istro Gue especi+iGuemos en el rea de tra&a9o!
Para &orrar ms de un re$istro -todos los Gue cumplan una cierta condici(n.!
DE)E'E R71Bta(C F:ERE BcondC.
Podemos &orrar de B33 todos los re$istros de una ta&la interna!
DE)E'E R71 Bta(C R71 'AB)E Binta(C.
Si S?-SABRC D 1
#odos los re$istros Ban sido &orrados!
Si S?-SABRC D 6
2o todos los re$istros Ban sido &orrados!
)n S?-DBC9'
#endremos la cantidad de re$istros &orrados!
11.4 7tros aspectos de la pro"ra!acin de BDD.
)l control del !andante es automtico! Siempre se procesar el mandante en uso!
Si Gueremos controlar manualmente el mandante en una instrucci(n de lectura o
actuali4aci(n utili4aremos la clusula C)IE9' SPECIIED! )s decir, si
Gueremos o&tener o modi+icar datos de un cliente di+erente al de entrada!
@as instrucciones '2S)R#, 3)@)#), 5O3'FI / AP3A#) se utili4arn en la
medida Gue sea posi&le el menor nDmero de veces so&re ta&las SAP! Siempre se
CURSO ABAP/4 Pgina 47
intentar insertar o modi+icar datos mediante transacciones estndares SAP o v%a
BatcB 'nput! Ia Gue no siempre es +cil conocer la comple9a estructura de toda la
&ase de datos SAP / as% nos ase$uramos no producir al$una inconsistencia en la
&ase de datos!
)l Blo8ueo de o(&etos= Para &loGuear un re$istro en el momento de una
actuali4aci(n so&re ste, utili4amos 7R APDA'E.
SE)EC' SI9*)E 7R APDA'E U R71 Bta(C.
Si Gueremos &loGuear todos los o&9etos Gue estn involucrados en una actuali4aci(n,
ser necesario utili4ar el MSAP )ocWin" 'ec+ni8ueM. Cada aplicaci(n tiene mucBos
m(dulos de +unci(n para &loGuear o&9etos! Para &uscarlos ser necesario ir al
mantenimiento de m(dulos de +unci(n / &uscar por la clave Uen8ueueU o
Ude8ueueU.
Actuali.acin de la (ase de datos o Recuperacin=
Para +inali4ar una unidad de procesamiento l($ico 3)AF4 de &ase de datos se utili4a
un C711I' F7R@; Gue reali4a un AP3A#) +%sico en la &ase de datos, Baciendo
irrevoca&le cualGuier modi+icaci(n en la &ase de datos!
Si deseamos desBacer todas las operaciones reali4adas so&re la &ase de datos desde el
Dltimo CO55'# KOR[, reali4aremos un R7))BAC@ F7R@.
C+e8ueo de autori.aciones=
@as instrucciones SQ@ de SAP no reali4an nin$una veri+icaci(n de autori4aciones lo
cual resulta peli$roso /a Gue todo el mundo puede acceder a todos los datos Gue
acceda a un report!
)s responsa&ilidad del pro$ramador el compro&ar si un usuario est autori4ado a
acceder a esa in+ormaci(n!
Para cBeGuear las autori4aciones de un determinado usuario utili4aremos la
instrucci(n AA':7RI'?-C:EC@.
AA'7RI'?-C:EC@ 7BXEC' Bo(&etoIdeIautori.aciC
ID BCa!polC IE)D-B%lC
ID BCatupo6C IE)D B%6C
ID BCa!po3C DIX11?.
3onde XCampo-n.Y son los campos de autori4aci(n del o&9eto / X+-n.Y es un valor
posi&le de autori4aci(n!
)l parmetro 3A55I indicar Gue no Bace +alta veri+icar ese campo!
CURSO ABAP/4 Pgina 48
Si S?-SABRC D 1
Asuario autori4ado!
Si S?-SABRC BC 1
Asuario 2O autori4ado!
)n S?-DBC9'
#endremos la cantidad de re$istros &orrados!
)9emploJ
=eri+icar el o&9eto de autori4aci(n ]AcreedorJ Autori4aciones para
sociedades^ -FR@FA8RBA[., para sa&er si el usuario puede e+ectuar la operaci(n
=isuali4ar -18., so&re proveedores de la sociedad 1118!
AA'\*OR'#I C*)C[ OBN)C# EFR@FA8RBA[F
'3 EAC#=#F F')@3 E18F
'3 EBA[RS EF')@3 E1118F!
Para o&tener una documentaci(n ms e;Baustiva so&re el +uncionamiento del
AA#OR'#I"C*)C[, ver la docu!entacin 79)I9E del editor de ABAP/6!
Para o&tener in+ormaci(n so&re el mecanismo de autori4aciones de SAP, ver el curso
CA515 El concepto de autori.aciones SAP.
Sentencias en SK) nati-o=
Podemos e9ecutar cualGuier sentencia de SQ@ permitida por el $estor de &ase de
datos so&re el Gue corra el sistema R/3, utili4ando EHEC SK)! )n este caso las
instrucciones de &ase de datos no estn restrin$idas al su&con9unto SAP"SQ@ Gue
Bemos estado estudiando a lo lar$o de este cap%tulo!
Cracias al inter+ace )M)C SQ@ tam&in es posi&le acceder a datos e;ternos a SAP,
desde un pro$rama en ABAP/6!
Sinta;isJ
EHEC SK).
B Instrucciones SK)-9ati-asC.
E9DEHEC.
#enemos Gue tener en cuenta en la utili4aci(n de SQ@ nativo, Gue no todas las &ases
de datos SAP pueden ser accedidas con este sistema, /a Gue no todas tienen una
representaci(n +%sica de ta&la en el $estor de &ase de datos! Por e9emplo las ta&las de
CURSO ABAP/4 Pgina 49
tipo POO@ / C@AS#)R no son ta&las reales de &ase de datos, aunGue sean
consideradas como tales / mantenidas por el diccionario de datos!
Podemos encontrar in+ormaci(n complementaria so&re la utili4aci(n del inter+ace
)M)C SQ@ en el Cap. 1 del !anual GABAP/4 Special 'ec+ni8uesY.
CURSO ABAP/4 Pgina 50
16 Bases de Datos )"icas
16.1ZKue es una Base de datos l"ica [
Para o&tener datos en un pro$rama e;isten dos posi&ilidadesJ
" Pro$ramar la lectura de datos de la &ase de datos en el mismo pro$rama
con la instrucci(n S)@)C#!
" 3e9ar Gue otro pro$rama de lectura -B33 l($ica. lea los datos / se los
proporcione en la secuencia apropiada!
)n un report se pueden simultanear los dos tipos de selecci(n de datos!
Ana &ase de datos l($ica 3)DB4 proporciona una visi(n l($ica de las ta&las +%sicas,
pudiendo relacionar ta&las entre si! @as @3B simpli+ican la pro$ramaci(n de reports
o+reciendo accesos de lectura, veri+icaci(n de autori4aciones / selecciones
estandari4adas!
@a comunicaci(n entre el pro$rama de lectura / el report Gue utili4a la &ase de datos
l($ica se reali4a mediante los eventos PA' $ *E'!
Por re$la $eneral utili4aremos &ases de datos l($icas Gue /a e;isten en el sistema,
aunGue tam&in es posi&le crear nuevas / modi+icarlas! -#ransacci(n A)DB.!
Si utili4amos @3B /a creadas en el sistema, Dnicamente tendremos Gue utili4ar un
evento para reco$er la in+ormaci(n Gue el pro$rama de lectura -Gue /a e;iste. nos va
dando!
Si por el contrario nos decidimos a crear una @3B con la transacci(n A@3B, el
sistema $enerar todo lo necesario para utili4ar la &ase de datos l($ica, inclu/endo el
pro$rama de lectura!
16.6Atili.acin de las Bases de datos l"icas.
@as &ases de datos l($icas tienen un nom&re de tres caracteres, siendo el Dltimo
carcter el m(dulo +uncional al Gue va diri$ido!
)9emplo J
[3F J clientes F8
)n el pro$rama Gue va a utili4ar &ases de datos l($icas ser necesario especi+icar en
los atri&utos del pro$rama la @3B Gue va a ser utili4ada! I en el c(di$o simplemente
utili4aremos el evento *E'!
*E' Bta(la BDD1C.
Bsentencias e-entoC
CURSO ABAP/4 Pgina 51
OO
*E' Bta(la BDD6C.
Bsentencias e-entoC
OO
5ediante el C)# dispondremos de un re$istro de la &ase de datos Gue
especi+iGuemos, siempre / cuando esta ta&la est dentro de la estructura de la &ase de
datos l($ica!
Para comunicar el pro$rama de lectura con nuestro report se utili4a el PA', Gue
suministra el re$istro de la B33 Gue especi+iGuemos, previamente Ba&r reali4ado el
S)@)C#!
PA' Bta(laBDDC.
Ana &ase de datos l($ica tiene tres componentes +undamentales J
" Ana de+inici(n de la estructura de las ta(las Gue utili4a!
" Ana pantalla de seleccin de los datos a leer! -S)@)C#"
OP#'O2S.
" An pro"ra!a de lectura de datos de la B33! -PA#.!
Estructura de la BDD
CURSO ABAP/4 Pgina 52
@D
Pantalla de Seleccin
Pro"ra!a de lectura
7R1 PA'I )A1
SE)EC' U R71 )AI
PA'I )A1.
E9DSE)EC'.
E9D7R1. Report
7R1 PA'I )BI.
SE)EC' U R71 )BI *E'
PA'I )B1. )A1.
O.O.
E9DSE)EC'.
*E'
E9D7R1. )B1.

OOO
7R1 PA'I BSI@. *E'
SE)EC' U R71 BSI@. BSI@.
OOO
PA' BSI@.
E9DSE)EC'.
E9D7R1.
#am&in e;iste la posi&ilidad de utili4ar el eventoJ
*E' Bta(BDDC )A'E.
PPP!
)ste evento se produce cuando se Ban procesado todas las entradas de ta&las su&ordinadas a
un re$istro de datos de una ta&la, / antes de Gue el sistema solicite la si$uiente entrada de la
misma ta&la -mismo nivel 9errGuico.!
);iste una instrucci(n de salto o +inali4aci(n de lectura de una ta&la, REXEC'.
REXEC'.
)sta instrucci(n sale del proceso del re$istro en curso / continua con el proceso del si$uiente
re$istro dentro del mismo nivel de 9erarGu%a!
Si indicamos un nom&re de ta&la, lo Gue Bar ser continuar con el si$uiente re$istro de la
ta&la especi+icada! Bta(laC no puede ser un nivel de 9erarGu%a ms pro+undo Gue el actual!
CURSO ABAP/4 Pgina 53
@FA8
@FB8
@FC8
BS'[
REXEC' Bta(laC.
)n principio, Dnicamente utili4aremos la sentencia C)# , /a Gue utili4aremos @3B Gue /a
e;isten en el sistema!
Si necesitamos crear una nueva de&ido a Gue se Ban de desarrollar mucBos reports con una
estructura de lectura mu/ similar, / esta no est en nin$una &ase de datos l($ica,
utili4aremos la transacci(n A@3B! -Para ms in+ormaci(n so&re los pasos a se$uir ver Cap=
15; 11 $ 16 del BC1Q5-ABAP/4 Inter%ace de datos o Cap= 1< del ABAP/4 Pro"ra!in"
Reports.
CURSO ABAP/4 Pgina 54
CURSO ABAP/4 Pgina 55
13. ields *roups
)n el cap%tulo ? /a vimos Gue cuando Gueremos ordenar //o controlar las rupturas de
campos en un report, es necesario utili4ar las ta&las internas! Sin em&ar$o e;iste otra
utilidad del ABAP/6 Gue nos +acilita estos procesos de ordenaci(n / rupturas, en el
caso de Gue sean comple9os!
Supon$amos un listado en el Gue las l%neas sean de mu/ distinto tipo, por e9emplo, un
listado de proveedores con datos $enerales de este, -direcci(n!!! . / las ventas Gue nos
Ban reali4ado cada uno de los proveedores, ordenados por distintos campos / con
su&totales! )n este caso no tendremos ms remedio Gue utili4ar diversas ta&las
internas, una para cada tipo de l%nea, ordenar estas ta&las internas / procesarlas
adecuadamente!
Para casos como este, ABAP/6 nos o+rece la tcnica especial de los IE)D
*R7APSMs.
)sta tcnica consiste en crear con9untos de datos intermedios! -]intermediate
datasets^.!
Se de+inen los di+erentes re$istros con idntica estructura, dentro de mismo tipo de
re$istro -F')@3 CROAP.! Ser necesario de+inir todos los F')@3 CROAP al inicio
del report con J
IE)D-*R7AP = :EADER; B%I"I1C; B%I"I6C...
)l F')@3 CROAP :EARDER es +i9o! Contendr los campos por los cuales
Guerernos ordenar el con9unto de datos intermedio!
Para determinar Gue campos pertenecen a cada F')@3 CROAP, utili4amos la
instrucci(n J
I9SER' Bca!po1C Bca!po6C.....Bca!poInC I9'7 :EADER.
I9SER'B ca!po1C Bca!po6C.....Bca!poIn C I9'7 B%I"I1C.
An campo podr estar dentro de varios F')@3 CROAPS!
Para llenar con datos los con9untos de datos intermedios se utili4a la
instrucci(nJ
EH'RAC' B%I"I 1C.
)sta instrucci(n asi$na los contenidos de los campos especi+icados en el '2S)R# al
F')@3 CROAP indicado!
)n cada )M#RAC#, el sistema reali4a automticamente una e;tracci(n de los datos
del F')@3 CROAP *)A3)R, estos precedern siempre a los datos del F')@3
CROAP so&re el Gue reali4amos el )M#RAC#!
CURSO ABAP/4 Pgina 56
3atos *)A3)R 3atos X+ $Y
Si al$Dn campo de la ca&ecera no se llena, tomar el valor 1, de +orma Gue el
proceso de ordenaci(n +uncione correctamente!
=eamos el +uncionamiento de los F')@3 CROAP\s con un e9emploJ
Para reali4ar un listado de partidas de proveedores, ordenado por c(di$o de
proveedor / nDmeros de documentos de las di+erentes partidas!
#AB@)SJ @FA8,BS'[!
F')@3"CROAPSJ *)A3)R, 3'R)CC'O2, '5POR#)S!
'2S)R# @FA8"@'F2R BS'["B)@2R '2#O *)A3)R!
'2S)R# @FA8"2A5)8 @FA8"S#RAS @FA8"PS#@Q @FA8"OR#18
'2#O 3'R)CC'O2!
'2S)R# BS'["35B#R '2#O '5POR#)S!
T"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
C)# @FA8!
)M#RAC# 3'R)CC'O2!
C)# BS'[!
)M#RAC#'5POR#)S!
T"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
)n cada )M#RAC# se va llenando el con9unto de datos intermedios!
)M#RAC# 3'R)CC'O2
)M#RAC# 3'R)CC'O2
PRO=))3OR8 R'=)R@A23 3'ACO2A@ :8> BARC)@O2A
)M#RAC# '5POR#)
)M#RAC# '5POR#)
PRO=))3OR8 3OC8 811!111
As% el dataset se ir llenandoJ
CURSO ABAP/4 Pgina 57
PRO=))3OR8 R'=)R@A23 3'ACO2A@ :8> BARC)@O2A
PRO=))3OR8 3OC8 811!111
PRO=))3OR8 3OC 11!111
PRO=))3OR SAP A!C! PAB@O P'CASSO >11 5A3R'3
PRO=))3OR 3OC8 71!111
PRO=))3OR 3OC 8!11!111
Ana ve4 e;tra%dos los datos, los podemos procesar de +orma similar a como lo
Bac%amos en las ta&las internas!
)n primer lu$ar ordenaremos el ]dataset^ con la instrucci(n S7R'! @a
ordenaci(n se reali4ar por los campos Gue indica el *)A3)R
Posteriormente podemos procesar los datos en un )77P!!! E9D)77P.,
pudiendo utili4ar las instrucciones de ruptura por campos A' 9EF / A' E9D 7!
#am&in podemos utili4ar estos eventos por inicio / +inal de re$istro -F')@3"CROAP.!
Adems podemos compro&ar si para un re$istro, e;isten re$istros asociados de
otro tipo, con el evento J
A' B%I"1C FI': B%I"6C.
O
E9DA'.
Por e9emploJ si e;isten re$istros de importes para un re$istro de direcci(n,
imprimir en el report los datos de direcci(n!
A# 3'R)CC'O2 K'#* '5POR#)S!
KR'#)J @FA8"2A5)8!!!!!
)23A#!
#am&in podemos contar o sumar por campos con las instruccionesJ
C9' Bca!poC.
SA1 Bca!poC.
As% podr%amos completar nuestro listado de proveedores del e9emplo conJ
)23"OF"S)@)C#'O2!
SOR#!
@OOP!
A# 3'R)CC'O2 K'#* '5POR#)S!
KR'#)J @FA8"2A5)8, @FA8"S#RAS,
@FA8"PS#@Q, @FA8"OR#18!
)23A#!
A# '5POR#)S!
KR'#)J BS'["B)@22R, BS'["35B#R!
)23A#!
A# )23 OF @FA8"@'F2R!
CURSO ABAP/4 Pgina 58
S['P!
KR'#)J ]Suma proveedor^, @FA8"@'F2R
SA5 -BS'["35B#R.
S['P!
)23A#!
)23@OOP!
14. or!ateando un listado
CURSO ABAP/4 Pgina 59
ABAP/6 tiene una serie de instrucciones especialmente dise0adas para Gue la
$eneraci(n de reports sea ms sencilla!
14.1 or!ato de los datos de salida.
Ia Bemos visto en el cap%tulo > un resumen de las sentencias de salida de reports
ms &sicas!
FRI'E /Bo%%setC3BIon"C4 GBdatos a -isuali.arCY.
A)I9E /Bo%%setC3BIon"C4 GBdatos a -isuali.arCY.
S@IP BnC.
9EF-PA*E.
Adems de estas sentencias +undamentales tenemos a nuestra disposici(n otras
posi&ilidadesJ
Para escri&ir un campo, varia&le o literal 9ustamente de&a9o de otros sin tener
Gue calcular la columna, utili4amos la clusula A9DER del KR'#)!
FRI'E Bca!po6C A9DER Bca!po 1C.
Si Gueremos especi+icar la columna de un te;to en +orma de varia&le
utili4amos!
P7SI'I79 Bcolu!naC.
Si Gueremos ir a una determinada l%nea dentro de la misma p$ina!
S@IP '7 )I9E BnC.
Cuando utili4amos la instrucci(n KR'#) con nDmeros empaGuetados, el
sistema trunca por la i4Guierda en caso de ser necesario -de9a un T como indicador de
Gue Ba truncado. / rellena con &lancos si so&ra espacio! #enemos Gue tener cuenta Gue
si es ne$ativo el si$no ocupar una posici(n! Si se especi+ican los decimales con la
clusula 3)C'5A@S del 3A#A, el punto o coma decimal tam&in ocupar una
posici(n! )l si$no decimal -punto o coma. estar determinado por los valores del
re$istro de usuario!
)9emploJ
CURSO ABAP/4 Pgina 60
3A#A 2A5)RO #IP) P 3)C'5A@S =A@A) "8367:!
KR'#) 2A5)RO!
8!36,7:"
/ si no ca&e el nDmeroJ
KR'#) -:. 2A5)RO!
T6,7:"
Podemos +ormatear la salida de un nDmero empaGuetado!
)vitamos Gue apare4ca el si$no con 97-SI*9.
FRI'E Bca!poC 97-SI*9.
Para visuali4ar importes correctamente dependiendo de la moneda del importe,
usaremos el CARRE9C?=
FRI'E Bca!poIi!porteC CARRE9C?B!onedaC.
Si se desea +ormatear la salida de un campo se$Dn una cierta mscara
utili4aremos el parmetro ASI9* EDI' 1AS@ GB!ascaraCY de la instrucci(n
KR'#)!
FRI'E Bca!poC ASI9* EDI' 1AS@YB!ascaraCY.
@os caracteres de la mscara pueden serJ
]R ] J un carcter del campo a +ormatear!
]J^ J un separador! Puede ser cualGuier carcter especial menos el ]"]!
]@@^ J 9usti+ica por la i4Guierda -valor por de+ecto.! -Al principio de la
mascara.! mascara!
]RR^ J 9usti+ica por la derecBa! -Al principio de la mascara.!
)9emploJ
KR'#) /->. SI"AQ)'# 'NS'2C )3'# 5AS[ ]RJRJR^!
Si Gueremos suprimir los ceros iniciales de una cadena de caracteres BaremosJ
FRI'E Bca!poICaracterC 97-\ER7.
Para +ormatear +ecBas es posi&le reali4arJ
FRI'E Bca!poIec+aC DD/11/??.
FRI'E Bca!poIec+aC 11/DD/??.
FRI'E Bca!poIec+aC DD/11/????.
FRI'E Bca!poIec+aC 11/DD/????.
Podemos modi+icar los atri&utos de pantalla para un campo!
CURSO ABAP/4 Pgina 61
7R1A' I9'E9SIIED 79/7.
7R1A' I9>ERSE 7/79.
7R1A' I9PA' 7/79.
7R1A' C7)7R n.
7R1A' RESE'.
=er la docu!entacin 7nline del editor ABAP/6 para o&tener in+ormaci(n mas
detallada so&re los usos / sinta;is posi&les de esta instrucci(n!
14.6 or!ato de p/"ina.
#am&in Ba/ un $rupo de instrucciones destinadas a dar +ormato a la salida del
report, /a sea por pantalla o por impresora!
Podemos Bacer tratamientos por inicio / +in de p$ina con los eventosJ
'7P-7-PA*E $ E9D-7-PA*E.
)23"OF"PAC) no se e9ecutar si el salto de p$ina se produce con un 9EF-PA*E.
Si no Gueremos Gue la ca&ecera del report sea la estndar de SAP, /a
Gue la Gueremos controlar nosotros directamente en el evento #OP"OF"PAC),
utili4aremosJ
REP7R' B\,,,,,,,C 97 S'A9DARD PA*E :EADI9*.
)l +ormato de la p$ina de report se de+ine tam&in desde la instrucci(n
REP7R'.
REP7R' B\,,,,,,,C )I9E-SI\E BnC Anc+o de lnea.
)I9E-C7A9' Bn3!4C )neas por p/"ina 3n4.
Si se desea se
pueden
reser-ar lneas para un
pie de p/"ina 3!4.
PA*E-C7A9' BnC. 9o. !/,i!o de p/"inas.
Podemos impedir Gue con un salto de p$ina se corten l%neas Gue
pertene4can a una a$rupaci(n de l%neas con si$ni+icado l($ico propio! Con la
instrucci(n R)S)R=) reservamos un nDmero de l%neas!
RESER>E BnC )I9ES.
)sta instrucci(n se colocar 9usto antes del Hrite Gue se Guiere ]reservar^, si no ca&e se
imprimir en la si$uiente p$ina!
CURSO ABAP/4 Pgina 62
*a/ varias +ormas de imprimir un reportJ
" Ana ve4 Ba salido el report por pantalla con la opci(n de \'mprimir\!
" 'mprimir sin visuali4ar por pantalla con la opci(n \'mprimir\ desde la pantalla de
selecci(n o de parmetros!
3esde el pro$rama ABAP/6 podemos controlar la impresi(n con la instrucci(nJ
9EF-PA*E PRI9' O2/OFF Pantalla o impresora!
97.DIA)7* 2o visuali4a la pantalla de
opciones de impresi(n!
)I9E-C7A9' BnC @%neas por p$ina!
)I9E-SI\E BnC #ama0o de l%nea!
DES'I9A'I79 BdesC 'mpresora destino!
I11EDIA'E)? B,C. 'mpresi(n inmediata S/2!
Para ms in+ormaci(n so&re otras opciones, ver la a/uda del editor de ABAP/6!
Para determinar +ormatos especiales de impresi(n utili4aremos la
instrucci(n PRI9'-C79'R7).
PRI9'-C79'R7) 79' BnC
CPI BnC
)PI BnC
SI\E BnC
C7)7R BcolorC
)E' 1AR*I9 BcolC.
Para ms in+ormaci(n so&re otras opciones, ver la a/uda del editor de ABAP/6!
14.3 Seleccin de par/!etros. Pantalla de seleccin 3SE)EC'I79
SCREE94.
Si deseamos introducir una serie de delimitaciones en la e9ecuci(n de un report a nivel
de parmetros, dispondremos de dos posi&ilidades!
" )l PARA1E'ERS Gue permite utili4ar parmetros de cualGuier tipo en la pantalla de
selecci(n!
" )l SE)EC'-7P'I79S Gue permite determinar un criterio de selecci(n de los datos a
utili4ar en el report!
T )n el cap%tulo > /a vimos la sinta;is principal de la sentencia PARA5)#)RS!
PARA1E'ERS= B-arC '?PE BtipoC
CURSO ABAP/4 Pgina 63
)I@E BtipoC
DEAA)' B-alorC '$ual Gue el =A@A)!
7B)I*A'7R? O&li$a a introducir al$Dn valor!
)7FER CASE. Permite introducir minDsculas!
T @a instrucci(n S)@)C#"OP#'O2S J
SE)EC'-7P'I79S B-arC 7R Bca!poIta(laC.
B-arC como mucBo tendr > caracteres!
@a varia&le B-arC tomar los posi&les valores a seleccionar / Bca!poIta(laC nos
indica para Gue campo / de Gue ta&la ser utili4ado el parmetro -esto impl%citamente
nos est dando el tipo / la lon$itud de los posi&les valores.!
Con esta sentencia, automticamente en la pantalla de selecci(n se podrn introducir
ran$os de valores posi&les para el parmetro!
)9emplo J


Para cada sentencia S)@)C#"OP#'O2S, el sistema crea una ta&la interna con el
nom&re de X-arY! Cada re$istro de la ta&la est +ormado por los campos X-arY")7F;
X-arY"SI*9, X-arY"7P'I79!
)l contenido de cada re$istro ser respectivamenteJ el valor in+erior, el superior, el
si$no -Incluido/E;cluido. / el operador!
)n la pantalla de selecci(n si Gueremos reali4ar una selecci(n compuesta de ms de una
condici(n -ms de un re$istro en la ta&la interna., tendremos Gue Bacer un ClicL so&re
la FlecBa situada a la derecBa de cada campo!
Para seleccionar los datos de lectura en tiempo de e9ecuci(n mediante los valores de
selecci(n, utili4aremos la clusula K*)R) de la instrucci(n S)@)C# / el operador I9,
CURSO ABAP/4 Pgina 64
Gue &uscar en la ta&la de &ase de datos todos los re$istros Gue cumplan las condiciones
incluidas en la ta&la interna de la pantalla de selecci(n!
SE)EC'-7P'I79S B-arC 7R Bca!poC.
SE)EC' U R71 Bta(C F:ERE Bca!poC I9 B-arC.
)n la pantalla de selecci(n aparecer el te;to B-arC como comentario a la
selecci(n de datos, si Gueremos Gue el te;to sea distinto al nom&re de la varia&le
tendremos Gue ir a la opci(n 'e,tos de seleccin del menD Pasar a - C Ele!entos
de te,to.
=eamos aBora Gue otras opciones e;isten en la utili4aci(n de la instrucci(n S)@)C#"
OP#'O2S!
Para asi$nar valores iniciales a un criterio de selecci(n utili4amos la
clusula DEAA)'.
SE)EC'-7P'I79S B-arC 7R Bca!poC DEAA)' GB-alorCY !
Si Gueremos iniciali4ar un ran$o de valores -in+erior / superior. usaremosJ
SE)EC'-7P'I79S B-arC 7R Bca!poC DEAA)'YBiniCY'7YB%inCY.
a Podemos Bacer Gue se acepten valores en minDsculas!
SE)EC'-7P'I79S B-arC 7R Bca!poC )7FER CASE
a Podemos o&li$ar a Gue se introdu4can valores de selecci(n inevita&lemente!
SE)EC'-7P'I79S B-arC 7R Bca!poC 7B)I*A'7R?.
#am&in es posi&le desactivar la posi&ilidad de introducir selecciones
con condiciones compuestas! -3esaparecer la +ecBa.!
SE)EC'-7P'I79S B-arC 7R Bca!poC 97-EH'E9SI79.
#am&in es posi&le +ormatear a nuestro $usto la pantalla de selecci(n
con SE)EC'I79-SCREE9.
Podemos introducir comentarios para un parmetro!
SE)EC'I79-SCREE9 C711E9' BcolC3Blon"C4 'EH'-nnn.
'ndicndole la columna, la lon$itud del comentario, / el te;to del comentario lo
situaremos en un te;to numerado -ver 86!6.!
Si adems Gueremos Gue al pulsar Fl -Belp., so&re el comentario, apare4ca la misma
a/uda Gue so&re el campoJ
SE)EC'I79-SCREE9 C711E9' BcolC3BIon"C4 'EH'-nnn
7R IE)D Bca!poC.
CURSO ABAP/4 Pgina 65
Otras posi&ilidades pueden ser, intercalar l%neas en &lanco o su&ra/ados en la
pantalla de selecci(n!
SE)EC'I79-SCREE9 S@IP BnC.
SE)EC'I79-SCREE9 A)I9E BcolC3Blon"C4.
)s posi&le tam&in utili4ar varias p$inas de selecci(n con J
SE)EC'I79-SCREE9 9EF-PA*E.
Podemos reali4ar veri+icaciones de los datos entrados en la pantalla de
selecci(n con el evento!
A' SE)EC'I79-SCREE9 79 Bca!poC.
O
E9DA'.
Podemos reali4ar varias selecciones en la misma l%nea conJ
SE)EC'I79-SCREE9 BE*I9 7 )I9E
...
SE)EC'I79-SCREE9 E9D 7 )I9E
)n este caso no aparecen los te;tos de selecci(n!
14.4 Ele!entos de te,to $ 1ensa&es
)l entorno de desarrollo de pro$ramas en ABAP/6 nos permite mane9ar
elementos de te;to sin necesidad de codi+icarlos en el pro$rama!
@os elementos de te;to pueden ser t%tulos de reports, ca&eceras de reports, te;tos
de selecci(n / te;tos numerados!
Podemos acceder a la pantalla de tratamiento de los elementos de te;tos desde el
editor de pro$ramasJ Pasar a - C Ele!entos de te,to.
Con los 'tulos $ Ca(eceras podemos tratar el t%tulo, ca&eceras de report /
ca&eceras de columna Gue saldrn por pantalla e impresora!
Con los 'e,tos de seleccin trataremos los comentarios Gue acompa0an a los
parametros del tipo PARA5)#)RS o S)@)C#"OP#'O2S!
CURSO ABAP/4 Pgina 66
Con los 'e,tos nu!erados podemos utili4ar constantes de tipo te;to sin
necesidad de declararlas en el c(di$o del pro$rama! @os nom&res de las constantes
sern 'EH'-,,,; donde ,,, son tres caracteres cualGuiera! Adems podemos
mantener los te;tos numerados en varios idiomas!
Otras de las +acilidades Gue nos o+rece ABAP/6 para el +ormateo / control de
reports, es la de los !ensa&es de di/lo"o. @os mensa9es de dilo$o son aGuellos
mensa9es Gue aparecen en la l%nea de mensa9es / Gue son mane9a&les desde un
pro$rama!
@os mensa9es estn a$rupados en reas de mensa9es! Para indicar Gue rea de
mensa9es vamos a utili4ar en un report utili4amos 1ESSA*E-ID en la instrucci(n
R)POR#!
REP7R' BreportC 1ESSA*E-ID B/reaC.
Podemos ver, crear / modi+icar reas de mensa9es desde el editorJ Pasar a - C
1ensa&es
Para visuali4ar un mensa9e utili4amos la sentencia 5)SSAC)!
1ESSA*E 'nnn.
3onde nnn es el nDmero de mensa9e dentro de su respectiva rea de mensa9es /
' es el tipo de mensa9eJ
A W Cancelaci(n o ]A&end^ del proceso!
E W )rror! )s necesaria una correcci(n de los datos!
I W 'n+ormaci(n! 5ensa9e meramente in+ormativo!
)l proceso continuar con un )2#)R!
S W Con+irmaci(n! 'n+ormaci(n en la pantalla si$uiente!
F W Karnin$! 2os da un aviso!
Podemos cam&iar los datos o pulsar ]intro^ para continuar!
Si se emiten mensa9es del tipo K o ) en eventos S#AR#"OF"S)@)C#'O2 o
)23"OF"S)@)C#'O2 o C)# se comportan como si +ueran del tipo A!
Podemos acompa0ar los mensa9es de parmetros varia&les!
1ESSA*E 'nnn FI': B-ar1C B-ar6C...
)n la posici(n del mensa9e Gue se encuentre el s%m&olo ] , podemos utili4ar
para visuali4ar el valor Gue le pasemos como parmetro a la instrucci(n 5)SSAC)!
2o podemos utili4ar ms de 6 parmetros por mensa9e!
CURSO ABAP/4 Pgina 67
@os datos so&re mensa9es estn en la ta&la '155.
)9emploJ
brea de mensa9es QQ!
5ensa9e J 117 W )ntrada c"c incorrecta!
R)POR# QPRA)BA 5)SSAC)"'3 QQ!
!!!!
'F!!!!
5)SSAC) A117 K'#* S[A8 [#OP@!
)23'F!
)l mensa9e o&tenido serJ
A: Entrada SKA1-KTOPL Incorrecta
CURSO ABAP/4 Pgina 68
1< ield S$!(ols
Cuando tenemos Gue procesar una varia&le, pero Dnicamente conocemos de Gue
varia&le se trata / c(mo tenemos Gue procesarla, en tiempo de e9ecuci(n, lo Baremos
mediante los ]+ield s/m&ols^! Por e9emplo, si estamos procesando cadenas, / Gueremos
procesar una parte de la cadena cu/a posici(n / lon$itud depende del contenido de la
misma, utili4aremos ]+ield s/m&ols^! @os Field S/m&ol tienen cierta similitud con los
punteros o apuntadores de otros len$ua9es de pro$ramaci(n!
@os Field S/m&ol permiten soluciones ele$antes a pro&lemas pero su utili4aci(n
incorrecta puede implicar resultados impredeci&les!
@os Field S/m&ol se declaran conJ
IE)D-S?1B7)S= B^ield S$!(olVC.
@a declaraci(n se reali4ar en la rutina o m(dulo de +unci(n donde se utilice!
Para asi$nar un campo a un ]Field S/m&ol^ utili4aremos la instrucci(n
ASS'C2! Ana ve4 asi$nado, cualGuier operaci(n Gue realicemos so&re el +ield s/m&ol
a+ectar al campo real! 2o Ba/ nin$una di+erencia entre utili4ar el campo o el +ield
s/m&ol!
ASSI*9 Bca!poC '7 B^ield S$!(olVC.
)9emplos J
1.-
F')@3"SI5BO@S XFY!
ASS'C2 #R3'R"2A5) #O XFY! ]QPRA)BA^
5O=) ]QPRA)BA^ #O XFY!
KR'#) #R3'R"2A5)!
6.- F')@3"SI5BO@S XFY!
#)M#OW^ABC3)FC*^!
'2'C'O W ! ]C3)FC^
@O2C'#A3 W7!
ASS'C2 #)M#OZ'2'C'O -@O2C'#A3. #O XFY
KR'#) XFY
3.- U Rellena con ceros por la i4Guierda!
FOR5 PO2)RRC)ROS AS'2C 2A5)RO =A@A) -@O2C'#A3.!
F')@3"SI5BO@SJ XPA2#)ROY!
CURSO ABAP/4 Pgina 69
@O2C'#A3 W @O2C'#A3 " 8!
ASS'C2 2A5)ROZ@O2C'#A3-8. #O XPA2#)ROY
K'*'@) XPA2#)ROY )Q SPAC)!
S*'F# 2A5)RO R'C*#!
KR'#) ]O^\#O 2A5)RO-8.!
)23K*'@)!
)23FOR5!
#am&in es posi&le utili4ar asi$naci(n dinmica! )sto permite asi$nar un campo
Gue s(lo conocemos en tiempo de e9ecuci(n a un +ield s/m&ol!
Ser necesario encerrar el campo entre parntesis en la asi$naci(n del +ield
s/m&ol!
ASSI*9 3Bca!poC4 '7 B^ield S$!(olVC.
)9emploJ
3A#AJ CA5PO-81.!
F')@3"SI5BO@SJ XFY!
]QPRA)BA^
5O=)^#R3'R"2A5)U #O CA5PO !
ASS'C2 -CA5PO. #O XFY!
KR'#) XFY!
Para in+ormaci(n adicional so&re los Field S/rn&ols ver Cap= 15 del ABAP/4
Pro"ra!in" Reports.
CURSO ABAP/4 Pgina 70
1# Batc+ Inputs
1#.1 Introduccin
Cuando se instala una aplicaci(n en productivo es necesario dar de alta toda la
in+ormaci(n indispensa&le para Gue la empresa pueda +uncionar -proceso de mi$raci(n
de dalos o conversi(n.!
Por e9emplo, antes de poder $enerar +acturas reales ser necesario introducir
todos los clientes activos / todos los productos Gue estn a la venta!
Para reali4ar la car$a de productos Gue estn a la venta se de&er%a e9ecutar
manualmente la transacci(n ]Alta de material tantas veces como productos ten$amos
/ la misma operaci(n con ]Alta de clientes para todos los clientes! )n el caso de Gue la
empresa ten$a mucBos productos / mucBos clientes, la car$a inicial ser mu/ costosa!
Ceneralmente todos estos datos maestros -clientes, materiales, proveedores,!!! .
/a estn en el anti$uo sistema in+ormtico! Por lo tanto lo ideal ser disponer un
mecanismo Gue nos permitiese trasladar los datos de un sistema a otro!
A la Bora de la mi$raci(n de datos de un sistema e;terno a SAP, tenemos dos
posi&ilidadesJ
" Reali4ar pro$ramas Gue llenen todas las &ases de datos SAP involucradas,
mediante instrucciones directas de SAP"SQ@!
" Atili4ar la tJcnica del Batc+ Input de SAP.
Para mucBas transacciones, la primera de las opciones es invia&le, de&ido a la
comple9idad de la estructura de datos SAP / para mantener la inte$ridad de la misma la
cantidad de validaciones Gue se de&er%an reali4ar so&re los datos de entrada ser%a
enorme! Como consecuencia, tanto el coste en dise0o, codi+icaci(n / prue&as ser%a
alt%simo!
)n cam&io, la tcnica de los BatcB 'nput de SAP nos permite reali4ar todas las
veri+icaciones automticamente, con un coste en dise0o / desarrollo m%nimo! )n este
cap%tulo veremos c(mo utili4ar la tcnica de los BatcB 'nput!
An BatcB 'nput es un mtodo se"uro $ %ia(le de trans+erir datos Bacia un
sistema SAP! Suele utili4arse cuando de&en reali4arse un elevado nDmero de altas,
modi+icaciones o &orrados!
Para $aranti4ar la inte$ridad del sistema, los datos son sometidos a los mismos
controles de validaci(n / a las mismas operaciones de &ase de datos en SAP como si
+ueran introducidos manualmente / uno por uno, por el usuario! )s decir realmente la
tcnica del BatcB 'nput consiste en simular repetidamente un proceso online
-transacci(n., durante un proceso BatcB!
)l proceso de car$a de datos se reali4a en dos +asesJ
CURSO ABAP/4 Pgina 71

ase de *eneracin= A partir de una +uente de in+ormaci(n como puede ser un
+icBero de entrada, donde estarn todos los datos Gue Gueremos car$ar en SAP, se
trans+ormaran estos datos en un +ormato determinado, para almacenarlo en una
estructura de SAP Gue llamaremos +icBero de colas!
ase de Proceso= A partir de la in+ormaci(n $ra&ada durante la +ase de
$eneraci(n en el +icBero de colas, se car$arn los datos +%sicamente en la &ase de
datos!
Con la tcnica del BatcB 'nput, se reali4a una simulaci(n del dilo$o del usuario
con la mGuina, es decir Baremos e;actamente lo mismo con la Dnica di+erencia de Gue
la entrada de datos en ve4 de ser manual, ser automtica a partir de un +icBero de colas!
1#.6 ase de "eneracin del Batc+ Input.
)n esta +ase se reali4a la trans+erencia de los datos de un sistema e;terno a un
+icBero de colas! Para ello se de&e codi+icar un pro$rama de BatcB 'nput!
BA'C: I9PA'
SIS'E1A EH'ER97 IC:ER7 DE C7)AS
=eamos cada uno de estos elementosJ
1#.6.1 Siste!a e,terno
CURSO ABAP/4 Pgina 72
@a e;tracci(n de los datos de un siste!a e,terno suele ser reali4ada por el
departamento de in+ormtica de la empresa donde va a ser instalado SAP, /a Gue es
Guien me9or conoce la estructura de su actual sistema in+ormtico! 2ormalmente el
resultado +inal de esta e;tracci(n de datos ser un +icBero secuencial con los datos
necesarios para car$ar en SAP! )l pro$rama BatcB 'nput, leer este +icBero /
trans+ormar los datos a un +ormato determinado para poder almacenarlos en el +icBero
de colas!
)l +icBero secuencial tendr una estructura de re$istro Gue de&er ser conocida
por el eGuipo de desarrollo de SAP! Ceneralmente, / siempre Gue sea posi&le, se
asociar un re$istro a una transacci(n de datos SAP! Por e9emplo, en el caso de altas de
materiales, en un re$istro se $uardarn todos los datos necesarios para dar de alta un
Dnico material!
Por re$la $eneral, el sistema e;terno es un +icBero secuencial en el Gue se
encuentran los datos con los Gue se desean simular las transacciones! 2o o&stante no
tiene Gue ser necesariamente un +icBero secuencial, sino Gue puede ser cualGuier +uente
de in+ormaci(n Gue ten$amos -ta&las +%sicas de SAP, ta&las de otras &ases de datos
relacionales; etc!.!
1#.6.6 El pro"ra!a Batc+ Input.
)s el Dnico desarrollo Gue se de&e Bacer en ABAP/6!
)l pro$rama de BatcB 'nput leer el +icBero secuencial / trans+ormar los datos a
un +ormato determinado, para almacenarlos en una entrada del +icBero de colas! 3icBas
entradas se denominan sesiones. Cada pro$rama de BatcB 'nput $enera una sesi(n!
)stas sesiones pueden contener una o mDltiples transacciones!
Ana transacci(n en SAP consta de una serie de pasos de dilo$o! )l pro$rama de
BatcB 'nput de&e preparar los datos para cada uno de los pasos de dilo$o de la
transacci(n!
Por e9emplo, ima$inemos Gue para dar de alta un material el sistema e9ecuta una
transacci(n de tres pantallasJ
Pantalla 8J )ntrada de los datos so&re el dise0o de material -peso, altura,
volumen!!!.!
Pantalla 2: )ntrada de los datos so&re ventas del material -precio, descuentos!! .!
Pantalla 3: )ntrada de los datos so&re la producci(n -costes, almacena9e!!! .!
)l pro$rama Gue $enere la sesi(n de altas de materiales de&er por tanto,
pro$ramar la secuencia de acciones / pantallas en el mismo orden Gue la transacci(n /
preparar los datos en cada una de estas pantallas, para cada material Gue se Guiera dar de
alta! Por ello, antes de pro$ramar un BatcB 'nput es necesario un conocimiento
e;Baustivo de la transacci(n Gue se desea simular, puesto Gue $anaremos mucBo tiempo
si estudiamos previamente el +uncionamiento de sta!
C(mo se codi+ica un BatcB 'nput lo veremos ms adelante!
CURSO ABAP/4 Pgina 73
)l resultado de esta etapa ser una sesi(n de BatcB 'nput $ra&ada en un +icBero /
Gue posteriormente de&er procesarse para car$ar +%sicamente los datos en el sistema
SAP!
1#.6.3 El %ic+ero de colas.
#odos los pro$ramas BatcB 'nput $ra&an entradas -sesiones. en el %ic+ero de
colas! Para posteriormente poder identi+icar cual es la sesi(n Gue nos interesa procesar,
las sesiones poseen un +ormato determinadoJ
2om&re de la sesi(n!
Asuario Gue Ba creado la sesi(n!
5andante en el Gue de&e procesarse!
2Dmero de transacciones Gue contiene!
2Dmero de pantallas Gue contiene!
3atos adicionales!
Ana sesi(n de BatcB 'nput puede encontrarse en uno de los si$uientes estados!
A procesar= Si la sesi(n todav%a no Ba sido procesada!
Procesada = Si las transacciones Gue componen la sesi(n Ban sido e9ecutadas
%nte$ramente sin errores!
Errneas = Si en la sesi(n aDn Guedan transacciones Gue no se Ban procesado
correctamente! Cuando una sesi(n est en estado incorrecto, no Guiere
decir Gue las transacciones Gue conten%a no Ba/an sido procesadas, sino
Gue al$unas se Ban procesado / otras no! )stas transacciones err(neas las
podremos reprocesar ms adelante, es decir nunca perdemos una
transacci(n a no ser Gue e;pl%citamente &orremos la sesi(n!
Siendo creada = Si Ba/ un pro$rama BatcB 'nput Gue est $enerando una
sesi(n en ese momento!
En proceso = Si se est procesado en ese instante la transacci(n!
ondo = Si se Ba lan4ado la sesi(n para Gue se procese pero todav%a no Ba
comen4ado a e9ecutar por +alta de recursos del sistema!
1#.3ase de procesado de una sesin.
Para $estionar el +icBero de colas utili4aremos la transacci(n S13< 3Siste!a
Ser-icios Batc+ Input 'ratar4.
5ediante esta transacci(n podemos consultar, eliminar / procesar todas las
sesiones de BatcB 'nput!
CURSO ABAP/4 Pgina 74
Ana ve4 $enerada la sesi(n con el pro$rama BatcB 'nput, accederemos a la
transacci(n S537 / marcaremos la sesi(n Gue nos interesa procesar!
);isten 3 tipos de procesamientoJ
Procesar -isi(le.
Procesar -isuali.ando slo errores.
Procesar en in-isi(le.
3urante la e9ecuci(n de una sesi(n se ir $ra&ando en un ]lo$^ de proceso, el
resultado de cada transacci(n! )ntre la in+ormaci(n Gue nos o+rece el lo$ destacaJ
*ora de inicio de proceso de la sesi(n!
*ora de inicio de proceso de cada transacci(n!
5ensa9es de incidencia o de proceso correcto -los mismos Gue dar%a
la transacci(n en el caso de e9ecutarla manualmente.!
)stad%stica +inal de procesoJ
2d #ransacciones le%das!
2d #ransacciones procesadas con ;ito!
2d #ransacciones err(neas!
Siempre Gue e;istan transacciones con errores se podrn reprocesar!
Procesa!iento >isi(le = Con este mtodo se procesa cada una de las transacciones
visualmente, es decir, el usuario va visuali4ando todas / cada una de las pantallas
Gue Bemos pro$ramado! )l usuario Dnicamente de&e ir pulsando XintroY para
saltar de una pantalla a otra! Asimismo, si se cree conveniente, se permite
modi+icar los valores de al$Dn campo de la pantalla!
Si una transacci(n no interesa procesarla, podemos cancelarla -pudiendo ser
e9ecutada con posterioridad. o podemos &orrarla -no se podr e9ecutar.! #odas las
transacciones Gue cancelemos se $ra&arn en la sesi(n / la sesi(n pasar a estar en
estado incorrecto!
2o devuelve el control del sistema al usuario Basta Gue todas las transacciones Ba/an
sido procesadas o cancelemos el BatcB 'nput!
Procesa!iento In-isi(le= )l sistema procesar en +ondo &atcB la transacci(n! )s
decir, toda la e9ecuci(n es transparente al usuario! )l usuario recupera el control
del sistema inmediatamente! Para ver el resultado de la e9ecuci(n de una sesi(n,
tendr Gue ver el ]lo$^ de proceso una ve4 Ba/a +inali4ado!
Procesa!iento -isuali.ando slo errores= )l sistema procesar cada una de las
transacciones en modo invisi&le Basta Gue detecte un error, en cu/o caso parar el
proceso en la pantalla donde se Ba producido el error, pudiendo entonces el
usuario detectar / corre$ir dicBo error o cancelar la transacci(n! Ana ve4
corre$ido el error o cancelada la transacci(n, el sistema continua procesando el
resto de transacciones!
CURSO ABAP/4 Pgina 75
2o devuelve el control del sistema al usuario Basta Gue todas las transacciones Ba/an
sido procesadas o cancelemos el BatcB 'nput!
1#.4 Conse&os pr/cticos en la utili.acin de Batc+ Inputs!
Para conocer el c(di$o de la transacci(n, el nom&re de las pantallas de cada
transacci(n / los nom&res de los campos Gue se desean completar Baremos lo
si$uiente J
a C(di$o de la transacci(nJ )ntrar en la transacci(n a simular e ir a
Siste!a Status.
a 2om&re de la pantalla J Ana ve4 estarnos en la pantalla Gue necesitamos,
Bacemos lo mismo Gue en el punto anterior, anotando el pro$rama
-3/npro. / el nDmero de d/npro!
a 2om&re de los campos J Ana ve4 situados so&re el campo en cuesti(n,
pulsar Fl / se$uidamente el &ot(n de datos tcnicos! Anotaremos el
nom&re de la ta&la de &ase de datos / del campo!
)s posi&le Gue mientras se est procesando una sesi(n de BatcB 'nput, el sistema
cai$a provocando la prdida de la misma! Cuando el sistema vuelva a la situaci(n
normal, la sesi(n aparentemente se encuentra en estado Procesando ! )n realidad
esto no es cierto /a Gue la sesi(n no est Baciendo nada, pero tampoco Bemos
perdido nada! )l sistema Ba&r e9ecutado todas las transacciones Basta el momento
de la ca%da, / podemos recuperar de una manera se$ura el resto de la sesi(n de la
si$uiente +ormaJ
3esde la transacci(n S537, marcar la sesi(n de BatcB 'nput en cuesti(n! )le$ir
Xue"o de datos -C )i(erar ! )n ese momento la sesi(n pasa a modo a procesar /
podemos e9ecutar las transacciones Gue +alta&an!
Antes de procesar una sesi(n de BatcB 'nput podemos compro&ar si los datos de
entrada / la secuencia de pantallas Gue Bemos pro$ramado es la esperada! Para
ello desde la S537 seleccionaremos la sesi(n Gue Guerernos anali4ar / BaremosJ
Pasar a An/lisis Xue"o de datos.
Si se est e9ecutando una transacci(n en modo 'nvisi&le, podemos ir viendo el ]@o$^
de proceso de las transacciones Gue se van e9ecutando! Ana utilidad prctica es, en
el caso de un elevado nDmero de transacciones, mirar el tiempo de proceso de una
transacci(n / e;trapolar este dato para todo el proceso, para tener una idea de la
Bora en la Gue +inali4ar el proceso!
CURSO ABAP/4 Pgina 76
Antes de reali4ar un pro$rama de BatcB 'nput es aconse9a&le ase$urarse de Gue SAP
no dispon$a /a del mismo! Por e9emplo, SAP nos o+rece &astantes BatcB 'nputs
para car$a de datos! Por e9emploJ

Car$a de clientes!
Car$a de proveedores!
Car$a de documentos conta&les
Car$a de pedidos pendientes!
Car$a de condiciones!
Car$a de stocLs !!!
2(tese Gue entre la +ase de $eneraci(n / la +ase de procesado, e;iste un tiempo
indeterminado! Si este tiempo es mu/ $rande, es posi&le Gue durante la +ase de
procesado se produ4can numerosos errores, /a Gue es posi&le Gue Ba/a cam&iado
el estido en el Gue se llevo a ca&o la +ase de $eneraci(n!
Por e9emplo, si $eneramos una sesi(n de BatcB 'nput donde se intenta modi+icar un
cierto material, / antes de Gue se mande procesar esta sesi(n, el material se da de
&a9a, durante la e9ecuci(n de la sesi(n el sistema se Gue9ar de Gue dicBo material no
e;iste!
Otra posi&le causa de errores mu/ comDn durante el procesamiento de sesiones, es
Gue en aGuellos campos Gue tienen ta&las de veri+icaci(n, introdu4camos valores
Gue no estn dados de alta en las ta&las de veri+icaci(n! Por e9emplo, si indicamos
una sociedad Gue no est en la ta&la #OO8 -sociedades.!
Otra manera de lan4ar sesiones de BatcB 'nput es e9ecutando el report RSBDCSAB!
Por e9emplo podemos e9ecutar la sesi(n de BatcB 'nput inmediatamente despus
de ser $enerada, llamando a este report con los parmetros adecuados desde el
mismo pro$rama ABAP/6 Gue $enera la sesi(n!
1#.< Codi%icacin de Batc+ Inputs.
*asta aBora Bemos visto Gue la tcnica del BatcB 'nput consiste en la $eneraci(n de
una sesi(n con los datos a introducir en el sistema / el procesamiento de los datos en
el sistema destino! )n este apartado veremos c(mo codi+icar el BatcB 'nput para
$enerar sesiones de este tipo / otras dos tcnicas ms de BatcB 'nput -CA@@
#RA2SAC#'O2 / CA@@ 3'A@OC.!
Para introducir los valores en las distintas pantallas de cada transacci(n
utili4aremos una ta&la interna con una estructura estndar! -B3C3A#A.!
DA'A= BE*I9 7 Bta(IBIIC 5CCARS BnC.
I9C)ADE S'RAC'ARE BDCDA'A.
DA'A= E9D 7 Bta(IBIIC.
CURSO ABAP/4 Pgina 77
@os campos Gue componen esta ta&la interna sonJ
PR7*RA1 = 2om&re del pro$rama donde se reali4a el tratamiento de cada pantalla
-3/npro. de la transacci(n!
D?9PR7 = 2Dmero de la pantalla de la cual Gueremos introducir datos!
D?9BE*I9 = 'ndicador de Gue se inicia una nueva pantalla!
9A1 = Campo de la pantalla! -37 Caracteres como m;imo.!
>A)= =alor para el campo de la pantalla! ->1 Caracteres como m;imo.!
O&tendremos la in+ormaci(n del nom&re del pro$rama / el nom&re del d/npro con
Siste!a Status.
O&tendremos el nom&re del campo con l -3atos #cnicos. o podemos ver todos los
campos de una pantalla con el screen painter -Field list.!
)n esta ta&la interna $ra&aremos un re$istro por cada campo de pantalla Gue
in+ormemos / un re$istro adicional con la in+ormaci(n de cada pantalla!
)l primer re$istro de cada pantalla, en la ta&la interna ta&RBR', contendr los datos
Gue identi+ican la pantallaJ 2om&re del pro$rama -PROCRA5., nom&re de la
pantalla -3I2PRO., / un indicador de inicio de d/npro -3I2B)C'2.!
)9emploJ #ransacci(nJ FSS'
Pro$ramaJ SAP5F1*
3/npro J 181
ta&RBR '"PROCRA5 W^SAP5F1*^!
ta&RBR '" 3I2PRO W^181^!
ta&RBR '" 3I2B)C'2 W^M^!
APP)23 ta&RBR'!
Se$uidamente para cada campo de la pantalla Gue in+ormemos, $ra&aremos un
re$istro rellenando Dnicamente los campos F2A5 -con el nom&re del campo de
pantalla. / F=A@ -con el valor Gue le vamos a dar.!
)9emploJ Rellenar campo RF1*"SA[2R con varia&le
=ARRC#A!
Rellenar campo RF1*"BA[RS con varia&le
=ARRSOC!
C@)AR ta&RBR'!
ta&RBR' "F2A5 W^RF1*"SA[2R^!
ta&RBR' "F=A@ W =ARRC#A!
APP)23 ta&RBR'!
CURSO ABAP/4 Pgina 78
C@)AR ta&RBR'!
ta&RBR' "F2A5 W^RF1*"BA[RS^!
ta&RBR' "F=A@ W =ARRSOC!
APP)23 ta&RBR'!
)l pro$rama BatcB 'nput tiene Gue +ormatear los datos tal / como lo Bar%a el usuario
manualmente! #eniendo en cuenta GueJ
" S(lo se permiten caracteres!
" @os valores Ban de ser de menor lon$itud Gue la lon$itud de los campos!
" Si los valores de entrada son de lon$itud menor Gue el campo SAP, tendremos
Gue
9usti+icar a la i4Guierda!
Si necesitamos in+ormar campos Gue aparecen en pantalla en +orma de ta&la,
tendremos Gue utili4ar %ndices para dar valores a cada l%nea de pantalla / $ra&ar en la
ta&la interna un re$istro por cada l%nea de pantalla!
)9emploJ
C@)AR ta&RBR'!
ta&RBR' "F2A5 W^campo-%ndice.^!
ta&RBR' "F=A@ W^valor^!
APP)23 ta&RBR'!
Si necesitamos proveer de una tecla de +unci(n a la pantalla, usaremos el campo
BDCI7@C7DE! )l valor del campo ser el nDmero de la tecla de +unci(n
precedido de una &arra inclinada!
)9emplo J
C@)AR ta&RBR'!
ta&RBR' "F2A5 W B3CRO[CO3)!
ta&RBR'"F=A@ W ]/83^! ]F83W Cra&ar!
APP)23 ta&RBR'!
#am&in utili4amos el campo B3CRO[CO3) para e9ecutar +unciones Gue aparecen
en la &arra de menDs! Para sa&er el c(di$o de la +unci(n, Pulsar Fl sin soltar el &ot(n
del rat(n, so&re el menD deseado!
Si necesitamos colocar el cursor en un campo en particular, usaremos el campo
BDCICARS7R! )l valor del campo ser el nom&re del campo donde nos Gueremos
situar!
)9emploJ
C@)AR ta&RBR'!
ta&RBR' "F2A5 W B3CRCARSOR!
ta&RBR'"F=A@ W ]RF1*"BA[RS^
APP)23 ta&RBR'!
CURSO ABAP/4 Pgina 79
Para insertar sesiones en la cola deBatcB 'nput, se$uiremos los si$uientes pasos en la
codi+icaci(nJ
8!" A&rir la sesi(n de BatcB 'nput utili4ando el modulo de +unci(n
BDCI7PE9I*R7AP.
!" Para cada transacci(n de la sesi(nJ
!a!" @lenaremos la ta&la ta(IBII para entrar los valores de
los campos en cada pantalla de la transacci(n!
!&!" #rans+erir la transacci(n a la sesi(n, usando el m(dulo de
+unci(n BDCII9SER'.
3!" Cerrar la sesi(n usando BDCIC)7SEI*R7AP.
A continuaci(n veremos como +uncionan los m(dulos de +unci(n Gue necesitamos
para $enerar un BatcB 'nput!
BDCI7PE9I*R7AP= )ste m(dulo de +unci(n nos permite a&rir una sesi(n!
)n el pro$rama no podemos a&rir otra sesi(n Basta Gue no se Ba/an cerrado todas las
sesiones Gue permane4can a&iertas!
CA)) A9C'I79 GBDCI7PE9I*R7APY
EHP7R'I9*
C)IE9' D B!andanteC
*R7AP D Bno!(reIsesinC
:7)DDA'E D B%ec+aC
@EEP D BindicadorC
ASER D BusuarioC
EHCEP'I79S
C)IE9'II9>A)ID D 51
DES'I9A'I79II9>A)ID D 56
*R7APII9>A)ID D 53
:7)DDA'EII9>A)ID D 54
I9'ER9A)IERR7R D 5<
KAEAEIERR7R D 5#
RA99I9* D 5N.
3ondeJ
C)IE9'= )s el mandante so&re el cual se e9ecutar la sesi(n de BatcB 'nput, si
no se indica este parmetro se tomar el mandante donde se e9ecute el pro$rama de
$eneraci(n de la sesi(n!
*R7AP= 2om&re de la sesi(n de BatcB 'nput, con la Gue identi+icaremos el
9ue$o de datos en la transacci(n S537 de tratamiento de BatcB 'nput!
CURSO ABAP/4 Pgina 80
:7)DDA'E J Si indicamos este parmetro, el sistema no permitir e9ecutar la
sesi(n Basta Gue no sea la +ecBa indicada! S(lo el administrador del sistema podr
e9ecutar una sesi(n antes de esta +ecBa!
@EEPJ Si in+ormamos este parmetro con una ]M^, la sesi(n ser retenida en el
sistema despus de ser e9ecutada / s(lo un usuario con autori4aciones apropiadas
podr &orrarla!
ASERJ )s el usuario Gue de e9ecuci(n de la sesi(n!
BDCII9SER'J )ste m(dulo de +unci(n inserta una transacci(n en la sesi(n de
BatcB 'nput!
CA)) A9C'I79 GBDC-I9SER'Y
EHP7R'I9*
'C7DE D B'ransaccinC
'AB)ES
D?9PR7'AB D BIntta(C
EHCEP'I79S
I9'ER9A)IERR7R D 51
97'I7PE9 D 56
KAEAEIERR7R D 53
'C7DEII9>A)ID D 54.
3onde J
'C7DEJ )s el c(di$o de la transacci(n Gue vamos a simular!
D?9PR7'AB J )s la ta&la interna, con estructura B3C3A#A, donde
especi+icamos la secuencia de pantallas de la transacci(n / los distintos valores Gue
van a tomar cada campo Gue aparece en cada pantalla!
BDCIC)7SEI*R7APJ Con esta +unci(n cerraremos la sesi(n una ve4 /a Bemos
trans+erido todos las datos de las transacciones a e9ecutar!
CA)) A9C'I79 GBDCIC)7SEI*R7APL
EHCEP'I79S
97'I7PE9 D 51
KAEAEIERR7R D 56.
Podemos resumir las caracter%sticas de la tcnica de las sesiones de BatcB
'nputJ
CURSO ABAP/4 Pgina 81
Procesamiento retardado -as%ncrono.!
#rans+erencia de datos a mDltiples transacciones!
Actuali4aci(n de la &ase de datos inmediata -s%ncrona.! 2o se e9ecuta
una nueva transacci(n Basta Gue la anterior no actuali4a los datos
en &ase de datos!
Ceneraci(n de un ]@o$^ para cada sesi(n!
'mposi&ilidad de $enerar varias sesiones simultneamente desde un
mismo pro$rama!
Como /a Bemos citado anteriormente e;isten otras dos tcnicas de BatcB 'nput, el
CA)) 'RA9SAC'I79 / el CA)) DIA)7*! )n am&as, a di+erencia de la
tcnica de sesiones, la e9ecuci(n de las transacciones es inmediata, es decir la
e9ecuci(n de las transacciones es controlada por nuestro pro$rama ABAP/6 / no
posteriormente desde la S537 lo cual puede resultar interesante en ciertas ocasiones!
CA)) 'RA9SAC'I79J Caracter%sticas J
Procesamiento s%ncrono!
#rans+erencia de los datos a una Dnica transacci(n!
Actuali4aci(n de la &ase de datos s%ncrona / as%ncrona! )l pro$rama
decide Gue tipo de actuali4aci(n se reali4ar!
@a transacci(n / el pro$rama Gue la llama tendrn reas de tra&a9o
-@AK. di+erentes! )l sistema reali4a un CO55'# KOR[
inmediatamente despus del CA@@ #RA2SAC#'O2!
2o se $enera nin$Dn ]@o$^ de e9ecuci(n!
Como se utili4ar la tcnica del CA@@ #RA2SAC#'O2J
)n primer lu$ar llenaremos la ta&la B3C3A#A de la misma manera Gue Bemos
e;plicado a lo lar$o de este cap%tulo!
Asar la instrucci(n CA@@ #RA2SAC#'O2 para llamar a la transacci(n!
CA)) 'RA9SAC'I79 BtransaccinC
ASI9* Bta(intC
17DE B!odoIe&ecC
APDA'E BtipoIactualC.
3ondeJ
Bta(intC #a&la interna -con estructura B3C3A#A.
CURSO ABAP/4 Pgina 82
B!odoIe&ecC 5odo e9ecuci(n!
Puede serJ GAY )9ecuci(n visi&le!
G9Y )9ecuci(n invisi&le! Si ocurre al$Dn error
en la e9ecuci(n de la transacci(n el c(di$o
de retorno ser distinto de cero!
GEY )9ecuci(n visuali4ando s(lo errores!
BtipoIactualC#ipo de actuali4aci(n en la &ase de datos!
Puede ser J GSY Actuali4aci(n S%ncrona! -inmediata.!
GAY Actuali4aci(n As%ncrona! -Basta Gue no
termina la transacci(n no $ra&a en B33.!
3espus del CA@@ #RA2SAC#'O2 podemos compro&ar si SI"SABRC es 1, en
cu/o caso la transacci(n se Ba&r e9ecutado correctamente! )n caso contrario, SAP
llena otros campos del sistema Gue contienen el nDmero, identi+icaci(n, tipo /
varia&les del mensa9e online Gue Ba/a emitido la transacci(n en el momento del
error!
SI"5SC'3 W 'denti+icador de mensa9e!
SI"5SC#I W #ipo de mensa9e -A,),',K!!! .
SI"5SC2O W 2Dmero de mensa9e!
SI"5SC=8!!! SI"5SC=6 W =aria&les del mensa9e!
3e modo Gue para ver Gue Ba ocurrido podemos e9ecutar la instrucci(nJ
5)SSAC) '3 SI"5SC'3
#IP) SI"5SC#I 2A5B)R SI"5SC2O
K'#* SI"5SC=' SI"5SC= SI"5SC=3 SI"5SC=6!
CA)) DIA)7*= Caracter%sticasJ
Procesamiento s%ncrono!
#rans+erencia de los datos a una Dnica transacci(n!
@a transacci(n / el pro$rama tendrn la misma rea de tra&a9o -@AK.! )s
decir Basta Gue en el pro$rama no se reali4a un CO55'# KOR[ no se
actuali4a la &ase de datos!
2o se $enera nin$Dn ]@o$^ de e9ecuci(n!
C(mo se utili4ar la tcnica del CA@@ 3'A@OCJ
@lenaremos la ta&la B3C3A#A!
CURSO ABAP/4 Pgina 83
Asar la instrucci(n CA@@ 3'A@OC para llamar a la transacci(nJ
CA)) DIA)7* B1odIdi/lo"oC
ASI9* Bta(intC
17DE B!odoIe&ecC.
1N. 'rata!iento de %ic+eros desde un pro"ra!a ABAP/4
ABAP/6 dispone de una serie de instrucciones para mane9ar +icBeros &inarios o de
te;to! 37PE9; C)7SE; READ; 'RA9SER4.
Ana utilidad t%pica de estas instrucciones, como /a Bemos e;plicado en el cap%tulo
anterior, ser para las inter+aces entre otros sistemas / SAP, v%a BatcB 'nput!
Para a&rir un +icBero utili4aremos la sentencia 7PE9.
7PE9 DA'ASE' B%ic+eroC.
7R 7A'PA' / 3I9PA'4 )scritura / @ectura - por
de+ecto.!
I9 BI9AR? 17DE / I9 'EH' 17DE Binario -por de+ecto. / #e;to!
Si SI"SABRC W 1 FicBero a&ierto correctamente!
CURSO ABAP/4 Pgina 84
SI"SABRC W > FicBero no se Ba podido a&rir!
Para cerrar un +icBero utili4amos C)7SE.
C)7SE DA'ASE' B%ic+eroC.
Si Gueremos leer de un +icBero utili4amos READ.
READ DA'ASE' B%ic+eroC I9'7 Bre"istroC
3)E9*': Blon"C4 Cuarda en Xlon$Y la
lon$itud del re$istro le%do!
)9emploJ
3A#AJ B)C'2 OF R)C,
@'F2R @'[) @FA8"@'F2R,
BA*2S @'[) @FA8"BA*2S,
)23 OF R)C!
OP)2 3A#AS)# ]/usr/test^!
3O
R)A3 3A#AS)# ]/usr/test^ '2#O R)C!
'F SI"SABRC 2) 1!
)M'#!
)23'F!
KR'#)J / R)C"@'F2R, R)C"BA*2S!
)233O!
C@OS) 3A#AS)# ]/usr/test^!
2otasJ " Se puede leer de Basta 6 +icBeros simultaneamente!
" Si SI"SABRC W 1 FicBero le%do correctamente!
SI"SABRC W 6 Fin de +icBero encontrado!
Para escri&ir so&re un +icBero disponemos de la instrucci(n 'RA9SER.
'RA9SER Bre"istroC '7 B%ic+eroC
3)E9*': Blon"C4 #rans+iere la lon$itud especi+icada en la
varia&le
Xlon$Y!
Por de+ecto la trans+erencia se reali4a so&re un +icBero secuencial -te;to. a no ser Gue
se a&ra el +icBero como &inario!
)n el caso de Gue el +icBero no se encuentre todav%a a&ierto, la instrucci(n
#RA2SF)R lo intentar en modo &inario / escritura!
CURSO ABAP/4 Pgina 85
9ota=
)ste tratamiento es vlido solo so&re +icBeros A2'M, es necesario comparar la
declaraci(n de +icBeros A2'M como de 3OS / otros!
FicBeros A2'M se identi+ican porJ
+ile-31. de+ault E/tmp/#)@MMF!, su tratamiento es con las sentencias anterioresJ
open dataset, read dataset, trans+er!
A di+erencia de los no e;clusivos de A2'M!
File-31. de+ault EcJ`prue&a`prue&a1!t;tF, su tratamiento se reali4a mediante
llamadas a +unciones - m(dulos de +unci(n ., como por e9emploJ AP@OA3 /
3OK2@OA3
CURSO ABAP/4 Pgina 86
A n e , o 1
ABAP/4 EDI'7R
Se pueden especi+icar los comandos del editor en cualGuiera de la +ormas
si$uientesJ
" Como comandos de ca&ecera -en la l%nea de comandos so&re las l%neas
" Comandos de l%nea so&reescri&iendo los nDmeros de l%neas
" Pulsando las teclas de +unci(n o seleccionando las opciones de menD!
Co!andos de Ca(ecera
A3''AC:4 n =isuali4a el te;to desde la l%nea n
B37'MIM714 'r al +inal!
'37P4 'r al principio!
E Si$uiente p$ina!
CURSO ABAP/4 Pgina 87
- P$ina anterior!
I9D c Buscar la cadena c desde la posici(n del cursor, el cursor
se posiciona en la l%nea relevante!
Si la cadena contiene &lancos o caracteres especiales, se
de&ern acotar entere caracteres especiales no contenidos en la
cadena a locali4ar!
)9emploJ F'23 /vac%o" /
el comando no distin$ue entre ma/Dsculas / minDsculas!
93EH'4 Busca / se despla4a a la si$uiente ocurrencia de la cadena
solicitada,desde la posici(n actual del cursor!
R3EP)ACE4 cl c6 Reempla4a la cadena c8 por la cadena c
en todo el te;to! c8 / c pueden tener distintas lon$itudes! Si
una de las cadenas contiene &lancos o caracteres especiales se
de&ern acotar, am&as entre caracteres especiales, ver lo
indicado en F'23!
)9emploS R/empt/" /&lanLs/
3E'C:4 pro" Reali4a la edici(n del pro$rama
indicando a&andonando el pro$rama actual!
S3A>E4 Cuarda el contenido del editor en un almacenamiento
intermedio!
)l comando AP3A#) &orra cualGuier te;to del almacenamiento
intermedio!
Si un se produce una ca%da de sistema, normalmente el te;to es
recuperado del almacenamiento intermedio!
RES3'7RE4 Restaura el te;to desde el almacenamiento
intermedio, so&reescri&iendo el e;istente!
RES3'7RE4 A@'I> Restaura la versi(n activa
en el 3@'B!
SA>EAS pro" Salva el pro$rama con otro
nom&re!
A3PDA'E4 Salva el contenido del editor
CURSO ABAP/4 Pgina 88
C:EC@ CBeGue la sinta;is del pro$rama
PC3E'C:4 Car$a un +icBero contenido en el PC!
PC3D7F94 )scri&e el contenido del editor en un
+icBero de PC
:E)P _ord =isuali4a la a/uda so&re la pala&ra
indicada!
I39SER'4 n 'nserta n l%neas al +inal del te;to!
IC _ord 'nserta la estructura de la sentencia
indicada, esto es valido para las sentenciasJ CAS), 3O, FOR5,
'F, @OOP, 5)SSAC), 5O3A@), S)'@)C#, S*'F#, SOR#,
#RA2SF)R, K*'@) / K'23OK!
IC A9C'I79 %unc 'nserta la estructura de un CA@@ FA2C\'\'O2 para la
+unci(n indicada!
IC SE)EC' ta( 'nserta la estructura del S)@)C# para la ta&la indicada!
IC... 'nserta en la posici(n del cursor!!!
T+ " FOR5 &loGue de comentario
Tm " 5O3A@) &loGue de comentario
T!T " @%nea de comentario T!!!!!te;t!!!!!!!!!!!!!!!T
T"T " @%nea de comentario T""""""""""""""""""""T
T"T8 " brea de comentario con l%nea en &lanco!
TT " @%nea de comentario TTTTTTTTTTTTTTTT
TTn " brea de comentario con n l%neas en &lanco -8XWnXW7.
PP Prett/ Print del pro$rama!
PRI9' 'mprime el contenido del editor!
RE9A13BER4 Renumera l%neas!
S:7F ta( =isuali4a los campos de la ta&la indicada!
S:7F A9C'I79 %unc =isuali4a el m(dulo de la +unci(n indicada!
Co!andos de )nea=
U Considera la l%nea como primera l%nea en la pantalla!
'E 'r a la primera l%nea!
B- 'r a la Dltima l%nea!
CURSO ABAP/4 Pgina 89
C 'nserta las l%neas de pro$rama del include!!
B )limina las l%neas de c(di$o del include / restaura ste!
u )scri&e el &loGue incluido en el +icBero de '2C@A3) e inserta la
sentencia include correpondiente!
A @%nea de destino de una operaci(n de copia o movimiento, el te;to
seleccionado se incluir en la l%nea posterior!
B @%nea de destino de una operaci(n de copia o movimiento, el te;to
seleccionado se incluir en la l%nea anterior!
7 Ovrela/ el contenido de C o 5 so&re la l%nea indicada!
C Copia esta l%nea!
CC ...CC Copia el &loGue de l%neas!
1 5ueve la l%nea indicada!
11 ... 11 5ueva las l%neas indicadas!
I 'nserta una nueva l%nea!
In 'nserta n l%neas!
9 'nserta un rea de comentario!
D Borra la l%nea!
DD...DD Borra el &loGue de l%neas!
R Repite la l%nea!
Rn Repite la l%nea n veces!
RR...RR Repite el &loGue de l%neas!
X Nunta la l%nea actual / si$uiente!
S Parte la l%nea a la posici(n del cursor!
S:...S: 3espla4a el &loGue de l%neas a la posici(n del
cursor!
FF...FF 5arca el &loGue de l%neas en el arcBivo
intermedio $eneral!
CURSO ABAP/4 Pgina 90
FCopia el contenido del arcBivo intermedio $eneral!
HH...HH Copia el &loGue indicado en el arcBivo intermedio
M!
??...?? =er MM!
? =er I
\\...\\ =er MM!
\ =er M!
C)EAR Borra los &u++ers M, I, Q!!!
PR...PR 'mprime el &loGue de l%neas!
>aria(les del Siste!a
9o!(re de >aria(le Descripcin
SI"'23)M Cantidad de repeticiones de &ucles
SI"PAC2O RA2#'5)J P$ina actual en creaci(n de lista
SI"#AB'M RA2#'5)J @%nea actual de una ta&la interna
SI"#F'@@ Cantidad actual de entradas en la ta&la interna
SI"#@OPC Atili4aci(n interna
SI"#5AM@ Cantidad m;ima de entradas en la ta&la interna
SI"#OCCA Parmetro occurs en ta&las internas
SI"##ABC 2Dmero de la Dltima l%nea de ta&la interna le%da
SI"#S#'S Atili4aci(n interna
SI"##AB' O++set de ta&las internas en el rea de roll
CURSO ABAP/4 Pgina 91
SI"3BC2# Cantidad elementos en con9unto tratado para operaciones
B3
SI"F3POS @u$ar de Balla4$o de un strin$
SI"CO@2O Columna actual en la creaci(n de la lista
SI"@'2C# Cantidad de l%neas de lista
SI"@'22O @%nea actual en la creaci(n de una lista
SI"@'2SQ @on$itud de l%nea de la lista
SI"PACC# @%mite de p$ina de lista en instrucci(n R)POR#
SI"5ACO@ Cantidad de columnas de instrucci(n S)# 5ARC'2
SI"5AROK Cantidad de l%neas de instrucci(n S)# 5ARC'2
SI"#@)2C #ama0o de la l%nea de una ta&la interna
SI"SFOFF Atili4aci(n interna
SI"K'@@' 2Dmero de la l%nea de ventana actual
SI"@'@@' 2Dmero de la l%nea de lista actual
SI"SABRC =alor de retorno tras determinadas sentencias ABAP/6
SI"F@)2C Atili4aci(n interna -lon$itud de campo.
SI"CACO@ Posici(n del cursor -columna.
SI"CAROK Posici(n del cursor -l%nea.
SI"@S'23 2Dmero de la lista de &i+urcaci(n
SI"@'S#' 2Dmero de la l%nea de lista actual
SI"S#)P@ 2Dmero de la l%nea @OOP en step d/npro
SI"#PAC' 'ndicador para almacenar ta&la interna en &loGue pa$in$
SI"K'2M8 Coordenada de ventana -columna i4Guierda.
SI"K'2I8 Coordenada ventana -l%nea i4Guierda.
SI"K'2M Coordenada ventana -columna derecBa.
SI"K'2I Coordenada de ventana -l%nea derecBa.
SI"K'2CO Posici(n de cursor en la ventana -columna.
9o!(re de >aria(le Descripcin
SI"K'2RO Posici(n de cursor en la ventana -l%nea.
SI"K'23' 'ndice de la l%nea de ventana actual
SI"SROKS @%neas en la pantalla
SI"SCO@S Columnas en la pantalla
SI"@OOPC Cantidad de l%neas @OOP en steploop de d/npro
SI"FO@)2 Atili4aci(n interna -lon$itud de salida de campo.
SI"FO3)C Atili4aci(n interna -campo posiciones decimales.
SI"#QO2) 3i+erencia de tiempo con \*ora media de
CreenHicB\ -A#C.
SI"3AIS# *orario de verano activo ?
SI"F#IP) Atili4aci(n interna -tipo de campo.
SI"APP@' Aplicaciones SAP
SI"F3AIK 3%a de semana en el calendario de +&rica
SI"CCARS #ipo cam&io/Campo resultado CARR)2CI CO2=)R#
CURSO ABAP/4 Pgina 92
SI"CCAR# #ipo de cam&io en ta&la de aplicaci(n CARR)2CI
CO2=)RS'O2
SI"3)BAC Atili4aci(n interna
SI"C#IP) #ipo de cam&io \5\,\B\,\C\ de CARR)2CI
CO2=)RS'O2
SI"'2PA# Atili4aci(n interna
SI"@A2CA Clave de idioma para entrar al Sistema SAP
SI"5O32O Cantidad de modos alternativos
SI"BA#C* BatcB activo -M.
SI"B'2P# BatcB input activo -M.
SI"CA@@3 Call modo activo -M.
SI"3I22R 2Dmero de la ima$en en pantalla actual
SI"3I2CR Crupo de d/npros del d/npro actual
SI"2)KPA Atili4aci(n interna
SI"PR'61 Atili4aci(n interna
SI"RS#R# Atili4aci(n interna
SI"K#'#@ 'ndicador para ca&ecera estndar de p$ina
SI"CPAC) 2Dmero de p$ina actual
SI"3B2A5 Base de datos l($ica en report ABAP/6
SI"5A23# 2Dmero de mandante para acceder al Sistema SAP
SI"PR)FM Pre+i9o ABAP/6 para 9o&s &atcB
SI"F5[)I 5enD de c(di$os de +unciones actual
SI"P)MP' '5PR'5'RJ #iempo de permanencia en SPOO@
SI"PR'2' Atili4aci(n interna
SI"PR'55 '5PR)S'O2J Salida inmediata
9o!(re de >aria(le Descripcin
SI"PRR)@ '5PR)S'O2J Borrar tras salida
SI"P@AIO Atili4aci(n interna
SI"PRB'C '5PR'5'RJ Portada de selecci(n
SI"P@AIP Atili4aci(n interna
SI"PR2)K '5PR)S'O2J 2ueva orden SPOO@ -lista.
SI"PR@OC Atili4aci(n interna
SI"P3)S# '5PR'5'RJ 3ispositivo de salida
SI"P@'S# '5PR)S'O2J 2om&re de la orden SPOO@ -nom&re de
lista.
SI"PAA#* Atili4aci(n interna
SI"PR3S2 '5PR'5'RJ 2om&re del set de datos SPOO@
SI"P2KPA Atili4aci(n interna
SI"CA@@R '5PR'5'RJ '3 para +unciones de dilo$o
SI"R)P' Atili4aci(n interna
CURSO ABAP/4 Pgina 93
SI"R#'#@ '5PR'5'RJ #%tulo de report del pro$rama de impresi(n
SI"PRR)C '5PR'5'RJ 3estinatario
SI"PR#M# '5PR'5'RJ #e;to para portada
SI"PRAB# '5PR'5'RJ 3epartamento en la portada
SI"@PASS Atili4aci(n interna
SI"2RPAC Atili4aci(n interna
SI"PAAR# '5PR)S'O2J )dici(n
SI"PRCOP '5PR'5'RJ Cantidad de e9emplares
SI"BA#QS SAB5'# &atcBJ 'nmediatamente
SI"BSP@3 SAB5'# +ondoJ Salida de lista en SPOO@
SI"BR)P6 SAB5'# +ondoJ 2om&re de ra%4 del report de llamada
SI"BA#QO SAB5'# +ondoJ Anico
SI"BA#Q3 SAB5'# +ondoJ 3iario
SI"BA#QK SAB5'# +ondoJ Semanal
SI"BA#Q5 SAB5'# +ondoJ 5ensual
SI"C#AB@ #a&la de tipo de cam&io en CARR)2CI
CO2=)RS'O2
SI"3BSIS SIS#)5J Sistema de &ase de datos
SI"3CSIS SIS#)5J Sistema de dilo$o
SI"5AC3B PROCRA5J 2om&re del +icBero para el acceso con
matcBcode
SI"SIS'3 SIS#)5J 'denti+icador del Sistema SAP
SI"OPSIS SIS#)5J Sistema operativo
SI"PF[)I RA2#'5)J Status de teclas"F actual
SI"SAPR@ S'S#)5AJ Release SAP
9o!(re de >aria(le Descripcin
SI"#CO3) S)SS'O2J C(di$o de transacci(n actual
SI"ACO55 '2#)RAC#!J 'ndicar +unci(n en el c(di$o O[
SI"CFKA) Atili4aci(n interna
SI"C*KA) Atili4aci(n interna
SI"SPO2O RA2#'5)J 2Dmero SPOO@ para salida de una lista
SI"SPO2R RA2#'5)J 2Dmero SPOO@ de instrucci(n #RA2SF)R
SI"KA)RS #118J 5oneda de sociedad tras leer se$mento B
SI"C3A#) FecBa de tipo de cam&io de CARR)2CI CO2=S!
SI"3A#A5 SIS#)5J FecBa del d%a
SI"S@S)# 2om&re de S)@)C#O2"S)#S
SI"SAB#I ABAPJ Forma de llamada en SAB5'#
SI"SABCS '2#)R2OJ Status call del report
SI"CROAP '2#)R2OJ Concatenaci(n
SI"FF'@) '2#)R2OJ Flat+ile -AS'2C/C)2)RA#'2C
3A#AS)#.
SI"AQ)'# SIS#)5J *ora
SI"3S2A5 RA2#'5)J 2om&re del set de datos para salida en
CURSO ABAP/4 Pgina 94
SPOO@
SI"R)P'3 PROCRA5J 2om&re de un pro$rama ABAP/6
SI"#AB'3 Atili4aci(n interna
SI"#F3S2 RA2#'5)J 2om&re del set de datos para e;tractos de
datos
SI"A2A5) S)SS'O2J 2om&re de usuario se$Dn entrada a SAP
SI"@S#A# '2#)RAC#!J 'n+ormaci(n de status por nivel de lista
SI"ABC3) CO2S#A2#J Al+a&eto -A,B,C,!!!.
SI"5AR[I @etra de l%nea actual para 5AR[
SI"SF2A5 Sin utili4ar
SI"#2A5) 2om&re de la ta&la interna despus de un acceso
SI"5SC@' '2#)RAC#!J @%nea de mensa9e -l%nea 3.
SI#'#@) PROCRA5J #%tulo del pro$rama ABAP/6
SI")2#RI Atili4aci(n interna
SI"@'S)@ '2#)RAC#!J @%nea seleccionada
SI"A@'2) CO2S#A2#J @%nea de su&ra/ado -RRRRRRRRRRRR!!!.
SI"MCO3) C(di$o O[ ampliado
SI"CPROC RA2#'5)J Pro$rama principal
SI"MPROC Atili4aci(n interna -pro$rama SIS#)5")M'#.
SI"MFOR5 Atili4aci(n interna -+orm SIS#)5")M'#.
SI"@3BPC PROCRA5J Pro$rama ABAP/6 de &ase de datos para
SI"3B2A5
SI"#=AR1 RA2#'5)J =ar! de te;to para elementos de te;to
ABAP/6
9o!(re de >aria(le Descripcin
SI"#=AR8 RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR3 RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR6 RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR7 RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR: RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR< RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR> RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"#=AR? RA2#'5)J =aria&le de te;to para elementos de te;to
ABAP/6
SI"5SC'3 '3 de mensa9e
CURSO ABAP/4 Pgina 95
SI"5SC#I #ipo de mensa9e -),',K,etc!.
SI"5SC2O 2Dmero del mensa9e
SI"5SC=8 =aria&le en mensa9e
SI"5SC= =aria&le en mensa9e
SI"5SC=3 =aria&le en mensa9e
SI"5SC=6 =aria&le en mensa9e
SI"O2CO5 '2#)R2OJ On Commit Fla$
SI"=@'2) CO2S#A2#J ra/a vertical
SI"K'2S@ '2#)RAC#!J @%nea en ventana seleccionada
SI"S#ACO '2#)RAC#!J @ista visuali4ada a partir de la columna
SI"S#ARO '2#)RAC#!J @ista visuali4ada a partir de l%nea
SI"3A#AR 'ndicadorJ 3atos reci&idos
SI"*OS# 2om&re de la mGuina
SI"@OC3B );iste &ase de datos local
SI"@OCOP Operaci(n local en &ase de datos
SI"3A#@O FecBa local, en relaci(n con el usuario
SI"#'5@O *ora local, en relaci(n con el usuario
SI"#S#@O Cronomarcador -+ecBa / Bora., en relaci(n con el usuario
SI"QO2@O *uso Borario del usuario
SI"3A#A# FecBa $lo&al, en relaci(n con A#C
SI"#'5A# *ora $lo&al, en relaci(n con A#C
SI"#S#A# Cronomarcador -+ecBa / Bora., en relaci(n con A#C
ABAP/4
CURSO ABAP/4 Pgina 96
Conceptos
A-an.ados
1 Reportin" Interacti-o
1. 1 Introduccin al reportin" interacti-o.
@os in+ormes -Reports. SAP se pueden clasi+icar claramente enJ Reportin"
Cl/sico $ Reportin" Interacti-o.
)l Reportin" Cl/sico como su nom&re indica es el in+orme t%pico, Gue tra&a9a
con $ran cantidad de in+ormaci(n / un nivel de detalle mu/ elevado!
)n el Reportin" Interacti-o se aprovecBa la tecnolo$%a SAP para o+recer
in+ormes Gue van detallando la in+ormaci(n &a9o la interacci(n del usuario, es decir se
reali4an listados $enerales Gue se visuali4an por pantalla / mediante teclas de +unci(n o
seleccionando posiciones de pantalla, se ir desarrollando aGuella in+ormaci(n Gue
solicite el usuario!
)n contraste con el reportin$ clsico, Gue es asociado con procesos de entornos
BatcB, el reportin$ interactivo es un desarrollo Gue toma todas las venta9as del entorno
online!
CURSO ABAP/4 Pgina 97
An e9emplo de listado interactivo podr%a ser una lista de clientes, Gue permita
visuali4ar sus datos de direcci(n, datos &ancarios, partidas!!! etc! en pantallas
di+erentes , Gue van apareciendo con+orme vamos seleccionando un cliente //o
solicitamos una +unci(n!
1.6 *enerando listados interacti-os.
Podemos encontrarnos con dos tipos de salida distintos J
" Ana lista (/sica.
- 3iversas listas secundarias -o de rami+icaci(n. , por e9emplo
in+ormaci(n detallada so&re datos de la lista &sica!
@a lista inicial 3(/sica4 la visuali4aremos con la sentencia KR'#)!
3esde esta lista inicial, el usuario ser capa4, de diri$irse a una lista
secundaria mediante una tecla de %uncin o posicionndose con el cursor! Al i$ual
Gue en las listas &sicas, se implementan el listado con la instrucci(n KR'#)!
@os datos de las listas secundarias aparecern en una ventana, por encima de la
lista principal, solapando una parte u ocultndola totalmente!Se podrn tener varias
listas cada una de ellas en ventanas distintas!
Para controlar el +lu9o del report interacitivo, tendremos una serie de eventos
como J
A' )I9E-SE)EC'I79 -si lo Gue se selecciona es una l%nea.,
A' Pn /
A' ASER-C711A9D-si se pulsa una tecla.!
An report interacivo puede tener como m;imo ? listados secundarios! Si el
usuario selecciona la +unci(n BAC@ el sistema vuelve al listado anterior! ABAP/6
numera los listados a medida Gue se van $enerando, empe4ando desde 1 -listado
&sico.!
)l nDmero del listado en proceso estar en la varia&le del sistema S?-)SI9D.
)n el listado &sico podemos visuali4ar ca&eceras con #OP"OF"PAC) o con la
ca&ecera estndar, pero en los listados de rami+icaci(n no podemos utili4ar ca&eceras
estndares, utili4aremos el evento '7P-7 -PA*E DARI9* )I9E-
SE)EC'I79.
1.3 )a interaccin con el usuario.
)l usuario tiene dos +ormas de interactuar con el sistemaJ
CURSO ABAP/4 Pgina 98
Seleccionando una l%nea del listado -con do&le"clicL. o utili4ando la
+unci(n Seleccionar! Para controlar la entrada del usuario
utili4amos el evento de ABAP, A' )I9E-SE)EC'I79.
Seleccionando una +unci(n, pulsando su &ot(n correspondiente o una
tecla de +unci(n! Para controlar la entrada del usuario utili4amos
el evento de ABAP, A' ASER-C711A9D. )l c(di$o de la
+unci(n solicitada lo podremos o&tener con la varia&le S?-
AC711.
Podemos conse$uir Gue un campo de pantalla est preparado para la entrada de
datos con la clusula I9PA' de la instrucci(n KR'#)!
FRI'E Bca!poC I9PA'.
)l sistema so&reescri&ir en pantalla el contenido del campo / $uardar el nuevo
valor en la varia&le S?-)ISE); despus de un evento A# @'2)"S)@)C#'O2 o A#
AS)R"CO55A23!
SE)ECCI`9 DE )I9EA.
@a selecci(n de una l%nea del listado interactivo , /a sea mediante un do&le"clicL
o mediante la +unci(n Seleccionar 3con C(di$o de +unci(n MPIC@M4; activa el evento
A' )I9E -SE)EC'I79!
)l proceso de este evento crear una nueva lista, Gue aparecer por encima de la
anterior! Para +acilitar la orientaci(n del usuario, podemos crear una ventana,
-instrucci(n K'23OK., donde aparecer los datos de esta nueva lista, solapndose
parcialmente con la lista anterior!
)n el evento A# @'2)"S)@)C#'O2, utili4aremos los datos de la l%nea
seleccionada, para leer directamente de &ase de datos / o&tener los datos Gue
necesitemos para la nueva lista! )n la lista anterior; tendremos Gue $uardar los datos
clave Gue necesitamos para procesar la si$uiente lista con la sentencia :IDE.
)n el momento de procesar este evento el sistema llena una serie de varia&les del
sistema! =er Ane;o 8 J M>aria(les del siste!a para reportin" interacti-oS para
ms in+ormaci(n!
)9emploJ
CURSO ABAP/4 Pgina 99
#AB@)S @FA'!
C)# @FA 8!
KR'#) @FA8"@'F2R!
KR'#) @FA8 "2A5)8!
*'3) @FA@"@'F2R!
A# @'2)"S)@)C#'O2!
'F SI"@S'23 W 8!
S)@)C# T FRO5 @FB[
K*)R) @'F2R W @FA 8 "@'F2R!
KR'#) @'FB["BA2[@,!!!
)23S)@)C#!
)23'F!
SE)ECCI`9 DE A9CI`9.
@a selecci(n de una +unci(n -&ot(n. o tecla de %uncin activa el evento, A' ASER-
C711A9D. )l c(di$o de la +unci(n solicitada se $uarda automticamente en la
varia&le
S?-AC711. Si adems el usuario selecciona una l%nea, el contenido de esta, podr
ser utili4ado en el proceso!
);iste una serie de +unciones Gue e;cepcionalmente no pueden activar el evento A#
AS)R"CO55A23 !2i podrn ser utili4adas para reali4ar +unciones propiasJ
PIC@ = Seleccionar - se utili4a A# @'2) S)@)C#'O2.
Pn = #ecla de +unci(n- se utili4a A# PFn.!
PRI = 'mprimir
BAC@ = =olver pantalla anterior
RF = Cancelar
PO = Funciones de Scroll!
)9emploJ #AB@)S @FA'!
C)# @FA'!
KR'#) @FA8"@'F2R!
KR'#) @FA8"2A5)8!
*'3) @FA8"@'F2R!
A# AS)R"CO55A23!
CAS) SI"ACO55!
K*)2 \BA2[\!
'F SI"@S'23 W 8!
S)@)C# T FRO5 @FB[
K*)R) @'F2R W @FA8"@'F2R!
KR'#) @'FB["BA2[@,!!!
CURSO ABAP/4 Pgina 100
)23S)@)C#!
)23'F!
)23CAS)!
Si el usuario pulsa una tecla de +unci(n asi$nada a un c(di$o de +unci(n PFn, se
de&er utili4ar el evento A' Pn; para procesar la entrada del usuario!
)9emploJ #AB@)S @FA8!
C)# @FA l!
KR'#) @FAl"@'F2R!
KR'#) @FA8"2A5)!
*'3) @FA8"@'F2R!
A# PF7! ] F7 W 3atos Bancarios
'F SI"@S'23 W 8!
S)@)C# T FRO5 @FB[
K*)R) @'F2R W @FA8"@'F2R!
KR'#) @'FB["BA2[@!!!
)23S)@)C#!
)23'F!
)n cualGuier caso es me9or utili4ar A# AS)R"CO55A23 Gue A# PFn, /a
Gue este Dltimo es menos +le;i&le! Con el A# AS)R"CO55A23, podemos asi$nar
una +unci(n a otra tecla de +unci(n sin tener Gue cam&iar el pro$rama / adems, es
posi&le Gue en di+erentes listas la misma +unci(n se utilice para di+erentes +unciones!
1.4 7tras +erra!ientas del reportin" interacti-o
Para recuperar in+ormaci(n seleccionada en un listado Ba/ dos posi&ilidades
" Atili4ar el comando *'3)! -@a ms ele$ante.!
:IDE Bca!poC.
*'3) $uarda el contenido de XcampoY de la l%nea de salida!
Cuando visualicemos la si$uiente lista, el sistema automticamente
llena el contenido de XcampoY con el valor $uardado en la
instrucci(n *'3)!
" Atili4ar la varia&le del sistema SI"@'S)@! -@a ms sencilla.!
)n el momento Gue el usuario selecciona una l%nea, el contenido de
esta se $uardar en la varia&le del sistema SI"@'S)@
CURSO ABAP/4 Pgina 101
Podemos o&tener la posici(n del cursor en el report con *E' CARS7R.
*E' CARS7R IE)D
Bca!poC. =
O&tenemos el nom&re del
campo donde est situado el
cursor
*E' CARS7R )I9E BlneaC.
=
O&tenemos la l%nea so&re la
Gue est el cursor!
#am&in es posi&le situar el cursor en una posici(n determinada conJ
SE' CARS7R Bcolu!naC BlneaC.
SE' CARS7R IE)D Bca!poC )I9E BlneaC.
Cam&io de EStatusF!
An Status -CA' Status. descri&e Gue +unciones estn disponi&les en un
pro$rama / como se pueden seleccionar, v%a menDs, teclas de +unci(n o
EpusB&uttonsF! Como /a veremos en el si$uiente cap%tulo, podemos de+inir un
Status mediante el E1enu PainterF!
Si un report $enera diversas listas, cada una puede utili4ar sus propias
com&inaciones de teclas! Con la instrucci(n SE' P-S'A'AS podemos cam&iar la
inter+ace de cada lista!
SE' P-S'A'AS BstatusC.
*a/ Gue tener en cuenta Gue e;isten diversas teclas de +unci(n reservadas por el
sistemaJ
1 J*elp!
6 JSeleccionar!
3 =BAC[!
CURSO ABAP/4 Pgina 102
4 J=alores posi&les!
15 J'r a la Barra de 5enDs!
16 JCancel!
1< =Fin!
61 =Scroll -le! P$ina.!
66 =Scroll -P$ina anterior.!
63 =Scroll -P$ina si$uiente.!
64 =Scroll -Dltima P$ina.!
)n la varia&le S?-P@E? tendremos el status del listado en curso!
*asta aBora todas las listas secundarias Gue creamos, aparec%an cu&riendo totalmente
la lista
anterior! @a re+erencia a la lista anterior no es aparente! Para +acilitar la
orientaci(n al usuario, podemos visuali4ar las listas secundarias en
ventanas mediante la instrucci(n FI9D7F.
FI9D7F S'AR'I9* A' Bcolu!naC BlneaC
3E9DI9* A' Bcolu!naC BlneaC4.
)speci+icamos las coordenadas Rsuperior"i4Guierda en el S'AR'I9* e in+erior"
derecBa en el E9DI9*.
Atili4aremos esta instrucci(n 9usto antes de los KR'#)Fs de las listas secundarias!
5anipular de listas
Para leer una l%nea determinada de la lista en
visuali4aci(n, utili4aremos la instrucci(n READ )I9E despus de un
evento A# @'2)"S)@)C#'O2 o A# AS)R CO55A23!
READ )I9E BlneaC.
#am&in podemos leer una l%nea de cualGuier listado rami+icado!
READ )I9E BlneaC I9DEH BndiceC.
3onde X%ndiceY es el nDmero de listado!
CURSO ABAP/4 Pgina 103
#am&in es posi&le modi+icar una l%nea de un listado con el contenido de SI"@'S)@
con el contenido de SI"@'S)@ con la instrucci(n 17DI? )I9E.
17DI? )I9E BlneaC.
Para o&tener in+ormaci(n detallada so&re la utili4aci(n de R)A3 @'2) /
5O3'FI @'2), ver la docu!entacin 7nline del editor de ABAP/4.
)s posi&le conectar reports interactivos con otros reports o con transacciones!
Podemos llamar a otro report con la instrucci(n SAB5'#!
SAB1I' BrcportC 3FI': BdatosC4.
)n este caso no se e9ecutar la pantalla de selecci(n del report Gue
llamamos / asi$naremos el criterio de selecci(n con la clusula FI':.
Para visuali4ar la pantalla de selecci(n utili4amos la clusula >IA
SE)EC'I79 SCREE9 del SAB5'#!
3espus del SAB5'#, el pro$rama Gue es llamado es Guien tienen el control /
el pro$rama donde est el SAB5'# es li&erado!
Si Gueremos volver al pro$rama ori$inal en la si$uiente instrucci(n al ,SAB5'#,
utili4aremos la clusula A23 R)#AR2, es decir el pro$rama ori$inal no ser li&erado!
Podemos llamar a un transacci(n con J
)EA>E '7 'RA9SAC'I79 BcodI'ranC.
)n este caso la transacci(n toma el control del proceso / el report es li&erado!
Si Gueremos Gue una ve4 e9ecutada la transacci(n el report recupere el control
tendremos Gue BacerJ
CA)) 'RA9SAC'I79 BcodI'ranC.
CURSO ABAP/4 Pgina 104
CURSO ABAP/4 Pgina 105
6 Pro"ra!acin de Di/lo"o
!8 Introduccin.
*asta el momento, tanto en el cap%tulo anterior como en el manual
MIntroduccin al ABAP/4M; Bemos estado descri&iendo el dise0o de aplicaciones de tipo
Reportin$, /a sea Clsico o interactivo!
)n este cap%tulo empe4aremos a ver los +undamentos de la pro$ramaci(n de
dilo$o para el dise0o de 'ransacciones SAP!
@a pro$ramaci(n de dilo$o necesita tcnicas especiales de codi+icaci(n en
ABAP/6, adems de Berramientas espec%+icas, como son un editor de pantallas 3Screen
Painter4 / un editor de super+icies 31en2 Painter4.
6.6 Pasos en la creacin de transacciones.
Para crear una transacci(n, ser necesario la $eneraci(n de una serie de o&9etos
de desarrollo! Cada transacci(n puede dividirse en varias pantallas, cada una de las
cuales puede utili4ar distintos menDs / todo ello controlado por un pro$rama en ABAP/
6 denominado 1odule Pool; Gue controla el +lu9o de la transacci(n / reali4a las
acciones necesarias para cumplir la +uncionalidad de la transacci(n!
CURSO ABAP/4 Pgina 106
#RA2SACC'V2
Pantallas
5)2fS
BAS) 3) 3A#OS
Por lo tanto los pasos a se$uir para el desarrollo de transacciones ser J
1a! Crear el cdi"o de transaccin.
:erra!ientas -C ForW(enc+ ABAP/4 "Y Desarrollo -C
'ransacciones.
'ndicndole J )l tipo de transacci(n, la descripci(n de la transacci(n, )l
nom&re del pro$rama ABAP/6 -5odule Pool., el nDmero de la primera pantalla /
opcionalmente un o&9eto de veri+icaci(n para e9ecutar la transacci(n!
6a. Crear el pro$rama ABAP/6 31odule Pool4.
3a. 3e+inir las pantallas Gue intervienen en la transacci(n con el Screen
Painter.
)speci+icando Gue datos aparecen en pantalla / de Gue +orma, adems de una
l($ica de proceso de cada pantalla!
4a. 3e+inir los !en2s con el 1en2 Painter.
)speci+icando el contenido de los menDs Pop"up, las teclas de +unci(n / los
&otones de comandos Gue se pueden utili4ar!
<a. 3e+inir el lu&o de pantallas en el 1odule Pool.
#a! Pro$ramar, en el 5odule Pool, los !dulos de cada pantalla, es decir lo Gue
de&e Bacer cada pantalla! Pro$ramando las acciones a reali4ar en tiempo de PBO
3MProcess Be%ore 7utputM4; antes de Gue apare4can los datos de la pantalla / en tiempo
de PAI 3MProcess A%ter InputM4; despus de Gue se Ba/an introducido los datos en los
campos de entrada!
CURSO ABAP/4 Pgina 107
3 Dise0o de 1en2s 31E9A PAI9'ER4. 3Release 3.54
3.1 Introduccin!
Con el 1enu Painter dise0aremos las super+icies CA', -Cra+ical Aser 'nter+ace.,
so&re las Gue corrern las transacciones SAP!
Ana CA' contiene todos los menDs, teclas de +unci(n, pusB&uttons, etc!!!
disponi&les para el usuario, durante la e9ecuci(n de una transacci(n!
Podremos indicar el status Gue utili4amos en una pantalla o el t%tulo en un m(dulo
PBO de la pantalla con las instrucciones J
SE' P-S'A'AS BcodI statusC.
SE' 'I')EBAR BcodIttuloC.
CURSO ABAP/4 Pgina 108
*erram! Barra de menD Barra de #%tulos
'denti+icamos las di+erentes inter+aces CA' de una transacci(n mediante los Status
Ana transacci(n tendr mucBos status di+erentes! 2o ser necesario rede+inir todos los
o&9etos de los status, /a Gue mucBos o&9etos de+inidos en un status podrn ser utili4ados
en otro! Por e9emplo es posi&le crear una &arra de menDs i$ual para toda la transacci(n!
Para iniciar el 5enD PA'2#)R; seleccionar J M'ools -C ABAP/4 F7R@BE9C:
-C Desarrollo -C 1enu Painter. 3SE414. )s posi&le mantener tanto un status de un
determinado pro$rama, como los di+erentes o&9etos de una CA' Gue +orman parte de los
status -&arras de menDs, teclas de +unci(n, t%tulos de menD!P.!
3.6 )a Barra de 1en2s!
)n primer lu$ar introduciremos las distintas opciones de la &arra de menDs, Gue las
iremos desarrollando en +unciones o en otros su&menDs, entrando los nom&res en la
parte superior de la pantalla! Se pueden incluir Basta : menDs en la &arra de menDs!
Adems de los menDs de usuario, elsistema a0adir automticamente S$ste! $ :elp!
Cada menD puede tener Basta 87 entradas! Cada una de las cuales puede ser otro
menD en cascada o una +unci(n!
Para a&rir un menD o su&menD, Bacer un 3o&le"ClicL so&re el nom&re! Cada
entrada estar compuesta de un c(di$o de +unci(n / un te;to de +unci(n o un te;to de
menD! Con F6 podemos ver una lista de las +unciones Gue podemos utili4ar!
Se pueden anidar Basta 6 niveles de su&menDs!
)n el caso de las +unciones, &astar con indicar el c(di$o de la +unci(n para Gue el
te;to de esta apare4ca automticamente, si esta /a e;iste previamente! Podemos de+inir
los atri&utos de una +unci(n nueva con 3o&le"ClicL so&re la nueva +unci(n de+inida!
CURSO ABAP/4 Pgina 109
Status CA'

S)# PF"S#A#AS XstatusY
SI"PF[)IJ Status
#%tulo CA'

S)# #'#@)BAR XcodeY
SI"#'#@)J #itle te;t
PusB&uttons
)n el caso de un menD en cascada, no ser necesario indicar el c(di$o, / con
3o&le"Cl%cL podemos desarrollar las opciones del su&menD!
3.3 )os RPus+(uttonsM.
@os PusB&uttons son &otones tridimensionales Gue aparecen de&a9o de la &arra
de Berramientas estndar!
Previamente a de+inir un Bot(n ser necesario de+inir la +unci(n deseada como
una tecla de +unci(n -apartado 3.44.
Para ver Gue +unciones se pueden utili4ar, nos situaremos so&re MAplication
tool(arM / pulsaremos 4;
'ndicaremos el c(di$o de +unci(n Gue deseamos Gue apare4ca en la &arra de
Berramientas de aplicaci(n! Podemos especi+icar si Gueremos Gue apare4ca un te;to
corto o Dnicamente un icono Gue identi+iGue la +unci(n!
2o ser necesario de+inir las +unciones de la &arra de Berramientas estndar,
MStandard 'ool(arM.
Para de+inir iconos para visuali4arlos en la &arra de Berramientas de aplicaci(n ser
necesario J
SeleccionarJ Edit -C Insert -C unction _it+ icon.
CURSO ABAP/4 Pgina 110
)ntrar el c(di$o de +unci(n
'ntroducir el nom&re del icono / el te;to del menD!
3.4 'eclas de uncin.
Para de+inir las teclas de +unci(n utili4amos el espacio destinado para ello!
'ndicando el c(di$o de la +unci(n en la l%nea correspondiente a la tecla Gue deseamos
utili4ar! )l te;to de la tecla de +unci(n aparecer automticamente, pero podr ser
modi+icado en caso de desearlo!
SAP no recomienda de+inir nuevas teclas de +unci(n en el espacio reservado para
teclas de +unci(n estndar!
CURSO ABAP/4 Pgina 111
3.< 7tras utilidades del 1en2 Painter.
3.<.1 Acti-acin de %unciones.
Podemos Bacer Gue las +unciones de la &arra de menDs estn en modo acti-o o
inacti-o. )n caso de estar inactivas, se visuali4arn en la &arra de menDs en &a9a
intensidad / su selecci(n no implicar e+ecto al$uno, en cam&io las +unciones activas
sern completamente e9ecuta&les!
Para activar o desactivar +unciones seleccionar Munction acti-ationS.
3.<.6 RastPat+sS
An EFastPatBs E - Camino rpido., es una manera rpida de esco$er +unciones en un
menD, asi$nado a cada +unci(n una tecla!
Podemos mantener EFastPatBsF seleccionandoJ
*oto urt+er options astpat+!
'ndicaremos para las +unciones deseadas una letra, normalmente la primera,
teniendo cuidado de no especi+icar la misma letra para distintas +unciones!
3.<.3 'tulos de 1en2.
)s posi&le mantener distintos t%tulos para un menD!
*oto -C 'itle list
Cada t%tulo se identi+icar con un c(di$o de t%tulo de tres d%$itos!
'ntroduciremos el te;to del t%tulo, pudiendo utili4ar varia&les de la misma +orma
Gue lo Bac%amos con los mensa9es en ABAP/6, es decir utili4ando el s%m&olo c!
Posteriormente ser en el pro$rama ABAP/6 donde le indiGuemos Gue t%tulo vamos a
utili4ar con la instrucci(nJ
SE' 'I'')EBAR Bcod-ttuloC FI': B-arlC B-ar6C ....
)n tiempo de e9ecuci(n el t%tulo del menD se $uardar en la varia&le del sistema
SI"#'#@)!
3.<.4 Prue(a; c+e8ueo $ "eneracin de Status.
CURSO ABAP/4 Pgina 112
Podemos pro&ar el Status simulando la e9ecuci(n de la inter+ace con JAser
Inter%ace -C 'est Status , e introduciendo los datosJ nDmero de pantalla, /,c(di$o del
t%tulo!
Antes de usar la inter+ace podemos compro&ar Gue la Bemos de+inido
correctamente, reali4ando un proceso de cBeGueo conJ Aser Inter%ace -C C+ecW
S$nta,! Posteriormente reali4aremos un proceso de $eneraci(n de la inter+ace Gue
inclu/e e8 cBeGueo / la $ra&aci(n de la misma!
3.# 1enus de A!(ito o de /rea.
An 5enD de m&ito es una a$rupaci(n de transacciones en +orma de menD!)s
una manera de a$rupar las transacciones ms +recuentemente utili4adas por un usuario
&a9o un mismo menD! A di+erencia de una transacci(n de dilo$o, el menD de m&ito
s(lo llama a otras transacciones, no pudiendo incorporar otro tipo de +unciones propias!
Podemos crear los menDs de m&ito con una versi(n simpli+icada del 5enu
Painter!
:erra!ientas ForW(enc+ ABAP/4 Desarrollo 1/s
+erra!ientas1enus /!(ito
fnicamente ser necesario introducir los c(di$os de transacci(n -#a&la #S#C. /
el te;to del menD!
Para ms in+ormaci(n so&re las posi&ilidades del 5enD Painter, ver el cap%tulo
1enu Painter del manual \BC ABAP/4 ForW(ec+ toolsM.
CURSO ABAP/4 Pgina 113
4 Dise0o de Pantallas 3SCREE9 PAI9'ER4. 3Release 3.54
4.1 Introduccin al dise0o de pantallas.
)l Screen Painter nos permite \pintar\ las pantallas de SAP / dise0ar su
comportamiento -l($ica de proceso.!
)n SAP, al con9unto de pantalla / l($ica de proceso de la misma se le denomina
3/npro -\3/narnic Pro$ram\.!
);isten dos modos de +uncionamiento del editor de pantallas J )l !odo "r/%ico
/ el !odo al%anu!Jrico; dependiendo del inter+ace $r+ico so&re el Gue +uncione SAP!
)n este cap%tulo se descri&e el uso del Screen Painter en modo $r+ico -versi(n
3!1., /a Gue se le considera como el ms c(modo / avan4ado, siendo adems soportado
por los inter+aces $r+icos ms e;tendidos - 5S K'23OKS / M' l/5O#'F A2'M.! 3e
cualGuier modo la +uncionalidad de am&os modos del editor es la misma!
Para activar o desactivar el modo $r+ico del editor de pantallas ir a J
Settin"s -C *rap+ical ulllscreen
4.6 Dise0o de pantallas.
4.6.1 Atili.ando el Screen Painter.
Ana pantalla SAP se identi+ica por el nom&re del pro$rama module pool de la
transacci(n a la Gue pertenece, ms un nDmero de pantalla!
As% tras acceder al Screen Painter desde el ABAP/6 KorL&encB, tendremos Gue
introducir el pro$rama / el nDmero de pantalla Gue deseamos mantener! Ana ve4 BecBo
esto aparecer el )ditor de Pantallas Mullscreen EditorM!
Si estamos creando el d/npro por primera ve4, nos pedir los atri&utos de
pantallaJ
3escripci(n
#ipo de pantalla -normal, de selecci(n, modal, Su&screen.!
C(di$o de la si$uiente pantalla!
Campo donde se situar el cursor!
Crupo de pantallas
#ama0o m;imo de la pantalla!

)n el editor de pantallas podemos o&servar 3 reas di+erenciadas J
@a ca(ecera = Con datos so&re la pantalla / el campo se est manteniendo en ese
preciso instante.
@a (arra de o(&etos -columna i4Guierda. J @ista de los o&9etos Gue se pueden crear
en la pantalla J #e;tos, entrada de datos, \cBecL&o;es\, \+rames\, \su&screens\ !!!
)l /rea de di(u&oJ )s el rea donde se di&u9a la pantalla Gue estemos dise0ando!
4.6.6 Creando o(&etos en 1a pantalla.
Para di&u9ar un o&9eto en la pantalla tendremos Gue colocarlo en el rea de
tra&a9o / posteriormente de%inir sus caracter%sticas -atri&utos.! Para ello tendremos
Gue
pulsar el &ot(n correspondiente en la &arra de o&9etos / marcar el rea donde vamos
a
situar el o&9eto!
Si Gueremos cancelar la creaci(n de un o&9eto pulsaremos el &ot(n Reset de la
misma &arra de o&9etos!
O&9etos disponi&les J
'e,tos = #e;tos, literales,!!! Gue son +i9os en pantalla / no pueden ser manipulados
por el usuario! Para considerar varias pala&ras como un mismo te;to tendremos
Gue colocar un s%m&olo \"\ entre ellas, /a Gue de otro modo las considerar como
o&9etos de te;to completamente distintos!
7(&etos de entrada/ salida 3M'e!platesM4 = Son campos para introducir o visuali4ar
datos!Pueden Bacerse opcionales o o&li$atorios!@os caracteres de entrada se
especi+ican con el s%m&olo \R\, pudiendo utili4ar otros caracteres para dar +ormato
a la salida! Por e9emplo una Bora podemos de+inirla comoJ
RRJRRJRR!
Radio-Buttons = Son peGue0os &otones redondos, Gue permiten una entrada de dos
valores so&re una varia&le -marcado o no marcado.! @os podemos a$rupar, de
+orma Gue la selecci(n de uno impliGue Gue no se pueda seleccionar nin$Dn otro!
C+ecW-Bo,es = )s como un radio"&utton pero de apariencia cuadrada en ve4 de
redonda! @a di+erencia respecto los radio"&uttons deriva en su utili4aci(n en
$rupos, /a Gue se pueden seleccionar tantos cBecLs"&o;es como se Guiera dentro
de un $rupo!
Pus+(uttons = )s un &ot(n de tipo pulsador! Se le asocia a una +unci(n, de
+orma Gue en el momento Gue se pulsa el PusB&utton se e9ecute la +unci(n!
ra!es 3Ca&as4 = Son Ca9as Gue a$rupan $rupos de o&9etos dentro de una pantalla
como por e9emplo un con9unto de radio"&uttons!
Su(screen= Son reas de la pantalla sin nin$Dn campo Gue se reservan para la salida
de otras pantallas -su&screens. en tiempo de e9ecuci(n! Para de+inir este rea, nos
colocaremos el punto de la pantalla donde Gueremos situar el n$ulo superior
i4Guierda de la Su&screen, seleccionaremos Edit -C Su(screen, indicndole el
nom&re Gue le vamos a dar, / +inalmente se0alaremos con do&le"clicL, el n$ulo
in+erior derecBa de la ventana!
Posteriormente ser en los m(dulos PBO / PA' cuando le indicaremos con la
instrucci(n CA)) SABSCREE9; Gu pantalla aparecer en el rea de Su&screen
Gue Bemos de+inido!
Ana ve4 situados los o&9etos so&re el rea de tra&a9o, podremos modi+icar su
tama0o, moverlos o &orrarlos!
#odos los te;tos, pusB&uttons!!! pueden incorporar iconos en su salida por pantalla!
@os iconos tienen una lon$itud de dos caracteres / estn representados por s%m&olos
estndares! )l icono ser un atri&uto ms de los campos / por tanto se de+inirn
9unto al resto de atri&utos del o&9eto!
4.6.3 Creando o(&etos desde el diccionario de datos.
)n la pantalla Gue estamos dise0ando, podemos utili4ar campos Gue estn $uardados
en el diccionario de datos o declarados en el module pool" Para ello tendremos Gue
seleccionarJ *oto -C Dict / Pro"ra! %ields.
Aparecer una pantalla de selecci(n de datos en la Gue indicaremos el campo o la
ta&la de la cual Gueremos o&tener datos! Adems se de&er seleccionar, si Gueremos
ver la descripci(n de cada campo -indicando la lon$itud. / si Gueremos reali4ar una
entrada de dalos -\template\. de dicBo campo por pantalla! Finalmente pulsaremos el
&ot(n correspondiente a crear desde el diccionario de datos o desde un pro$rama!
5arcaremos el campo Gue Gueremos incorporar a nuestra pantalla / los copiaremos
so&re el rea de tra&a9o, situndolos en la posici(n Gue creamos ms conveniente!
4.6.4 De%iniendo los atri(utos indi-iduales de cada ca!po.
@os atri&utos de los o&9etos de+inen las caracter%sticas de estos!
Podemos mantener los atri&utos desde el mantenimiento de atri&utos de campo o
desde listas de campos!
Podemos distin$uir entre atri&utos $enerales, de diccionario, de pro$rama / de
visuali4aci(n
Atri(utos *enerales=
1atc+code= Permite especi+icar un matcBcode para la entrada de un campo!
Re%erences = )speci+icamos la clave de la moneda en caso de Gue el campo
sea de tipo cantidad -CARR o QAA2.!
ield t$pe= #ipo de campo!
ield 9a!e= 2om&re del campo! Con este nom&re se identi+icarn desde el
pro$rama!
ield te,t= #e;to del campo! Si Gueremos utili4ar un icono en ve4 de te;to
de9aremos este valor en &lanco!
Fit+ icon = si Gueremos utili4ar iconos en entrada de datos -\templates\.!
lcon na!e = 'denti+ica el nom&re de un icono para un campo de pantalla!
Rollin" 3Scrollin"4= Convierte un campo en desple$a&le, cuando su lon$itud
real es ma/or Gue su lon$itud de visuali4aci(n!
KuicW In%o = )s el te;to e;plicativo Gue aparece cuando pasarnos por encima
de un icono con el rat(n!
)ine = )speci+ica la l%nea donde el elemento aparecer! )l sistema completa
este valor automticamente!
CI= )speci+ica la columna donde el elemento aparecer! )l sistema completa
este valor automticamente!
:t= Altura en l%neas! )l sistema completa este valor automticamente!
Dl" = @on$itud del campo!
>l"= lon$itud de visuali4aci(n!
ctCode= C(di$o de +unci(n -c(di$o de 6 d%$itos.! Atri&uto s(lo para
pusB&ottons!
ct'$pe= )speci+ica el tipo de evento en el cual el campo ser tratado!
)t$pe= #ipo de step loop -+i9o o varia&le.! )l tipo varia&le si$ni+ica Gue el
tama0o del step loop se a9usta se$Dn el tama0o de la pantalla, mientras Gue
+i9o no a9usta el step loop!
)ent = 2Dmero de l%neas de un step loop!
*roups= 'denti+ica $rupos de modi+icaci(n para poder modi+icar varios
campos simultneamente! Podemos asi$nar un campo a vanos -6. $rupos
de modi+icaci(n!
Atri(utos de Diccionario=
or!at='denti+ica el tipo de datos del campo! 3etermina el cBeGueo Gue
reali4a el sistema en la entrada de los datos!
r! DIC'.= )l sistema rellena este atri&uto en el caso de Gue el campo lo
Ba/amos creado a partir de un campo del diccionario de datos!
1odi%ic.= )l sistema rellena este campo si detecta al$una di+erencia entre
la de+inici(n del campo en el diccionario de datos / su utili4aci(n en
pantalla!
Con-. E,it= Si Gueremos utili4ar una rutina de conversi(n de datos no
estndar, especi+icamos aGu% el c(di$o de esta!
Para!. ID= C(di$o del parmetro S)g<C)#! -=er si$uiente atri&uto."
SE' para!*E' para! = @os parmetros SPA -Set Parameter. / *PA
-Cet Parameter., nos permiten visuali4ar valores por de+ecto en
campos! Si marcamos el atri&uto S)# para!; el sistema $uardar en un
parmetro '3 lo Gue entremos en este campo! Si marcamos el atri&uto
*E' para!, el sistema iniciali4a el campo, con el valor del parmetro
'3 Gue ten$a asi$nado en el atri&uto anterior!
Ap../lo_er= )l sistema no convierte la entrada a ma/Dsculas!
F/o te!plate= 5arcamos este atri&uto si Gueremos Gue los caracteres
especiales se traten como te;tos literales!
orei"n We$= Si Gueremos Gue so&re el campo el sistema realice un
cBeGueo de clave e;terna! -*a/ Gue de+inir previamente las claves
e;ternas en el diccionario de datos.!
Atri(utos de pro"ra!a =
Input %ield = Campo de entrada!
7utput %ield= Permite visuali4aci(n! Se puede utili4ar en com&inaci(n con el
anterior!
7utput onl$ = S(lo visuali4aci(n!
Re8uired %ield = Atri&uto para campos o&li$atorios! Se distin$uen con un [!
Poss. Entr$= )l sistema marca este atri&uto si Ba/ un con9unto de valores
para el campo! 2o es posi&le modi+icar el contenido del atri&uto!
Poss. Entries= 'ndica como podemos ver la +lecBa de entradas posi&les en un
campo!
Ri"+t-&usti%= Nusti+ica cualGuier salida del campo a la derecBa!
)eadin" .ero= Rellena con ceros por la i4Guierda en el caso de salidas
numricas!
U-entr$ = Permite la entrada de un asterisco en la primera posici(n de un
campo! Si se introduce un T se podr Bacer un tratamiento en un m(duloJ
F')@3 5O3A@) O2 T"'2PA#!
9o reset= Cuando activamos este atri&uto, la entrada de datos no podr
ser cancelada mediante el carcter b!
Atri(utos de -isuali.acin=
c i,ed %ont J =isuali4ar un campo de salida en un tama0o +i9o -no
proporcional.! S(lo se puede utili4ar en campos Output onl/!
c Bri"lit = =isuali4a un campo en color intenso!
a In-isi(le= Oculta un campo!
a 6-di!ensJ =isuali4a un campo en dos divisiones en ve4 de en tres!
4.3 )"ica de proceso de una pantalla.
4.3.1 Introduccin a la l"ica de proceso.
Ana ve4 Bemos de+inido $r+icamente las pantallas, ser preciso escri&ir una l($ica
de proceso para cada una de ellas, pasndose a denominar d/npros!
Para introducir la l($ica de proceso de las pantallas, utili4aremos una versi(n
especial del editor de ABAP/6! Coto "Y FloH lo$ia!
@a l($ica de proceso de las pantallas tienen una estructura determinada, / utili4an
comandos / eventos propios de mane9o de pantallas, similares a los utili4ados en
ABAP/6!
Consistir en dos eventos +undamentalesJ
PR7CESS BE7RE 7A'PA' 3PB74.
PR7CESS A'ER I9PA' 3PAI4.
)l PB7, ser el evento Gue se e9ecutar previamente a la visuali4aci(n de la pantalla,
mientras Gue el PAI, se e9ecutar despus de la entrada de datos del usuario en la
pantalla!
Adems de estos dos eventos o&li$atorios, e;isten eventos para controlar las a/udas,
PR7CESS 79 :E)P-REKAES' 3P7:4; / para controlar los valores posi&les de
un campo PR7CESS 79 >A)AE-REKAES' 3P7>4.
3esde la l($ica de proceso de las pantallas no se actuali4an datos, Dnicamente se
llamara a los m(dulos del module pool Gue se encar$an de esta tarea!
SCR))2 PA'2#)R -F@OK @OC'C. 5O3A@) POO@
PROC)SS B)FOR) OA#PA# PROCRA5 Q;;;;;;!
#AB@)SJP
5O3A@) '2'R=AR! 5O3A@) '2'R=AR OA#PA#!
P
)235O3A@)!
PROC)SS AF#)R '2PA#!
5O3A@) #RA#AR=AR! 5O3A@) #RA#AR=ARR'2PA#!
P
)235O3A@)!
4.3.6 Process Be%ore 7utput 3PB74.
)n el 5(dulo PBO, indicaremos todos los pasos Gue Gueremos reali4ar antes de Gue
la pantalla sea visuali4ada, como por e9emplo iniciali4ar los campos de salida, )sta
iniciali4aci(n se reali4ar en un m(dulo independiente dentro del module pool"
Para llamar a un m(dulo utili4aremos la sentencia 17DA)E.
17DA)E Bno!(re !oduloC.
)9emplo J
PROC)SS B)FOR) OA#PA#!
T
5O3A@) iniciali4arRcampos!
T
PROC)SS AF#)R '2PA#!
)n el 5odule pool el c(di$o del m(dulo empe4ar con la sentenciaJ
17DA)E Bno!(reI!oduloC 7A'PA'.
)n el caso de ser un m(dulo llamado desde el PA' serJ
17DA)E Bno!(re-inoduloC I9PA'.
3entro del module pool declararemos los campos de pantalla Gue va/amos a
utili4ar / en el m(dulos del PBO los iniciali4amos al valor Gue Gueramos! Si no
iniciali4amos e;pl%citamente, el sistema le asi$nar su valor inicial por de+ecto, a no
ser Gue lo Ba/amos de+inido como parmetro SPA / CPA!
Adems de iniciali4ar los campos de entrada de datos, el evento PBO, puede ser
utili4ado para J
Seleccionar el Status -menD. o el t%tulo de los menDs conJ
SE' P-S'A'AS B*AIIstatusC.
SE' 'I')EBAR BtituloC FI': Bp1C Bp6C Bp3C Bp4C.
3esactivar +unciones de un menD con =
SE' P-S'A'AS B*AI-statusC EHC)ADI9* B%unction-codeC.
Si se Guiere desactivar ms de una +unci(n, se le indicar en el )MC@A3'2C, una
ta&la interna con los c(di$os de +unci(n Gue Gueremos desactivar! @a estructura
de la ta&la interna ser J
3A#AJ B)C'2 OF ta&int OCCARS 1,
FA2C#'O2 -6.,
)23 OF ta&int!
5odi+icar los atri&utos de la pantalla en tiempo de e9ecuci(n! Para ello disponemos
de la ta&la SCREE9; donde cada entrada se corresponde a un campo de la
pantalla Gue puede ser le%da / modi+icada con @OOP\s / 5O3'FI\S!
@a estructura de la ta&la SCR))2 es J
2A5) 31 2om&re del campo de pantalla!
CROAP8 3 Campo pertenece al $rupo de campo 8!
CROAP 3 Campo pertenece al $rupo de campo !
CROAP3 3 Campo pertenece al $rupo de campo 3!
CROAP6 3 Campo pertenece al $rupo de campo 6!
AC#'=) 8 Campo visi&le / listo para entrada de datos!
R)QA'R)3 8 )ntrada de datos o&li$atoria!
'2PA# 8 Campo apto para entrada de datos!
OA#PA# 8 Campo s(lo visuali4aci(n!
'2#)2S'F')3 8 Campo en color intensi+icado
'2='S'B@) 8 Campo invisi&le!
@)2C#* 8 @on$itud de salida reducida!
R)QA)S# 8 Campo con =alores posi&les disponi&les
=A@A) *)@P 8 Campo con *elp disponi&le!
3'SP@AIR33 8 Campo tridimensional
'niciali4ar radio"&uttons / cBecL"&o;es! @os declararemos como caracteres de
lon$itud 8 / los iniciali4amos comoJ
Radio8 W EMF
CBecL8 W EMF!
)n el caso de los radio"&uttons, Gue pueden +uncionar en $rupo, de +orma Gue la
activaci(n de un &ot(n desactive otro, no ser necesario codi+icar este
comportamiento manualmente, /a Gue lo reali4ar el sistema automticamente!
Para de+inir un $rupo de radio"&uttons, seleccionamos los &otones del $rupo /
marcarJ Edit -C Radio Button *roup. )n caso de utili4ar el editor Al+anumrico J
Seleccionamos el primer o&9eto de $rupo, esco$er !Edit -C *rap+ical ele!ent;
Seleccionar el Dltimo o&9eto del $rupo / pulsar J De%ine *rap+ "roup.
Para utili4ar su&screens ser necesario reali4ar las llamadas a las mismas en
tiempo de PBO / de PA'!
PROC)SS B)FOR) OA#PA#!
CA@@ SABSCR))2 XreaY '2C@A3'2C Xpro$ramaY XscreenY!
PROC)SS AF#)R '2PA#!
CA@@ SABSCR))2 XreaY!
3ondeJ B/reaC = es el nom&re Glie le Bemos dado al rea de sul.screcii en
el Screen Painter!
Bpro"ra!aC = )s el nom&re del pro$rama Gue controla el su&screen!
BscrcenC = )s el nDmero de pantalla!
@a su&screen se e9ecutar como una pantalla normal / corriente con su
PBO / PA' correspondiente Gue son llamados desde el PBO / el PA' de la
pantalla principal!
Para manipular la posici(n del cursor!
Por de+ecto el sistema sitDa el cursor en el primer campo de entrada de la
pantalla, pero es posi&le Gue Gueramos situarlo en otro campoJ
SE' CARS7R IE)D Bno!(reIca!poC.
#am&in es posi&le Gue en al$Dn momento sea interesante conocer en
Gu campo est situado el cursor! Para Bacer esto utili4amosJ
*E' CARS7R IE)D B-arIca!poC.
4.3.3 Process A%ter Input 3PAI4.
)l PROC)SS AF#)R '2PA# se activa cuando el usuario selecciona al$Dn punto de
menD, pulsa al$una tecla de +unci(n o pulsa )2#)R! Si al$uno de estos eventos
ocurre, el PA' de la pantalla necesitarn responder apropiadamente a la +unci(n
seleccionada por el usuario!
4.3.3.1 )a -alidacin de los datos de entrada.
Ana de las +unciones ms importantes del Proces A+ter 'nput, es la de -alidar los
datos de entrada de la pantalla antes de ser usados! );isten dos tipos de validaci(n
de los datos de entradaJ An c+e8ueo auto!/tico reali4ado por el sistema / un
c+e8ueo !anual pro$ramado con el comando IE)D de la l($ica de proceso de
d/npros!
C+e8ueo auto!/tico.
)l sistema reali4a automticamente una serie de cBeGueos de los datos de entrada,
antes de procesar el evento PA'! Por e9emplo el sistema valida Gue se introdu4can
aGuellos campos Gue sean o&li$atorios, Gue el +ormato de los datos sea el correcto /
Gue el usuario introdu4ca un valor correcto en el campo -si en el diccionario de datos
Ba/ claves e;ternas o valores +i9os para un campo.!
Si el cBeGueo automtico detecta al$una inconsistencia, el sistema o&li$a al usuario a
introducir nuevamente un valor en el campo err(neo!
)s posi&le Gue en al$una ocasi(n el usuario Guiera salir de la pantalla sin
necesidad de pasar las validaciones automticas -Por e9emplo utili4ando las
+unciones estndares BAC[, )M'# o CA2C)@.! )n ese caso utili4aremos la
clusula A' EHI' C711A9D de la instrucci(n 5O3A@)!
17DA)E B!odulo-ABAPC A' EHI'-C711A9D.
Con A# )M'# CO55A23, podemos ir a un m(dulo de ABAP/6 antes de Gue
el sistema realice las validaciones automticas para un campo.
Para poder utili4ar un A# )M'# CO55A23 en un &ot(n un campo, ser
necesario asi$nar el valor E en el atri&uto de campo ct'$pe del editor de pantallas
o en las +unciones del 5enD Painter!
)n el m(dulo Gue llamamos incluiremos las instrucciones necesarias para poder
salir de la transacci(n o de la pantalla en proceso, por e9emplo para salir de la
transacci(n utili4aremos
)EA>E '7 SCREE9 5.
C+e8ueo 1anual.
Adems del cBeGueo automtico es posi&le reali4ar una validaci(n ms e;tensa
de los valores de entrada a los campos con las instrucciones IE)D / C:AI9 de la
l($ica de proceso del Screen painter!
Con F')@3 podemos validar un campo / con C*A'2 P F')@3 +8 P
F')@3 +8 P )23C*A'2 podemos validar ms de un campo en el mismo
procedimiento de cBeGueo!
Con IE)D podemos validar individualmente cada campo, de +orma Gue en caso de
error, la si$uiente entrada de datos s(lo permitir introducir el campo err(neo so&re
el Gue estamos utili4ando la instrucci(n F')@3!
3ependiendo del tipo de sentencia F')@3 Gue utilicemos, el mecanismo de
cBeGueo se reali4ar en la l($ica de proceso del Screen painter o en un m(dulo
ABAP/6!
)s posi&le reali4ar distintas validaciones de un campo de entrada dependiendo
de la +uente con la Gue contrastamos los valores posi&les! As% podemos cBeGuear el
contenido de un campo comparndolo con una ta&la de la &ase de datos, con una lista
de valores, o reali4ando la validaci(n en un m(dulo del module pool!
Para c+e8uear un ca!po contra la (ase de datos utili4amos J
IE)D Bca!poIpantallaC SE)EC' R71 Bta(laC
F:ERE Bca!poIta(laC D BentradaIca!poIpantallaC.
Si no se encuentran re$istros en el diccionario de datos el sistema emite
un mensa9e de error estndar!
);iste una versi(n ampliada de la instrucci(n anterior Gue permita enviar
mensa9es o Harnin$s en caso de Gue encuentre o no re$istrosJ
IE)D Bca!poIpantallaC SE)EC' U R71 Bta(laC
F:ERE BcondicinC
F:E9E>ER 397'4 7A9D SE9D
ERR7R1ESSA*E / FAR9I9* Bnu!eroC
FI': Bca!poIte,toC.
Para c+e8uear un ca!po respecto una lista de -alores utili4amosJ
IE)D Bca!poIpantallaC >A)AES 3BlistaI-aloresC4.
3onde Blista de -aloresC puede ser J
3MB-alorCM4
397' MB-alorCM4
3MB-alorlCM; MB-alor6CM;...97' MB-alornCM4
3BE'FEE9MB-alorlCMA9DMB-alor6CM4
397' BE'FEE9MB-alorlCMA9DMB-alor6CS4
Si el valor entrado por el usuario no corresponde a nin$Dn valor de la
lista, el sistema emite un mensa9e de error!
Para c+e8uear un ca!po en un !odulo de ABAP/4 utili4amos J
IE)D Bca!poIpantallaC 17DA)E B!odulo ABAP/4C.
#am&in es posi&le condicionar la e9ecuci(n de los m(dulos ABAP/6 J
! F')@3!!! 5O3A@)!!!! 79 I9PA' = Se e9ecuta el m(dulo si el campo tiene
un valor distinto del inicial -distinto de &lancos o ceros.!
! F')@3!!! 5O3A@)!!!! 79 C:AI9 I9PA' = Se e9ecuta el m(dulo si al$Dn
campo del C*A'2 tiene un valor distinto del inicial!
! F')@3!!!5O3A@)!!!!79 REKAES' =Se e9ecuta el m(dulo si el campo Ba
sido cam&iado desde su visuali4aci(n en pantalla! AunGue le demos el valor inicial!
! F')@3!!! 5O3A@)!!!! 79 C:AI9 REKAES' = Se e9ecuta el m(dulo si el
al$Dn campo a del C*A'2 Ba sido cam&iado desde su visuali4aci(n en pantalla!
!F')@3P5O3A@)P79 U-I9PA'J Se e9ecuta el m(dulo si el usuario
introduce un T en el campo / el campo tiene el atri&uto T-entr$.
!F')@3P5O3A@)P A' CARS7R SE)EC'I79J Se e9ecuta el m(dulo si el
campo Ba sido seleccionado!
Con C*A'2 podemos cBeGuear mDltiples campos simultneamente,
com&inndolo con la instrucci(n F')@3!
@a instrucci(n C*A'2 !!! )23C*A'2 encierra un con9unto de instrucciones F')@3,
en caso de error en la entrada de al$uno de ellos todos los campos del C*A'2 se
podrn modi+icar, mientras Gue los Gue no pertene4can al C*A'2 estarn &loGueados
para la entrada de datos!
)9emplosJ
C:AI9.
IE)D Bca!po1C;Bca!po6C; Bca!po3C.
17DA)E B!od1C.
17DA)E B!od6C.
E9DC:AI9.
C:AI9
IE)D Bca!po1C;Bca!po6C.
17DA)E B!od1C.
IE)D Bca!po3C 17DA)E B!od6C 79 C:AI9
I9PA'
E9DC:AI9!
4.3.3.6 Respondiendo a los cdi"os de %uncin.
Cuando el usuario de una transacci(n, pulsa una tecla de +unci(n, un punto de menD,
un pusB&utton, un icono o simplemente la tecla )2#)R, los datos introducidos en la
pantalla se pasan a los m(dulos del PA' para ser procesados 9unto a un c(di$o de
+unci(n Gue indicar Gu %uncin Ba solicitado el usuario!
)n el Screen Painter, ser necesario crear un campo de tipo c(di$o de +unci(n, O[,
-de lon$itud 7., Gue normalmente aparece al +inal de la lista de campos de cada
pantalla! #radicionalmente a este campo se le denomina 7@IC7DE, / ser
declarado en nuestro module Pool como cadena de caracteres de 6 posicionesJ
DA'A= 7@IC7DE344.
)n la l($ica de proceso de cada pantalla, tendremos Gue reali4ar el tratamiento
del O[RCO3)! Para ello utili4aremos un m(dulo Gue de&er ser el Dltimo del evento
PA', es decir Gue se e9ecutar una ve4 Gue todos los datos de entrada Ban sido
validados correctamente!
)9emploJ
@OC'CA 3) PROC)SO 5O3A@) POO@
PROC)SS B)FOR) OA#PA# 5O3A@) O[RCO3)!
CAS) O[RCO3)!
P! K*)2 EBAC[F!
S)# SCR))2 1!
PROC)SS AF#)R '2PA#! @)A=) SCR))2!
K*)2 EC*2CF!
P)RFOR5
C*A2C)R3A#A!
F')@3 P K*)2 E3'SPF!
5O3A@) P P)RFOR5
3'SP@AIR3OC!
5O3A@)P K*)2 ECOPIF!
CA@@
SCR))2 111!
5O3A@) O[RCO3)! )23CAS)!
C@)AR O[RCO3)!
)235O3A@)!
Ana ve4 procesado el c(di$o de +unci(n, &orraremos el contenido del O["CO3),
iniciali4ndolo para la pr(;ima pantalla! Podemos $uardar el contenido del O["
CO3) en una varia&le intermedia e iniciali4arlo inmediatamente!
4.3.3.3 Procesando Step loops.
An Step loop es un con9unto de datos idnticos Gue son copiados repetidamente, e
interactDan con el usuario como una ta&la!
Ser necesario crear el Step loop con el Screen Painter, seleccionando los datos Gue
Gueremos Gue +ormen parte del Step @oop / seleccionando la opci(n \@oops\ del
menD EeditF!
3entro de los atri&utos de campos pertenecientes al step loop, podemos actuali4ar
R)t$peS con el tipo del step loop -+i9o o varia&le., donde el tipo varia&le si$ni+ica Gue
el tama0o del step loop se a9usta se$Dn el tama0o de la pantalla, mientras Gue +i9o no
a9usta el step @oop / R)cntS con el nDmero de l%neas de step loop!
Posteriormente podremos acceder al contenido de los campos del step loop con las
instrucciones )77P... E9D)77P o )77P A'... E9D)77P!
)ntre el @OOP / el )23@OO'\, es posi&le utili4ar las instrucciones de l($ica de
proceso J F')@3, 5O3A@), =A@A)S, C*A'2, aunGue lo ms normal es utili4ar
5O3A@) para llamar a un m(dulo ABAP/6 Gue trate cada l%nea del step loop!
Ser necesario codi+icar un @OOP en los eventos PBO / PA' por cada step loop de la
pantalla, /a Gue permitir la comunicaci(n entre el pro$rama / la pantalla!
Sinta;is J
)77P. . . E9D)77P.
Permite moverse entre las l%neas del step loop! )n un evento PBO, permite copiar
los campos del loop a la pantalla, mientras Gue en un PA', los campos de pantalla
son copiados en un rea de tra&a9o del pro$rama -como un re$istro de ca&ecera.!
Atili4aremos esta instrucci(n si Gueremos utili4ar nuestro propio mtodo de scrollin$!
)n la varia&le del sistema S?-S'EP) tendremos el %ndice de la l%nea Gue estamos
procesando actualmente!
)9emplo J
TTT SCREE9 PAI9'ER; )7*ICA DE PR7CES7 UUU
PROC)SS B)FOR) OA#PA#!
@OOP!
5O3A@) @))RR#AB@AR'2#)R2A!
)23@OOP!
PROC)SS AF#)R '2PA#!
@OOP!
5O3A@) 5O3'F'CAR#AB@A!
)23@OOP!
TTT 17DA)E P77)UUU
5O3A@) @))RR#AB@AR'2#)R2A OA#PA#
'23 W BAS) Z SI"S#)P@!"8
R)A3 #AB@) '2##AB '23)M '23!
)235O3A@)
5O3A@) 5O3'F'CAR#AB@A '2PA#!
'23WBAS) Z SI"S#)P@"8
5O3'FI '2##AB '23)M '23!
)235O3A@)
)77P A' Bta( internaC... E9D)77P!
Permite moverse entre las l%neas del step loop, trans+iriendo datos entre una ta&la interna / el
step loop! Con este loop, aparecen automticamente las &arras de scrollin$!
)n el PBO, podemos utili4arJ
)77P A' Bta( -internaC
CARS7R BndiceC 3R71 B)IC '7 B)6C4. ...
E9D)77P.
Con CARS7R indicamos cual es el primer re$istro de la ta&la interna Gue Gueremos
visuali4ar! Si indicamos una varia&le",de pro$rama, el sistema la ir actuali4ando
con+orme nos va/amos moviendo por el step loop!
Con R71 $ '7 podemos controlar Gue porci(n de la ta&la interna
visuali4aremos! Por de+ecto ser toda la ta&la!
)n el PA', podemos utili4ar la instrucci(n 5O3'FI -dentro de un m(dulo ABAP/6.,
para modi+icar la ta&la interna con los valores del rea de tra&a9o!
)9emploJ
TTT SCREE9 PAI9'ER; )`*ICA DE PR7CES7 UUU
PROC)SS B)FOR) OA#PA#!
@OOP A# ta&Rint FRO5 desde #O Basta CARSOR indice!
)23@OOP!
PROC)SS AF\F)R '2PA#!
@OOP A# ta&Rint
5O3A@) modi+Rta&Rint!
)23@OOP!
UUU 17DA)E P77) ABAP/4 TTT
5O3A@) modi+Rta&Rint
5O3'FI ta&Rint '23)M indice!
)235O3A@)
)77P A' Bta(laIBDDC... E9D)77P!
Permite moverse entre las l%neas del step loop, trans+iriendo datos entre una ta&la de
&ase de datos / el step loop! )n el screen painter tendremos Gue de+inir los campos
del step loop como campos de &ase de datos!
Si Gueremos actuali4ar la &ase de datos con contenido del step loop, tendremos Gue
utili4ar la sentencia J 17DI? Bta(laC. de la l($ica de proceso dentro de un @OOP
A#!
)9emploJ
PROC)SS AF#)R '2PA#!
@OOP A# Xta&RB33Y!
5O3'FI X ta&RB33Y!
)23@OOP!
4.3.4 El lu&o de la transaccin!
3esde una transacci(n podemos ir controlando el +lu9o de pantallas de la misma,
llamar a otras transacciones o a reports!
Controlando la secuencia de pantallas.
);isten dos +ormas de saltar de pantalla en pantalla!
Por de+ecto, cuando aca&en todos los m(dulos del evento PA', el sistema saltar
a la pantalla Gue indiGue el atri&uto 9e,t Screen de la pantalla en e9ecuci(n. )s
posi&le modi+icar el atri&uto de pr(;ima pantalla con la instrucci(n SE'.
SE' SCREE9 Bno.IpantallaC.
);iste una +(rmula dinmica para llamar a otras pantallas, interrumpiendo as% la
secuencia de pantallas descrita mediante el atri&uto Next Screen Para ello
utili4aremos la instrucci(n CA)) SCREE9.
CA)) SCREE9 B noIpantalla C.
O
CA)) SCREE9 B noIpantalla C.
S'AR'I9* A' Bcolu!naIinicioC BlineaIinicioC
E9DI9* A' Bcolu!naI%inC BlineaI%inC
Con esta Dltima versi(n del CA@@ SCR))2, podemos utili4ar ventanas de tipo
popup, indicndole las coordenadas de inicio / +inal de la ventana, siempre Gue sea
ms peGue0a Gue una ventana normal!
#endremos en cuenta Gue cuando +inalice la pantalla o con9unto de pantallas, Gue
Bemos incorporado mediante CA@@ SCR))2, la secuencia normal de la transacci(n
continuar e9ecutndose desde el punto en Gue se de9(!
@a manera ms normal de teminar el proceso de una pantalla e ir directamente a
e9ecutar otra, es usando la instrucci(n )EA>E.
)EA>E '7 SCREE9 B no.IpantallaC.
1
SE' SCREE9 Bno.IpantallaC.
)EA>E SCREE9.
As%, una manera de volver a la secuencia de pantallas anterior a la utili4aci(n de
una instrucci(n CA@@ SCR))2 puede serJ
)EA>E '7 SCREE9 5! 1 SE' SCRE9 5.
)EA>E SCREE9.
)n caso de nin$Dn CA@@ SCR))2, estas instrucciones +inali4arn la
e9ecuci(n
de la transacci(n!
)la!ando a un report desde una transacci(n!
);isten dos posi&ilidades para incluir reports en una transacci(n! 3ependiendo
de la cantidad de in+ormaci(n Gue la transacci(n ten$a Gue suministrar al report
utili4aremos una u otra posi&ilidad!
)n el caso de Gue la transacci(n suministre la ma/or%a de los datos del
report utili4aremos la tcnica del )EA>E '7 I;IS'-PR7CESSI9*;
consistente en cam&iar el tipo de e9ecuci(n de modo dilo$o -transacciones. a modo
lista -reports interactivos.!
)EA>E '7 )IS'-PR7CESSI9*!
)l listado interactivo se e9ecutar mientras Gue el usuario no indiGue un
comando )M'# o BAC[ en la lista &sica o no se encuentre con una instrucci(n para
a&andonar el listado interactivo, como por e9emplo )EA>E SCREE9. )l sistema
automticamente volver al PBO de la pantalla Gue esta&a procesando!
)9emploJ CAS) O[RCO3)
K*)2 \3'SP\!
@)A=) #O @'S# PROC)SS'2C!
KR'#)J /!!!!
KR'#)J /!!!!
@)A=) SCR))2!
!K*)2P!
)23CAS)!
Si entre el report / la transacci(n Ba/ pocos datos en comDn o el proceso de
reportin$ lo tenemos identi+icado en un pro$rama independiente, utili4aremos la
instrucci(n SAB1I'.
SAB1I' Bno!(reIreportC 3A9D RE'AR94.
Con el SAB5'#, el report / la transacci(n no tienen el mismo rea de tra&a9o
-@AK., por tanto no comparten datos / el Dnico intercam&io de datos se producir
mediante los parmetros de entrada del report!
Podemos intercam&iar datos conJ
SAB1I' Bno!(reIreportC FI':...
=er la A$uda 7nline del editor de ABAP/4 para o&tener ms in+ormaci(n
so&re como pasar parmetros a un report desde una transacci(n!
)la!ando a un !dulo de %uncin desde una transacci(n!
3esde el modulo pool, tam&in es posi&le e9ecutar un m(dulo de +unci(n de la
misma +orma Gue lo Bacemos para un report, es decir, utili4ando la instrucci(n
CA)) A9C'I79!
);isten mucBos m(dulos de +unci(n especialmente dise0ados para
transacciones!
Por e9emploJ!
CA)) A9C'I79 MP7PAPI'7 I C79IR1I)7SSI7IDA'AM
EHP7R'I9*
'EH')I9E1 D 'EH'-551
'EH')I9E6 D 'EH'-556
I1P7R'I9*
A9SFER D REP)?.
)sta +unci(n te solicita con+irmaci(n antes de a&andonar una transacci(n sin Ba&er
$ra&ado previamente los datos introducidos!
)la!ando a otra transaccin desde una transacci(n!
3e la misma +orma Gue e;ist%an dos mtodos para cam&iar las pantallas de una
transacci(n, e,isten dos +ormas para llamar a otra transacci(n independiente de la
transacci(n Gue se est e9ecutando!
Si Gueremos Gue cuando %inalice la transacci(n, el sistema e9ecute otra
utili4aremos J
)EA>E '7 'RA9SAC'I79 McodItransaccinM.
Si en cualGuier momento Gueremos e9ecutar otra transacci(n para posteriormente
continuar la e9ecuci(n de la primera, utili4aremos J
CA)) 'RA9SAC'I79McodItransaccinM.
)n este caso el sistema crear una @AK independiente a la anterior / en el caso
de producirse un comando BAC[, el sistema retornar para e9ecutar la primera
transacci(n!
An caso t%pico es Guerer e9ecutar una transacci(n pero evitando introducir los
parmetros de entrada de esta manualmente -es decir, saltando la primera pantalla.!
)n ese caso usaremos la instrucci(n J
CA)) 'RA9SAC'I79McodItransMA9D S@IP IRS' SCREE9.
Para lo cual ser imprescindi&le utili4ar parmetros almacenados en memoria, /a
sea mediante los atri&utos SE' -en la primera transacci(n. / *E' -,en la transacci(n
Gue llamamos. o codi+icando e;pl%citamente las instrucciones S)#"C)\'\
respectivamenteJ
SE' PARA1E'ER IDMpara!MIEI;D Bca!poC.
*E' PARA1E'ER IDMpara!MIEI;D Bca!poC.
4.3.< Actuali.ando la (ase de datos en una transaccin.
#odas las operaciones Gue se reali4an so&re la &ase de datos no se re+le9an
inmediatamente en &ase de datos Basta Gue no se produce un proceso de actuali4aci(n
-C711I'.! )n el m&ito de las &ases de datos! Se dice Gue el con9unto de todas las
acciones re+erentes a &ase de datos incluidas entre dos commits se le denomina @AK
-@o$ical Anit KorL.
);isten dos clases de actuali4aciones Co!!its internos -Gue se producen de
+orma transparente al pro$ramador de la transacci(n. / Co!!its SAP -actuali4aciones
+or4adas por el pro$ramador en el momento Gue lo crea necesario, por e9emplo en la
Dltima pantalla de una transacci(n si no se Ba producido nin$Dn error.
Cuando se reali4an actuali4aciones de la &ase de datos en una transacci(n, se
de&er esco$er entre una actuali.acin sncrona / una actuali.acin asncrona.
Con una actuali4aci(n s%ncrona, la actuali4aci(n se produce en el mismo
momento Gue el usuario lo solicita!
)n una actuali4aci(n as%ncrona, el sistema $ra&a en una cola las operaciones Gue
se de&an reali4ar, / en un se$undo paso, este con9unto de operaciones se procesar para
ir reali4ando las actuali4aciones! )n este caso, los tiempos de respuesta sern
inmediatos, /a Gue la tarea de actuali4aci(n, Gue es la ms costosa en tiempo, se
pospondr para otro momento!
@as instrucciones de actuali4aci(n de la &ase de datos sonJ
n C711I' F7R@.
Reali4a un update +%sico de la @AK so&re la &ase de datos!
n PER7R1 BrutinaC 79 C711I'.
Permite e9ecutar la XrutinaY cuando el sistema encuentra un
CO55'# KOR[! )sto nos permite concentrar todas las
actuali4aciones de la &ase de datos en un Dnico procedimiento,
codi+icando todas las instrucciones de &ase de datos en la rutina!
n R7))BAC@ F7R@.
3esBace todas las operaciones reali4adas so&re la &ase de datos Basta
el Dltimo CO55'# KOR[! lNtlll<,aremos el RO',@BAC[ KOR[
cuando ocurra al$Dn error o cuando el usuario a&andona una
transacci(n con un BAC[, CA2C)@ o )23 / /a Bemos reali4ado
al$una operaci(n en &ase de datos Gue de&amos desBacer!
n CA)) A9C'I79 B!duloI%uncinC I9 APDA'E 'AS@
Permite e9ecutar un m(dulo de +unci(n en el momento Gue se Guiera
actuali4ar +%sicamente en la B!3!3! )l m(dulo de +unci(n de&er estar
marcado como m(dulo de update!
Podemos distin$uir entre diversos mtodos de actuali4aci(nJ
8!" )l ms sencillo es codi+icar directamente las instrucciones de
&ase de datosJ '2S)R#, 3)@)#), 5O3'FI,!!! en el pro$rama
principal de la transacci(n / +inalmente reali4ar un CO55'# KOR[
o esperar a Gue +inalice una pantalla para Gue el sistema realice un
commit interno -aunGue esto Dltimo no es mu/ +ia&le.
Ser Dnicamente via&le en transacciones de una Dnica pantalla!
6.- Atili4ar PER7R1 BrutC 79 C711I' / utili4ar la rutina
XrutY para
codi+icar las instrucciones de &ase de datos -'2S)R#, AP3A#),
5O3'FI, 3)@)#)!!! .
3." Atili4ando CA)) A9C'I79 B!odR%uncinC I9 APDA'E
'AS@ los cam&ios so&re la &ase de datos se reali4an en una +ase
as%ncrona -update tasL., en el m(dulo de +unci(n indicado cuando se
produce un CO55'# KOR[!
@os datos Gue se actuali4an son los valores en el momento de Bacer la llamada al
m(dulo de +unci(n / no los valores de cuando se e9ecute!
4." Atili4ar una +unci(n en AP3A#) #AS[ Gue se llama desde una
rutina Gue a su ve4 es llamada \O2 CO55'#\! -mtodo as%ncrono.!
)n este caso los valores de actuali4aci(n son los Gue e;istan
previamente a la actuali4aci(n +%sica!
=er el Cap%tulo MFritin" Dialo" pro"ra!s in ABAP/4 = Data(ase Inter%aceM del
manual MBC ABAP/4 Aser +and(ooWM; para o&tener ms in+ormaci(n so&re como
reali4ar los procesos de actuali4aci(n en las transacciones SAP!
6!3!: El (lo8ueo de datos en SAP!
Para coordinar el acceso de distintos usuarios a los mismos datos, / para evitar
posi&les inconsistencias en las actuali4aciones, SAP dispone de un mtodo interno de
&'oGueo, de +orma Gue Dnicamente un usuario podr procesar un o&9eto de datos de la
primera pantalla de una transacci(n a la Dltima!
Para implementar los &loGueos es necesario utili4ar o&9etos de &loGueo, Gue pueden
estar compuestos de un re$istro de una cierta ta&la o de una colecci(n de re$istros de
una o varias ta&las!
@os o&9etos de &loGueo se de+inen / se activan desde el diccionario de datos! )n
el momento Gue se activan, el sistema crear dos m(dulos de +unci(n Gue permiten
&loGuear o des&loGuear los o&9etos Gue se Ban especi+icado!
E9KAEAEIBo(&etoIdeI(lo8ueoC.
DEKAEAEI-Bo(&eto-de-(lo8ueoC.
)n el desarrollo de transacciones, para (lo8uear un o&9eto, llamaremos a la
+unci(n E9KAEAE-IBo(&eto-de-(lo8ueoC en el evento PA' de la primera pantalla!
)s posi&le compro&ar el resultado del &loGueo compro&ando si estn activas las
e;cepciones de este m(dulo de +unci(n!
7REI*9I)7C@ J Si el o&9eto est &loGueado por otro usuario!
S?S'E1IAI)ARE J )rror del sistema!
5ientras Gue para des(lo8uear un o&9eto &astar con utili4ar la +unci(n
DEKAEAEIBo(&etoIdeI(lo8ueoC.
4.3.N A$udas pro"ra!adas. E-entos P7: $ P7>.
)s posi&le pro$ramar nuestras propias a/udas para la entrada de datos en los campos.
Para ello utili4aremos los eventos PR7CESS 79 :E)P-REKAES' 3P7:4 para
las a/udas con 1 / PR7CESS 79 >A)AE-REKAES' 3P7>4 para las a/udas de
4 entradas posi&les!
Si el usuario pulsa Fl o F6, el sistema no activa el evento PROC)SS AF#)R
'2PA#, pero si el correspondiente evento de a/uda!
n PR7CESS 79 :E)P-REKAES'3P7:4.
'ndicamos en una instrucci(n F')@3, el elemento de datos del
diccionario, del cual Gueremos o&tener la a/uda so&re un campo de pantalla!
IE)D Bca!poC FI':Bele!IdatosCL.
IE)D Bca!poC FI':B-arC. 3onde XvarY es una varia&le
Gue contiene un elemento de datos!
n PR7CESS 79 >A)AE-REKAES' 3P7>4.
'ndicamos en una instrucci(n F')@3, el m(dulo donde vamos a tratar los
valores posi&les, Gue sustitu/e a la a/uda de SAP, para un campo de pantalla!

IE)D Bca!poC 17DA)EB!duloC

< Creacin de nue-as ta(las en el Diccionario de Datos
<.1" El proceso de creacin de una ta(la.
)l proceso de creaci(n de una ta&la de &ase de datos en el diccionario de datos
consta de una serie de pasos J
Crear el o&9eto #AB@A
)speci+icar los campos de la ta&la!
3e+inir los elementos de datos / dominios de la ta&la!
)speci+icar los %ndices, claves e;ternas / parmetros tcnicos!
Activar la ta&la!
n )ntrar en al ABAP/4 Dictionar$; indicar el nom&re de la ta&la Gue vamos a
crear / seleccionar MCreateM. -)mpe4ar por Q.!
n 'ntroducir una descripci(n &reve de la ta&la!
n 'ntroducir un Mdeli-er$ classM; Gue indicar el $rado de responsa&ilidad Gue
tiene SAP o el cliente so&re la ta&la! 2ormalmente utili4aremos el tipo A ,
Gue corresponde a la ta&las de aplicaci(n -datos maestros o de transacci(n,
es decir Gue se $eneran v%a transacciones SAP.! Podemos ver la utilidad
del resto de posi&ilidades, -C,C,@,),S,K. pulsando Fl so&re este campo!
n )ntrar el no!(re de los ca!pos de la ta&la en la columna Mield na!eM.
n Seleccionar los campos Gue Gueremos Gue +ormen parte de la cla-e pri!aria
de la ta&la!
n 'ntroducir el ele!ento de datos de cada campo J
Si este /a e;iste en el 3iccionario de datos, la in+ormaci(n del mismo,
aparecer automticamente!
Si el elemento de datos no e;ist%a en el diccionario de datos, con
do&le"clicL podemos ir al mantenimiento de elementos de datos para crearlo en ese
momento!
n Seleccionar el +la$ hinitiali , si los campos de&en ser iniciali4ados con sus
valores iniciales!

n Si Gueremos permitir el mantener la ta&la desde la transacci(n de
mantenimiento de ta&las -S538., lo indicaremos activando el +la$ Mta(le
!aintenance allo_edM.
n Si Gueremos Gue la ta&la Gue estamos creando dependa del mandante,
incluiremos el campo 1A9D' como el primer campo de la ta&la!
n )s posi&le especi+icar parmetros de tipo tcnico como el tipo de datos Gue
almacena la ta&la, el tama0o apro;imado, !!!etc! desde J *oto -C tec+nical
Settin"s.
n Finalmente, $ra&aremos los datos introducidos!
<.6. )as cla-es %or/neas.
Si un campo de la ta&la tiene un dominio cu/o ran$o de valores est de+inido
por una ta&la de valores, ser necesario de+inir las claves +orneas -e;ternas. con
dicBa ta&la de valores e indicar con un T en la columna MC+ecW ta(leM.
Para ello J
n Seleccionamos el campo con ta&la de cBeGueo!
n Seleccionamos *oto -C orei"n @e$!
n 'ntroducir
n #e;to de la clave +ornea!
n C(di$o de la ta&la de cBeGueo!
n Asi$naci(n del campo -Cenrico o Constante.!
n CBeGueo del campo en las pantallas!
n 5ensa9e de error Gue sustitu/e al mensa9e estndar de
error cuando se introduce un valor Gue no e;iste en
la ta&la de cBeGueo!
n Cardinalidad! 3escri&e la relaci(n con respecto al
nDmero de re$istros dependientes entre las ta&las "
-8JC, 8JC2, 8J2, 8J 8."
n #ipo de campo de clave +ornea!
Ser necesario de+inir las claves e;ternas si Gueremos Gue el cBeGueo automtico de
las pantallas +uncione correctamente!
<.3 7tras posi(ilidades en la creacin de ta(las.
n Si Bemos marcado la posi&ilidad de poder mantener el contenido de la
ta&la desde la transacci(n S538, ser necesario Gue e9ecutemos un
proceso de $eneraci(n de dicBo mantenimiento!
Para Bacerlo de&emos seleccionar !" En-iron!ent -C *en. 1aint.
Dialo".!
'ntroduciremosJ
)l $rupo de +unciones para el mantenimiento de ta&las!
)l $rupo de autori4aciones para el mantenimiento de ta&las!
)l tipo de mantenimiento Gue GueremosJ
3e una pantalla!
3e dos pantallas! Ana pantalla con lista de re$istros /
otra con valores individuales!
)l nDmero de 3/npro-s. Gue Gueremos asi$nar a la-s. pantalla-s.!
n )l %ndice primario se crea cuando una ta&la es activada! Ba9o ciertas
circunstancias es posi&le Gue sea recomenda&le a/udar a la selecci(n
de datos con ndices secundarios.
Para de+inir %ndices secundarios ir aJ *oto -C Indices.
n Finalmente, antes de poder utili4ar una ta&la creada por nosotros, ser
necesario reali4ar un proceso de AC'I>ACI79.

También podría gustarte