curso básico abap4

Post on 30-Nov-2014

204 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related