En muchas ocasiones en los documentos de ventas del módulos de SD, se requiere modificaciones como adicionar campos propios del cliente, o modificar características propias de algunas transacciones para que se acoplen a las necesidades del cliente, estos cambios permiten manejar información que es relevante para el cliente pero que el sistema estándar de SAP no soporta, para esta problemática SAP proporciona algunas técnicas que permiten su personalización; para el caso particular de las transacciones VA01, VA02 y VA03 contamos con las técnicas de User Exits, Enhancement Spot y Append. En el presente documento se va a indicar cuales son los pasos que se deben llevar a cabo para poder hacerlo.
Para modificar las transacciones de ventas en su cabecera se tiene que ampliar la tabla VBAK, en caso de querer modificar los datos de posición tenemos que ampliar la tabla VBAP. Ejecutamos los siguientes pasos para la tabla VBAK o VBAP según nuestras necesidades.
Para ampliar una tabla estándar se deben llevar a cabo los siguientes pasos:
Para poder llevar a cabo la personalización y mejora debemos hacer uso de User Exits, los cuales permiten manipular el documento de ventas. Para visualizar los Exits con que contamos podemos ir a SPRO → Comercial → Adaptación del sistema → Exits de usuario. → Exits de usuario en Ventas, en esta parte damos clic sobre el botón de Documentación y el sistema nos muestra una ayuda donde observamos cuales son los Exit que tenemos a disposición para poder llevar a cabo nuestra mejora.
En ese documento de ayuda se muestran todos los User Exit y la descripción, lo cual nos sirve de guía a la hora de escoger el que necesitemos, por ejemplo, si queremos colocar alguna validación en los campos adicionales que se crean en la tabla VBAK y VBAP, podemos hacer uso del User Exit USEREXIT_SAVE_DOCUMENT_PREPARE. En la siguiente imagen se observa la descripción.
Ahora bien, como si decidimos modificar este User Exit, debemos buscarlo en el include correspondiente, para este caso pertenece al programa MV45AFZZ, por lo tanto, vamos a la transacción SE80 y colocamos el nombre del programa, cuando hacemos esto vemos que el include MV45AFZZ pertenece al programa SAPMV45A. Dentro de las subrutinas buscamos el User Exit deseado y hacemos la modificación.
Una vez hemos escogido nuestro User Exit debemos modificarlo, para hacer esto tenemos dos opciones:
Modificar el Exit registrando en objeto en SAP Marketplace, para lo cual necesitamos tener acceso al SAP Marketplace, por lo general esto es labor del administrador del sistema (BASIS).
Una vez coloquemos la clave de acceso nos paramos en el User Exit a modificar y damos clic en el botón Insertar , y posteriormente adicionamos la lógica que requiera nuestro desarrollo.
La segunda opción es usar el Enhancemente Point para hacer la modificación, para esto desde el Editor ABAP damos clic en el botón Ampliar (Shift+F4) y desde el menú principal vamos a Tratar → Operaciones de Ampliación → Insertar puntos de ampliación implícitos. Esta acción genera dos líneas con comillas sencillas, una al comienzo y otra al final de la subrutina. Ubicamos el cursor en alguna de ellas y vamos en el menú principal a Tratar → Operaciones de Ampliación → Crear Implementación. En este punto aparece la siguiente pantalla:
En esa pantalla da clic en el botón Cod.fuente. Esta acción lleva a la siguiente pantalla:
En esta pantalla se da clic en el botón Crear (F8), donde sale una pantalla donde creamos el punto de ampliación, después de creado lo seleccionamos y al hacer esto en el editor ABAP nos aparece activa la edición y desde allí podemos insertar la lógica necesaria.
Si usamos el User Exit USEREXIT_SAVE_DOCUMENT_PREPARE contamos con las variables globales VBAK y XVBAP entre otras, solamente nombro las variables VBAK Y XVBAP por que son las que se usan para validar o modificar los campos que se crearon cuando se hizo el append a las tablas VBAK y VBAP.
Hasta el momento se ha mostrado como hacer el append a las tablas para adicionar los campos nuevos y como modificar el User Exit que necesitamos para manipular los datos nuevos, o para llevar algún proceso diferente al soportado de manera estándar, ahora voy a mostrar los pasos que se deben llevar a cabo para modificar las pantallas.
Esto es permitido haciendo uso de los Dynpros 8309 y 8459 del programa SAPMV45A, el Dynpro 8309 es usado para la cabecera y el Dynpro 8459 se utiliza para datos de posición, estos Dynpros realmente son subpantallas (subscreen) y corresponden a la pestaña de Datos adicionales B tanto de la cabecera como de la posición.
Para poder modificar estos dynpros necesitamos solicitar el acceso al siguiente objeto:
Después de obtener el acceso podemos llevar a cabo la modificación en el editor de dynpros (Screen Painter).
La modificación de este Dynpro se usa para mostrar información que queremos que salga a nivel de cabecera.
En la imagen se observa que los campos de entrada se crean con el nombre VBAK-<ZZ NOMBRE>, donde <ZZ NOMBRE> es el nombre que le dimos al atributo cuando ampliamos la tabla VBAK.
La modificación de este Dynpro se usa para mostrar información que queremos que salga a nivel de posición.
En la imagen se observa que los campos de entrada se crean con el nombre VBAP-<ZZ NOMBRE>, donde <ZZ NOMBRE> es el nombre que le dimos al atributo cuando ampliamos la tabla VBAP.
El sistema SAP proporciona varias alternativas que permiten mejorar o adecuar el estándar a necesidades particulares de los clientes, haciendo uso de manera adecuada de estas alternativas podemos hacer mejoras importantes, en el caso particular para las transacciones VA01, VA02 y VA03 observamos que el sistema proporciona un buen número de maneras para poder llevar a cabo cambios y mejoras.