curso básico abap4
-
Upload
osacar1982 -
Category
Documents
-
view
213 -
download
0
Transcript of curso básico abap4
1
Curso inicial de programación en ABAP/4
Noviembre 2004
2
Índice
• Introducción• ABAP Workbench• Sistema de transportes• ABAP Dictionary• Acceso a base de datos• Sentencias ABAP• Modularización
• Listados• Module-pools• Comunicación con
ABAP/4• Modificaciones al
estándar
3
1. Introducción
• SAP AG
• ABAP/4
• Características
• Arquitectura en 3 capas:– Base de datos– Servidor de aplicación– Servidor de presentación
4
1. Introducción:Arquitectura en 3 capas
Base de datosBD
Aplicación
Presentación
Oracle, DB2, ...
R/3 sobre Unix, Windows, ...
SAP GUI
5
2. ABAP Workbench
• Editor ABAP/4
• Screen Painter
• Menu Painter
• Function Builder
• ABAP Dictionary
6
3. Sistema de transportes
Sistema de Desarrollo
Sistema de Integración
Sistema de Producción
7
4. ABAP Dictionary
• Tablas
• Vistas
• Estructuras
• Elementos de datos (dominio semántico)
• Dominios (dominio sintáctico)
• Ayudas para búsqueda (matchcodes)
• Objetos de bloqueo
8
4. ABAP Dictionary: Tablas (I)
• Tipificación de campos
• Includes
• Claves externas
• Opciones técnicas
• Índices
9
4. ABAP Dictionary: Tablas (II)
10
4. ABAP Dictionary: Tablas (III)
11
4. ABAP Dictionary:Ayudas para búsqueda
MARA
MARC
MAKT
vistaZ_MAT1Z
12
4. ABAP Dictionary:Objetos de bloqueo
13
5. Acceso a base de datos
• Open SQL: select, insert, update, modify, delete, open cursor, fetch, close cursor, commit work, rollback work
• Native SQL: exec sql.
• Bases de datos lógicas
14
5. Acceso a base de datos:Bases de datos lógicas
BKPF
BSEG
BSET
BSEC
EKKO
EKPO
Base de datos lógica BRM•Estructura•Pantalla de selección•Acceso a base de datos•Control de autorizaciones
15
6. Sentencias ABAP
• Sintaxis• Tipos de datos• Asignaciones• Cálculos aritméticos• Field-symbols• Operadores lógicos• Rangos• Flujo de programa
• Tablas internas• Grabación de datos
externa– como clusters
– como ficheros
• Eventos• Temas Especiales• Conversiones
16
6. Sentencias ABAP:Tipos de datos
Tipos elementales
Carácter:•C: carácter•N: string numérico(p.ej. año, mes, ...)•STRING: longitudvariable
Fecha/hora:•D: fecha•T: hora
Numérico:•X: hexadecimal•I: entero•P: packed (para importes)•F: coma flotante (cálculos)•XSTRING: hexadecimal, longitud variable
Tipos compuestos•Estructuras•Tablas
Field-symbols
17
6. Sentencias ABAP:Asignaciones
MOVE a TO b.a b
MOVE-CORRESPONDING a TO b.
ac1 c2 c3 c4
bc1 c2 c5 c4
WRITE a TO b. 20041015a
15.10.2004b
PACK b TO a. 1742.66a (tipo P)
174266b (tipo C)
UNPACK a TO b. 1742.66 00174266a (tipo P) b (tipo C)
18
6. Sentencias ABAP:Cálculos aritméticos
• COMPUTE
• ADD / ADD-CORRESPONDING
• SUBTRACT /SUBTRACT-CORRESPONDING
• MULTIPLY /MULTIPLY-CORRESPONDING
• DIVIDE / DIVIDE-CORRESPONDING
19
6. Sentencias ABAP:Strings (I)
CONCATENATE a b INTO c.Juan
aPérez
b
JuanPérezc
... SEPARATED BY space. Juan Pérezc
20
6. Sentencias ABAP:Strings (II)
SPLIT a AT space INTO b c d. Pérez Martínez, Juana
Juan
d
Martínez,
c
Pérez
b
SPLIT a AT ‘\’ INTO TABLE itab.
\hrvision\rmxe\toolsa
hrvision
rmxe
tools
itab
21
6. Sentencias ABAP:Strings (III)
a aSHIFT a.SHIFT a LEFT.
‘RACC’ ‘ACC ’
SHIFT a RIGHT. ‘RACC’a
‘ RAC’a
SHIFT a LEFT BY 3 PLACES.
‘RACC’a
‘C ’a
SHIFT a LEFT DELETING LEADING space.
‘ Juan’a
‘Juan’a
22
6. Sentencias ABAP:Strings (IV)
CONDENSE a. Juan Péreza
Juan Péreza
CONDENSE a NO-GAPS.
Juan Péreza
JuanPéreza
23
6. Sentencias ABAP:Strings (V)
TRANSLATE a TO UPPER CASE.
Juana
JUANa
TRANSLATE a TO LOWER CASE.
Juana
juana
TRANSLATE a USING ‘áaéeíióoúu’.
Pérez Sáncheza
Perez Sancheza
24
6. Sentencias ABAP:Strings (VI)
REPLACE ‘u’ WITH ‘O’ INTO a.
Juan Palaua
JOan Palaua
¡Sólo la primera
aparición!
25
6. Sentencias ABAP:Strings (VII)
aP é rJ u a n e z
+4+5 +6 +7+0 +1 +2 +3 +8 +9
MOVE a+2(2) TO b.b
an
MOVE a+5 TO b.b
Pérez
MOVE a(6) TO b.MOVE a+0(6) TO b.
bJuan P
(Ejemplo de offsets)
26
6. Sentencias ABAP:Strings (VIII)
SEARCH a FOR ‘RACC’.
Benvinguts al RACC
a
0SY-SUBRC
14SY-FDPOS
SEARCH a FOR ‘RACE’.
Benvinguts al RACCa
4SY-SUBRC
0SY-FDPOS
SEARCH a FOR ‘RACC’ ABBREVIATED.
¡REACCIONAD!a
0SY-SUBRC
1SY-FDPOS
27
6. Sentencias ABAP:Field-symbols (I)
DATA: a VALUE ‘Juan’.FIELD-SYMBOLS: <fs>.
Juana
(no asignado)
<fs>
ASSIGN (‘a’) TO <fs>. Juana
Juan<fs>
UNASSIGN <fs>. Juana
(no asignado)
<fs>
28
l_mes l_var <fs>
01 itab-mes01
02 itab-mes02
03 itab-mes03
6. Sentencias ABAP:Field-symbols (II)
itab(clave, mes01, mes02, mes03)
DATA: l_mes(2) TYPE n.DATA: l_var(5) TYPE c.DATA: l_total LIKE itab-mes01.FIELD-SYMBOLS: <fs>.DO 3 TIMES. l_mes = sy-tabix. CONCATENATE ‘itab-’ ‘mes’ l_mes INTO l_var. ASSIGN (l_var) TO <fs>. ADD <fs> TO l_total.ENDDO.
29
6. Sentencias ABAP:Operadores lógicos
=, EQ
<>, NE
>, GT
<, LT
>=, GE
<=, LE
Igual
Diferente
Mayor que
Menor que
Mayor o igual
Menor o igual
CO
CA
CS
CP
Contains only
Contains any
Contains string
Contains pattern
Negaciones
CN
NA
NS
NP
...y también:•BETWEEN ... AND ...•AND, OR y NOT•paréntesis: ( ... )•IS INITIAL, IS ASSIGNED
30
6. Sentencias ABAP:Rangos
RANGES: lr_belnr FOR bkpf-belnrsign
option low highsign: I: include
E: exclude
option: EQ: igualNE: diferenteGT: mayor queLT: menor queGE: mayor o igualLE: menor o igualCP: contains patternNP: not contains patternBT: betweenNB: not between
31
6. Sentencias ABAP:Flujo de programa (I)
SELECT * FROM bseg. ON CHANGE OF belnr. ULINE. WRITE: / ‘Otro documento’. ENDCHANGE. WRITE: bseg-dmbtr, bseg-sgtxt.ENDSELECT.
BSEG
01 10000002302004 12,56
01 10000002302004 12,56
01 10000002312004 12,56
32
6. Sentencias ABAP:Flujo de programa (II)
DO. IF a = c. CONTINUE. ENDIF. IF a <> b. EXIT. ENDIF.ENDDO.
FORM subrutina. ... CHECK a = b. ...ENDFORM.
FORM subrutina. ... IF a <> b. EXIT. ENDIF. ...ENDFORM.
33
6.Sentencias ABAP:Tablas internas (I)
• Estructura / Formato
• Clave– por defecto– definida
• Tipo– standard– sorted– hashed
34
at new belnr
at new bukrs
6.Sentencias ABAP:Tablas internas (II)
01 8000000000 12,34
01 8000000000 4,75
01 8000000000 785,40
01 8000000001 89,90
05 8000000000 92,20
05 8000000000 8,42
bukrs belnr wrbtr at first
at new belnr
at new belnr
at new bukrs
at end of belnr
at end of belnr
at end of bukrs
at end of belnr
at end of bukrs
at last
35
6. Sentencias ABAP:Grabación en clusters
• La memoria de SAP permite intercambiar datos entre diferentes programas de una misma ejecución.
• Los clusters de SAP permiten intercambiar datos entre diferentes ejecuciones.
36
6. Sentencias ABAP:Grabación en ficheros (I)
Servidor de
aplicación
Lectura:OPEN DATASET path FOR INPUT.DO. READ DATASET path INTO struc. IF sy-subrc <> 0. EXIT. ENDIF.ENDDO.CLOSE DATASET path.
Escritura:OPEN DATASET path FOR OUTPUT.LOOP AT itab. TRANSFER itab TO path.ENDLOOP.CLOSE DATASET path.
37
6. Sentencias ABAP:Grabación en ficheros (II)
• CALL ‘AB_RFC_X_SCRAMBLE_STRING’ ID 'SOURCE' FIELD l_pwd ID 'KEY' FIELD l_key ID 'SCR' FIELD 'X’ ID 'DESTINATION' FIELD l_pwd ID 'DSTLEN' FIELD l_dstlen.
• CALL FUNCTIONs:– FTP_CONNECT– FTP_COMMAND– FTP_DISCONNECT
38
6. Sentencias ABAP:Eventos en un programa (I)
39
6. Sentencias ABAP:Eventos en un programa (II)
At selection-screenoutput
At selection-screen
At selection-screenon
At selection-screenon value-request for
At selection-screenon help-request for
At selection-screenon radiobutton group
40
6. Sentencias ABAP:Temas especiales (I):
Control de ExcepcionesCATCH SYSTEM-EXCEPTIONS COMPUTE_INT_ZERODIVIDE = 1. a = 1 / 0.ENDCATCH.IF sy-subrc = 1. WRITE: / ‘No se puede dividir por cero’.ENDIF.
a = 1 / 0.
¡DUMP! !
Controlamos el DUMP
41
6. Sentencias ABAP:Temas especiales (II):
Controles de AutorizaciónAUTHORITY-CHECK OBJECT <authorization object>
ID <authority field 1> FIELD <field value 1>. ID <authority field 2> FIELD <field value 2>. ... ID <authority-field n> FIELD <field value n>.
IF sy-subrc <> 0.
MESSAGE e000(zf) WITH ‘No tiene usted autorización’.
ENDIF.
42
6. Sentencias ABAP:Temas especiales (III):
Debugging
43
6. Sentencias ABAP:Temas especiales (IV):
Generación dinámica de reports• INSERT REPORT, READ REPORT,
DELETE REPORT
• GENERATE REPORT
• SYNTAX-CHECK FOR itab.
44
6. Sentencias ABAP:Temas especiales (V):
Tabla de macros (TRMAC)
45
6. Sentencias ABAP:Conversiones de datos
• Existe la posibilidad de asignar datos entre variables de diferente tipo (por ejemplo, un valor I a una variable C).
• La lista completa se encuentra en la ayuda de SAP.
46
7. Modularización (I)
• Macros: DEFINE
• INCLUDE
• Rutinas: FORM, PERFORM
• Módulos de funciones: CALL FUNCTION
• Llamadas a otros programas
47
7. Modularización (II)Macros: DEFINE
DEFINE escribe_mensaje. WRITE / &1.END-OF-DEFINITION.
...
escribe_mensaje ‘Hola’.
...
WRITE / ‘Hola’.
48
7. Modularización (III)Rutinas: PERFORM
LOOP AT itab. PERFORM lista_importes USING itab-dmbtr itab-waers.ENDLOOP.
...
FORM lista_importes USING _dmbtr LIKE bseg-dmbtr _waers LIKE bseg-waers. WRITE: / _dmbtr CURRENCY _waers.ENDFORM.
49
7. Modularización (IV)Funciones: CALL FUNCTION
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’ EXPORTING INPUT = l_kostl IMPORTING OUTPUT = l_kostl_interno EXCEPTIONS invalid_value = 1 error_message = 2 others = 3.
50
7. Modularización (V)Llamadas a transacciones
CALL TRANSACTION ‘FB01’ USING bdc_data.
LEAVE TO TRANSACTION ‘FB01’.
STOP
51
8. Listados (I)
• Pantalla de selección
• Escribir en listado
• Listados interactivos
• Mensajes
• CALL SCREEN
52
8. Listados (II)Pantalla de selección
select-optionsparameters
blocklineradiobutton
53
8. Listados (III)
123.45
p
WRITE p CURRENCY ‘ESP’.
WRITE p CURRENCY ‘BHD’.
WRITE p CURRENCY ‘EUR’. 123,45
12.345
12,345
54
8. Listados (IV)
47834 Papelería Puy
47835 Informática Josman
47836 Papelería Puy
47838 Ayuntamiento de Martorell
47839 Papelería Puy
Pedido Proveedor
WRITE: / t_listado-pedido, t_listado-proveedor.HIDE t_listado-pedido.
47837t_listado-pedido
ME23N: Visualizar pedido
47837 ENDESA Distribución
doble-click
55
8. Listados (V):Estructura SY (SYST)
• SY-SUBRC: código de retorno de una sentencia ABAP
• SY-UNAME: usuario
• SY-DATUM: fecha de sistema
• SY-UZEIT: hora de sistema
• SY-TABIX: índice en un loop
• SY-LANGU: idioma de login
• SY-MSGID: clase de mensaje
• SY-MSGTY: tipo de mensaje (X, A, E, W, I, S)
• SY-VLINE: carácter de línea vertical (‘|’)
¡¡¡... y muchos más !!!
56
8. Listados (VI):Tipos de mensajes
• X: mensaje con dump
• A: abend (abnormal ending): cancela la transacción en curso
• E: error; impide que el programa siga
• W: warning; permite que el programa siga
• I: mensaje informativo (popup)
• S: mensaje success (en la barra inferior)
57
Interacción del usuario
9. Module-pools (I)
Transacción FB01(Contabilizar)
SAPMF05A0100
SAPMF05A0100
SAPMF05A0300
SAPMF05A0300
SAPMF05A0301
SAPMF05A0301
SAPMF05A0331
SAPMF05A0331
...
58
9. Module-pools (II):Lógica de proceso
PBO
PAI
59
9. Module-pools (III):Lógica de proceso
PROCESS BEFORE OUTPUT. / PROCESS AFTER INPUT. FIELD campo MODULE modulo. FIELD campo VALUES (‘ ’, ‘X’). FIELD campo SELECT * FROM dbtab WHERE... INTO... WHENEVER [NOT] FOUND SEND {ERRORMESSAGE | WARNING} ... CHAIN. FIELD campo1. FIELD campo2. MODULE modulo. ENDCHAIN.
tratamiento conjunto
60
9. Module-pools (IV):Lógica de proceso
Campos visualizados mediante LOOP AT SCREEN
61
10. Comunicación con ABAP/4
• RFCs (Remote Function Calls)
• OLE/2 (Object Linking and Embedding)
62
11. Modificaciones al estándar
• User-exits
• Field-exits
• Business Transaction Events (BTEs)
• Validaciones/Sustituciones
• Estructuras “append”
• Modificaciones a programas estándar
63
12. Links interesantes
• SAP AG: http://www.sap.com
• Foros sobre SAP y ABAP:– SAP Community: http://www.sap.com/community
– SAP Development Network: https://www.sdn.sap.com
– SAP Help Portal: http://help.sap.com
– IT Toolbox: http://sap.ittoolbox.com
– SAP ABAP en castellano: http://www.sap4.com
– For ABAP programmers: http://www.4ap.de
64
13. Anexos: Formularios
65
13: Anexos: Controles