You are on page 1of 65

Curso inicial de programacin en ABAP/4

Noviembre 2004

ndice

2

Introduccin ABAP Workbench Sistema de transportes ABAP Dictionary Acceso a base de datos Sentencias ABAP Modularizacin

Listados Module-pools Comunicacin con ABAP/4 Modificaciones al estndar

1. Introduccin
SAP AG ABAP/4 Caractersticas Arquitectura en 3 capas:
Base de datos Servidor de aplicacin Servidor de presentacin
3

1. Introduccin: Arquitectura en 3 capas


Presentacin SAP GUI R/3 sobre Unix, Windows, ...

Aplicacin

BD

Base de datos

Oracle, DB2, ...

2. ABAP Workbench
Editor ABAP/4 Screen Painter Menu Painter Function Builder ABAP Dictionary

3. Sistema de transportes

Sistema de Desarrollo
6

Sistema de Integracin

Sistema de Produccin

4. ABAP Dictionary

7

Tablas Vistas Estructuras Elementos de datos (dominio semntico) Dominios (dominio sintctico) Ayudas para bsqueda (matchcodes) Objetos de bloqueo

4. ABAP Dictionary: Tablas (I)


Tipificacin de campos Includes Claves externas Opciones tcnicas ndices

4. ABAP Dictionary: Tablas (II)

4. ABAP Dictionary: Tablas (III)

10

4. ABAP Dictionary: Ayudas para bsqueda


MARA MARC MAKT vista Z_MAT1Z

11

4. ABAP Dictionary: Objetos de bloqueo

12

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 lgicas

13

5. Acceso a base de datos: Bases de datos lgicas


BKPF BSEG BSET BSEC EKKO EKPO
14

Base de datos lgica BRM Estructura Pantalla de seleccin Acceso a base de datos Control de autorizaciones

6. Sentencias ABAP

15

Sintaxis Tipos de datos Asignaciones Clculos aritmticos Field-symbols Operadores lgicos Rangos Flujo de programa

Tablas internas Grabacin de datos externa


como clusters como ficheros

Eventos Temas Especiales Conversiones

6. Sentencias ABAP: Tipos de datos


Tipos elementales Carcter:
C: carcter N: string numrico (p.ej. ao, mes, ...) STRING: longitud variable

Numrico:
X: hexadecimal I: entero P: packed (para importes) F: coma flotante (clculos) XSTRING: hexadecimal, longitud variable

Tipos compuestos Estructuras Tablas Field-symbols

Fecha/hora:
D: fecha T: hora

16

6. Sentencias ABAP: Asignaciones


a MOVE a TO b. a MOVE-CORRESPONDING a TO b. a WRITE a TO b. 20041015 a (tipo P) PACK b TO a. 1742.66 a (tipo P) UNPACK a TO b. 1742.66
17

b b
c1 c2 c5 c4 c1 c2 c3 c4

b 15.10.2004 b (tipo C) 174266 b (tipo C) 00174266

6. Sentencias ABAP: Clculos aritmticos


COMPUTE ADD / ADD-CORRESPONDING SUBTRACT / SUBTRACT-CORRESPONDING MULTIPLY / MULTIPLY-CORRESPONDING DIVIDE / DIVIDE-CORRESPONDING
18

6. Sentencias ABAP: Strings (I)


CONCATENATE a b INTO c. a Juan b Prez c JuanPrez

... SEPARATED BY space.

c Juan Prez

19

6. Sentencias ABAP: Strings (II)


SPLIT a AT space INTO b c d. b Prez

a Prez Martnez, Juan c Martnez, d Juan

SPLIT a AT \ INTO TABLE itab.

a \hrvision\rmxe\tools itab hrvision rmxe tools

20

6. Sentencias ABAP: Strings (III)


SHIFT a. SHIFT a LEFT. SHIFT a RIGHT. SHIFT a LEFT BY 3 PLACES. a RACC a RACC a RACC a ACC a RAC a C

a SHIFT a LEFT Juan DELETING LEADING space.


