Sunteți pe pagina 1din 36

Taller de

Adiestramiento para
la Elaboracin de
Reportes en
Lenguaje ABAP.
Aspectos Tcnicos

Del 28 de Noviembre de 2011 al 09 de


Diciembre de 2011

Agenda
Que es SAP
Estructura de SAP
Plataforma Netweaver
Lenguaje ABAP
Diccionario de Datos: Tipos de
datos, Estructuras y Tablas.
Editor de Programas.
- Estructura del programa
- Elementos de texto
- Textos de seleccin
- Variables
- Tablas internas: Tratamiento
- Lgica de programas
Programacin estructurada:
Tipos de reportes:
- Estructura de un reporte ALV
- Estructura de un reporte
Transacciones

Agenda
Programacin estructurada:
- Tablas de Bases de datos.
- Relacin de Tablas
- Campos de Base de datos
- Consultas a la Base de Datos
Tipos de reportes:
- Estructura de un reporte ALV
- Estructura de un reporte
Transacciones

Contenido:
Que es SAP
Estructura de SAP

Ambiente de desarrollo: desarrollo, parametrizaciones del


sistema.
Ambiente de Calidad: Pruebas integrales .
Ambiente Produccin: Datos reales, cliente.

Lenguaje ABAP:
- Lenguaje de programacin de cuarta
generacin.
- Lenguaje a orientado a eventos.
- Aplicaciones: Reportes,
Programacin de dialogo o transacciones,
etc.
Diccionario de Datos:
- tipos de Datos:

Diccionario de Datos:
- Tablas:
Tablas transparentes.
Se refiere a tablas que se definen en SAP y se corresponden
directamente con tablas
de base de datos tradicionales.
Tabla pool. (Propiedad de SAP): Tabla pool es una tabla de la
base de datos que contiene varias tablas. Se basa en un campo
llamado nombre de tabla y un campo genrico.
Tabla cluster. (Propiedad de SAP): Tabla cluster es una tabla de la
base de datos que contiene varias tablas. Se basa en que las
'subtablas' tienen un ndice comn, y un campo genrico donde se
guarda todos los datos de las 'subtablas'.

- Estructuras
- Tablas:
DFKKO: Tabla de cabecera de documentos FI-CA.
FKKVKP: Tabla de cuentas de contrato.
DFKKKO: Cabecera documento de Cuenta
Corriente.
DFKKOP: Posiciones del documento de Cuenta
Corriente.
DFKKRK: Historial de devoluciones (Cabecera).
DFKKRH: Historial de devoluciones (Posiciones).
Editor de Programas: Tx SE38
- Ingresar el nombre del reporte
- Seleccionamos la opcion Crear

- Una vez seleccionado el botn Crear ingresar la


informacin requerida como propiedades del reporte.

- tipo de programa: Ejecutable.

- Una vez ingresada la informacin correspondiente a las


propiedades del reporte se procede a guardar el mismo.
Seleccionar el botn Grabar.

- A continuacin se debe ingresar el paquete al cual se va


a pertenecer el reporte.

- Seguidamente ingresar la orden (Workbench) de


transporte en la cual se almacenara el reporte.

Estructura de un programa ABAP:

Elementos de texto:
En el editor Abap, vamos a Elementos de texto->Textos de
seleccion

Textos de Seleccin:

Variables:
Para crear las mismas, usamos la instruccin DATA.
1- En funcin de un tipo base:
DATA: ZVARIABLE(3) TYPE C.
2- En referencia a un objeto del diccionario de datos:
Se usa LIKE , y de esta forma, la variable creada tendr
el mismo tipo y longitud que el objeto del diccionario
de datos al cual referencia.
DATA: ZVARIABLE LIKE DFKKKO-OPBEL

Tablas internas:
Para gestionar datos en los programas, se usan las tablas
internas. Las mismas solo existirn en tiempo de ejecucin.
Podemos tener dos tipos de tablas internas:
- Con Lnea de Cabecera.
- Sin Lnea de Cabecera
Ej:
Declaracin de tabla con
cabecera
DATA: BEGIN OF TABLA OCCURS
0,
COLUMNA1 TYPE C,
COLUMNA2 TYPE I,
END OF TABLA.

DATA: BEGIN OF TYE_TABLA,


COLUMNA1 TYPE C,
COLUMNA2 TYPE I,
END OF TYE_TABLA.
DATA: TABLA TYPE STANDARD TABLE OF TYE_TABLA.
DATA: WA_TABLA TYPE TYE_TABLA.

