Saltar al contenido

Guía de Ejecución de SAP BAPI 3.3

Descripción General

Esta guía describe el proceso de ejecución de módulos de funciones SAP BAPI desde Vinyl. ¿Qué es BAPI?

La tecnología BAPI (Business Application Programming Interface) es la principal tecnología API disponible para los clientes para leer y actualizar datos, que pueden ser llamados desde SAP o externamente utilizando el protocolo RFC y la tecnología ALE/IDoc (https://wiki.scn.sap.com/wiki/display/ABAP/BAPI?original_fqdn=wiki.sdn.sap.com&BAPI-Introduction).

Las BAPI se definen en el Repositorio de objetos comerciales (BOR) de SAP como métodos de tipos de objetos comerciales de SAP que llevan a cabo funciones comerciales específicas. Se implementan como módulos de función habilitada para RFC (llamada de función remota) y se creado en el Generador de funciones del ABAP Workbench.

Requisitos de Vinyl

Se debe instalar un paquete de software Vinyl que incluya los componentes adicionales de SAP en su instancia para poder conectarse con SAP y ejecutar BAPI. El nombre del archivo zip de Vinyl incluirá ThirdPartySAP al final de la versión (es decir, Vinyl-3.3.21255ThirdPartySAP.zip). Este paquete tiene archivos DLL (bibliotecas de enlaces dinámicos) de SAP en la carpeta Vinyl/Bin que son necesarios para conectarse a SAP desde Vinyl.

Fuente de Datos SAP en Vinyl

Se supone que hay una fuente de datos de SAP en su instancia de Vinyl vinculada a la fuente de datos desde donde desea llamar a BAPI. Si no ha configurado una fuente de datos de SAP, consulte esta documentación y configure una.

Interfaz gráfica de usuario, texto, descripción de la aplicación generada automáticamente

BAPI en Vinyl

Vinyl utiliza la compilación de tablas provisionales locales para pasar datos a SAP mediante la ejecución BAPI. Cada componente de la función BAPI está representado por una tabla provisional y columnas que contienen valores para los datos correspondientes que espera el módulo. Además de las columnas de parámetros BAPI, Vinyl se basa en la definición de columnas específicas que enlace todas las tablas provisionales durante la ejecución.

Estas columnas específicas de Vinyl tienen el prefijo '_' y no se envían a SAP, ya que su propósito es únicamente preparar la ejecución desde Vinyl. Cuando los datos están preparados y listos para la ejecución de BAPI, se llama a una acción específica (que se aclarará a continuación) y ejecuta la BAPI con el _id columna que determina qué conjunto de registros se pasará.

Nota

Los registros de la base de datos del servidor de aplicaciones publicarán cada una de las conexiones y ejecuciones de SAP, junto con los datos de parámetros específicos de BAPI.

Creación de Tablas BAPI de Preparación Local

Las tablas provisionales se pueden crear manualmente o importando la estructura BAPI a través de la funcionalidad Importar patrón en la fuente de datos de SAP.

Si decide crear las tablas provisionales manualmente, debe tener una comprensión adecuada de la estructura y los parámetros que tiene la BAPI que desea ejecutar. La estructura es crucial para permitir que Vinyl ejecute la BAPI.

Las BAPI pueden tener parámetros de importación (datos que se transferirán de Vinyl a SAP) y parámetros de exportación (datos que se transferirán de SAP a Vinyl). Las BAPI pueden tener una estructura principal/secundaria en la que el componente principal contiene el nivel más alto de datos y los componentes secundarios tienen un nivel más bajo de datos. La mayoría de las BAPI también tendrán un /RETURN Componente secundario que exporta cualquier mensaje (correcto o de error) que proporcionará confirmación o ayudará al usuario a identificar y solucionar problemas.

Se crea una tabla provisional para los componentes principal e secundario en su fuente de datos local, donde el nombre de la tabla secundaria tiene el prefijo del nombre de la tabla principal (es decir, la tabla provisional principal denominada BAPI_PO_CREATE1, tabla de preparación secundaria denominada BAPI_PO_CREATE1/POHEADER).

Para la creación de columnas en la tabla provisional:

  1. Crear _id y configúrelo como tipo de datos UUID. Marcar como PK y AutoGenerar.

  2. Si la tabla de preparación es un componente secundario, luego cree _ParentId columna y configúrelo como UUID. Defina la relación de muchos a uno con la tabla principal donde se encuentra la columna principal. _Id enlaces a la columna secundaria _ParentId.

  3. A continuación, si el orden de ejecución de los registros es crítico, agregue la columna _index donde se puede mantener y hacer referencia a un valor de indexación durante la ejecución.

  4. A continuación, agregue las columnas FK locales o información de auditoría útil, con el prefijo _, que ayudará a hacer referencia a los registros de su modelo de datos con los registros de la tabla BAPI. (es decir. _POHeaderID nos permitirá consultar datos preparados BAPI basados en un registro de pedido local, _ExecutedOn para seguir el historial)

  5. Después de agregar las columnas específicas de Vinyl, cree todas las columnas relacionadas con BAPI que reflejen los parámetros de importación y exportación en la función (es decir, PEDIDO DE COMPRA, PO_ITEM, ENTREGA_FECHA, CANTIDAD, etc.)

Ejecutando BAPI

Para invocar la compilación de los datos de la tabla provisional y la ejecución de BAPI a través de RFC, utilizará una acción en un evento de tabla/objeto comercial.

En la versión 2.7 y superiores, existe una Acción de Tipo RFC y cuatro opciones:

  1. BAPI_OBJCL_CHANGE

  2. BAPI_OBJCL_CREATE

  3. BAPI_OBJCL_DELETE

  4. BAPI_TRANSACTION_COMMIT

En Vinyl versión 2.6 y anteriores, la acción utilizada es de tipo Plugin y se llama Ejecutar BAPI y se agrega al evento Insertar de una tabla de activación recién creada.

La tabla desencadenante puede tener cualquier nombre (es decir, BAPITrigger), pero el complemento requiere que se definan columnas específicas para hacer referencia durante la ejecución. Estas columnas son:

adjunto

  • BAPITriggerID es un nuevoUUID().

  • SourceDataSourceID es el DataSourceID de la fuente de datos local donde se encuentran las tablas provisionales.

  • TargetDatasSourceID es el DatasourceID de la fuente de datos de SAP donde se ejecutará BAPI.

  • FunctionModule son los nombres de los módulos de funciones BAPI que desea activar, separados por comas. (BAPI_TRANSACTION_COMMIT aparece como el último módulo ya que confirma las acciones BAPI anteriores).

  • _Id es el FK de la tabla provisional BAPI y determina qué conjunto de registros se pasará a ejecución

Ejemplos de Módulos de Funciones BAPI

A continuación se muestran algunos de los muchos BAPI que se pueden ejecutar desde Vinyl. El componente principal de BAPI se enumera por número y cada uno de los componentes secundarios se enumera debajo de él.

  1. BAPI_PO_CREATE1: Se utiliza para crear una nueva orden de compra.

    • /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN
  2. BAPI_PO_CHANGE: Se utiliza para actualizar valores en una orden de compra existente.

    • /POHEADER, /POHEADERX, /POITEM, /POITEMX, /POSCHEDULE, /POSCHEDULEX, /POCOND, /POCONDX, /POEXPIMPITEM, /POEXPIMPITEMX, /POTEXTHEADER, /EXTENSIONIN, /POPARTNER
  3. BAPI_PO_RELEASE: Se utiliza para liberar una orden de compra después de manipularla.

  4. BAPI_PO_GETDETAIL: Se utiliza para recuperar las notas del encabezado y los valores de texto en la orden de compra.

    • _PO_GETDETAIL/RETURN, PO_HEADER_TEXTS
  5. BAPI_SALESORDER_CREATEFROMDAT2: Se utiliza para crear órdenes de venta.

    • /ORDER_HEADER_IN, /ORDER_PARTNERS, /ORDER_ITEMS_IN, /ORDER_SCHEDULES_IN, /RETURN
  6. BAPI_CONTRACT_CREATEFROMDATA: Se utiliza para crear contratos.

    • /CONTRACT_HEADER_IN, /CONTRACT_PARTNERS, /CONTRACT_PARTNERS, /CONTRACT_ITEMS_IN
  7. BAPI_EXCHANGERATE_GETDETAIL: Se utiliza para recuperar tipos de cambio de divisas.

  8. Z_ADAPT_DATA_EXTRACT: una función personalizada que se utiliza para extraer información del plan de inversión.