21

a Juan

6. Sentencias ABAP: Strings (IV)


a CONDENSE a. Juan a CONDENSE a NO-GAPS. Juan Prez Prez a Juan Prez a JuanPrez

22

6. Sentencias ABAP: Strings (V)


TRANSLATE a TO UPPER CASE. TRANSLATE a TO LOWER CASE. TRANSLATE a USING aeiou. a Juan a Juan a Prez Snchez a JUAN a juan a Perez Sanchez

23

6. Sentencias ABAP: Strings (VI)


REPLACE u WITH O INTO a.
Slo la primera aparicin!

a Juan Palau

a JOan Palau

24

6. Sentencias ABAP: Strings (VII)


(Ejemplo de offsets) a Juan P r ez
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9

MOVE a+2(2) TO b. MOVE a+5 TO b. MOVE a(6) TO b. MOVE a+0(6) TO b.


25

b an b Prez b Juan P

6. Sentencias ABAP: Strings (VIII)


SEARCH a FOR RACC. SEARCH a FOR RACE. a SY-SUBRC SY-FDPOS Benvinguts al RACC 0 14 a SY-SUBRC SY-FDPOS Benvinguts al RACC 4 0 a REACCIONAD! SY-SUBRC SY-FDPOS 0 1

SEARCH a FOR RACC ABBREVIATED.

26

6. Sentencias ABAP: Field-symbols (I)


DATA: a VALUE Juan. FIELD-SYMBOLS: <fs>. ASSIGN (a) TO <fs>. a Juan a Juan a Juan <fs>
(no asignado)

<fs> Juan <fs>


(no asignado)

UNASSIGN <fs>.

27

6. Sentencias ABAP: Field-symbols (II)


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.
28

itab(clave, mes01, mes02, mes03)

l_mes l_var <fs> 01 itab-mes01 02 03 itab-mes02 itab-mes03

6. Sentencias ABAP: Operadores lgicos


Negaciones

=, EQ <>, NE >, GT <, LT

Igual Diferente Mayor que Menor que

CO CA CS CP

Contains only Contains any Contains string Contains pattern

CN NA NS NP

>=, GE Mayor o igual <=, LE Menor o igual

29

...y tambin: BETWEEN ... AND ... AND, OR y NOT parntesis: ( ... ) IS INITIAL, IS ASSIGNED

6. Sentencias ABAP: Rangos


sign option

RANGES: lr_belnr FOR bkpf-belnr


low high sign: I: include E: exclude option: EQ: igual NE: diferente GT: mayor que LT: menor que GE: mayor o igual LE: menor o igual CP: contains pattern NP: not contains pattern BT: between NB: not between

30

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.
31

BSEG 01 1000000230 2004 12,56 01 1000000230 2004 12,56 01 1000000231 2004 12,56

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.

32

6.Sentencias ABAP: Tablas internas (I)


Estructura / Formato Clave
por defecto definida

Tipo
standard sorted hashed
33

6.Sentencias ABAP: Tablas internas (II)


at end of belnr at end of belnr at end of bukrs at end of belnr at end of bukrs at last
34

bukrs belnr wrbtr 01 8000000000 12,34 01 8000000000 4,75

at first at new bukrs at new belnr at new belnr at new bukrs at new belnr

01 8000000000 785,40 01 8000000001 89,90 05 8000000000 92,20 05 8000000000 8,42

6. Sentencias ABAP: Grabacin en clusters


La memoria de SAP permite intercambiar datos entre diferentes programas de una misma ejecucin. Los clusters de SAP permiten intercambiar datos entre diferentes ejecuciones.

35

6. Sentencias ABAP: Grabacin en ficheros (I)


Lectura: OPEN DATASET path FOR INPUT. DO. READ DATASET path INTO struc. IF sy-subrc <> 0. EXIT. ENDIF. ENDDO. CLOSE DATASET path.
36

Servidor de aplicacin