Procesamiento tablas internas:


- Insertar Registros: Append, collect.
- Leer Registros: Read, Loop-Endloop
- Modificar Registros: Write, Delete
- Ordenar Registros: Sort
Ejemplos:
LOOP AT <intab> ( WHERE
<cond> ).
...
ENDLOOP.
LOOP AT <intab> INTO
<work_area> ( WHERE <cond> ).
...
ENDLOOP.

Programacin Estructurada:
La estructura del programa debe ser modular, es recomendable
crear un programa de tipo Include para declarar los datos
globales y las pantallas del programa, un Include para las
subrutinas y uno para la rutina principal.
Ejemplo.
REPORT zreporte_de_prueba.
INCLUDE zreporte_prueba_data. Definicin de datos y
Screen
INCLUDE zreporte_prueba_main. Rutina principal
IINCLUDE zreporte_prueba_rout. Subrutinas

Programacin Estructurada:
PERFORM <modulo>. Llamada a un procedimiento o
subprograma.
FORM <modulo>
.... Subprograma.
ENDFORM.
El programa principal y el procedimiento se podrn comunicar
mediante parmetros.
...
PERFORM <modulo> USING var1 var2...
...
FORM <modulo> USING var1 var2...
...
ENDFORM.
- Pases de parmetro: Por valor (E) y por Referencia (E/S)
FORM <modulo> USING VALUE(var1).
...
ENDFORM.

Tablas de Base de Datos:


- Tablas Transparentes.
- Tablas del Cliente.

Ejemplo:
-DFKKOP
- DFKKKO
Relacin de Tablas de bases de datos:
Claves primarias, forneas.

Consultas de Base de Datos:


*-- Cuando queremos guardar el contenido de una tabla de la
BD a una tabla interna:
SELECT * INTO TABLE ti_xxx FROM BBBB
WHERE YYYY IN p_ZZZZ
AND YYYY IN p_XXXX
AND YYYY IN p_WWWW.
*-- Cuando queremos buscar al menos un registro de una
tabla de la BD
SELECT SINGLE werks aubel
INTO (v_werks, v_aubel)
FROM vbrp
WHERE vbeln = ti_vbrk-vbeln.

*-- Para evitar hacer un LOOP a una tabla interna.


SELECT * FROM /bic/cubo23 INTO TABLE i_cub
FOR ALL ENTRIES IN ti_cuentas
WHERE fiscyear = p_gjahr
AND /bic/co_area = i_sociedades-co_area
AND /bic/version = version
AND /bic/costelmnt = ti_cuentas-cuenta
AND /bic/center IN s_kostl.

Tipos de Reportes:
- Listas de procesamiento: Normal,
con ALV
REPORT <nombre> Nombre
programa
TABLES: Tablas que se utilizan
DATA: Variables internas
<Sentencias> Ejecuta las
instrucciones que se indiquen.
START-OF-SELECTION. Inicio de
programa
<Sentencias> Ejecuta las
instrucciones que se indiquen.
END-OF-SELECTION. Fin de programa
<Sentencias> Salida del reporte

Tipos de palabras claves o


reservadas: Declarativas, de
Eventos, Control ,
Operativas

Tipos de Reportes:
- Ejemplo:
REPORT ZEJEMPLO.
TABLES: DFKKKO.

Declarativas

DATA: OPBEL LIKE DFKKKO-OPBEL.


PARAMETERS: P_BLART LIKE DFKKKO-BLART.
START-OF-SELECTION

Eventos

SELECT SINGLE * FROM DFKKKO


WHERE BLART EQ = P_BLART.
IF SY-SUBRC = 0.
WRITE: DFKKKO-OPBEL. operativasControl
ENDIF.

Tipos de Reportes:
- Reportes ALV: ABAP List Viewer Visualizador de Listas en
lenguaje ABAP.
Los reportes ALV son muy prcticos porque incluyen varias
funcionalidades que de hacerlos con el mtodo tradicional habra que
codificar manualmente.
-Interactivos
- Estndar de programacin
- Prcticos

Estructura de un Reporte ALV:


