Académique Documents
Professionnel Documents
Culture Documents
ejercicios prcticos
contacto@marlonfalcon.cl
falconsoft.3d@gmail.com
Diseo de Portada:
Marlon Falcn Hernndez
Personaje de portada: diseado por Freepik
Dedicatoria
A mi hijo Marlon con todo el Amor del mundo.
ndice
INTRODUCCION ................................. 17
2.1
Qu es un ERP?.................................. 18
2.2
2.3
Qu es SAP?....................................... 19
2.4
Qu es ABAP/4?................................. 20
2.5
Qu es tipos de programas se pueden
hacer en ABAP?............................................. 20
2.6
Primeros pasos para conocer la interface de
SAP ECC......................................................... 20
2.7
3.1
Ejercicio N1 - Hola Mundo en ABAP/4.
(SE38)............................................................ 22
3.2
Ejercicio N2 - Comentarios................. 23
3.3
WRITE............................................................ 23
3.4
3.5
Ejercicio N5 - Asignacin de valor a una
variable.......................................................... 25
3.6
Ejercicio N6 - Constantes................... 26
3.7
Ejercicio N7 - Variables del sistema.
Imprimir la fecha........................................... 27
3.8
3.9
3.10
3.11
3.14
............................................................
3.15
3.16
4.1
4.2
4.3
4.4
Ejercicio N19- Usando el operador <>
diferente........................................................ 39
4.5
CAPITULO 3 Bucles.............................. 41
5.1
5.2
5.3
6.1
6.2
6.3
Ejercicio N26 - Subrutinas Internas con
parmetros.................................................... 46
6.4
Ejercicio N27 - Subrutinas Externa con
parmetros.................................................... 46
6.5
............................................................
8.1
8.2
Ejercicio N30 - Tablas internas estructura
general.......................................................... 51
8.3
Ejercicio N31 - Tablas internas con
cabecera........................................................ 53
8.4
Ejercicio N32 - Tablas internas consulta de
usuarios......................................................... 55
8.5
8.6
Ejercicio N34 - Tablas internas con reas de
trabajo........................................................... 56
8.7
Ejercicio N35 - Tablas internas con FIELDSYMBOLS....................................................... 57
9
............................................................
10
............................................................
11
............................................................
12
............................................................
13
............................................................
14
14.1
14.2
............................................................
14.7
14.8
15.1
15.2
15.3
16.1
17
CAPITULO 8 Programacin Orientado a
Objetos.......................................................... 84
17.1 Qu es la programacin orientado a
objetos ?........................................................ 84
17.2
18
18.1
18.4
............................................................
18.5
Z.................................................................... 91
19
19.1
19.2
............................................................
20.1
21
CAPITULO 11 Formularios................... 97
21.1
............................................................
22
22.1
22.2
23
............................................................
24
CAPITULO 13 IDocs (Intermediate
Document)..................................................... 104
24.1
24.2
25
Agradecimientos................................. 105
26
27
28
29
30
INTRODUCCION
Este libro est diseado de tal forma que con
ejercicios prcticos vas conociendo cada parte de la
programacin ABAP/4, no empieza con teoras de
programacin sino que con pequeos pasos de bebe va
ensendote todo lo que necesitas para iniciarte en el
mundo de la programacin. Es importante que al
nalizar cada clase la repitas y hagas los ejercicios
propuestos en el libro. El nivel aumentar a medidas
que vallas avanzado en los ejercicios. Trata siempre de
llevarlo contigo porque muchos procedimientos si no lo
practicas se te olvidaran y aqu siempre lo podrs
refrescar.
Y lo ms importante practica mucho, pon toda tu
voluntad para que puedas entrar sin problemas al
mundo laboral de ABAP/4 para SAP.
Mantener informacin
empresa con acceso
usuarios.
actualizada de la
seguro para los
Qu es ABAP/4?
ABAP/4 es un lenguaje de programacin de cuarta
generacin, su nombre viene de las siglas en Ingles
"Advanced Business Application Programming ". Es
propiedad de SAP y solo sirve para programar dentro
del Sistema SAP ECC las aplicaciones necesarias o
mejoras que la empresa necesite. ABAP/4
fue
desarrollado para SAP R/2 en los aos 80 y no dejo de
desarrollarse hasta convertirse en una potente
herramienta.
Qu es tipos de programas se pueden hacer en
ABAP?
ABAP/4 es un lenguaje de programacin
permite cuatro principales grupos de programas:
que
Ejercicio N2 - Comentarios.
En ABAP/4 los comentarios se pueden hacer de dos
formas. Si se hace un comentario desde el inicio del
programa se utiliza * si el comentario empieza dentro
del texto se utilizas ".
REPORT
Z_COMENTARIO.
*Comentario en ABAP
WRITE: 'HOLA MUNDO'. "Otro comentario en ABAP
REPORT
Z_IMPRIMIR_3_A.
REPORT
Z_IMPRIMIR_3_B.
Tipo
Descripcin
C
D
F
Alfanumricos
Fecha(Date)
Flotante(Float)
Longitud
Longitud
Valor
por defecto mxima
inicial
1
1 - 65535
SPACE
8
8
'0000000'
8
8
0.0
I
N
P
T
X
REPORT
Entero (Integer)
Numrico
Empaquetados
Hora(Time)
Hexadecimales
4
1
8
6
1
4
1-65535
1-16
6
1-65535
0
'0...0'
0
'000000'
X'00'
Z_DATOS_01.
Z_ASIGNACION_SIMPLE.
* Declaramos la variable
* Le asignamos un valor
MiEntero01 = 1.
* Imprimimos el valor
WRITE: MiEntero01.
REPORT
Z_ASIGNACION_MOVE .
* Declaramos la variable
DATA: MiEntero01 TYPE I VALUE 123,
MiEntero02 TYPE I.
* Le asignamos un valor
MOVE MiEntero01 TO MiEntero02.
* Imprimimos el valor
WRITE: MiEntero02.
Ejercicio N6 - Constantes
Las constantes son variables que nunca cambian su
valor en toda la ejecucin del programa, la denicin
de VALUE es obligatorio.
REPORT
Z_CONSTANTES .
REPORT
Z_FECHA.
* Imprimimos el valor
WRITE: SY- DATUM.
YTEXT.
veremos
otras
variables
del
REPORT
Z_SY-SUBRC .
REPORT
Z_OPERACIONES_CONCATENATE.
REPORT
Z_OPERACIONES_CONDENSE .
Z_OPERACIONES_REMPLACE.
Z_OPERACIONES_SEARCH.
Z_OPERACIONES_SHIFT.
Z_OPERACIONES_SPLIT.
Z_OPERACIONES_SPLIT.
YTEXT.
Z_SY-SUBRC .
if sy-subrc <> 0.
MESSAGE ' No se encontr' TYPE 'I'.
endif.
REPORT
ZCOLOR3.
sy-vline,
sy-vline.
ZOPERACIONES.
ms
REPORT
Z_COND_CHECK .
REPORT
Z_IF_ESLE.
Operador
Operador
=
EQ
>
GT
<
LT
>=
GE
<=
LE
<>
NE
BETWEEN Valor1 and
Descripcin
Es igual
Mayor que
Menor que
Mayor o igual que
Menor o igual que
Diferente
Entre
Valor 2
IS INITIAL
IS NOT INITIAL
El contenido no ha cambiado
El contenido ha cambiado
REPORT
Z_CASE.
REPORT
Z_DIFERENTE .
REPORT
Z_BETWWEEN .
CAPITULO 3 Bucles.
Ejercicio N21 - Bucle DO
El bucle Do se utiliza para ejecutar una funcin
mientras esta cumple una condicin.
REPORT
Z_DO_E15 .
Z_DO_E16 .
EXIT.
Entero = Entero + 1.
WRITE: /'El numero es'. Entero.
ENDDO.
REPORT
Z_WHILE_E17.
Z_PARAMETROS_E18.
Z_SUBRUTINAS_E19.
PERFORM MSUBRUTINA.
* Implementacin de la subrutina.
FORM MSUBRUTINA.
Z_SUBRUTINAS_E19.
REPORT
DB .
REPORT
Z_CALCULO.
Z_PLANTILLA_E22.
*******************************************
* DATOS
*******************************************
DATA: Entero TYPE I VALUE 1.
*******************************************
* SALIDA DE DATOS
*******************************************
WRITE: 'Imprimir'.
REPORT
Tablas_Internas_E23 .
TYPE C,
Apellidos(25) TYPE C,
EDAD(3)
TYPE I,
FECHA
TYPE D,
END OF INT_ALUMNOS.
* Llenamos la tabla interna
TI_ALUMNOS-Nombre = 'Marlon'.
TI_ALUMNOS-Apellidos = 'Falcon'.
TI_ALUMNOS-EDAD = '35'.
TI_ALUMNOS-FECHA= SY-DATUM.
* Actualizamos los datos
APPEND TI_ALUMNOS
* Recorremos la tabla interna mediante LOOP
LOOP AT TI_ALUMNOS.
WRITE: / INT_ALUMNOS-NOMBRE, INT_ALUMNOS-Apellidos.
ENDLOOP.
ZEJEMPLO1.
TABLES: T1,T2.
DATA: BEGIN OF <Nombre de la tabla interna>.
CAMPO01 TYPE I,
CAMPO02 TYPE C.
END OF INTERNAL <Nombre de la tabla interna>.
REPORT
Tablas_Internas_E24 .
TABLES: Zusuario.
DATA: BEGIN OF F_CADENA.
nombre(13)
TYPE C.
apellidos(13) TYPE C.
mail(20)
TYPE C.
TYPE C.
apellidos(13) TYPE C.
mail(20)
TYPE C.
REPORT
Z_TABLAS_INTERNAS_CON_E25.
"Pais
END OF st_KNA1.
* Creamos la tabla interna INT_KNA1.
DATA: INT_KNA1 TYPE STANDARD TABLE OF st_KNA1 WITH HEADER LINE.
* Campo para que el usuario entre un valor
* US-Partner
PARAMETERS: p_NAME1 LIKE KNA1-NAME1.
* Llenamos la tabla
SELECT NAME1 TELF1 LAND1
FROM KNA1 INTO TABLE INT_KNA1
WHERE NAME1 = p_NAME1.
*Imprimimos los datos de la tabla interna
LOOP AT INT_KNA1.
WRITE: / INT_KNA1-NAME1,
INT_KNA1-TELF1,
INT_KNA1-LAND1.
ENDLOOP.
ZUSER12
ZUSER12.
la
el
al
la
INT_USUARIOS-TRDAT.
ENDLOOP.
REPORT ZOFERTAS.
* Creamos la estructura de la tabla interna con la tabla VBAK
TABLES: VBAK.
LOOP AT INT_VBAK.
ENDLOOP.
ZALV01.
G_ST_fieldcat-fieldname = 'MTART'.
G_ST_fieldcat-seltext_m = 'Tipo de material'.
G_ST_fieldcat-seltext_s = 'Tip.'.
APPEND G_ST_fieldcat TO G_INT_fieldcat.
* Funcin para mostrar el ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat
= G_INT_fieldcat[]
I_GRID_TITLE
TABLES
t_outtab
= INT_MARAV[]
EXCEPTIONS
program_error = 1
OTHERS
= 2.
REPORT
ZALV04.
= 'MARAV'
FIELDNAME
= ' '
LANGU
= SY-LANGU
LFIELDNAME
= ' '
ALL_TYPES
= ' '
IMPORTING
X030L_WA
= WATAB
DDOBJTYPE
DFIES_WA
LINES_DESCR
TABLES
= INT_TAB
FIXED_VALUES
DFIES_TAB
EXCEPTIONS
NOT_FOUND
= 1
INTERNAL_ERROR
= 2
OTHERS
= 3.
if sy-subrc <> 0.
WRITE:/ 'No se encuentra los campos'.
endif.
* Imprimimos en pantalla los valores. Fieldcat
LOOP AT INT_TAB.
G_ST_fieldcat-fieldname = INT_TAB-FIELDNAME.
G_ST_fieldcat-seltext_m = INT_TAB-FIELDTEXT.
G_ST_fieldcat-seltext_s = INT_TAB-FIELDNAME.
APPEND G_ST_fieldcat TO G_INT_fieldcat.
ENDLOOP.
= G_INT_fieldcat[]
= 'ZALV01/Titulo ALV'
TABLES
t_outtab
= INT_MARAV[]
EXCEPTIONS
program_error = 1
OTHERS
= 2.
ID:
pulsamos el botn TIPOS INSTALADOS y
buscamos INT1
MODELO:
"ALV_CHAR40".
buscamos
el
elemento
de
datos
que
REPORT ZSQL01.
* Creamos la estructura de la tabla MARAV
TABLES: MARAV.
DATA: BEGIN OF ST_MARAV.
INCLUDE STRUCTURE MARAV.
DATA END OF ST_MARAV.
i = i + 1.
WRITE : / 'ERROR' .
ENDIF.
REPORT ZSQL1.
TABLES: MARAV.
DATA CONTADOR TYPE I.
SELECT COUNT(*) FROM MARAV INTO CONTADOR.
WRITE: / 'CANTIDAD:',CONTADOR.
WRITE:/ MARAV-AENAM.
ENDSELECT.
"CAMPO1 DE TRDIR
"CAMPO1 DE TRDIR
PGMNA
LIKE TSTC-PGMNA,
"CAMPO1 DE TSTC
TCODE
LIKE TSTC-TCODE,
"CAMPO2 DE TSTC
END OF T_TRAB.
* Declaracin de la tabla interna
DATA: IT_TRAB TYPE
SELECT TRDIR~NAME
TRDIR~SUBC
TSTC~PGMNA
TSTC~TCODE
INTO
TABLE IT_TRAB
REPORT ZPOO.
* Definimos la clase
CLASS C_MICLASE DEFINITION.
PUBLIC SECTION.
METHODS: IMPRIMIR.
PRIVATE SECTION.
DATA: CONTADOR TYPE I VALUE 123.
ENDCLASS.
* Hacemos la implementacin
CLASS C_MICLASE IMPLEMENTATION.
METHOD IMPRIMIR.
CONTADOR = CONTADOR + 1.
WRITE :/ 'El valor es:' , CONTADOR.
ENDMETHOD.
ENDCLASS.
* Instanciamos la clase
* Bloque que se ejecutar tras pantalla de seleccin
START-OF-SELECTION.
DATA: MYCLASE TYPE REF TO C_MICLASE.
CREATE OBJECT MYCLASE.
REPORT ZPOO1.
* Definicion de clase
CLASS C_SUMA DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: class_constructor.
METHODS:SUMAR IMPORTING VALUE(VALOR) TYPE I,
RESTAR_DOS,
ESTADO,
RESULTADO EXPORTING VALUE(VALOR) TYPE I.
PRIVATE SECTION.
DATA: VAR1 TYPE I VALUE 10,
VAR2 TYPE I VALUE 10.
ENDCLASS.
* Implementamos el mtodo de la clase
CLASS C_SUMA IMPLEMENTATION.
METHOD class_constructor.
WRITE: /'Esto es un ejemplo de clases'.
ENDMETHOD.
METHOD SUMAR.
VAR1 = VAR1 + VALOR.
VAR2 = VAR2 + VALOR.
ENDMETHOD.
METHOD ESTADO.
WRITE: / VAR1,VAR2.
ENDMETHOD.
METHOD RESTAR_DOS.
VAR1 = VAR1 - 2.
ENDMETHOD.
METHOD RESULTADO.
VALOR = VAR1 + VAR2.
WRITE: / VALOR.
ENDMETHOD.
ENDCLASS.
* Creamos la instancia de la clase
START-OF-SELECTION.
DATA: MYCLASE TYPE REF TO C_SUMA.
CREATE OBJECT MYCLASE.
CALL METHOD MYCLASE->ESTADO.
CALL METHOD MYCLASE->RESTAR_DOS.
CALL METHOD MYCLASE->ESTADO.
CALL METHOD MYCLASE->SUMAR( 12 ).
CALL METHOD MYCLASE->ESTADO.
CALL METHOD MYCLASE->RESULTADO.
END-OF-SELECTION.
WRITE: / VAR1.
ENDMETHOD .
ENDCLASS.
* Creamos la clase HIJO que hereda de PAPA
CLASS HIJO DEFINITION INHERITING FROM PAPA.
ENDCLASS.
* Creamos la instancia de la clase
START-OF-SELECTION.
DATA: MYCLASE TYPE REF TO HIJO.
CREATE OBJECT MYCLASE.
CALL METHOD MYCLASE->ESTADO.
CALL METHOD MYCLASE->ESTADO.
END-OF-SELECTION.
REPORT
Descripcin
Longitud por defecto
Cancelacin El mensaje aparece en un cuadro de
dialogo y el programa termina.
Error
El mensaje aparece en un cuadro de
dialogo y el programa continua
Informacin Se muestra un cuadro de dialogo de
informacin.
Estado
El mensaje se muestra en la barra de
estado el programa continua.
Advertencia Depende del contexto un mensaje de
error aparece y el programa puede
terminar
Salir
No muestra ningn mensaje y el
programa termina.
Z_MENSAJEA_A.
REPORT
Z_MENSAJEA_E.
REPORT
Z_MENSAJEA_I.
REPORT
Z_MENSAJEA_S.
REPORT
Z_MENSAJEA_S.
REPORT
ZCOLOR1.
REPORT
ZCOLOR2.
ENDDO.
CAPITULO 9 DYNPRO
Introduccin a una DYNPRO
Una DYNPRO es un recursos tecnolgico de ABAP/4
para crear la capa de presentacin de un programa.
Tipos de Dynpros:
Normal: Es la dynpro estandar
Subscreen: Cuando es una ventana que se abre
desde otra Dynpro.
Ventana dialogo modal: Es una pantalla que se
utiliza para mostrar mensajes.
Dynpro seleccin: Son los que se declaran cuando
hacemos un selection-screen.
CAPITULO 11 Formularios.
Tipos de formularios en SAP
En SAP existen tres tipo de formas de hacer
formularios ellas son:
SapScript: Es la forma ms antigua de hacer
formulario se utiliza desde las primeras versiones de
SAP. Se accede a ella desde la transaccin SE71.
SAPScript es un lenguaje que se utiliza para
diversas funciones en SAP entre ellas crear
formularios.
SmartForms: Es mucho ms fcil de trabajar que
los anteriores, est disponible desde la versin 4.7 de
SAP.
AdobeForms:
Es lo ltimo en tecnologa de
formulario de SAP, surge por una alianza estratgica
entre la empresa Adobe y SAP.
Ejercicio N69 - Mostrar un formulario
SAPScript (SE71).
Para mostrar un formulario iremos a la transaccin
SE71 o entramos a la ruta: Men SAP / Herramientas /
Imprimir Formularios / SAPscript / SE71 Formularios.
Colocamos ZMEDRUCK y pulsamos el botn Visualizar.
nombre
del
formulario
"ZMIPRIMERFORM",
denimos el idioma "ES" y pulsamos el botn crear.
dene
las
pginas
que
tendr
el
el formato que
PARRAFO: T1
ELEMENTO: E1
Agradecimientos
- FI FS00
XK03
XD03
FB60
FB03
FBL1N
F-58
Pago a proveedor
F-44
Compensar
FB08
Anulacin de registro
FB70
Facturar a cliente
FBL5N
F-28
Pago a Deudor
FB75
Nota de crdito
FB50
FB03
FS10N
Visualizacin de saldos
OB52
S_ALR_87012249
- CO KA03
Clase de costos
KS03
Centro de costo
S_ALR_87013611
costos
Reporte
de
centro
- MM MM03
ME21N
MIGO
Entrada de mercanca
MIRO
Facturacin Proveedor
- SD VA01
VA03
Ver el pedido
VL01N
Salida de mercanca
VF01
Facturacin a Cliente
de
- BASIS SPRO
SU01
Administracin de usuario
PFCG
AL08
mandantes
SM04
Mostrar
usuarios
conectados
- PM SPRO
SY-ABCDE
SY-APPLI
Aplicaciones SAP
SY-BATCH
SY-BATZO
SY-BATZS
SY-BREP4
SY-CCURT
Tipo de cambio en tabla de aplicacin CURRENCY
CONVERSION
SY-CDATE
SY-COLNO
SY-CPAGE
SY-CTYPE
CONVERSION
SY-DBNAM
SY-DBSYS
SY-DCSYS
SY-DSNAM
SPOOL
SY-DYNGR
SY-DYNNR
Nombre de la mquina
SY-INDEX
SY-LISEL
SY-LISTI
Utilizacin interna
SY-LSIND
ID de mensaje
SY-MSGLI
Utilizacin interna
SY-ONCOM
Utilizacin interna
SY-REPID
Columnas en la pantalla
SY-SLSET
Nombre de SELECTON-SETS
SY-SYSID
SY-TABID
Utilizacin interna
SY-TABIX
SY-TOCCU
SY-TPAGI
SY-TSTLO
usuario
SY-TZONE
Diferencia de tiempo con Hora media de
Greenwich (UTC)
SY-UCOMM
SY-ULINE
SY-UNAME
SY-UZEIT
SYSTEM: Hora
SY-VLINE
SY-WINCO
SY-WINDI
SY-WINRO
SY-WINSL
SY-WINX1
SY-WINX2
SY-WINY1
SY-WINY2
SY-WTITL
SY-XCODE
Cdigo OK ampliado
Comando de la barra
/nend
/nex
/n
/nXXXX
/o
/i
Workbench Abap.
Vistenos en la web:
www.marlonfalcon.cl