59269634-curso-basico-abap4

65
1 Curso inicial de programación en ABAP/4 Noviembre 2004

Transcript of 59269634-curso-basico-abap4

Page 1: 59269634-curso-basico-abap4

1

Curso inicial de programación en ABAP/4

Noviembre 2004

Page 2: 59269634-curso-basico-abap4

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

Page 3: 59269634-curso-basico-abap4

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

Page 4: 59269634-curso-basico-abap4

4

1. Introducción:Arquitectura en 3 capas

Base de datosBD

Aplicación

Presentación

Oracle, DB2, ...

R/3 sobre Unix, Windows, ...

SAP GUI

Page 5: 59269634-curso-basico-abap4

5

2. ABAP Workbench

• Editor ABAP/4

• Screen Painter

• Menu Painter

• Function Builder

• ABAP Dictionary

Page 6: 59269634-curso-basico-abap4

6

3. Sistema de transportes

Sistema de Desarrollo

Sistema de Integración

Sistema de Producción

Page 7: 59269634-curso-basico-abap4

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

Page 8: 59269634-curso-basico-abap4

8

4. ABAP Dictionary: Tablas (I)

• Tipificación de campos

• Includes

• Claves externas

• Opciones técnicas

• Índices

Page 9: 59269634-curso-basico-abap4

9

4. ABAP Dictionary: Tablas (II)

Page 10: 59269634-curso-basico-abap4

10

4. ABAP Dictionary: Tablas (III)

Page 11: 59269634-curso-basico-abap4

11

4. ABAP Dictionary:Ayudas para búsqueda

MARA

MARC

MAKT

vistaZ_MAT1Z

Page 12: 59269634-curso-basico-abap4

12

4. ABAP Dictionary:Objetos de bloqueo

Page 13: 59269634-curso-basico-abap4

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

Page 14: 59269634-curso-basico-abap4

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

Page 15: 59269634-curso-basico-abap4

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

Page 16: 59269634-curso-basico-abap4

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

Page 17: 59269634-curso-basico-abap4

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)

Page 18: 59269634-curso-basico-abap4

18

6. Sentencias ABAP:Cálculos aritméticos

• COMPUTE

• ADD / ADD-CORRESPONDING

• SUBTRACT /SUBTRACT-CORRESPONDING

• MULTIPLY /MULTIPLY-CORRESPONDING

• DIVIDE / DIVIDE-CORRESPONDING

Page 19: 59269634-curso-basico-abap4

19

6. Sentencias ABAP:Strings (I)

CONCATENATE a b INTO c.Juan

aPérez

b

JuanPérezc

... SEPARATED BY space. Juan Pérezc

Page 20: 59269634-curso-basico-abap4

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

Page 21: 59269634-curso-basico-abap4

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

Page 22: 59269634-curso-basico-abap4

22

6. Sentencias ABAP:Strings (IV)

CONDENSE a. Juan Péreza

Juan Péreza

CONDENSE a NO-GAPS.

Juan Péreza

JuanPéreza

Page 23: 59269634-curso-basico-abap4

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

Page 24: 59269634-curso-basico-abap4

24

6. Sentencias ABAP:Strings (VI)

REPLACE ‘u’ WITH ‘O’ INTO a.

Juan Palaua

JOan Palaua

¡Sólo la primera

aparición!

Page 25: 59269634-curso-basico-abap4

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)

Page 26: 59269634-curso-basico-abap4

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

Page 27: 59269634-curso-basico-abap4

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>

Page 28: 59269634-curso-basico-abap4

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.

Page 29: 59269634-curso-basico-abap4

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

Page 30: 59269634-curso-basico-abap4

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

Page 31: 59269634-curso-basico-abap4

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

Page 32: 59269634-curso-basico-abap4

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.

Page 33: 59269634-curso-basico-abap4

33

6.Sentencias ABAP:Tablas internas (I)

• Estructura / Formato

• Clave– por defecto– definida

• Tipo– standard– sorted– hashed

Page 34: 59269634-curso-basico-abap4

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

Page 35: 59269634-curso-basico-abap4

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.

Page 36: 59269634-curso-basico-abap4

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.

Page 37: 59269634-curso-basico-abap4

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

Page 38: 59269634-curso-basico-abap4

38

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

Page 39: 59269634-curso-basico-abap4

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

Page 40: 59269634-curso-basico-abap4

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

Page 41: 59269634-curso-basico-abap4

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.

Page 42: 59269634-curso-basico-abap4

42

6. Sentencias ABAP:Temas especiales (III):

Debugging

Page 43: 59269634-curso-basico-abap4

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.

Page 44: 59269634-curso-basico-abap4

44

6. Sentencias ABAP:Temas especiales (V):

Tabla de macros (TRMAC)

Page 45: 59269634-curso-basico-abap4

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.

Page 46: 59269634-curso-basico-abap4

46

7. Modularización (I)

• Macros: DEFINE

• INCLUDE

• Rutinas: FORM, PERFORM

• Módulos de funciones: CALL FUNCTION

• Llamadas a otros programas

Page 47: 59269634-curso-basico-abap4

47

7. Modularización (II)Macros: DEFINE

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

...

escribe_mensaje ‘Hola’.

...

WRITE / ‘Hola’.

Page 48: 59269634-curso-basico-abap4

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.

Page 49: 59269634-curso-basico-abap4

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.

Page 50: 59269634-curso-basico-abap4

50

7. Modularización (V)Llamadas a transacciones

CALL TRANSACTION ‘FB01’ USING bdc_data.

LEAVE TO TRANSACTION ‘FB01’.

STOP

Page 51: 59269634-curso-basico-abap4

51

8. Listados (I)

• Pantalla de selección

• Escribir en listado

• Listados interactivos

• Mensajes

• CALL SCREEN

Page 52: 59269634-curso-basico-abap4

52

8. Listados (II)Pantalla de selección

select-optionsparameters

blocklineradiobutton

Page 53: 59269634-curso-basico-abap4

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

Page 54: 59269634-curso-basico-abap4

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

Page 55: 59269634-curso-basico-abap4

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 !!!

Page 56: 59269634-curso-basico-abap4

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)

Page 57: 59269634-curso-basico-abap4

57

Interacción del usuario

9. Module-pools (I)

Transacción FB01(Contabilizar)

SAPMF05A0100

SAPMF05A0100

SAPMF05A0300

SAPMF05A0300

SAPMF05A0301

SAPMF05A0301

SAPMF05A0331

SAPMF05A0331

...

Page 58: 59269634-curso-basico-abap4

58

9. Module-pools (II):Lógica de proceso

PBO

PAI

Page 59: 59269634-curso-basico-abap4

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

Page 60: 59269634-curso-basico-abap4

60

9. Module-pools (IV):Lógica de proceso

Campos visualizados mediante LOOP AT SCREEN

Page 61: 59269634-curso-basico-abap4

61

10. Comunicación con ABAP/4

• RFCs (Remote Function Calls)

• OLE/2 (Object Linking and Embedding)

Page 62: 59269634-curso-basico-abap4

62

11. Modificaciones al estándar

• User-exits

• Field-exits

• Business Transaction Events (BTEs)

• Validaciones/Sustituciones

• Estructuras “append”

• Modificaciones a programas estándar

Page 63: 59269634-curso-basico-abap4

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

Page 64: 59269634-curso-basico-abap4

64

13. Anexos: Formularios

Page 65: 59269634-curso-basico-abap4

65

13: Anexos: Controles