Cuando se crea un report utilizando funciones ALV es necesario:
1. Incluir en el programa el tipo SLIS que tiene definidas todas
las estructuras de los parmetros de entrada y de salida de
esta funcin.
2. Definir correctamente el catlogo de campos.
3. Definir en el programa todas las subrutinas que
implementarn el comportamiento de ste ante la ejecucin de
determinados eventos o ante la interaccin del usuario.
4. Pasarle los datos que deben ser mostrados en el reporte a la
funcin utilizando tablas internas.

Estructura de un Reporte ALV:


REPORT zalv_simple.
* Pasos esenciales (Buscar el simbolo '')
* ---------------* 1. Definicin estructuras y tablas necesarias
* 2. Definimos la tabla con los datos de salida
* 3. Toma de datos
* 4. Definicin estructura y formato de salida
*5. Mostrar listado

*<-- Paso 1. Definicion estructuras y tablas necesarias


* Type Pool donde vienen definidas todas las estructuras y tablas
TYPE-POOLS: slis.
* Catlogo de campos: contiene la descripcin de los
campos de salida
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
* Especificaciones de la disposicin de la lista: descripcin
de la
* estructura de salida
gs_layout TYPE slis_layout_alv,
* Nombre del programa
g_repid LIKE sy-repid.
*<-- Paso 2. Definimos la tabla con los datos de salida

TYPES: BEGIN OF st_output.


INCLUDE STRUCTURE ekpo.
TYPES: END OF st_output.
DATA: gt_output TYPE STANDARD TABLE OF
st_output WITH HEADER LINE.
INITIALIZATION.
g_repid = sy-repid.
START-OF-SELECTION.
*<-- Paso 3. Toma de datos
PERFORM toma_datos.
*<-- Paso 4. Estructura y formato de salida
PERFORM init_fieldcat.
PERFORM init_layout.
*<-- Paso 5. Mostrar listado
PERFORM listado.

*---------------------------------------------------------------------*
* FORM INIT_FIELDCAT *
*---------------------------------------------------------------------*
FORM init_fieldcat.
* Mediante esta tabla vamos a definir los campos que queremos mostrar
* en el listado de salida.
DATA: L_COUNT TYPE I.
*CONTRIBUYENTE
CLEAR gt_fieldcat.
L_COUNT = L_COUNT + 1.
gt_fieldcat-COL_POS = L_COUNT.
gt_fieldcat-FIELDNAME = XXXXX'. nombre campo
gt_fieldcat-SELTEXT_L = TEXT-502.
"2
gt_fieldcat-OUTPUTLEN = 10.
"Note 821
APPEND gt_fieldcat TO XFIELD .
CLEAR gt_fieldcat.
L_COUNT = L_COUNT + 1.
gt_fieldcat-COL_POS = L_COUNT.
gt_fieldcat-FIELDNAME = YYYY'. nombre campo
gt_fieldcat-SELTEXT_L = TEXT-510.
"2
gt_fieldcat-OUTPUTLEN = 10.
"Note 821
APPEND gt_fieldcat TO XFIELD.

ENDFORM.

*---------------------------------------------------------------------*
* FORM INIT_LAYOUT *
*---------------------------------------------------------------------*
FORM init_layout.
* Mediante esta estructura podemos definir el formato de salida
gs_layout-zebra = 'X'.
gs_layout-f2code = '&ETA'.
gs_layout-detail_popup = 'X'.

ENDFORM.
*---------------------------------------------------------------------*
* FORM TOMA_DATOS *
*---------------------------------------------------------------------*
FORM toma_datos.
* Los datos deben guardarse en la tabla interna de salida
SELECT * FROM ekpo UP TO 100 ROWS INTO TABLE gt_output.
ENDFORM. " TOMA_DATOS

*---------------------------------------------------------------------*
* FORM LISTADO *
*---------------------------------------------------------------------*
FORM listado. "
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
I_SAVE
= 'A'
TABLES
t_outtab = gt_output "tabla de salida "
EXCEPTIONS
program_error = 1
OTHERS = 2 .
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH symsgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " LISTADO

Grabar fichero local

Transacciones:
Una Transaccin asociada a un reporte en SAP, se utiliza para que
los usuarios puedan acceder mediante a los programas que
nosotros hemos creado anteriormente, dado que muchas veces
ellos no tendrn permisos para ejecutar la transaccin SE38 o
otras transacciones utilizadas para desarrollo.

Indicar nombre
de transaccin.

Transacciones:

Transacciones:

Indicar el nombre
del Reporte.

Muchas gracias

S-ar putea să vă placă și