Escritura: OPEN DATASET path FOR OUTPUT. LOOP AT itab. TRANSFER itab TO path. ENDLOOP. CLOSE DATASET path.

6. Sentencias ABAP: Grabacin 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
37

6. Sentencias ABAP: Eventos en un programa (I)

38

6. Sentencias ABAP: Eventos en un programa (II)


At selection-screen output At selection-screen on At selection-screen on value-request for At selection-screen on help-request for At selection-screen on radiobutton group

At selection-screen
39

6. Sentencias ABAP: Temas especiales (I): Control de Excepciones


a = 1 / 0. DUMP! ! CATCH SYSTEM-EXCEPTIONS COMPUTE_INT_ZERODIVIDE = 1. a = 1 / 0. ENDCATCH. IF sy-subrc = 1. WRITE: / No se puede dividir por cero. ENDIF. Controlamos el DUMP
40

6. Sentencias ABAP: Temas especiales (II): Controles de Autorizacin


AUTHORITY-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 autorizacin. ENDIF.
41

6. Sentencias ABAP: Temas especiales (III): Debugging

42

6. Sentencias ABAP: Temas especiales (IV): Generacin dinmica de reports


INSERT REPORT, READ REPORT, DELETE REPORT GENERATE REPORT SYNTAX-CHECK FOR itab.

43

6. Sentencias ABAP: Temas especiales (V): Tabla de macros (TRMAC)

44

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.

45

7. Modularizacin (I)
Macros: DEFINE INCLUDE Rutinas: FORM, PERFORM Mdulos de funciones: CALL FUNCTION Llamadas a otros programas

46

7. Modularizacin (II) Macros: DEFINE


DEFINE escribe_mensaje. WRITE / &1. END-OF-DEFINITION. ... escribe_mensaje Hola. ... WRITE / Hola.

47

7. Modularizacin (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.
48

7. Modularizacin (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.

49

7. Modularizacin (V) Llamadas a transacciones


CALL TRANSACTION FB01 USING bdc_data.

LEAVE TO TRANSACTION FB01.

STOP
50

8. Listados (I)
Pantalla de seleccin Escribir en listado Listados interactivos Mensajes CALL SCREEN

51

8. Listados (II) Pantalla de seleccin


parameters select-options

52

radiobutton

block line

8. Listados (III)
p 123.45 WRITE p CURRENCY EUR. WRITE p CURRENCY ESP. WRITE p CURRENCY BHD. 123,45 12.345 12,345

53

8. Listados (IV)
Pedido 47834 47835 47836 47837 Proveedor Papelera Puy Informtica Josman Papelera Puy ENDESA Distribucin WRITE: / t_listado-pedido, t_listado-proveedor. HIDE t_listado-pedido.
doble-click

47838 Ayuntamiento de Martorell 47839 Papelera Puy

t_listado-pedido 47837

ME23N: Visualizar pedido


54

8. Listados (V): Estructura SY (SYST)


SY-SUBRC: cdigo 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: carcter de lnea vertical (|) ... y muchos ms !!!

55

8. Listados (VI): Tipos de mensajes


X: mensaje con dump A: abend (abnormal ending): cancela la transaccin 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)
56

9. Module-pools (I)
Transaccin FB01 (Contabilizar) SAPMF05A 0300 SAPMF05A 0100 SAPMF05A 0301 SAPMF05A 0331 Interaccin del usuario
57

...

9. Module-pools (II): Lgica de proceso


PBO

PAI
58

9. Module-pools (III): Lgica 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. tratamiento conjunto MODULE modulo. ENDCHAIN.
59

9. Module-pools (IV): Lgica de proceso

60

Campos visualizados mediante LOOP AT SCREEN

10. Comunicacin con ABAP/4


RFCs (Remote Function Calls) OLE/2 (Object Linking and Embedding)

61

11. Modificaciones al estndar



62

User-exits Field-exits Business Transaction Events (BTEs) Validaciones/Sustituciones Estructuras append Modificaciones a programas estndar

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
63

13. Anexos: Formularios

64

13: Anexos: Controles

65