Sei sulla pagina 1di 8

Aadir nuevos campos en el informe de partidas de FI.

En nuestro truco de hoy vamos a analizar la forma de aadir nuevos campos en


los informes estndar de partidas individuales de Finanzas. Este
requerimiento suele ser muy habitual en nuevos proyectos o en la evolucin de
una instalacin, cuando el usuario necesita tener informacin adicional a la ya de
por si completa que ofrece Sap para la consulta de movimientos contables.

Algunos ejemplos habituales pueden ser el incluir las cuentas de proveedor o


cliente al visualizar cuentas de gasto, facturas pendientes de recibir o cuentas de
impuestos. O incluir informacin adicional proveniente de otros mdulos
relacionados (datos de compras, proyectos, facturacin de ventas, movimientos
de mercanca, clasificacin propia de clientes o proveedores), etc.

Para realizar esta parametrizacin, os propongo dos alternativas:

1) Utilizar los Business Transactions Events (BTE): si queremos ampliar los


informes de partidas individuales clsicos (FBL1N para Acreedores, FBL5N para
Deudores y FBL3N para Cuentas de Mayor).

2) Utilizar una implementacin de la Badi FAGL_ITEMS_CH_DATA: si


queremos ampliar la nueva transaccin para consultar las partidas de cuentas de
mayor(FAGLL03).

Ampliacin utilizando los BTE.


Las Business Transactions Events (BTE) son un mecanismo parecido a las
Exits que Sap ideo hace unos aos para permitir una personalizacin de
componentes del sistema. El objetivo era permitir tanto a partners como a clientes
aadir su propio cdigo en las transacciones estndar, personalizandolo o
permitiendo el desarrollo de soluciones sectoriales. Era algo as como una
evolucin de las User Exits.

A las BTE se accede desde la transaccin FIBF. Bsicamente los BTE son
puntos o eventos donde Sap nos va a permitir introducir un mdulo de funcin
donde programar un cdigo Abap personalizado. Tendremos dos tipos de
puntos: Mdulos P/S (Publish and Subscribe) y Mdulos de Operacin.
Cada
mdulo se disparara en un cdigo de evento, y por tanto, se tratar de identificar
el ms apropiado para incluir en el sistema nuestro comportamiento
personalizado. En nuestro caso, utilizaremos un evento en un Mdulo P/S, en
concreto el 1650 Visualizacin PI: Completar datos por posicin, que nos va a
permitir aadir campos adicionales en el informes de partidas individuales.

NOTA IMPORTANTE: la transaccin FIBF tiene disponible una utilidad de


informacin y documentacin de los diferentes mdulos disponibles. Se accede
desde la opcin de men Entorno > Sistema Info P/S y Entorno > Sistema Info
Procesos.
En esta
documentacin se informa del propsito de cada Mdulo, as como la funcin
abap de ejemplo (es un modelo que nunca hay que tocar, solo copiar para crear la
nuestra propia) y las estructuras de datos de intercambio de informacin.

Como paso previo a la configuracin de la BTE, habr que ampliar la estructuras


RFPOS, RFPOSX, aadiendo con una estructura APPEND todos los campos que
queramos aadir en los informes (con la nomenclatura ZZNOMBRE). Esto lo
realizaremos con la transaccin SE11, tal y como vemos en la imagen. En este
caso, vamos a aadir el campo Central de Compras que tenemos en el maestro de
clientes como un campo mas en nuestro informe de partidas abiertas (con el
objetivo de analizar riesgo de clientes por ese campo y poder realizar
sumarizaciones y clasificaciones).
Una vez
preparada la estructura de datos, la activaremos ejecutando el report
RFPOSXEXTEND. Este report aade los campos que hemos incluido a la
estructura RFPOSXEXT, que es la que Sap utiliza en los informes. A
continuacin, realizaremos con la transaccin FIBF los siguientes pasos:

1.Creacin un identificador de Producto de cliente donde incluir nuestra


personalizacin: desde la opcin de men Opciones > Productos > de un
cliente. Aqu creamos una clave que nos permite gestionar todas nuestras
personalizaciones y su activacin o no.
Importante: si el flag Activo no esta marcado, la personalizacin no se activar en
el sistema.

