Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Asignacin de ATRIBUTOS.
Maysculas/Minsculas
Bloq.editor
Clculo de coma fija
VARIANTES.
Las variantes son todo aquel grupo de variables que son necesarias u
obligatorias a la hora de ejecutar un programa y que por facilidad a la hora
de ejecutarlo se graban todos los datos de las variables bajo un mismo
nombre que es la variante.
ELEMENTOS DE TEXTO.
1. Ttulos y cabeceras:
1
APUNTES DE ABAP/4
b. Cabecera lista
2. Textos de seleccin: Sirve para asignar a una variable del tipo select-
options o parameters un texto para cuando a la hora de salir por pantalla o
ser impresas en vez de salir, por ejemplo, el nombre de la variable cant
saliera cantidad del producto.
2
APUNTES DE ABAP/4
3
APUNTES DE ABAP/4
campos
end of nombre_record
COMANDOS.
write xyz.
write name.
4
APUNTES DE ABAP/4
write nombre_subcampo-tabla_interna
Estructura de un programa:
REPORT nombre ... .
o
PROGRAM nombre ... .
* Seccin de declaraciones.
DATA:
TABLES:
* Seccin de estado.
5
APUNTES DE ABAP/4
hora: sy-uzeit
da: sy-datum. El almacenamiento se realiza en el formato
yyyymmdd y la representacin en el formato
ddmmyyyy
Numeracin de textos:
nombre_var_1(001), ...
nombre_var_2(002), ...
6
APUNTES DE ABAP/4
Declaracin de data:
7
APUNTES DE ABAP/4
Cuando declaremos varios campos que sean del mismo tipo se pueden
declarar de la siguiente manera:
name1(20) type C.
name2 like name1.
name3 like name1.
Operadores Funciones
+ - / * sqrt exp log sin cos
Div Divisin entera srten Longitud de la cadena
Mod Mdulo
8
APUNTES DE ABAP/4
Ejemplo de aplicacin:
write dato_2+6(2) = 01
1 9 9 2 0 7 0 1
9
APUNTES DE ABAP/4
10
APUNTES DE ABAP/4
Ejemplo de aplicacin:
S Y - D A T U M
11
APUNTES DE ABAP/4
Para ejecutar el programa paso a paso y conocer orden por orden los
valores de las variables que usamos, siempre y cuando las nombremos en
l, usaremos la opcin debugging.
Podemos tambin realizar una seleccin simple, o sea, que realice slo
una nica asignacin, utilizando select single por lo que no es necesario
la colocacin al final de endselect al no ser un bucle.
12
APUNTES DE ABAP/4
Operadores:
Operador Smbolo Significado
Eq = igual
Ne <> no igual
it < menor que
le <= menor o igual que
gt > mayor que
ge >= mayor o igual que
between a and b (be) no tiene dentro intervalo
13
APUNTES DE ABAP/4
Para leer una entrada de una tabla interna, usamos read table:
Para introducir varias lneas en una tabla de base de datos desde una
tabla interna:
14
APUNTES DE ABAP/4
Estados de control:
a) Casos de distincin:
if .......................................... endif
on change of ....................... endon
case .................................... endcase
b) Bucles:
do .................................. endo
15
APUNTES DE ABAP/4
while .............................. endwhile
16
APUNTES DE ABAP/4
c) Otros
check
exit
stop
Estados de control:
1. IF.
IF <expresin lgica>
<bloque de sentencias>
ENDIF.
IF <expresin lgica>
<bloque de sentencias>
ELSE
<bloque de sentencias>
ENDIF.
17
APUNTES DE ABAP/4
IF <expresin lgica>
<bloque de sentencias>
ELSEIF <expresin lgica>
<bloque de sentencias>
ELSEIF <expresin lgica>
<bloque de sentencias>
ELSE
ENDIF.
2. CASE.
WHEN <value1>.
<bloque de sentencias>
WHEN <value2>.
<bloque de sentencias>
WHEN OTHERS.
<bloque de sentencias>
ENDCASE.
Dentro del do podemos colocar una opcin para variar los campos
segn se vayan realizando las veces del bucle:
18
APUNTES DE ABAP/4
Ejemplo de aplicacin:
NOTA: La orden EXIT dentro de un bucle hace que dicho bucle termine.
19
APUNTES DE ABAP/4
END OF <tabla_interna>.
Para que el rea de trabajo ( work area ) tenga el mismo nombre que
la tabla utilizamos la orden with header line en la misma lnea que
definimos la tabla y despus de occurs.
Por lo tanto, existen dos posibilidades, cuando el work area posee el
mismo nombre que la tabla interna y cuando no lo posee, en este caso
tenemos que definirla de la siguiente manera:
20
APUNTES DE ABAP/4
El valor de las filas de una tabla, definida por OCCURS debe de ser
un valor constante.
COUNTRY SALES
D 400000 Header line
USA 1000000 1
GB 500000 2
D 7800000 3
GB 50000 4
A 140000 5
6
7
8
21
APUNTES DE ABAP/4
Para insertar lneas en una tabla podemos usar, segn el nuevo sistema la
opcin del select * from junto con:
Para aadir datos con una tabla interna, utilizamos el comando collect
el cual incluye el contenido de header line ya sea como una nueva entrada
o lo aade a una entrada ya existente del mismo tipo.
Para clasificar una tabla tenemos varias posibilidades que nos ofrece
el comando sort.
1. Si el comando sort no lleva ningn criterio de clasificacin, se
ordenan en orden ascendente.
Sintaxis: SORT <tabla_interna>.
22
APUNTES DE ABAP/4
1. INSERT <tabla_interna>
Inserta una nueva lnea con el contenido del header line antes de la lnea
actual.
2. MODIFY <tabla_interna>
La lnea actual es sobrescrita con el contenido del header line.
3. DELETE <tabla_interna>
La lnea actual es borrada.
23
APUNTES DE ABAP/4
1. CLEAR <tabla_interna>
Inicializa todos los campos simples en el header line de una tabla interna
segn el tipo.
2. REFRESH <tabla_interna>
Borra todas las lneas de la tabla. Los espacios almacenados de la tabla
no son almacenados. El header line permanece sin cambios.
3 FREE <tabla_interna>
Libera el espacio almacenado para la tabla. El header line permanece sin
cambios.
INTO clauses:
INTO TABLE <tabla_interna> no se colocan lnea por lnea sino de una vez.
24
APUNTES DE ABAP/4
WHERE clauses:
Ejemplo:
report ejemplo.
tables: sflight.
data: carrid like sflight-carrid,
minimum type p decimals 2,
maximum type p decimals 2.
select carrid min( price ) max( price )
into (carrid, minimum, maximum) from sflight
group by carrid.
write: /10 carrid,
20 minimum,
40 maximum.
endselect.
if sy-subrc ne 0.
write: / text-001.
endif.
Al ejecutarlo obtenemos:
25
APUNTES DE ABAP/4
SQ 849,00 849,00
LH 899,00 6.000,00
Ejemplo de aplicacin.
report zejemplo.
tables: spfli.
select * from spfli order by cityfrom .
write: /10 spfli-carrid,
20 spfli-connid,
30 spfli-cityfrom.
endselect.
if sy-subrc ne 0.
write: / text-001.
endif.
Al ejecutarlo obtenemos:
LH 2415 BERLIN
LH 2407 BERLIN
LH 2463 BERLIN
LH 0400 FRANKFURT
LH 0402 FRANKFURT
LH 0454 FRANKFURT
SQ 0026 FRANKFURT
26
APUNTES DE ABAP/4
LH 2402 FRANKFURT
LH 2436 FRANKFURT
LH 2462 FRANKFURT
UA 0941 FRANKFURT
AA 0017 NEW YORK
UA 0007 NEW YORK
DL 1699 NEW YORK
LH 3577 ROM
AA 0064 SAN FRANCISCO
DL 1984 SAN FRANCISCO
UA 3504 SAN FRANCISCO
LH 0455 SAN FRANCISCO
***INCLUDE INCOMMON.
DATA: BEGIN OF COMMON PART NUMBERS,
NUM1 TYPE I,
NUM2 TYPE I,
SUM TYPE I,
END OF COMMON PART NUMBERS.
27
APUNTES DE ABAP/4
PROGRAM FORMPOOL.
INCLUDE INCOMMON. Llamamos al include
FORM ADDIT.
SUM = NUM1 + NUM2. Utilizamos los elementos ya
definidos en el include
PERFORM OUT.
ENDFORM.
FORM OUT.
WRITE: / 'Sum of', NUM1, 'and', NUM2, 'is', SUM.
ENDFORM.
SUBRUTINAS.
FORM <nombre_subrutina>
rdenes
ENDFORM
28
APUNTES DE ABAP/4
Cmo lo hacemos:
- Usamos USING como valor de entrada. Admite llamadas por valor y por
referencia. Si no colocamos la opcin VALUE el valor es pasado por
referencia.
EJEMPLO DE APLICACIN:
report rsaaa10b
perform <nombre_subrutina> using a1 a2 a3 changing a4 a5
form <nombre_subrutina> using value(f1)
value(f2)
value(f3)
changing
f4
value(f5)
ordenes
endform.
29
APUNTES DE ABAP/4
1. VALUE: Lo utilizamos para definir los valores incluidos por valor y por
defecto. Tienen que estar dentro de USING.
2. Para los parmetros de referencia no es necesario la opcin VALUE.
Tiene que estar dentro de CHANGING.
30
APUNTES DE ABAP/4
31
APUNTES DE ABAP/4
<nombre_variable> = nombre_subrutina.
Perform (<nombre_variable> [ in program (<nombre_programa>) if found ]
Do 2 times.
Perform sy-index of subr1 subr2
Enddo.
FUNCIONES
32
APUNTES DE ABAP/4
Sintaxis:
33
APUNTES DE ABAP/4
Ejemplo:
FUNCTION MY_DIVIDE.
*"----------------------------------------------------------
*" Local interface:
*" IMPORTING
*" N1
*" N2
*" EXPORTING
*" R
*" EXCEPTIONS
*" DIV_ZERO
*"----------------------------------------------------------
IF N2 EQ 0.
RAISE DIV_ZERO.
ELSE.
R = N1 / N2.
ENDIF.
ENDFUNCTION.
REPORT SAPMZTST.
DATA: RES TYPE P DECIMALS 2.
34
APUNTES DE ABAP/4
Report RSAAA10H.
Tables: sflight.
Data: itab like BCAXX occurs 10 with header line
Call function fill_seattab
Tables
Seattab = itab
Report RSAAA10H.
Call function fill_seattab
Exporting
Year = year. ( ste no tendra nada en el campo de referencia )
Tables
Seattab = itab
Exceptions
No_entry = 01
Others = 02.
35
APUNTES DE ABAP/4
Case sy-subrc.
When 1
Write No entry.
When 2
Write Other error.
Endcase.
36
APUNTES DE ABAP/4
WorkbenchDesarrolloEntorno de programacinBase de datos
lgica y dentro de esta pantalla en el men Detalles Utilizacin tablas
37
APUNTES DE ABAP/4
EVENTOS:
38
APUNTES DE ABAP/4
3. Otros:
- AT LINE-SELECTION: Se genera cuando se realiza un doble-click en
una lnea del listado. Ejemplo:
DATA TEXT(20).
START-OF-SELECTION.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
AT LINE-SELECTION.
CASE TEXT.
WHEN 'List index'.
PERFORM WRITE_AND_HIDE USING 'X' SPACE.
WHEN 'User command'.
PERFORM WRITE_AND_HIDE USING SPACE 'X'.
WHEN OTHERS.
SUBTRACT 2 FROM SY-LSIND.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
ENDCASE.
CLEAR TEXT.
FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.
WRITE / 'SY-LSIND:'.
PERFORM WRITE_WITH_COLOR USING SY-LSIND
P_FLAG_LSIND.
TEXT = 'List index'.
HIDE TEXT.
WRITE / 'SY-UCOMM:'.
PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.
TEXT = 'User command'.
HIDE TEXT.
IF SY-LSIND > 0.
WRITE / 'PICK here to go back one list level'.
ENDIF.
ENDFORM.
FORM WRITE_WITH_COLOR USING P_VALUE P_FLAG_POSITIVE.
IF P_FLAG_POSITIVE = SPACE.
WRITE P_VALUE COLOR COL_NORMAL.
ELSE.
WRITE P_VALUE COLOR COL_POSITIVE.
ENDIF.
ENDFORM.
39
APUNTES DE ABAP/4
40
APUNTES DE ABAP/4
Tipos de mensaje:
I - Informacin Presionar ENTER para continuar
W - Warning Posible correccin
E - Error Requiere correccin
A - Abend Transaccin terminada
X - Exit Transaccin terminada con un short dump
MESSAGE_TYPE_X
S - Success Mensaje en la siguiente pantalla
Ejemplos:
MESSAGE ID 'XX' TYPE 'E' NUMBER '001' WITH 'Text.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH
SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
Utilizamos at <line>
< >
endat. Con las siguientes opciones:
41
APUNTES DE ABAP/4
AUTHORIZATION CHECKS.
SCREEN PAINTER.
42
APUNTES DE ABAP/4
Process before output: incluir todo lo que queramos que se realice antes
de que aparezca la pantalla.
Process after input: incluir todo lo que queremos que se realice despus
de aparecer la pantalla.
Pantalla
PBO
Module ...
PAI
Module ...
Los includes constan de las cinco ltimas letras del nombre del
programa + un carcter identificativo del tipo de include + dos caracteres
para indicar el nmero. Pero el top son los cinco caracteres + la palabra
TOP.
43
APUNTES DE ABAP/4
44
APUNTES DE ABAP/4
endcase.
leave screen.
endmodule.
Ejemplo de aplicacin:
REPORT .
TABLES: SPFLI, SFLIGHT, SBOOK.
Selecciona los
DATA: ITAB_SPFLI TYPE SPFLI_TYPE WITH HEADER LINE.
campos connid
DATA: ITAB_SFLIGHT TYPE SFLIGHT_TYPE WITH HEADER LINE.
LH
DATA: ITAB_SBOOK TYPE SBOOK_TYPE WITH HEADER LINE.
45
APUNTES DE ABAP/4
LOOP AT ITAB_SPFLI.
FORMAT COLOR COL_GROUP INTENSIFIED.
WRITE: / ITAB_SPFLI-CONNID,
ITAB_SPFLI-CARRID,
ITAB_SPFLI-CITYFROM,
ITAB_SPFLI-CITYTO,
ITAB_SPFLI-DEPTIME,
ITAB_SPFLI-ARRTIME.
ENDLOOP.
NEW-PAGE.
LOOP AT ITAB_SFLIGHT WHERE CARRID = ITAB_SPFLI-CARRID
AND CONNID = ITAB_SPFLI-CONNID.
FORMAT COLOR COL_GROUP INTENSIFIED OFF.
WRITE: / ITAB_SFLIGHT-CONNID,
ITAB_SFLIGHT-CARRID,
ITAB_SFLIGHT-FLDATE,
ITAB_SFLIGHT-PRICE,
ITAB_SFLIGHT-CURRENCY.
NEW-PAGE.
LOOP AT ITAB_SBOOK WHERE CARRID = ITAB_SFLIGHT-CARRID
AND CONNID = ITAB_SFLIGHT-CONNID
AND FLDATE = ITAB_SFLIGHT-FLDATE.
FORMAT COLOR COL_NORMAL.
WRITE: / ITAB_SBOOK-CONNID,
ITAB_SBOOK-CARRID,
ITAB_SBOOK-BOOKID,
ITAB_SBOOK-CUSTOMID,
ITAB_SBOOK-CUSTTYPE.
ENDLOOP.
ENDLOOP.
Bases de datos lgicas: Una base de datos lgica est definida por tres
caracteres. Los dos primeros para el nombre y el ltimo denota la
aplicacin.
46
APUNTES DE ABAP/4
Ejemplo de aplicacin:
Form put_sflight.
Select * from sflight
Where carrid = spfli-carrid
And connid = spfli-connid
...
put sflight. Get sflight.
Endselect. Write: sflight-fldate,
Endform. .....
Form put_sbook.
Select * from sbook
Where carrid = sflight-carrid ...
Put sbook. Get sbook.
Endselect. Write: sbook-bookid,
Ednform. .....
47
APUNTES DE ABAP/4
1 SPFLI
2 S FLIGH T
3 SBOOK
KN A1
N KB1 N KBn
START-OF-SELECTION
S PFLI
2 4
4 2
S FLIGH T S FLIG H T
END-OF-SELECTION
48
APUNTES DE ABAP/4
REPORT RSBBB01D.
TABLES: SPFLI, SFLIGHT, SBOOK.
GET SPFLI.
WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CITYTO,
SPFLI-DEPTIME, SPFLI-ARRTIME, SPFLI-FLTIME.
GET SFLIGHT.
WRITE: /10 SFLIGHT-FLDATE, SFLIGHT-PRICE CURRENCY SFLIGHT-CURRENCY,
SFLIGHT-CURRENCY.
GET SBOOK.
WRITE: /20 SBOOK-BOOKID, SBOOK-CUSTOMID, SBOOK-CUSTTYPE
Como vemos el get depende de todas las tablas que estn definidas a
la hora de realizar la pantalla de seleccin.
49
APUNTES DE ABAP/4
get spfli.
< >
get sflight.
< >
get sbook.
< >
50
APUNTES DE ABAP/4
51
APUNTES DE ABAP/4
CURSORES.
Sintaxis:
Ejemplo de aplicacin:
REPORT ZNANO .
TABLES : EBAN.
CLOSE CURSOR C.
CLOSE CURSOR C1.
52