curso básico abap4

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

Upload: osacar1982

Post on 30-Nov-2014

204 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: curso básico abap4

1

Curso inicial de programación en ABAP/4

Noviembre 2004

Page 2: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

5

2. ABAP Workbench

• Editor ABAP/4

• Screen Painter

• Menu Painter

• Function Builder

• ABAP Dictionary

Page 6: curso básico abap4

6

3. Sistema de transportes

Sistema de Desarrollo

Sistema de Integración

Sistema de Producción

Page 7: curso básico 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: curso básico abap4

8

4. ABAP Dictionary: Tablas (I)

• Tipificación de campos

• Includes

• Claves externas

• Opciones técnicas

• Índices

Page 9: curso básico abap4

9

4. ABAP Dictionary: Tablas (II)

Page 10: curso básico abap4

10

4. ABAP Dictionary: Tablas (III)

Page 11: curso básico abap4

11

4. ABAP Dictionary:Ayudas para búsqueda

MARA

MARC

MAKT

vistaZ_MAT1Z

Page 12: curso básico abap4

12

4. ABAP Dictionary:Objetos de bloqueo

Page 13: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

18

6. Sentencias ABAP:Cálculos aritméticos

• COMPUTE

• ADD / ADD-CORRESPONDING

• SUBTRACT /SUBTRACT-CORRESPONDING

• MULTIPLY /MULTIPLY-CORRESPONDING

• DIVIDE / DIVIDE-CORRESPONDING

Page 19: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

33

6.Sentencias ABAP:Tablas internas (I)

• Estructura / Formato

• Clave– por defecto– definida

• Tipo– standard– sorted– hashed

Page 34: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

38

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

Page 39: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

42

6. Sentencias ABAP:Temas especiales (III):

Debugging

Page 43: curso básico 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: curso básico abap4

44

6. Sentencias ABAP:Temas especiales (V):

Tabla de macros (TRMAC)

Page 45: curso básico 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: curso básico abap4

46

7. Modularización (I)

• Macros: DEFINE

• INCLUDE

• Rutinas: FORM, PERFORM

• Módulos de funciones: CALL FUNCTION

• Llamadas a otros programas

Page 47: curso básico abap4

47

7. Modularización (II)Macros: DEFINE

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

...

escribe_mensaje ‘Hola’.

...

WRITE / ‘Hola’.

Page 48: curso básico 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: curso básico 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: curso básico abap4

50

7. Modularización (V)Llamadas a transacciones

CALL TRANSACTION ‘FB01’ USING bdc_data.

LEAVE TO TRANSACTION ‘FB01’.

STOP

Page 51: curso básico abap4

51

8. Listados (I)

• Pantalla de selección

• Escribir en listado

• Listados interactivos

• Mensajes

• CALL SCREEN

Page 52: curso básico abap4

52

8. Listados (II)Pantalla de selección

select-optionsparameters

blocklineradiobutton

Page 53: curso básico 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: curso básico 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: curso básico 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: curso básico 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: curso básico abap4

57

Interacción del usuario

9. Module-pools (I)

Transacción FB01(Contabilizar)

SAPMF05A0100

SAPMF05A0100

SAPMF05A0300

SAPMF05A0300

SAPMF05A0301

SAPMF05A0301

SAPMF05A0331

SAPMF05A0331

...

Page 58: curso básico abap4

58

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

PBO

PAI

Page 59: curso básico 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: curso básico abap4

60

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

Campos visualizados mediante LOOP AT SCREEN

Page 61: curso básico abap4

61

10. Comunicación con ABAP/4

• RFCs (Remote Function Calls)

• OLE/2 (Object Linking and Embedding)

Page 62: curso básico 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: curso básico 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: curso básico abap4

64

13. Anexos: Formularios

Page 65: curso básico abap4

65

13: Anexos: Controles