ABAP Capacitacion Para Funcionales DL- 2

download ABAP Capacitacion Para Funcionales DL- 2

of 63

Transcript of ABAP Capacitacion Para Funcionales DL- 2

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    1/63

    ABAP

    S

    AÑO 2006/7

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    2/63

    Página 2 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    3/63

    INDICE

     I. Introducción_________________________________________________________________________________________________6 

    Características del lenguaje:.........................................................................................................6

    Sintaxis y formato de un programa ABAP..................................................................................6

    Concatenación de sentencias.........................................................................................................7

    eclaración de datos.......................................................................................................................7

    !"jetos de datos..............................................................................................................................#

    Sentencias de declaración de datos...............................................................................................$

     II. Sentencias Básicas de Procesamiento de Datos____________________________________________________________________10

     III. Control interno del flujo de un programa_______________________________________________________________________1

    %jemplos de expresiones lógicas..................................................................................................&'

    Sentencias de control....................................................................................................................&'

    Sentencias de salida en "ucles.....................................................................................................&( I!. "a#las Internas $parte I%_____________________________________________________________________________________1&

    Concepto de ta"la interna............................................................................................................&)

    efinición de ta"las internas.......................................................................................................&)

    !.'lementos de "e(to___________________________________________________________________________________________16 

    !I. Diccionario )B)P__________________________________________________________________________________________16 

    !II. Pantalla de selección $parte I%________________________________________________________________________________1* 

    efinición de par*metros de selección .......................................................................................&7

    !II. Pantallas de selección $parte II%______________________________________________________________________________1+

    efinición de Select+options.........................................................................................................!III. Campos del sistema $S,S"%_________________________________________________________________________________1-

     I. S/ )B)P________________________________________________________________________________________________1

    !pen S,-......................................................................................................................................&

    S,- /ati0o....................................................................................................................................&

    Sentencias 1!pen S,-1..............................................................................................................&

     . Bases de datos lógicas________________________________________________________________________________________2

     I.Salida estándar de datos______________________________________________________________________________________&

    -istas sencillas...............................................................................................................................)

    -istas complejas............................................................................................................................)

     II. Procesamiento de ta#las internas_____________________________________________________________________________6 

    Acceso a los registros de una ta"la interna................................................................................6

    !peraciones con ta"las internas..................................................................................................6

    2sos de -!!P..%/-!!P para recorrer una ta"la interna..................................................7

    Procesamiento de ni0eles de control en ta"las internas............................................................#

    Página 3 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    4/63

    2so de S23 para calcular totales y su"totales en un e0ento A4.............................................#

    !rdenamiento de registros de una ta"la interna.......................................................................$

    eterminación de la cantidad de entradas de una ta"la interna.............................................$

    Comparación de ta"las internas..................................................................................................$

     I!. Control e(terno del flujo de un programa______________________________________________________________________1

    %0entos principales.......................................................................................................................'&

    %0entos 5ue se procesan en la salida de datos...........................................................................'&

    %0entos 5ue se procesan despus de la salida principal de un programa...............................'

    A"andono de "lo5ues de proceso................................................................................................'

     !. Programas interacti3os______________________________________________________________________________________

     !I. 4odulari5ación de un programa_____________________________________________________________________________* 

    3odulariación en declaración de datos....................................................................................'7

    4ransacciones................................................................................................................................'7  Programas....................................................................................................................................'$

    3ódulos de función......................................................................................................................'$

    Su"rutinas.....................................................................................................................................(8

    3acroinstrucciones......................................................................................................................(8

    Salida de procesos.........................................................................................................................(&

     !II. De#ugging de un programa_________________________________________________________________________________2

    Pantallas del de"ugger.................................................................................................................('

    9atcpoints..................................................................................................................................('%jecución paso a paso en el de"ugger.........................................................................................('

    Sentencias de depuración.............................................................................................................('

    3emoria SAP y memoria ABAP.................................................................................................((

    %;S en memoria SAP....................................................................................................................((

    %;S en memoria ABAP.................................................................................................................((

    %;S en arci0os externos..............................................................................................................((

    Ser0idor de presentación.............................................................................................................()

    3todo ....................................................................................................(7

    Programas est*ndar de Batc =nput...........................................................................................($

    %jecutar un juego de datos desde el programa ABAP..............................................................($

    4ransacción gra"adora de "atc+input......................................................................................($

      I. ser '(its_______________________________________________________________________________________________&0

    Cómo s si una transacción est*ndar tiene asociada un 2ser %xit?........................................)8

    Página 4 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    5/63

     II.7ield '(its_______________________________________________________________________________________________&1

     I!.7ield S8m#ols____________________________________________________________________________________________&

    eclaración de field sym"ols ......................................................................................................)'

    Procesamiento de field sym"ols...................................................................................................)'

     !."ransacciones del 'ntorno de Desarrollo______________________________________________________________________&&

     !I.Creación de 4ódulos de 7unción____________________________________________________________________________&-

    Página 5 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    6/63

    I. Introducción

    Las aplicaciones R/3 están escritas en el lenguaje de programación ABAP (Advanced Business ApplicationProgramming).Los programas ABAP se comunican con la base de datos con la inter!a" grá!ica de usuario (#APgui).

    Características del lenguaje:• Basado en programación estructurada.• $nterpretado% no compilado.• &irigido por eventos.• $ntegrado por completo en #AP R/3.• #oporta elementos de te'to multilenguaje.

    • anejo transparente abierto del sistema de gestión de bases de datos mediante ABAP pen#*L.• Permite ampliar la !uncionalidad estándar del sistema R/3.

    Sintaxis y formato de un programa ABAP

    +n programa ABAP está compuesto por sentencias. ,ada sentencia comien"a con una palabra clave(-eord) termina con un punto.j0REPORT PRIMER_PROGRAMA.WRITE 'Primer programa’.

      Además de las sentencias% los programas pueden contener comentarios  (te'tos entre sentencias del

    programa ABAP para cuo objetivo es e'plicar el propósito de dic1as sentencias). Los comentarios sedistinguen por2ue comien"an con (al principio de la l4nea) o con 5 (en cual2uier posición de la l4nea).

    PROGRAM SAPMTEST.************************************************* DECLARACIONES *************************************************DATA: FLAG ! "N FLAG N"M#ER T$PE I. ! CONTADOR......

    Página 6 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    7/63

    l lenguaje ABAP no tiene restricciones de !ormato. Las palabras deben separarse al menos por un espacio(el !in de l4nea se considera como un espacio).j0PROGRAM TEST.WRITE 'e%&o e% (a %e(&e()ia'.

    s igual aPROGRAM TEST. WRITE 'E%&o e% (a %e(&e()ia'.6 a su ve" es igual aPROGRAMTEST.WRITE‘Esto es una sentencia’.

    Caso especial: literales de textol !ragmento de código0PROGRAM TEST.WRITE 'E%&oe%(a %e&e()ia'.

    $nserta espacios entre cada l4nea del literal. n este caso se debe resolver de la siguiente manera0PROGRAM TEST.WRITE 'E%&o' ' e% ' '(a %e(&e()ia'.

    structura básica de las sentencias

    Concatenación de sentenciasl lenguaje ABAP permite concatenar sentencias consecutivas 2ue tienen la misma -eord% usando : (dospuntos)j0WRITE: SPFLI-CITYFROM,SPFLI-CITYTO,SPFLI-AIRPTO.

    Declaración de datos

    Página 7 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    8/63

    7ipos de datos 0• #on descripciones• 8o ocupan memoria en tiempo de ejecución• &escriben propiedades t9cnicas 2ue luego serán asociadas a un programa.

    7ipos de datos prede!inidos

    7ipos de datos locales de programa

    7odos los programas ABAP permiten de!inir tipos de datos propios. Los tipos de datos locales de unprograma se de!inen usando la sentencia 76P#0

    T$PES +&, ... -T$PE +&pe,/LI0E +o12,3 ...

    j0T$PES: (m1er T$PE i4e(g&5 T$PE p DECIMALS 6)o7e89 T$PE ).

    T$PES: #EGIN OF 4i(ea

    )o4m(a;89 T$PE C)o4m(a686 T$PE N

    END OF LINEA.

    Objetos de datos+nidades !4sicas 2ue ocupan espacio en memoria un programa puede utili"ar en tiempo de ejecución.,ada objeto de dato tiene asociado un tipo de dato.j0 :ariables% constantes

    Página 8 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    9/63

    Sentencias de declaración de datos

    7ABL#j0 TA#LES 1&o686@ T$PE C.

    DATA  (mero6 LI0E (mero.

    DATA )4ie(&e LI0E

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    10/63

    II. Sentencias Básicas de Procesamiento de Datos

    ! Asignación y Con"ersión

    MOVE: #e corresponde con el operador de asignación 5 en #7R+,7?.j0

    %&r)&6 %&r)&;.

    MOVE-CORRESPONDIN: ,opia el contenido de los campos de la estructura #7R+,7> en los campos de#7R+,7? 2ue tienen id9ntico nombre.j0MOVE-CORRESPONDIN struct! to struct".

    Asignación de "alores con #RITE TO

    @R$7...70 ,onvierte el contenido de $ar! en tipo , lo guarda en $ar" . A di!erencia de :% guardacon %ormato. #e tienen en cuenta los !ormatos de separador decimal !ec1a 2ue tiene de!inido cadausuario.j0

    WRITE ar; TO ar6.

    #esetear "ariables $a su "alor inicial!

    CLE&R: Asigna a una variable su valor inicial.j0

    CLEAR !"a#$%.

    Asignación entre campos tipo C y tipo P

    P&C': ,onvierte un campo caracter en un campo empa2uetado (tipo P).(NP&C': ,onvierte un campo empa2uetado en un campo caracter.j0

    PAC& "a#C TO "a#P.'(PAC& "a#P TO "a#C.

    Determinación de offset y longitud en asignaciones

    Las sentencias : @R$7..7 permiten utili"ar el o!!set la longitud 2ue deseemos para 1acerasignaciones entre objetos de datos.j0

    MOBE (om1re68? &o &e>&o.MOBE (om1re TO &e>&o.MOBE (om1re8 TO &e>&o.

    WRITE (om1re8H TO &e>&oo==%e&84o(g.  )o==%e& * 4o(g  son "a#ia+es e tio I

    Página 10 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    11/63

    Asignación de "alores tipo fec%aj0

    =e)5a %7a&m.=e)5aH86 '@;'.=e)5a =e)5a ;.

    &ota para las sentencias de asignación conversión0 ,uando los tipos de datos de las variables origen destino no son los mismos% se aplican re)las de con$ersi*n.

     ABAP provee un gran nmero de conversiones de tipo automático.

    '! Procesamiento num(rico

    #entencias básicas0

    tras sentencias0 AB#0 :alor absolutoj0

    ( / A0S1 M 2.

    ,$L0 :alor entero superior.j0

    ( / CEIL1 M 2.

    LR0 :alor entero in!erior.j0

    ( / FLOOR1 M 2.

    7R+8,0 Parte entera de un nmero.j0

    ( / TR'(C1 M 2.

    RA,0 Parte decimal de un nmero.j0

    ( / FRAC1 M 2.

    #7RL80 &evuelve la longitud de un string.j0

    ( / STRLE(1 M 2.

    ntre campos de estructuras% se pueden llevar a cabo operaciones aritm9ticas usando las siguientessentencias0

     A&&C,RR#P8&$8;#+B7RA,7C,RR#P8&$8;+L7$PL6C,RR#P8&$8;&$:$&C,RR#P8&$8;

    Página 11 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    12/63

    j03ATA: 0EGI( OF a,

    uno TYPE I 4AL'E 565,os TYPE I 4AL'E 575,

    E(3 OF a.3ATA: 0EGI( OF +,

    os TYPE I 4AL'E 585,

    t#es TYPE I 4AL'E 595,E(3 OF +.

    A33-CORRESPO(3I(G a TO +.WRITE: 0-3OS, 0-TRES.

    l resultado en pantalla ser4a0D D

    )! Sentencias de manejo de strings

    Pueden encontrar programas 2ue necesiten modi!icar la salida de una variable% para estos casos% lassentencias siguientes son las mas utili"adas0

    ,8,A78A7 C #PL$7 E #F$7 C ,8&8# C :RLA6 CRPLA, C#AR,F

    Página 12 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    13/63

    III. Control interno del flujo de un programa

    ediante el control interno del !lujo de un programa se pueden reali"ar bi!urcaciones o bucles. La maor4ade las sentencias de control interno utili"a 5e'presiones lógicas=.l !ormato básico de una e'presión lógica es0

    +cam,o! +o,erador +cam,o"

    Operadores para cual*uier objeto de datoOP+#ADO# +,-./A0+&1+ D+SC#.PC.2&* < $gual aG8 HI % IH 8o igual aGL7 H enor 2ueGL H< enor o igual 2ueG;7 I aor  ; I< aor o igual 2ueG

    Operadores para strings car3cter $C! y num(ricos $&!OP+#ADO# D+SC#.PC.2&

    , ,ontiene sóloG,8 8o contiene sóloG,A ,ontiene algnG8A 8o contiene algnG,# ,ontiene el stringG8# 8o contiene el stringG,P ,ontiene el patternG()8P 8o contiene el patternG()

    () Permite usar los caracteres especiales JJ (,ual2uier nmero de caracteres) JKJ (cual2uier caracter).Para buscar un JJ o JKJ o para di!erenciar masculas de minsculas 1a 2ue anteponer el JJ.

    Operadores especialesOP+#ADO# D+SC#.PC.2&B7@8 .. A8& Rango de valores$# $8$7$AL :alor inicial$8 :alor perteneciente a un criterio

    de selección

    Las e'presiones lógicas pueden combinarse con A8&% R 87.

    +jemplos de expresiones lógicas

    %/ i LE st#$ CO su+st#st#; CA 5Aa5.st#8 CP 5a 0ETWEE( ec>a?inicio A(3 5;@@;@$;5contao# IS I(ITIALsociea I( s?+uB#s

    Sentencias de control$0 Bi!urcación condicional.j0

    Página 13 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    14/63

    ! IF ); )6....

    ELSE....

    ENDIF.

    " IF ); , )6.

    ...ELSEIF ); + )6.

    ...ELSE.

    ...ENDIF.

    ,A#0 Bi!urcación mltiple condicional.j0

    CASE %&ri(g.WEN A’.

    JWEN '#' OR C’.

    JWEN OTERS.

    JENDCASE.

    &0 Bucle incondicional.j0! 3O.

    WRITE SY-I(3E.IF SY-I(3E / 8.

    EIT.E(3IF.

    E(33O.

    " 3O 8 TIMES.WRITE SY-I(3E.

    E(33O.

    @F$L0 Bucle condicional.j0

    WDILE inice % $.acto#ia / acto#ia < inice.inice / inice $.

    E(3WDILE.

    Sentencias de salida en bucles

    ,87$8+0 7ermina el paso de un bucle de !orma incondicional.,F,M He'pNlogicaI0 7ermina el paso de un bucle de !orma condicional (si no se cumple la e'presiónevaluada).

    O$70 7ermina un bucle de !orma incondicional.

    Página 14 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    15/63

    IV. Tablas Internas (parte I

    Concepto de tabla interna

    • La tablas internas proveen una !orma de almacenar datos en memoria l4nea por l4nea. ,ada l4neatiene la misma estructura.

    Los datos almacenados en tablas internas solamente e'istirán durante el tiempo de ejecución delprograma.• l nmero de registros de una tabla interna no es !ijo% el sistema incrementa el tamao de la misma

    en tiempo de ejecución (a medida 2ue se van agregando datos).• Las tablas internas están compuestas por /eader line  Table lines. La 1eader line es el área de

    trabajo% cuando se leen datos de una tabla interna estos 2uedan almacenados en la 1eader line. Losdatos solamente pueden leerse (o modi!icarse) en el 1eader line% de a14 reci9n trans!erirse a latabla interna.

    • l 1eader line es opcional% por lo tanto si 2uiere leerse una l4nea de una tabla interna de!inida sin1eader line debe guardarse el resultado en otra área de trabajo (con $87).

    • l 1eader line la tabla interna (table lines) tienen el mismo nombre. l sistema sabe en cadasentencia si nos re!erimos al área de trabajo o a la tabla interna (segn el tipo de sentencia).

    7abla interna Qrea de trabajo

    Definición de tablas internasLas tablas internas se declaran con la cláusula ,,+R# de la sentencia &A7A o 76P#. l parámetro,,+R# determina el nmero de l4neas creadas cuando la tabla es creada en memoria. #in embargo% entiempo de ejecución la tabla se e'tiende dinámicamente% on demandS (a medida 2ue se re2uieren nuevosregistros).

    ,rear una tabla interna en base a un tipo de estructura0TYPES: 0EGI( OF inea,

    couna$1;2 TYPE C,couna; TYPE I,

    E(3 OF LI(EA.

    3ATA ita+ TYPE inea OCC'RS [email protected] ita+; TYPE inea OCC'RS @ WITD DEA3ER LI(E.3ATA ita+8 LI&E ita+.3ATA ita+ LI&E ita+ WITD DEA3ER LI(E.

    ?. ,rear una tabla interna directamente% sin de!inir antes un tipo.3ATA: 0EGI( OF ita+ OCC'RS n,

    ...E(3 OF ita+.

    Página 15 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    16/63

    V.!lementos de Te"to

    Los elementos de te'to permiten guardar te'tos en el programa sin necesidad de especi!icarlos en el código!uente mediante 0ard-codin) .Los elementos de te'to de un programa se mantienen desde el editor ABAP (#3T)0 Pasar a - elementosde te1to.

    VI. Diccionario #B#P 

     A trav9s de la transacción del diccionario de datos (#>>) se pueden mantener todos los objetos de base dedatos relacionados directamente con el entorno de programación0

    • 7ablas.• structuras0 #e de!inen en !orma similar a las tablas pero !4sicamente es sólo una de!inición% no se

    pueden almacenar datos en ellas.• :istas de tablas.• lementos de datos0 +n elemento de datos es un tipo elemental 2ue describe los atributos de tipo

    (tipo de datos% longitud de campo % en caso necesario% cantidad de decimales) contienein!ormación relevante para dnpros (te'tos e'plicativos o Auda para campos).

    •&ominios0 Los dominios de!inen !ormatos de campos. +n dominio describe los atributos t9cnicos deun campo% tales como el tipo de datos o la cantidad de posiciones del campo% la tabla de veri!icaciónde posibles valores valores% longitud de salida rutina de conversión.

    •  Audas para bs2ueda (atc1code).• bjetos de blo2ueo0 Las bases de datos soportadas por #AP reali"an blo2ueos !4sicos en la

    actuali"ación de la in!ormación. Los objetos de blo2ueo permiten reali"ar blo2ueos lógicos en loprogramas.

    Página 16 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    17/63

    VII. Pantalla de selección (parte I

    Las pantallas de selección se componen de0

    • PARA7R#0 2uivale a una variable 2ue acepta un nico valor.• #L,7CP7$8#0 #e asocia a campos de la base de datos. Permite al usuario introducir

    combinaciones complejas de selección% 2ue se guardan en una tabla interna con un !ormatoparticular. Al de!inir un #L,7CP7$8 el programa crea una tabla RA8;# con el mismonombre.

    Definición de par3metros de selección

    PARA7R#0 &e!ine parámetros en la pantalla de selección.j0PARAMETERS: cao$1$@2 t*e c, )Pa#et#o tio c>a#, onH $@  cao; t*e , )Pa#et#o tio ec>a

    cao8 LI&E Bna$-Bunn#,)Coo n#o.cte 1>e#ea atc>coe2cao TYPE I 3EFA'LT $@@, )Tio ente#o 1#oone 5$@@52cao6 LI&E SY-3AT'M, )Tio ec>acao7 O0LIGATORY, )C>a# e onH. $ o+iHato#io

    cao AS CDEC&0O 3EFA'LT ‘’,)C>ecB+o= a#cao JeectocaoK RA3IO0'TTO( GRO'P #a$, )Raio+uttoncao9 RA3IO0'TTO( GRO'P #a$ 3EFA'LT ‘’,

    )Raio+utton 1seeccionao o# )eecto2cao$@ MEMORY I3 +uB, )Toa e "ao# o# eecto e

    eo#iacao$$ LI&E &(A$-&'((R MATCDCO3E O0ECT e+i. )usa atc>coe)5e+i5

    Página 17 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    18/63

    VII. Pantallas de selección (parte II

    Las pantallas de selección se componen de0• PARA7R#0 2uivale a una variable 2ue acepta un nico valor.• #L,7CP7$8#0 #e asocia a campos de la base de datos. Permite al usuario introducir

    combinaciones complejas de selección% 2ue se guardan en una tabla interna con un !ormato

    particular. Al de!inir un #L,7CP7$8 el programa crea una tabla RA8;# con el mismonombre.

    Definición de Select4options,ampos de la tabla RA8;# de un #L,7CP7$80

    CA5PO 0O&6.1-D /A0O#+S POS.B0+S#$;8 > $S0 $nclusión

    S0 'clusiónP7$8 ? *S0 $gual aG

    8S0 8o igual aG;S0 aor o igual 2ueG;7S0 aor 2ueG

    LS0 enor o igual 2ueGL7S0 enor 2ueG,PS0 ,ontiene patrónG (usa caracteres especiales 5K= 5=).8PS0 8o contiene el patrónG (usa caracteres especiales 5K= 5=).B7S0 ntre los valoresG (usa el campo F$;F).8BS0 8o está entre los valoresG(usa el campo F$;F).

    L@ La del campore!erenciado

    #egn el campo de re!erencia

    F$;F La del campore!erenciado

    #egn el campo de re!erencia

    #L,7CP7$8#0 &e!ine un criterio de selección en la pantalla de selección.

    j0 SELECT-OPTIO(S: s?Bunn# FOR Bna$-Bunn#,  s?+#sc> FOR Bna$-+#sc>

    3EFA'LT ‘@;@@’ TO ‘@@@’ OPTIO( 0T SIG( I,s?st FOR Bna$-st (O-ETE(SIO(,s?o#t@$ FOR Bna$-o#t@$ (O I(TER4ALS.

    Página 18 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    19/63

    VIII. Campos del sistema (S$ST

    n la siguiente tabla se describen los campos del sistema (#6Ccampo) más importantes para utili"ar en losprogramas ABAP.La lista completa puede verse desde el diccionario de datos (estructura #6#7).

    CA5PO 1.PO 0O&6.1-D D+SC#.PC.2&$8&O $87U >V Loops% ejecución de loop actualPA;8 $87U >V ,reación lista% página actual7AB$O $87U >V 7ablas internas% 4ndice de l4neas actual7$LL $87U >V 7ablas internas% cantidad de l4neas actual7,,+ $87U >V 7ablas internas% valor del parámetro ,,+R#&B,87 $87U >V Accesos base datos% cantidad de l4neas de tabla le4das&P# $87U >V #trings% o!!set en string (lugar de 1alla"go),L8 $87U >V ,reación de listas% columna actual en la creación de la listaL$8,7 $87U >V ,reación listas% longitud página de la listaL$88 $87U >V ,reación listas% l4nea actualL$8#W $87U >V ,reación listas% anc1o l4nea de la lista

    A,L $87U >V $mprimir listas% columnas de la sentencia #7 AR;$8AR@ $87U >V $mprimir listas% l4neas de la sentencia #7 AR;$87L8; $87U >V 7ablas internas% tamao de la l4neaL$LL$ $87U >V 7ratamiento listas% l4nea de lista seleccionada#+BR, $87U >V ,ódigo retorno% código retorno tras sentencia,+,L $87U >V $mágenes pantalla% posición del cursor 1ori"ontal (columna),+R@ $87U >V $mágenes pantalla% posición del cursor vertical (!ila)L#$8& $87U >V 7ratamiento listas% 4ndice del listado actualL$#7$ $87U >V 7ratamiento listas% nivel del listado desde el cual se activó el evento actual#7PL $87U >V &npros% 4ndice de l4nea de tabla actual (en LP)#R@# $87U >V $mágenes pantalla% cantidad l4neas#,L# $87U >V $mágenes pantalla% cantidad columnas

    LP, $87U >V &npros% cantidad de l4neas visibles en #7P LP de dnpro7W8 $87U >V ec1a 1ora% di!.tiempo con XFra estándar ;reenic1X en segundos&A6#7 ,FAR > ec1a 1ora% indic.1orario verano activo&A6@ $87> 3 ec1a 1ora% d4a de la semana en calendario !ábricaLA8;+ LA8; > #istema R/3% idioma actual&8 ,FAR > #istema R/3% cantidad de modos e'ternosBA7,F ,FAR > jecución en proceso de !ondo (O)YB$8P7 ,FAR > Batc1 input% programa ejecutado en batc1 input (O)Y,ALL& ,FAR > Programa ABAP% modo de llamada del programa activo&688R ,FAR U Programa ABAP% 8mero del dnpro actual&68;R ,FAR U Programa ABAP% grupo de imágenes del dnpro actual@7$7L ,FAR > ,reación listas% indicador para cabecera estándar de página

    ,PA; $87U >V 7ratamiento de listas% nmero de página actual&B8A ,FAR ?V Programa ABAP% base de datos lógica usadaA8&7 ,L87 3 #istema R/3% 8Z mandante desde entrada al sistemaPOP$ 8+, > Parámetro impr.% tmpo.permanencia en #PLPR$ ,FAR > Parámetro impr.% salida inmediataPRRL ,FAR > Parámetro impr.% borrar tras salidaPRB$; ,FAR > Parámetro impr.% portada de selecciónPR8@ ,FAR > Parámetro impr.% nueva orden #PLP&#7 ,FAR U Parámetro impr.% disp.salida

    Página 19 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    20/63

    PL$#7 ,FAR >? Parámetro impr.% nombre de la orden #PLPR ,FAR [ Parámetro impr.% nombre set de datos #PL,ALLR ,FAR T $mprimir listas% identi!.!unción de diálogoR7$7L ,FAR \V Parámetro impresión% t4tulo programa impresónPRR, ,FAR >? Parámetro impr.% destinatarioPR7O7 ,FAR [T Parámetro impr.% te'to para portada

    PRAB7 ,FAR >? Parámetro impr.% departamento en la portadaPAAR7 ,FAR >[ Parámetros impresión% edición impresiónPR,P 8+, 3 Parámetro impr.% cantidad impresiones&B#6# ,FAR >V #istema R/3% nombre sistema base de datos#6#$& ,FAR T #istema #AP% nombre del sistema #APP#6# ,FAR >V #istema R/3% sistema operativo del servidor #APPM6 ,FAR ?V $mágenes pantalla% status ;+$ actual#APRL ,FAR U #istema #AP% versión release del sistema7,& ,FAR ?V Programa ABAP% código transacción actual+, ,FAR \V $mágenes pantalla% código !unción 2ue se ingresó en campo comandos#P8 8+, >V $mprimir listas% nmero #PL&A7+ &A7# T ec1a 1ora% !ec1a (servidor de aplicación)

    #L#7 ,FAR >U $mágenes selección% nombre variante+W$7 7$# [ ec1a 1ora% 1ora (servidor de aplicación)RP$& ,FAR UV Programa ABAP% programa de control actual+8A ,FAR >? #istema #AP% nombre de acceso del usuarioL#7A7 ,FAR >[ 7ratamiento listas% denominador p.nivel

     AB,& ,FAR ?[ ,onstantes0 Al!abeto (A%B%,%...)#;L$ ,FAR [V ensajes% l4nea de mensajes7$7L ,FAR \V $mágenes pantalla% te'to de la l4nea de cabeceraL$#L ,FAR ?]] 7ratamiento listas% contenido l4nea seleccionada+L$8 ,FAR ?]] ,onstantes% barra 1ori"ontal de longitud (C),PR; ,FAR UV Programa ABAP% nombre del programa principalL&BP; ,FAR UV Programa ABAP% programa de base de datos (para #6C&B8A)

    7:ARV ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR> ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR? ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR3 ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:ARU ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR] ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR[ ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:AR\ ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:ART ,FAR ?V ,reación listas% variable te'to para elemento de te'to7:ARD ,FAR ?V ,reación listas% variable te'to para elemento de te'to#;$& ,FAR ?V ensajes% clase de mensaje#;76 ,FAR > ensajes% tipo de mensaje

    Página 20 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    21/63

    I%. S&' #B#P 

    n un sistema R/3% los datos 2ue deben permanecer en el sistema se almacenan en las tablas de base dedatos. l lenguaje ABAP permite acceder a la base de datos por di!erentes caminos0

    Open S,0pen #*L es un subconjunto de comandos de #*L #tandard completamente integrado en ABAP. 8ospermite leer (#L,7) modi!icar ($8#R7% +P&A7% &L7) in!ormación. s independiente del motorde base de datos 2ue se está utili"ando.

    S,0 &ati"os la posibilidad de incluir sentencias nativas #*L en un programa ABAP. Al ser nativas% estas sentenciasdependen del motor 2ue se este utili"ando. ($n!ormi'% racle% etc.).

    Sentencias 7Open S,07

    #L,70 Lectura de datos de las tablas de base de datos. l !ormato básico es0#L,7 ^#$8;L/&$#7$8,7_ HresultadoI

    $87 Hitab / estructuraIR HtablaI^@FR HcondiciónI_^;R+P B6 HcamposI_^FA:$8; HcondiciónI_^R&R B6 HcamposI ^A#,8&$8;/&#,8&$8;__.

    j0TA0LES Bna$.SELECT < FROM Bna$ WDERE Bunn# % 5@@@$67$@@@5.

    WRITE: J Bna$-Bunn#, Bna$-nae$.E(3SELECT.

    < Lectu#a e un soo #eHist#o e +ase e atosSELECT SI(GLE < FROM Bna$ WDERE Bunn# / 5@@@@@@@@@$5.

    3ATA st#uct LI&E Bna$.SELECT < FROM Bna$ I(TO st#uct WDERE an$ / 5AR5.

    WRITE: J st#uct-Bunn#.E(3SELECT.

    3ATA: 0EGI( OF st#uct,Bunn# LI&E Bna$-Bunn#,nae$ LI&E Bna$-nae$,E(3 OF st#uct.

    SELECT nae$ Bunn# I(TO CORRESPO(3I(G FIEL3S OF st#uct

      FROM Bna$.WRITE: J st#uct-Bunn#.

    E(3SELECT.

    3ATA ta+a LI&E Bna$ OCC'RS $@ WITD DEA3ER LI(E.< Gua#a# e #esutao e a consuta en una ta+a inte#na

    SELECT < FROM Bna$ I(TO TA0LE ta+a WDERE an$ / 5AR5.

    3ATA: 0EGI( OF ta+a OCC'RS @,Bunn# LI&E Bna$-Bunn#,nae$ LI&E Bna$-nae$,

    Página 21 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    22/63

    E(3 OF ta+a.SELECT nae$ Bunn# I(TO CORRESPO(3I(G FIEL3S OF TA0LE ta+a

      FROM Bna$ WDERE an$ / 5AR5.eueo e "ao#es con SELECT-OPTIO(SSELECT-OPTIO(S s?Bunn# FOR Bna$-Bunn#.SELECT < FROM Bna$ WDERE Bunn# I( s?Bunn#.

    < Lectu#a e os ta+as a t#a"s e I((ER OI(SELECT AQ&'((R AQ(AME$ 0Q0'&RS 0QALT&(I(TO CORRESPO(3I(G FIEL3S OF TA0LE ITA0FROM 1 &(A$ AS A  I((ER OI( &(0$ AS 0 O( AQ&'((R / 0Q&'((R 2WDERE AQ&'((R 0ETWEE( ‘$’ A(3 ‘;6@@@’ A(3  0-ALT&( 0ETWEE( ‘$’ A(3 ‘;6@@@’.

    .5PO#1A&1+: n la cláusula @FR pueden utili"arse todos los valores lógicos de comparación (losaplicables a todos los objetos de datos).

    $8#R70 $nserta un registro en tabla de base de datos. l !ormato básico es0

    I(SERT I(TO !ta#Het% 4AL'ES !a% .

    l contenido de la variable o estructura a es insertado en la tabla target. La variable o estructura a debecontener la misma longitud 2ue la tabla del diccionario. s conveniente de!inir 2a li3e tar)et .tras !ormas de lograr lo mismo son0

    $8#R7 HtargetI R Ha I.$8#R7 HdbtabI. ,uando se 1a completado con in!ormación la cabecera de la tabla.

    Para insertar varias l4neas0

    $8#R7 HtargetI R 7ABL HitabI ^A,,P7$8; &+PL$,A7 M6#_ .

    j0TA0LES Bna$.Bna$-Bunn# / 5@@@$67$@@85.Bna$-nae$ / 5Ciente Test5.I(SERT Bna$.

    &$60 La sinta'is es como $8#R7% pero se di!erencia en el !uncionamiento. #i el registro no e'iste loinserta en la tabla% si a e'iste% lo modi!ica.

    Página 22 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    23/63

    +P&A70 odi!ica el contenido de uno o más registros de la base de datos. l !ormato básico es0

    +P&A7 HtargetI #7 Hset>I Hset ?I ... ^@FR HcondI_.7ambi9n puede usarse de la !orma0+P&A7 HtargetI R HaI .+P&A7 HdbtabI.+P&A7 HtargetI R 7ABL HitabI .

    j0"PDATE

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    24/63

     %. Bases de datos lógicas

    +na base de datos lógica (B&L) es un programa de acceso a base de datos 2ue se asocia a un programaprincipal. La B&L el programa principal se unen en el proceso de generación para !ormar un nicoprograma.

    :entajas de usar B&L0#i varios programas leen los mismos datos% se puede centrali"ar el acceso a las tablas de base de datos enun nico programa% la B&L.#i se 2uiere usar la misma pantalla de seleción para varios programas% esto se reali"a con la pantalla deselección de la B&L.l programa de B&L puede reali"ar los c1e2ueos de autori"ación.

    La transacción mediante la cual se pueden de!inir% modi!icar visuali"ar las B&L es #3[.

    +na B&L está compuesta principalmente por0• structura0 s la relación entre las tablas 2ue componen la B&L. s jerár2uica.• #elección0 s la inter!a" de usuario asociada a la B&L (pantalla de selección).• Programa de base de datos0 #on las rutinas de acceso a los datos.•

    7e'tos de selección0 #on los te'tos 2ue aparecen en la pantalla de selección% dependientes delidioma.• &ocumentación.

    La lógica de acceso a los datos de una B&L se da en !orma jerár2uica0

     

    >) #e accede al >° registro de A.?) #e accede al primer registro de B relacionado con el registro le4do de A.3) #e accede a todos los registros de , relacionados con el registro de B.U) &espu9s se accede al siguiente registro de B (siempre relacionado con el de A).]) #e accede a todos los de , relacionados a este registro de B.[) +na ve" 2ue se procesaron todos los registros de B relacionados al primer registro de A% se lee elsiguiente registro de A.

    Página 24 de 63

    4a"la A

    4a"la B

    4a"la C

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    25/63

     %I.Salida estándar de datos

    Las sentencias de salida estándar de datos se dividen en dos grupos. n el primero !iguran sentenciaselementales% mientras 2ue en el segundo !iguran sentencias secundarias% bien por a!ectar la salida de !ormaindirecta% o bien por ser poco utili"adas.

    0istas sencillas@R$70 #entencia básica de escritura.j0

    WRITE ‘Doa’.WRITE 0&PF-0EL(R.

    WRITE: ‘E ne#o’ , nu , ‘es neHati"o’.

    0istas complejas8RPR70 &e!ine las caracter4sticas del listado (anc1o de página% cant. de l4neas por página% id de mensaje%etc.).

    j0REPORT #eo#te LI(E-SIE @ LI(E CO'(T @.

    REPORT #eo#te LI(E-SIE @ LI(E CO'(T 8@1;2 (O STA(3AR3 PAGE DEA3I(G.REPORT #eo#te MESSAGE-I3 FI.

    Página 25 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    26/63

     %II. Procesamiento de tablas internas

    Acceso a los registros de una tabla internaPara acceder a los registros de una tabla interna el sistema proporciona los siguientes m9todos0

    $ndice de la tabla interna0 s un nmero secuencial de cada registro de la tabla interna. 8o es un campo dela tabla. &espu9s de procesar un registro de una tabla interna% el campo del sistema #6C7AB$O contiene el4ndice del registro.,lave de!inida por sentencia0  ,uando se lee un registro de la tabla interna con la sentencia RA& sepueden especi!icar los campos 2ue se 2uieren usar como !iltro en el criterio de lectura.,lave estándar0 8Por de!inición% los campos clave de una tabla interna son a2uellos campos no num9ricos(tipos . $% P) 2ue no son tablas internas. sta clave estándar puede ser usada en sentencias como,LL,7% RA&% #R7 #+.

    Operaciones con tablas internas

    Borrado de tablas internas0

    Sentencia DescripciónRR#F Borra todas las l4neas de la tabla interna (las table lines). 8o borra la cabecera.

    ,LAR Borra el 1eader line (la cabecera).R Libera la memoria usada por la tabla interna.j0REFRES i&a1.CLEAR i&a1.FREE i&a1.

    $nserción de registros en tablas internas.

    Sentencia Descripción APP8& Aade registros al !inal de la tabla interna. s la 2ue se recomienda por ra"ones de

    rendimiento.,LL,7 Aade o modi!ica registros de la tabla interna en !unción de la clave estándar de la tabla.

    #i la clave estandar a e'iste en la tabla% modi!ica el registro acumulando los camposnum9ricos. #i no e'iste% es e2uivalente a APP8&.$8#R7 $nsertar un registro en una posición determinada de la tabla interna.

    ,opia de tablas internas.

    Sentencia Descripción APP8& 7ambi9n puede ser utili"ada para copiar el contenido de tablas internas.: ,opia el contenido de una tabla interna sobre otra% sobreescribiendo la tabla destino.$8#R7 7ambi9n puede ser utili"ada para copiar el contenido de tablas internas.

    j0

    4 Co,iar al)unas entradas de una tabla interna en otra5 a)re)6ndolas al %inal de la tabla4 destino

    APPEND LINES OF i&a1; FROM ; TO ? TO i&a16.

    4 Co,iar las entradas de una tabla interna en otra5 insert6ndolas en una ,osici*n de la4tabla destino.INSERT LINES OF i&a1; INTO i&a16 INDEK 6.

    4 Co,iar una tabla interna en otra5 sobreescribiendo la tabla destino.4 Si las tablas internas tienen 0eader line5 el mismo 7 las table lines tienen el mismo4 nombre5 ,or esto ,ara re%erenciar las table lines se usa 89.

    Página 26 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    27/63

    MOBE i&a16 TO i&a1;. !Si 4a% &a14a% (o &ie(e( 5ea7er 4i(eMOBE i&a16-3 TO i&a1;-3. !Si 4a% &a14a% &ie(e( 5ea7er 4i(e.i&a1;-3 i&a16-3.

    4 Recordar ue silas tablas internas tiene 0eader line5 la sentencia:i&a1; i&a16.

    4 Solamente co,ia el 0eader line ;cabecera.

    Lectura de registros de tablas internas.

    Sentencia DescripciónLP .. 8&LP Lectura de registros de tablas internas% recorriendo registro a registro.RA& Lectura de un registro particular de una tabla interna usando un 4ndice o una clave.

     A7 .. 8&A7 ventos internos e la sentencia LP 2ue se activan cuando se cumplen ciertascondiciones.

    #+ #uma los campos num9ricos de los registros de una tabla interna (dentro de unloop).

    Lectura de un re)istro de la tabla interna usando RE&D.

    l !ormato básico de la sentencia es0READ TA#LE +i&a1, -i(7e> ( / i&5

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    28/63

    La adición $87 (LOOP &T itab INTO 2a) permite recorrer la guardando el contenido de cada registro en unárea de trabajo (@A).

    Procesamiento de ni"eles de control en tablas internasl procesamiento de niveles de control se permite dentro de un LP de una tabla interna. sto signi!ica2ue pueden agruparse secuencias de entradas de la tabla interna segn el contenido de ciertos campos.Los niveles de control se !orman ordenando la tabla interna primero por su primer columna% luego por lasegunda% etc.

    ,ada cambio de color en una columna activa un evento A7 dentro del LP de la tabla.

    l siguiente ejemplo muestra los di!erentes eventos A7 2ue se activan al recorrer la tabla0LOOP AT i&a1.

    AT FIRST.!E%&o %e e2e)&a )a(7o %e 4e e4 primer regi%&ro

    ENDAT.AT NEW )o4.

    !E%&o %e e2e)&a )a(7o %e 4e ( (eo a4or e( COLENDAT.

    !Lo e (o e%& 7e(&ro 7e (i(gQ( AT %e e2e)&a para &o7o% 4o% regi%&ro%AT END OF )o4.

    !E%&o %e e2e)&a )a(7o %e 4ee e4 Q4&imo regi%&ro e( COL a(&e% 7e ( !)am1io 7e a4or.ENDAT.AT LAST.

    !E%&o %e e2e)&a )a(7o %e 4ee e4 Q4&imo regi%&ro 7e 4a &a14a i(&.ENDAT.

    ENDLOOP .

    &entro de un A7..8&A7% el 1eader line de la tabla interna solamente se carga con el valor de la l4neaactual para los registros 2ue están a la i"2uierda del campo clave del grupo 2ue se está evaluando. Loscampos a la i"2uierda del mismo se llenan con JJ.

    -so de S-5 para calcular totales y subtotales en un e"ento A18&entro de un evento A7% puede usarse la sentencia #+ para calcular los totales de los campos num9ricos

    de la tabla interna. Los registros 2ue se van a totali"ar dependen del evento en el 2ue se inclua el #+.j0

    LOOP AT i&a1.AT END OF )o4;.

    S"M. !To&a4e% por COL;ENDAT....AT LAST.

    S"M. !To&a4e% 7e 4a &a14a i(&er(aENDAT.

    ENDLOOP.

    Página 28 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    29/63

    Los totales se almacenan en el 1eader line% en los campos de tipo num9rico.

    odi!icación de registros de tablas internas.

    Sentencia Descripción&$6 odi!ica el contenido de un registro de la tabla interna.@R$7 .. 7 odi!ica el contenido de un registro de la tabla interna.&L7 Borra un registro de la tabla interna.

    n todos los casos% #6C#+BR, es V si la tabla interna pudo ser borrada/modi!icada. n caso contrario esHI V.

    Ordenamiento de registros de una tabla interna

    #e usa la sentencia #R7.SORT !ita+% U+* $ .. nV. O#ena a ta+a inte#na.

    SORT i&a1. !Or7e(a por 4a )4ae e%&(7ar 7e ITA# e( =orma a%)e(7e(&e.SORT i&a1 #$ )o4; )o46. !Or7e(a por COL; COL6 e( =orma a%)e(7e(&e.

    * Se pe7e e%pe)i=i)ar %i e4 )ri&erio e% a%)e(7e(&e o 7e%)e(7e(&e:SORT i&a1 #$ )o46 ASCENDING )o49 DESCENDING.

    Determinación de la cantidad de entradas de una tabla interna3ESCRI0E TA0LE !ita+% LI(ES !"a#%.

    La variable :AR debe ser de tipo num9rico% en ella se almacena la cantidad de entradas de la tabla interna$7AB.

    Comparación de tablas internasLas tablas internas pueden usarse como operandos en e'presiones lógicas (con operadores *% 8% L7%L% ;7% ;). ,abe recordar 2ue si las tablas tienen 1eader line 1a 2ue usar ^_ para re!erirse a las tablelines.l primer criterio al comparar tablas internas es la cantidad de entradas. +na tabla será maor 2ue otra sitiene más entradas. #i las tablas son iguales en cantidad de entradas se contina la comparación registro a

    registro. La comparación para en cuanto se encuentra un componente de la tabla 2ue es distinto entre lasdos. n ese caso devuelve el resultado de la comparación entre sos componentes.

    Página 29 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    30/63

     %III.ensajes

    Los mensajes se gestionan desde la transacción #D>. Los mensajes se agrupan por clases de mensaje(##A; $&). La misma agrupa mensajes 2ue tengan la misma unidad !uncional.La clase de mensaje se de!ine luego en los programas ABAP mediante la sentencia RPR7 (cláusula##A;C$&).Recordar 2ue los mensajes se invocan con la sentencia ##A;.

    8ro. ensaje

    7e'to mensaje

    :ariables de mensaje

    8o necesita te'to e'plicativo

    #i se 2uiere asociar un te'to e'plicativo a un mensaje% se 1ace posicionandose en el mismo con el botón

    .

    Página 30 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    31/63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    32/63

    página del in!orme.

    j0TOPOFPAGE.

    ENDOFPAGE.

    +"entos *ue se procesan despu(s de la salida principal de un programaPALABRA ,LA: :87

     A7 +#RC,A8& #e active cuando se selecciona una !unción (men% pulsador)% o se introduce uncomando en el campo de comandos.

     A7 L$8C#L,7$8 #e activa cuando se selecciona una l4nea de la salida principal. A7 Pnn #e activa cuando se presiona una tecla de !unción (P> .. P?U).

    Abandono de blo*ues de proceso#7P0 n un evento ;7 termina el procesamiento de la B& lógica pasa al evento 8&CC#L,7$8.j0 ...

    STARTOFSELECTION.WRITE: Pre1a STOP’.

    GET 0NA;.WRITE 0NA;0"NNR.STOP.

    ENDOFSELECTION.WRITE: Fi( 7e4 programa’.

    l programa imprime el nro. del primer cliente luego in de programaS.

    O$70 7ermina la ejecución del evento.n un evento ;7 termina el procesamiento de la B& lógica. 8o ejecuta el evento 8&CC#L,7$8.n #7AR7CC#L,7$8 !inali"a la ejecución del programa% mostrando la pantalla de salida.j0

    ...STARTOFSELECTION.

    WRITE: Pre1a STOP’.

    GET 0NA;.WRITE 0NA;0"NNR.EXIT.

    ENDOFSELECTION.

    WRITE: Fi( 7e4 programa’.

    l programa imprime solamente el nro. del primer cliente (no imprime Jin del programaJ).

    ,F,M +e1,?lo)0 l evento contina procesándose si se cumple la e'presión lógica +e1,?lo).n caso contrario !inali"a la ejecución del evento pero no el programa% sino 2ue se contina con el siguienteregistro recuperado de la B& lógica.j0

    ...GET 1

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    33/63

     %V. Programas interacti)os

     ABAP permite crear listados interactivos. +n listado interactivo ampl4a el t4pico listado clásico con!uncionalidades tales como seleccionar l4neas% reali"ar entradas% introducir comandos% etc.

    Los programas 2ue generan listados interactivos trabajan con ciertos campos del sistema. Los másutili"ados son los siguientes.:ariable #igni!icado

    #6CL#$8&ndice del listado creado. n el listado principal tiene valor V% se incrementa en > por cadalistado secundario. ,uando se abandona un listado secundario para ir al anterior la variabledisminue en >.

    #6CL$#7$ 8ivel del listado desde el cual el evento (selección de l4nea) !ue activado. n general%#6CL$#7$ < #6CL#$8& E >.

    #6CL$LL6 8ro. (absoluto) de la l4nea desde la cual !ue activado el evento.#6CL$#L ,ontenido de la l4nea seleccionada#6C,+R@ 8mero de l4nea de la ventana en la cual se posicionó el cursor al activar el evento (empie"a

    en >).#6C,+,L 8mero de columna en la ventana en la cual se activó el evento (empie"a en >).#6C,PA; 8ro. &e página en la cual se activó el evento.

    #6C+, ,ódigo de !unción activado.#6CPM6 #tatus actual de la inter!a" de usuario (enu Painter).

    Los eventos relacionados con los programas interactivos son los siguientes.Palabra clave vento

     A7 +#RC,A8& #e active cuando se selecciona una !unción (men% pulsador)% o se introduce uncomando en el campo de comandos.

     A7 L$8C#L,7$8 #e activa cuando se selecciona una l4nea de la salida principal. A7 Pnn #e activa cuando se presiona una tecla de !unción (P> .. P?U).7PCCPA; &+R$8;L$8C#L,7$8

    s como el 7PCCPA; pero se activa cuando se imprimen los listadossecundarios.

    j0

    REPORT TEST.

    WRITE Li%&a7o pri()ipa4’.

    AT LINESELECTION.WRITE: Li%&a7o %e)(7ario Nie4:’ S$LSIND.

    AT "SERCOMMAND.CASE S$"COMM.WEN F"N;’.

    ...WEN F"N6’.

    ...

    ENDCASE.

    AT PF?.WRITE P4% F?’.

    AT PF;6.WRITE P4% F;6’.

    TOPOFPAGE D"RING LINESELECTION.CASE S$LSIND.

    Página 33 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    34/63

    WEN ;.WRITE Li%&a7o %e)(7ario ;’.

    WEN 6.WRITE Li%&a7o %e)(7ario 6’.

    ENDCASE."LINE.

    Las sentencias relacionadas con los programas interactivos son las siguientes0#entencia Descripción##A; Activa un mensaje#7 PC#7A7+# &e!ine el código de status% para 2ue el sistema active la inter!a" de usuario

    correspondiente (enu Painter).#7 7$7LBAR &e!ine el t4tulo de pantalla.#7 +#RC,A8& Activa un comando (por lo tanto activa el evento A7 +#RC,A8&).@$8&@ &e!ine una ventana con !ormato de pantalla.F$& Retiene el contenido de un campo% cargándolo con el valor de la l4nea

    seleccionada en cada A7 L$8C#L,7$8.;7 ,+R#R btiene el nombre del campo en el cual se encuentra posicionado el cursor.#7 ,+R#R Posiciona el cursor en un campo determinado de la pantalla.

    &#,R$B L$#7 btiene los atributos de un listado.#,RLL L$#7 Reali"a un despla"amiento del listado.RA& L$8 Lee una l4nea del listado.RA& ,+RR87 L$8 Lee la l4nea actual del listado.&$6 L$8 odi!ica el contenido de una l4nea&$6 ,+RR87 L$8 odi!ica el contenido de la l4nea actual.

    ##A;0 Los mensajes se guardan en la tabla T!@@   se mantienen a trav9s de la transacción SEA!. Fa[ clases de mensajes0

     A (Abend) (rror)$ (in!o)# (#tatus)

    @ (@arning)O ('it)

    j0REPORT TEST MESSAGEID ;.MESSAGE E@@;.

    REPORT TEST.MESSAGE I@@68;.

    4 Inclu)4e(7o =()io(e%SET PFSTAT"S TEST’ EKCL"DING FC;’.SET PFSTAT"S TEST’ EKCL"DING i&a1.

    Página 34 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    35/63

    #7 +#RC,A8&0 Activa un comando (por lo tanto activa tambi9n el evento A7 +#RC,A8&).j0

    SET "SERCOMMAND COMD’.

    F$& !ield0 ,uando se imprime el listado en pantalla% al emplear la sentencia F$& sobre un campo seretiene el contenido del campo para cada l4nea de salida. ,uando el usuario selecciona una l4nea del listado%%ield  se carga automáticamente con el valor 2ue tiene en la l4nea seleccionada.j0

    GET

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    36/63

    * Mo7i=i)ar e4 )o(&e(i7o 7e (a 4U(eaWRITE: 'Ba4or:' ar.

    AT LINESELECTION.* Se mo7i=i)a e4 )o(&e(i7o 7e BAR.

    ADD ; TO ar.* $ %e mo7i=i)a e4 )o(&e(i7o 7e S$LISEL

    S$LISEL86 '**'.MODIF$ LINE S$LILL$ FIELD BAL"E ar.

    &$6 ,+R87 L$80 odi!ica el contenido de la l4nea del listado seleccionada actualmente.j0

    AT LINESELECTION.MODIF$ C"RRENT LINE LNE FORMAT INBERSE.

    Página 36 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    37/63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    38/63

    4 Borma b6sicaLEABE TO TRANSACTION F#@6’.

    4 Si uiero com,letar los datos de la ,antalla inicial directamente desde el ,ro)rama5 74 saltear la ,rimer ,antalla de la transacci*n in$ocada.SET PARAMETER ID #"0’ FIELD @;@@’.SET PARAMETER ID #LN’ FIELD _1e4(r.SET PARAMETER ID GVR’ FIELD 6@@6’.

    LEABE TO TRANSACTION F#@6’ AND S0IP FIRST SCREEN.

    La variable del sistema #6C7,& tiene en cada proceso el código de transacción actual.

    Página 38 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    39/63

     ProgramasSentencia Descripción$8,L+& $nclue código de otro programa.#+B$7 jecuta un programa.LA: PR;RA Abandona el programa actual.

    $8,L+&0 ;eneralmente se utili"a para separar la declaración de datos% el proceso las subrutinas de unprograma. #upongamos 2ue de!inimos todos los datos de un programa WRPR7 en un programa (tipoinclude) llamado W&A7#. A su ve" creamos otro programa WR+7$8A# (tambi9n de tipo include) dondeguardamos todas las subrutinas 2ue usa el programa WRPR7. La estructura de WRPR7 2uedar4a as40

    REPORT repor&.INCL"DE 7a&o%.+pro)e%o pri()ipa4, INCL"DE r&i(a%.

    #+B$70 jecuta un programa desde al actual. #i no se especi!ica lo contrario% el control pasa al programasubmitido (no vuelve al llamador).

    4 Borma b6sicaS"#MIT repor&.

    4 Si se desea ue al terminar de e=ecutarse el ,ro)rama submitido el control S"#MIT repor& AND RET"RN.

    4 Submitir un re,orte cu7o nombre est6 en una $ariable V?PRO?N&ME S"#MIT 8_prog_(ame.

    4 Submitir un re,orte ,as6ndole los ,ar6metros de selecci*nS"#MIT repor& WIT 1

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    40/63

    EAD ar_6TAIL ar_9

    EKCEPTIONS NOT_FO"ND ;OTERS 6.

    * A)&iar (a e>)ep)i( 7e%7e ( m74o 7e =()i(

    F"NCTION _DIBIDE....

    IF DIBISOR @.RAISE DIBISOIN_ERO.

    ENDIF....ENDF"NCTION.

    SubrutinasLas subrutinas son módulos de programa 2ue pueden ser llamados desde programas ABAP. ediante lassubrutinas es posible escribir solamente una ve" partes de un programa 2ue se ejecutan en !orma repetitiva.Sentencia DescripciónR .. 8&R &e!inición de una subrutina

    PRR Llamada a una subrutina

    R .. 8&R0 La sinta'is de la de!inición de una subrutina es la siguiente0FORM %1r&i(a "SING parm_; .. parm_(

      CANGING par_; .. par_(  TA#LES i&a1 STR"CT"RE e%&r)&ra_;

      i&a1( STR"CT"RE e%&r)&ra_(.

    +#$8;0 #e utili"an como parámetros de entrada a la subrutina.,FA8;$8;0 #e utili"an como parámetros de salida de la subrutina.7ABL#0 #on tablas internas (pueden ser parámetros de entrada o salida).j0* L4ama7o 1%i)o a (a %1r&i(aPERFORM =_r&i(a "SING 7a&o CANGING re&or(o.

    ...FORM =_r&i(a "SING p_7a&o

      CANGING p_re&or(o. p_re&or(o p_7a&o * 6.

    ENDFORM.

    * L4ama7o a %1r&i(a% e e%&( e( o&ro% programa%.PERFORM =_r&i(a8r&i(a% "SING 7a&o CANGING re&o(o.

    * O&ra =orma 7e 44amar a (a %1r&i(a e( o&ro programa_r&i(a 'F_R"TINA'._programa 'R"TINAS'.PERFORM 8_r&i(a IN PROGRAM 8_programa

    "SING 7a&oCANGING re&or(o.

    5acroinstrucciones+na macroinstrucción es la de!inición de una sentencia interna en un programa.Sentencia Descripción&$8 .. 8&CC&$8$7$8 &e!inición de una macroinstrucción. La ejecución de la misma se

    reali"a con el nombre de 9sta.j0

    * De=i(ir (a ma)roi(%&r))i( e rea4ia (a opera)i( ari&m&i)aDATA re%4&a7o T$PE I....

    Página 40 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    41/63

    DEFINE opera)i(.re%4&a7o ; 6 9.WRITE re%4&a7o.

    ENDOFDEFINITION....* I(o)ar a 4a ma)roi(%&r))i(opera)io( 9.

    opera)io( 6 ** X.

    #e pueden de!inir macros globales% 2ue pueden ser utili"adas por todos los programas. Las mismas sellaman macros RA,% se encuentran an la tabla 1#5AC.

    Salida de procesosPara abandonar el !lujo de alguno de los procesos anteriormente vistos se utili"an las siguientes setencias.Sentencia DescripciónLA: Abandona el proceso iniciado por un ,ALL 7RA8#A,7$8 o #+B$7 .. A8& R7+R8.

    l control se devuelve donde se reali"ó la llamada.O$7 Abandona una subrutina o cual2uier unidad de modulari"ación en !orma incondicional.,F,M Abandona una subrutina o cual2uier unidad de modulari"ación en !orma condicional.

    Página 41 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    42/63

     %VII. Debugging de un programa

    • La 1erramienta de depuración (debu))er ) permite ejecutar paso a paso una transacción o programa ABAP. #e puede ver el contenido de campos o tablas internas% as4 como crear puntos de rupturadinámicos (2atc0,oint ).

    • La transacción de depuración se puede activar a trav9s de0•

    Las sentencias BRAM BRAMCP$87.• $ntroduciendo 5/1= en el campo de comandos (MN,&) de cual2uier programa o transacción

    pulsando $87R.• ,on brea-Cpoints e'ternos al programa. &esde el editor ABAP% posicionando el cursor en la l4nea en

    la 2ue se 2uiere !ijar a trav9s de 5+tilidades CI Brea-points CI ijar/borrar= (o directamente botón

    ).

    La siguiente pantalla muestra la transacción de depuración0

    Programa de,ontrol.

    Programa 2ue se está ejecutando

    8mero de l4nea del programa

    Pró'ima sentencia 2ue se va aejecutar 

    Brea-Cpoint !ijado

    :er el contenido de una tabla interna

    :ariables ingresadas para ver sucontenido

    :alor de campos del sistemaodi!icar valor de campo o variable

    Página 42 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    43/63

    Pantallas del debugger n la parte superior de la pantalla de la transacción de depuración se encuentran los botones 2ue permitenpasar a las distintas pantallas del debugger.

    7ABLA0 Permite visuali"ar el contenido de una tabla interna.BRAMP$87#0 Lista de brea-points activos para el programa.@A7,FP$87#0 Lista de brea-points condicionales (2atc0,oints).LLAA&A#0 Resumen del !lujo de proceso (llamadas reali"adas% eventos% etc. 2ue se ejecutaron 1astallegar al punto de ejecución actual).R#+80 Lista de los blo2ues de proceso del programa actual.P,$8#0 pciones de depuración.

    atc%pointsLos atc1points son brea-pionts opcionales. l sistema evala si un campo determinado cambió su valor% si se da esto% se produce un brea-point en la sentencia posterior al cambio de valor.

    Los atc1points se crean con el botón .

     Aparece la siguiente pantalla0

    :ariable a evaluar 

    ,omparador lógico (si no se ponenada se activa cuando cambia elvalor).

    :alor o variable contra el 2ue secompara

    +jecución paso a paso en eldebugger Los siguientes botones permiten 1acer el seguimiento paso a paso del programa.

    >) PA# A PA# (])0 jecuta el programa paso a paso.?) `,+7AR ([)0 jecuta paso a paso% pero no entra a una subrutina% módulo de !unción% etc.3) R7R8AR (\)0 :uelve al evento% subrutina% etc 2ue invocó al módulo 2ue se está ejecutando.U) ,87$8+AR (T)0 #igue ejecutando 1asta el siguiente brea-point% atc1point o 1asta 2ue termine elprograma.

    Sentencias de depuración

    Sentencia DescripciónBRAM Activa el debugging de un programa para un usuario determinado.BRAMCP$87 Activa el debugging de un programa.j0

    * A)&ia e4 7e1gger para &o7o %ario#REA0POINT.

    * A)&ia e4 7e1gger para e4 %ario "SR@;#REA0 %r@;.

    Página 43 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    44/63

    5emoria SAP y memoria ABAPLa memoria #AP (memoria global) está disponible para el usuario durante todo el ciclo de vida de su sesión.s decir 2ue sus contenidos se mantienen más allá de la duración de una transacción.l contenido de la memoria ABAP permanece durante el transcurso de una sesión e'terna (&) durante el ciclo de vida de un proceso (por ejemplo% transacción). 8o es compartida entre dos o más modos.+;S en memoria SAPSentencia Descripción#7 PARA7R Actuali"a un parámetro de memoria.;7 PARA7R Recupera un parámetro de memoria.

    #7 PARA7R0 ;uarda un valor en la memoria #AP. ,ual2uier valor e'istente en la memoria #AP conel mismo $& es sobreescrito. l $& puede tener 1asta ?V caracteres.j0

    _%o)ie7a7 @@@’.SET PARAMETER ID #"0’ FIELD _%o)ie7a7.

    ;7 PARA7R0 Recupera un valor de la memoria #AP. #i se pudo encontrar en la memoria #AP unvalor con el $& especi!icado% se setea S-S(RC @ . n caso contrario S$S"#RC .j0

    GET PARAMETER ID #LN’ FIELD _(ro_7o).

    +;S en memoria ABAPSentencia DescripciónOPR7 7 R6 'porta datos a la memoria ABAP.$PR7 R R6 Recupera datos de la memoria ABAP.R R6 Libera la memoria ABAP.

    OPR7 7 R60 ;uarda datos en clusters de la memoria ABAP. stos datos pueden ser variables%estructuras% tablas internas% etc.). ,ada OPR7 7 R6 sobreescribe la memoria ABAP para el $&indicado.$PR7 R R60 $mporta objetos de datos de un cluster de datos de la memoria ABAP. #i sepudo encontrar en la memoria ABAP un cluster de datos con el $& especi!icado% se setea S-S(RC  < V.n caso contrario S-S(RC  < U.

    +;S en arc%i"os externos#AP permite trabajar con arc1ivos secuenciales locali"ados tanto en el servidor de aplicación como en elservidor de presentación.#ervidor de aplicaciónLas sentencias 2ue permiten trabajar con arc1ivos en el servidor de aplicación son0Sentencia DescripciónP8 &A7A#7 Abre un arc1ivo del servidor de aplicación.7RA8#R 7rans!iere un registro al arc1ivo del servidor de aplicación.RA& &A7A#7 Lee un registro del arc1ivo del servidor de aplicación.&L7 &A7A#7 Borra un arc1ivo del servidor de aplicación.,L# &A7A#7 ,ierra un arc1ivo del servidor de aplicación.

    P8 &A7A#70 Las siguientes opciones se utili"an para especi!icar la !orma en 2ue se va a abrir elarc1ivo0R $8P+70 Abre el arc1ivo para lecturaR +7P+70 Abre el arc1ivo para escritura (si ten4a algn contenido lo sobreescibe). #i el arc1ivo noe'iste lo crea.R APP8&$8;0 Abre el arc1ivo para escritura (si ten4a algn contenido% lo mantiene agrega lo nuevo al!inal). #i el arc1ivo no e'iste lo crea.

    Página 44 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    45/63

    $8 7O7 &0 Los contenidos del arc1ivo se estructuran en l4neas. ,ada RA& &A7A#7 o 7RA8#Rleen o escriben una l4nea del arc1ivo.$8 B$8AR6 &0 Los contenidos del arc1ivo no se estructuran en l4neas.

    l resultado de P8 &A7A#7 puede comprobarse veri!icando el valor de #6C#+BR, (si es V signi!ica2ue el arc1ivo se abrió correctamente).

    j0* E%)ri&ra 7e ( ar)5io 7e &e>&oPARAMETERS p_=i4e8Y@ T$PE C.DATA regi%&ro LI0E 1

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    46/63

      %%. Procesos Batc+ Input  

    l concepto de Batc1 $nput consiste en la actuali"ación de la base de datos a trav9s de las transaccionesdel sistema en !orma automática. Los m9todos Batc1 $nput o!recen las siguientes ventajas0

    • #in intervención0 8o se re2uiere intervención manual durante la trans!erencia de datos.• $ntegridad de datos0 +n batc1 input introduce los datos al sistema #AP de la misma !orma en 2ue lo

    1ar4a un usuario% introduciendo los datos manualmente% a trav9s de las transacciones #AP. 7odoslos controles c1e2ueos de la transacción tambi9n están presentes en la trans!erencia de datos conBatc1 $nput.

    Para reali"ar un batc1 input el sistema o!rece los siguientes m9todos0• 9todo 5Batc1 $nput clásico=0 +n programa ABAP lee los datos e'ternos genera una sesión (juego

    de datos) de Batc1 $nput. Luego de generarla 1a 2ue procesarla desde la transacción #3](#istema CI #ervicios CI Batc1 $nput CI ,arpetas).

    • 9todo 5,all transaction using=0 ste m9todo utili"a la sentencia 5,all transaction= para ejecutar latransacción. 8o genera juego de datos% las transacciones son ejecutadas online.

    7odos los m9todos Batc1 $nput se apoan en tablas internas con la estructura B&,&A7A.structura B&,&A7A

    ,AP 7$P L8;$7+& #$;8$$,A&P#O6#A5 C&P#O &-5C ? &ombre del dynpro de la transacción8D>&B+6.& C

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    47/63

    ,ampos especiales (bucles)0 Para poder especi!icar un campo en un bucle (por ejemplo en una grilla condatos) 1a 2ue especi!icar en 8A el nombre de campo seguido del sub4ndice entre par9ntesis.j0

    CLEAR TA#LA.TA#LAFNAM Z@9;LGART8@’.TA#LAFBAL X#@;’.APPEND TA#LA.

    Posicionamiento del cursor0 Para posicionar el cursor en un campo determinado% se genera una entrada enB&,7AB con 8A < B&,N,+R#RS :AL con el nombre de campo donde se desea situar el cursor.j0

    CLEAR TA#LA.TA#LAFNAM #DC_C"RSOR’.TA#LAFBAL #0PF#LDAT’.APPEND TA#LA.

    5(todo Batc% .nput Cl3sicoste m9todo crea sesiones (juegos de datos) de batc1 input. Para ello se utili"an los siguientes módulos de!unción0&+L & +8,$8 #$;8$$,A&BDCEOP+&E6#O-P Crear un juego de datos de Batc% .nput

    BDCE.&S+#1 .nsertar una transacción en el juego de datos de Batc% .nput8 1oda lainformación correspondiente a la ejecución de la transacción estar3contenida en una tabla interna con estructura BDCDA1A8

    BDCEC0OS+E6#O-P Cerrar un juego de datos de Batc% .nput8+j:, Crear un juego de datos Batc+ Input CALL F"NCTION '#DC_OPEN_GRO"P' EKPORTING   CLIENT S$MANDT ! Ma(7a(&e  GRO"P 'FACT"RAS' ! Nom1re V.Da&o%  OLDDATE _=e)5a ! Fe)5a 7e 14oeo 8op)io(a4  0EEP 'K' ! Ma(&e(er V.7a&o% pro)e%a7o 8op)io(a4  "SER %(ame ! "%ario propie&ario 7e %e%i( EKCEPTIONS 

      CLIENT_INBALID ;  DESTINATION_INBALID 6  GRO"P_INBALID 9  GRO"P_IS_LOC0ED   OLDDATE_INBALID ?  INTERNAL_ERROR H   Z"E"E_ERROR X   R"NNING Y  S$STEM_LOC0_ERROR   "SER_INBALID ;@  OTERS ;;  .

    * A5ora 5a e 44e(ar 4a &a14a i(&er(a.REFRES &a14a.

    * Primer pa(&a44a)4ear &a14a.&a14aprogram SAPMS9YM’.&a14a7(pro @;@@’.&a14a7(1egi( K’.appe(7 &a14a.

    * Campo 7e 4a primer pa(&a44a)4ear &a14a.&a14a=(am RF@60E0ORG’.&a14a=a4 _e

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    48/63

    * Coma(7o 7e 4a primer pa(&a44a)4ear &a14a.&a14a=(am #DC_O0CODE’.&a14a=a4 P’.appe(7 &a14a.

    * Sigie(&e pa(&a44a)4ear &a14a.&a14aprogram SAPMS9YM’.&a14a7(pro @6@@’.&a14a7(1egi( K’.appe(7 &a14a.

    * Coma(7o 7e 4a %eg(7a pa(&a44a)4ear &a14a.&a14a=(am #DC_O0CODE’.&a14a=a4 ;;’.appe(7 &a14a.

    * I(%er&ar (a &ra(%a))i( e( e4 2ego 7e 7a&o%CALL F"NCTION '#DC_INSERT'

     EKPORTING   TCODE 'F#@;' [Tra(%a))i(  TA#LES   D$NPROTA# &a14a [Ta14a i(&er(a 8#DCDATA EKCEPTIONS   INTERNAL_ERROR ;  NOT_OPEN 6  Z"E"E_ERROR 9  TCODE_INBALID   PRINTING_INBALID ?  POSTING_INBALID H   OTERS X   .* Cerrar i( 2ego 7e 7a&o% #a&)5 I(p&CALL F"NCTION '#DC_CLOSE_GRO"P'  EKCEPTIONS   NOT_OPEN ;  Z"E"E_ERROR 6  OTERS 9.

    9todo 5,ALL 7RA8#A,7$8 using=ste m9todo es el visto en la sentencia ,ALL 7RA8#A,7$8. n +#$8; se le pasa la tabla interna conestructura B&,&A7A (la misma 2ue en el 5batc1 input clásico=).j0CALL TRANSACTION S"@;’"SING TA#LA [Ta14a )o( =orma&o #DCDATA MODE N’ [No i%i14eMESSAGES INTO m%g&a1. [Ta14a i(&er(a )o( 4o% me(%a2e%

    Página 48 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    49/63

    Programas est3ndar de Batc% .nput

    'isten transacciones estándar 2ue son bastante complejas. Reali"ar un batc1 input con ellas supondr4a ungran es!uer"o. Por ejemplo% la transacción BV> permite contabili"ar documentos de !inan"as ($). Lasdnpros 2ue se presentan en cada caso son en !unción de los indicadores de operación cuentas de maorutili"adas.Para solucionar este problema #AP provee programas estándar de Batc1 $nput. stos programas leen losdatos de un arc1ivo secuencial en un !ormato especial% de manera 2ue lo 2ue 2ueda por 1acer es unprograma 2ue lea los datos a levantar% los grabe en un arc1ivo con este !ormato especial ejecutar elprograma estándar.j0RF#I#L@@ 8)rea 7o)me(&o% FI

    RF#IDE@@ 8Crea mo7i=i)a 7e7ore%RMMM#IM@ 8Creamo7i=i)a ma&eria4e%

    +jecutar un juego de datos desde el programa ABAP+na ve" 2ue generamos un juego de datos desde el programa ABAP% 9ste 2ueda listo para procesarmanualmente desde la transacción #3]. #i se desea 2ue el programa a ejecute el juego de datos% puede

    1acerse 1aciendo un #+B$7 del programa R#B&,#+B% 2ue procesa juegos de datos en bac-ground.j0

    S"#MIT RS#DCS"#  WIT MAPPE EZ _%e%io( [Nom1re 2. 7a&o%  WIT BON EZ %7a&m [Fe)5a 7e )rea)i(  WIT _BERAR# EZ 'K' [S&a&%: N"EBO    WIT FELER EZ ' ' [S&a&%: ERRONEO    AND RET"RN.

    1ransacción grabadora de batc%4input

    ediante la transacción #F&B se puede grabar una sesión Batc1 $nput% de manera de poder ver losnombres de campos dnpros 2ue intervienen. sa grabación se puede crear un programa o un módulo de!unción para procesar el Batc1 $nput de la !orma en la 2ue se grabó en la grabadora e Batc1 $nput.Para iniciar una grabación nueva0

    ;rabación nueva

    ,rear un programa en base a unagrabación

    Página 49 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    50/63

     %%I. -ser !"its

    Las +ser 'its son !unciones 2ue #AP proporciona dentro de sus transacciones estándar% 2ue permitenampliar la !uncionalidad de dic1as transacciones sin modi!icar los programas estándar de #AP.sto es lo 2ue en #AP se denominan &m,liaciones% por2ue se ampl4a la !uncionalidad del sistema.La gran ventaja es 2ue se tiene la seguridad de 2ue las ampliaciones al estándar no se van a sobreescribirpor la aplicación de parc1es o upgrades al sistema.Cómo s( si una transacción est3ndar tiene asociada un -ser +xitFFa varias !ormas de buscar un user e'it en la transacción estándar0

    • Buscar en el código del programa la sentencia0 C&LL C(STOMER-B(NCTION F111F.

    &ic1a sentencia es la 2ue invoca la user e'it si está activa.• Buscar por clase de desarrollo0 en la transacción ,&% entrar por men (tilidades -

     &m,liaciones S&P . $ngresar la clase dedesarrollo de la transacción estándar ejecutar.• Buscar por jerar2u4a de aplicaciones0 acceder a /erramientas - #or3benc0 &&P- Resumen-

    Geraru

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    51/63

     %%II.ield !"its

    Los ield 'its son validaciones particulares 2ue se aplican a un campo de pantalla determinado. Adi!erencia de las user e'its% puede crearse un !ield e'it 2ue acte sobre cual2uier campo de cual2uiertransacción de diálogo% pero acta solamente sobre el valor de ese campo% es decir 2ue en el momento deejecutarlo desconoce el valor de el resto de los campos ingresados en la transacción.Los !ield e'its se de!inen sobre L87# & &A7#% nosotros decimos en 2ue programa/pantalla seva a activar.Para crear/modi!icar/visuali"ar un !ield e'it% debe ejecutarse el porgrama R#&PR.

     Al ejecutarlo (sin indicar parámetros de selección) vemos la siguiente pantalla0

    Para crear un !ield e'it% 1a 2ue ejecutar la opción de men E1it Cam,o - Crear .

    ,argar el elemento de datos sobre el cual se 2uiere crear el !ield e'it% pulsar =,ontinuar=. 8os lleva a latransacción #3\% donde nos propone el nombre del módulo de !unción 2ue se va a crear. n dic1o módulode !unción se va a codi!icar el !ield e'it.

    ste módulo de !unción tiene un parámetro $8P+7 de entrada un parámetro +7P+7 de salida. Lom4mimo 2ue debe tener esta !unción es +7P+7 < $8P+7% para 2ue el valor ingresado se siga viendo enpantalla luego de ejecutarse.

    Página 51 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    52/63

    ;rabar activar la !unción. :olver a la pantalla de !ield e'its.

    +na ve" creado el !ield e'it% 1a 2ue asignarlo al programa/dnpro sobre el cual 2ueremos 2ue se ejecute.Para esto lo marcamos pulsamos 5Asignar prog./dnpro=.

    n 5'it,amp=% se pone el nmero de !ield e'it. sto solamente es necesario si para un mismo elemento dedatos 2ueremos crear !ield e'its di!erentes en distintos programas/dnpros.

    Para terminar% marcar el !ield e'it acceder al men E1it Cam,o - &cti$ar .

    Página 52 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    53/63

     %%IV.ield S/mbols

    Fa veces 2ue en el programa 2ue se está desarrollando se presenta la problemática de 2ue el nombre decampo 2ue se tiene 2ue utili"ar no se conoce 1asta el momento de ejecución. n estos casos se usan los$L&C#6BL#.+n !ield smbol es un 5puntero= a un campo e'istente. 8o tiene reservado espacio !4sico% a 2ue apunta aotro campo e'istente% 2ue puede ser cual2uier objeto de datos ABAP (variables% estructuras% campos deestructuras) o cual2uier tabla o estructura de!inida en el diccionario de datos.

    Declaración de field symbolsLa !orma básica de declarar un !ield smbol es0

    FIELDS$M#OLS +)ampo,. [Fie47 %m1o4 7e )a4ier &ipo

    7ambi9n puede de!inirse un !ield smbol de un tipo determinado (con 76P o L$M como cual2uiervariable)0j0

    FIELDS$M#OLS +=e)5a, T$PE N.

    Procesamiento de field symbols

     Antes de poder utili"ar un !ield smbol% 1a 2ue asignarle un objeto de datos (variable% campo de estructura%etc.). ste objeto de datos debe ser conocido para el programa en el momento de la asignación.Luego de la asignación el !ield smbol pasa a 5apuntar= al objeto especi!icado% de manera 2ue tiene sumismo valor cambia cuando cambia el objeto de datos original.Luego de un A##$;8% el !ield smbol 1ereda el tipo ( por lo tanto las caracter4sticas) del objeto de datos2ue se le asignó.Sentencia Descripción

     A##$;8 Asigna un objeto de datos a un !ield smbol.+8A##$;8 &esasigna el objeto de datos del !ield smbol. l !ield smbol a1ora no apunta a nada.j0

    *** A%ig(a)i( e%&&i)aDATA: =e)5a LI0E S$DAT"M.FIELDS$M#OLS +=%,.

    Fe)5a S$DAT"M.  ASSIGN =e)5a TO +=%,. [A5ora e4 =ie47 %m1o4 ap(&a a FECA 

    WRITE +=%,. [Imprime 4a =e)5a 7e4 7Ua.

    *** A%ig(a)i( 7i(mi)a. A5ora &e(emo% e( (a aria14e &ipo C ( (om1re 7e)ampo.DATA B_S"#86 T$PE N.DATA B_CAMPO8;@ T$PE C.DATA %a4i7a LI0E pa@@@Y1e&@;.FIELDS$M#OLS +)ampo,....CONCATENATE 'PA@@@Y#ET' _%1 INTO _)ampo.

    ASSIGN 8_)ampo TO +)ampo,. [A%ig(a a +)ampo, e4a4or 7e PA@@@Y#ET>> 

    IF S$S"#RC e @. [Si e>i%&e e4 )ampoMOBE +)ampo, TO %a4i7a.

    ENDIF.

    *** E2emp4o 7e4 %o 7e "NASSIGN "NASSIGN +)ampo,. [+)ampo, a5ora (o ap(&a a (a7a*** O&ro% e2emp4o% 7e4 %o 7e =ie47 %m1o4% OFFSETS FIELDS$M#OLS +=%,.

    Página 53 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    54/63

    DATA &e>&o8;? T$PE C....ASSIGN &e>&o?8;@ TO +=%,. [A%ig(a e%pe)i=i)a(7o ( o==%e&. +=%, &ie(e

    4o(gi&7 ;@...ASSIGN &e>&o? TO +=%,. [ERROR 7e pro&e))i( 7e memoria. +=%, TIENE LONGIT"D ;?

    ...

    ASSIGN &e>&o?8*TO +=%,. [Ei&o e4 error a(&erior )o( *’ 5agoe (o %e pa%e 4a 4o(g.

    *** O&ro% e2emp4o% 7e4 %o 7e =ie47 %m1o4% \ ASIGNAR CON TIPOS DATA =e)5a8Y T$PE C a4e 6@@6@9;?’.FIELD S$M#OLS +=%,....

    ASSIGN =e)5a TO +FS,.WRITE +FS,. [Imprime 6@@6@9;? 8+FS, e% &e>&o

    ASSIGN =e)5a TO +FS, &pe 'D'.WRITE +FS,. [Imprime ;?@96@@6 8+FS, e% =e)5a \D’2

    Página 54 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    55/63

     %%V.Transacciones del !ntorno de Desarrollo

     A continuación se detallan las principales transacciones del entorno de programación ABAP. Algunas deellas a !ueron vistas durante el desarrollo del curso0#3T0 ditor ABAP.#]>0 #creen Painter C &iseo lógica de proceso de d7n,ros.#U>0 enu Painter C &e!inición de status de programas.#>>0 &iccionario ABAP C &e!inición de tablas% $istas% estructuras% elementos de datos% dominios% a7udas

     ,ara bsueda% ob=etos de bloueo.#3\0 Bibliteca de !unciones C &e!inición de módulos de !unción.#3[0 ;estión de bases de datos l*)icas.#3]0 ;estión de juegos de datos batc0 in,ut .#3\0 ;estión de =obs.#D>0 ;estión de mensa=es.,&0 ;estión de proectos de ampliación C &esde a2u4 se crean los user-e1its.

    tras transacciones an no !ueron vistas en detalle0#>[0 &ata broser C Permite ver el contenido de cual2uier tabla de base de datos.#TV0 Broser de repositor C &e!inición de Clases de desarrollo% )ru,os de %unciones.#3D0 ditor split screen C Permite comparar dos programas.

    #D30 ;estión de transacciones C Permite crear transacciones para los module pool% as4 como asignarcódigos de transación a los reportes.#U30 ens de ámbito C Permite tratar la estructura del men #AP% agregando/2uitando o modi!icandocomponentes.#3V0 Análisis de tiempo de ejecución. Permite evaluar los tiempos de ejecución de un programa o unatransación. l análisis puede limitarse a accesos a base de datos% llamadas a módulos de !unción%subrutinas% etc% generando luego un reporte del mismo.#?>0 #stem Log. Permite ver el log con los mensajes del sistema 2ue se producen. n el log puedenaparecer errores 2ue se producen en la ejecución de los programas ABAP% cone'iones descone'iones deusuarios% etc.#7V]0 #*L 7race C Permite anali"ar las sentencias relacionadas con el acceso a bases de datos por partedel usuario.#7??0 Análisis dumps C Permite ver el log de los dumps (cancelaciones) 2ue ocurrieron en el sistema.

    #[>0 &ocumentación C Permite asociar un te'to de documentación a los objetos del sistema (programas%elementos de datos% mensajes% etc.).#[30 7raductor C Permite convertir te'tos de un idioma a otro.#7#0 #istema de transporte C Permite transportar gestionar órdenes de 2or3benc0  customiJin) .#T>0 `erar2u4a de aplicación C Permite consultar los componentes de un módulo. stos componentes sonobjetos del diccionario% programas% transacciones% grupos de !unciones% bases de datos lógicas% etc.

    Página 55 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    56/63

    Gestión de Versiones

    Se utiliza para ver las versiones de los objetos y realizar comparaciones entrelos mandantes.

    Ir al menú UTILIDADES  VESI!"ES #esti$n de Versiones.

    Ejemplo%&andante% '() Tr*% SE(( TA+LA% ,-"!DS.

    Al seleccionar #esti$n de versiones/ aparecer0 una lista de todas las versionesde ese objeto.

    Página 56 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    57/63

    La opci$n 1ue tiene el tilde es la 1ue esta activa/ en este en desarrollo.

    2ara comparar con la versi$n de 2roducci$n o 3AS/ ir a 4!&2AA4I!"E&!TE.

    4ompletar el sistema Destino 5TE2/ TE36 y Ejecutar.

    Esta es la versi$n 1ue esta en 2D.

    Página 57 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    58/63

    Si se 1uiere ver el c$di7o o los objetos 1ue 8ueron modi8icados/ 9ay 1ue ir a4!&2AA4I!" E&!TE.

    Aparecer0%

    Página 58 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    59/63

     %%VI. Creación de ódulos de unción

    La transacción desde la cual se crea un módulo de !unción es S+)G. La primer pantalla pide un nombre demódulo de !unción. Los módulos de !unción del cliente deben comen"ar con JWJ o J6J.

    +na ve" 2ue se ingresa el nombre del módulo de !unción% se presiona J,rearJ aparece la siguientepantalla0

    #e pide (en !orma obligatoria) ingresar un grupo de !unciones. ,ada módulo de !unción tiene 2ue !ormarparte de un grupo de !unciones. Puede usarse uno e'istente o crear uno nuevo (desde la pantalla anterior).

     A su ve" debe ingresarse en J7e'to BreveJ una descripción del módulo de !unción 2ue se va a crear.Luego 1acer clic- en J;rabarJ. #e pide clase de desarrollo orden de transporte (si la clase de desarrollo noes J7PJ).

    Página 59 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    60/63

    n la pantalla de atributos del módulo de !unción se ven las propiedades del mismo% puede determinarseel tipo de módulo de !unción (normal% de acceso remoto CR,C% etc.).

    Las siguientes pantallas permiten de!inir la inter!ase del módulo de !unción% es decir sus parámetros deentrada ($PR7)% sus parámetros de salida (OPR7) las tablas internas% 2ue pueden ser tantoparámetros de entrada como de salida (7ABL#). 7ambi9n pueden de!inirse e'cepciones (O,P7$8#)2ue son eventos de error 2ue dispara el módulo de !unción es capturable por el programa 2ue lo invocó (a

    trav9s de la sentencia RA$#).

    inalmente% la ltima pantalla es la 2ue permite de!inir el código !uente% el cual se inclue entre lassentencias +8,7$8 8&+8,7$8.l módulo de !unción debe activarse para poder ser utili"ado.

    Página 60 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    61/63

    ERRORES DEL SISTEMA

     :a sabemos 1ue la variable S:;SU+4 controla los errores del sistema/ lovalores 1ue puede tomar depende de la instrucci$n 1ue utilizamos/ por ello voya dar 1ue error da en las si7uientes instrucciones%

    ; 4uando 9acemos operaciones con tablas ya sean de diccionario o internas%) ;< "o 9ay errores.' ;< Se 9a producido al7ún error ya sea a leer/ a=adir/ borrar o modi8icar.; 4uando realizamos un al7ún S4!LL/ con la orden S4!LL%) ;< !>? ;< L@mite de la lista rec9azado. Scrollin7 imposible ;< Lista no e*iste. Scrollin7 imposible; 4uando leemos un 8ic9ero secuencial%);< "o 9a lle7ado al 8inal del 8ic9ero.?;< Ba lle7ado al 8inal del 8ic9ero.; 4uando 9acemos la orden !VELA:%

    );

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    62/63

    Notas Implementable por versión

    Las notas pueden o no ser implementables en nuestro sistema/ todo depende del nivel desupport paca7e 1ue tenemos.

    2ara ver eso tenemos 1ue ir a SISTE&A ;< STATUS ;< VESI!" 4!&2!"E"TES 5clic en lalupa6. A9@ aparece un listado de todos los 1ue 9ay en el sistema.

     

     Tomando una nota cual1uiera podemos ver 1ue tenemos dos nros de support paca7e%

    Uno indica el paca7e en el 1ue viene incluidas las modi8icaciones de la nota actual. Si el

    nuestro es i7ual o mayor/ la nota no es implementable/ caso contrario/ si.

    En la nota/ esto se encuentra inmediatamente antes de las instrucciones de correcci$n.

    Lins to Support 2aca7es

    So8tare 4omponent elease 2aca7e "ame FG Standard

    ?H) SA2>B?H)(' 

    El otro nro de support package que podemos encontrar es al comieno de cada instrucci!n decorrecci!n e indica "asta que ni#el esas correcciones son aplica$les%

    J;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KKK Instrucc.correcci$n )('))G(?M ))))'?N)M) KK Instr.correc.re1ueridas )('))(NG' ))))?MM( "ota ))))N?)?M KK )('))(NG' ))))N?NH) "ota ))))(NGH KK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KK Validez % K

    Página 62 de 63

  • 8/19/2019 ABAP Capacitacion Para Funcionales DL- 2

    63/63