8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
1/10
Añadir nuevos campos en el informe de partidas de FI.
https://saptricks.wordpress.com/2011/07/17/truco1!anadirnuevoscamposenelinformedepartidasa"iertasdefi/
En nuestro truco de hoy vamos a analizar la forma de añadir nuevos campos en los informes
estándar de partidas individuales de Finanzas. Este requerimiento suele ser muy habitual en
nuevos proyectos o en la evolución de una instalación, cuando el usuario necesita tener información
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 información
adicional proveniente de otros módulos relacionados datos de compras, proyectos, facturación de
ventas, movimientos de mercanc!a, clasi"cación propia de clientes o proveedores#, etc.
$ara realizar esta parametrización, os propongo dos alternativas%
Utilizar los Business Transactions Events (BTE)% si queremos ampliar los informes de partidas
individuales cl'sicos ()*&+ para Acreedores, ()*+ para -eudores y ()*+ para /uentas de 0ayor#.
1# Utilizar una implementación de la Badi FAGL!TE"#$%&ATA% si queremos ampliar la nueva
transacción para consultar las partidas de cuentas de mayor(A2**3#.
Ampliación utilizando los BTE.
*as Business Transactions Events (BTE) son un mecanismo parecido a las E4its que Sap ideo hace
unos a5os para permitir una personalización de componentes del sistema. El objetivo era permitir
tanto a partners como a clientes a5adir su propio código en las transacciones est'ndar,
personalizandolo o permitiendo el desarrollo de soluciones sectoriales. Era algo as! como una
evolución de las 6ser E4its.
A las )7E se accede desde la transacción F!BF. )'sicamente los )7E son puntos o eventos donde
Sap nos va a permitir introducir un módulo de función donde programar un código Abap
personalizado. 7endremos dos tipos de puntos% "ódulos '# ('ulis* and #uscrie) + "ódulos
de ,peración.
$'gina & de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
2/10
Añadir nuevos campos en el informe de partidas de FI.
/ada módulo se disparara en un código de evento, y por tanto, se tratar' de identi"car el m's
apropiado para incluir en el sistema nuestro comportamiento personalizado. En nuestro caso,
utilizaremos un evento en un 0ódulo $8S, en concreto el -./0 1isualización '!2 $ompletar datos
por posición, que nos va a permitir a5adir campos adicionales en el informes de partidas
individuales.
3,TA !"',4TA3TE% la transacción (9)( tiene disponible una utilidad de información y
documentación de los diferentes módulos disponibles. Se accede desde la opción de men: Entorno ;<
Sistema 9nfo $8S y Entorno ;< Sistema 9nfo $rocesos.
$'gina 1 de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
3/10
Añadir nuevos campos en el informe de partidas de FI.
En esta documentación se informa del propósito de cada 0ódulo, as! como la función 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 información.
/omo paso previo a la con"guración de la )7E, habr' que ampliar la estructuras =($OS, =($OS>,
a5adiendo con una estructura A$$E+- todos los campos que queramos a5adir en los informes con la
nomenclatura ??+O0)=E#. Esto lo realizaremos con latransacción #E--, tal y como vemos en la
$'gina de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
4/10
Añadir nuevos campos en el informe de partidas de FI.
imagen. En este caso, vamos a a5adir el campo /entral de /ompras 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 clasi"caciones#.
6na vez preparada la estructura de datos, la activaremos e5ecutando el report 4F',#6E6TE3&.
Este report a5ade los campos que hemos incluido a la estructura =($OS>E>7, que es la que Sap utiliza
en los informes. A continuación, realizaremos con la transacción (9)( los siguientes pasos%
-7$reación un identi8cador de 'roducto de cliente donde incluir nuestra personalización% desde
la opción de men: Opciones ;< $roductos ;< de un cliente. Aqu! creamos una clave que nos permite
gestionar todas nuestras personalizaciones y su activación o no.
$'gina @ de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
5/10
Añadir nuevos campos en el informe de partidas de FI.
9mportante% si el ag Activo no esta marcado, la personalización no se activar' en el sistema.
97 $reación del módulo de función% con la transacción SEB, nos crearemos un nuevo módulo de
función como copia del que Sap nos ofrece como modelo en este caso, el
SA0$*EC9+7E=(A/EC3333&D3#. En este modulo incluiremos todo el código Abap necesario para
nuestra personalización.
$'gina de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
6/10
Añadir nuevos campos en el informe de partidas de FI.
:7 Asociar el módulo de función al evento% desde la opción de men: de la transacción (9)(,
Opciones ;< 0odulos $8S ;< de un cliente. Ah! asociamos el evento, al identi"cador de producto y al
módulo de función. En resumen, al incluir aqu! el módulo de función, estamos haciendo que se llame a
nuestro código Abap en el lugar que Sap ha establecido en el est'ndar para dicho evento.
$'gina D de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
7/10
Añadir nuevos campos en el informe de partidas de FI.
+uestra personalización esta lista para ser utilizada. -esde la transacción de listado de partidas
aiertas de clientes (FBL/3), ya tenemos disponible una nueva columna con la información del
nuevo campo, le!do del maestro de clientes.
Ampliacion utilizando la implementación de la BADI.
$'gina B de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
8/10
Añadir nuevos campos en el informe de partidas de FI.
En el caso de estar utilizando la transacción FAGLL03 para listar partidas abiertas, deberemos de
usar una implementación de la BADI FAGL_ITEM_!"_DATA, que incluir' los siguientes pasos%
-7 Ampliar la estructura FAGL',#6, a5adiendo los campos deseados en el include /9C(A2*$OS>.
*o realizaremos igual que antes desde la transacción SE&&, aunque en este caso no incluiremos una
estructura append, sino que los campos los insertaremos en el include /9C(A2*$OS> habr' que
crearlo sino e4iste en nuestro sistema#.
97 $rear una implementación de la BA&! FAGL!TE"#$%&ATA. -esde la transacción SE&,
crearemos la implementación, llam'ndola por ejemplo ?C(A2*C97E0SC/FC-A7A.
:7 'ersonalizar los campos adicionales inclu+endo nuestro códi;o aap en el metodo de la
Badi llamado $%A3GE!TE"#. 6n ejemplo de código ser!a el siguiente%
method ifCe4CfaglCitemsCchCdataGchangeCitems.
data lsCitems type faglpos4.
data lsCtab type bHpfCHey.
data lsCaddon type bHpfCaddon.
$'gina I de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
9/10
Añadir nuevos campos en el informe de partidas de FI.
data lsCt33& type t33&.
31.3B.13&& $age of
SA$ +ote &@111 J 7urHey% -isplay Kevmiye +umber in line
item reports
loop at ctCitems into lsCitems.
if lsCt33&JbuHrs ne lsCitemsJbuHrs.
select single L into lsCt33&
from t33&
Mhere buHrs N lsCitemsJbuHrs.
endif.
if lsCt33&Jland& N 7=.
lsCtabJbuHrs N lsCitemsJbuHrs.
lsCtabJbelnr N lsCitemsJbelnr.
lsCtabJgjahr N lsCitemsJgjahr.
call function PO6=+A*C333313
e4porting
iCbHpfCHey N lsCtab
iCland& N 7=
importing
eCbHpfCaddon N lsCaddon.
lsCitemsJbelnrCalt N lsCaddonJbelnrCalt.
modify ctCitems from lsCitems.
$'gina de &3
8/15/2019 Ejemplo - Añadir Nuevos Campos en El Informe de Partidas de FI
10/10
Añadir nuevos campos en el informe de partidas de FI.
endif.
endloop.
endmethod.
Observar que los campos de cada partida est'n en las lineas de la tabla interna /7C97E0S 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 $AQs.