Sei sulla pagina 1di 6

Valores default al crear Proveedores.

Un requerimiento muy habitual en cualquier proyecto de implantación o de


mantenimiento de Sap es la posibilidad de inicializar con valores por defecto
determinados campos en el maestro de Proveedores o de Clientes en el
momento de crearlos. Además, es posible que estos valores tengan dependencia
de otros campos del maestro que es posible controlar (por ejemplo, según la
Sociedad, Organización de Compras, Organización de Ventas, Grupo de Cuentas,
etc).
Si lo que necesitamos hacer es muy genérico, con valores por defecto sin ninguna
lógica de control, podríamos utilizar las variantes de transacción para
inicializar valores por defecto en determinados campos de las pantallas
de las transacciones. Podéis ver las siguientes entradas que hablan sobre ello y la
forma de crear variantes de transacción.
 http://sapinsider.wispubs.com/Assets/Blogs/2011/July/Setting-Up-Default-
Field-Values-for-the-Vendor-and-Customer-Master
 https://saptricks.wordpress.com/2011/05/22/truco-13-transacciones-
personalizadas-con-las-variantes-de-transaccion-shdo/
Pero realmente las variantes de transacción son difíciles de configurar y poco
flexibles para luego hacer cambios. Por tanto, si ademas de eso tenéis pensado incluir
una lógica inteligente en esta asignación inicial de valores por defecto, yo os
recomiendo utilizar la adaptación del sistema que Sap nos habilita para este caso, en
concreto:

 BADI: VENDOR_ADD_DATA
 Metodos:
 PRESET_VALUES_CCODE: para inicializar valores en la información de
sociedad (tabla LFB1).
 PRESET_VALUES_PORG: para inicializar valores en los datos de
organización de compras (tabla LFM1).
 PRESET_VALUES_PORG_ALTERNATIVE: para inicializar valores en los
datos de organización de compras, para los datos divergentes por
centro/surtido de proveedor (tabla LFM2).
Podéis consultar las definiciones de la BADI con la transacción SE18, así como la
documentación asociada a cada método.

El procedimiento para implementar la BADI en nuestro sistema sería el siguiente:

1. Creación de la implementación propia de la BADI con la transacción SE19.


2. Programación del código necesario en el Método.
3. Validación y pruebas.

Creación de la implementación propia de la BADI con


la transacción SE19.
Desde la transacción SE19 creamos la implementación de la BADI
VENDOR_ADD_DATA, con el nombre oportuno siguiendo las recomendaciones
de Sap en cuanto a nomenclatura.
A continuación indicaremos el nombre de la implementación de la Badi, asi como
la clase asociada, enlazándola con la definición de Badi VENDOR_ADD_DATA.

El sistema nos pedirá el paquete donde queremos incluir los objetos creados, asi
como la correspondiente orden de transporte para luego poder pasar las
especificaciones a nuestro sistema de productivo.

Programación del código necesario en el Método.


A continuación desde la misma SE19 accederemos a la implementación para acceder
al código Abap del método PRESET_VALUES_CCODE, tal y como observamos
en la imagen.

En mi ejemplo voy a inicializar valores incluidos en los datos de Sociedad


del proveedor. Si quisierais actualizar los datos de compras usaríamos el método
PRESET_VALUES_PORG en lugar del indicado.
En el código incluimos la lógica de proceso de la inicialización, teniendo en cuenta
que:

 La variable I_ACTIVITY la actividad que estamos realizando: si


estamos en la creación de un proveedor (valor H) o en la modificación (valor V).
 La estructura I_LFA1 incluye toda la información de los datos generales del
proveedor (no modificable).
 La estructura E_LFB1 incluye los datos de sociedad del proveedor
(modificable).
Nota: el método se ejecuta en el evento PBO (Process Before Output) en todas las
pantallas donde se encuentran los datos de sociedad.

Validación y pruebas.
A continuación accedemos a las transacciones de creación de
proveedores para verificar el correcto funcionamiento del código abap incluido (en
este caso, al estar inicializando los datos de sociedad, podriamos utilizar la XK01 o
FK01).
En nuestro ejemplo, procedemos a crear un proveedor de un grupo de cuentas 0001.
Al llegar a los datos de sociedad, podemos observar como los valores deseados son
inicializados según la lógica descrita en el método de la Badi.
De esta manera, nos aseguramos que determinados campos relevantes se inicialicen
con determinados valores al crear los proveedores, siguiendo si es necesario una
lógica relevante según los valores de las unidades organizativas o los valores de otros
campos de referencia.

NOTA: si tuviéramos el mismo requerimiento, pero para el maestro de


clientes, podríamos utilizar, con la misma lógica para su configuración:
 BADI: CUSTOMER_ADD_DATA
 Método: PRESET_VALUES_AREA
Espero que os sea de interés.

Potrebbero piacerti anche