2. Creacin del mdulo de funcin: con la transaccin SE37, nos crearemos un


nuevo mdulo de funcin como copia del que Sap nos ofrece como modelo (en
este caso, el SAMPLE_INTERFACE_00001650). En este modulo incluiremos
todo el cdigo Abap necesario para nuestra personalizacin.

3. Asociar el mdulo de funcin al evento: desde la opcin de men de la


transaccin FIBF, Opciones > Modulos P/S > de un cliente. Ah asociamos el
evento, al identificador de producto y al mdulo de funcin. En resumen, al
incluir aqu el mdulo de funcin, estamos haciendo que se llame a nuestro
cdigo Abap en el lugar que Sap ha establecido en el estndar para dicho evento.
Nuestra
personalizacin esta lista para ser utilizada. Desde la transaccin de listado de
partidas abiertas de clientes (FBL5N), ya tenemos disponible una nueva
columna con la informacin del nuevo campo, ledo del maestro de clientes.

Ampliacion utilizando la implementacin de la BADI.


En el caso de estar utilizando la transaccin FAGLL03 para listar partidas
abiertas, deberemos de usar una implementacin de la BADI
FAGL_ITEMS_CH_DATA, que incluir los siguientes pasos:

1. Ampliar la estructura FAGLPOSX, aadiendo los campos deseados en el


include CI_FAGLPOSX. Lo realizaremos igual que antes desde la transaccin
SE11, aunque en este caso no incluiremos una estructura append, sino que los
campos los insertaremos en el include CI_FAGLPOSX (habr que crearlo sino
existe en nuestro sistema).

2. Crear una implementacin de la BADI FAGL_ITEMS_CH_DATA. Desde


la transaccin SE19, crearemos la implementacin, llamndola por ejemplo
Z_FAGL_ITEMS_CH_DATA.

3. Personalizar los campos adicionales incluyendo nuestro cdigo abap en el


metodo de la Badi llamado CHANGE_ITEMS. Un ejemplo de cdigo sera el
siguiente:
method if_ex_fagl_items_ch_data~change_items.
data ls_items type faglposx.
data ls_tab type bkpf_key.
data ls_addon type bkpf_addon.
data ls_t001 type t001.
02.07.2011 Page 3 of 3
SAP Note 1423223 - Turkey: Display Yevmiye Number in line
item reports
loop at ct_items into ls_items.
if ls_t001-bukrs ne ls_items-bukrs.
select single * into ls_t001
from t001
where bukrs = ls_items-bukrs.
endif.
if ls_t001-land1 = 'TR'.
ls_tab-bukrs = ls_items-bukrs.
ls_tab-belnr = ls_items-belnr.
ls_tab-gjahr = ls_items-gjahr.
call function 'JOURNAL_00003320'
exporting
i_bkpf_key = ls_tab
i_land1 = 'TR'
importing
e_bkpf_addon = ls_addon.
ls_items-belnr_alt = ls_addon-belnr_alt.
modify ct_items from ls_items.
endif.
endloop.
endmethod.

Observar que los campos de cada partida estn en las lineas de la tabla interna
CT_ITEMS y desde ah deberemos leer los valores, recuperar los nuestros y
volveremos a dejar en la tabla interna para que aparezcan en el listado de PAs.

4. Activar el metodo y la implementacin de la badi. En ese momento,ya estar


disponible el nuevo campo en la transaccin FAGLL03.

Conclusiones.

En esta entrada del Blog hemos visto otros mtodos de personalizacin de


nuestro sistema, introduciendo las BTE (que son un mecanismo muy potente para
personalizar el sistema) y las BADIS, que es la forma ms nueva en la que Sap
esta dejando puertas abiertas para personalizar su ERP, ms relacionadas con la
programacin orientada a objetos y la implementacin de clases.

Con estos mtodos y los vistos en anteriores entradas, tenemos una visin mas
que amplia de las diferentes opciones que nos propone Sap para aquellos casos
en que el estndar no nos da la alternativa que necesitamos.

Potrebbero piacerti anche