SAP BAPI

El conector SAP BAPI permite integrar su flujo con el ERP SAP a través de las Business Application Programming Interfaces (BAPIs), que son funciones estandarizadas para acceder a procesos y datos de negocio en el sistema SAP.

En otras palabras, una BAPI es como una "puerta oficial" que SAP pone a disposición para que sistemas externos puedan consultar o manipular datos y procesos sin necesidad de acceder directamente a las tablas internas o escribir código ABAP.

Lo que es posible hacer:

  • Consultar datos

    • Obtener información de clientes, proveedores, materiales, pedidos de venta, inventarios, etc.

      Ejemplo: BAPI_CUSTOMER_GETDETAIL devuelve los datos completos de un cliente.

  • Crear registros

    • Insertar nuevos datos de negocio en SAP.

      Ejemplo: BAPI_SALESORDER_CREATEFROMDAT2 crea un pedido de venta.

  • Actualizar registros

    • Modificar datos ya existentes.

      Ejemplo: BAPI_EMPLOYEE_CHANGE actualiza datos de un empleado.

  • Ejecutar operaciones de negocio

    • Activar procesos internos de SAP (liberar documentos, ejecutar cálculos, generar asientos contables).

      Ejemplo: BAPI_GOODSMVT_CREATE registra un movimiento de inventario.

  • Probar conexión y disponibilidad

    • Validar si SAP está respondiendo.

      Ejemplo: STFC_CONNECTION (devuelve información del sistema, cliente, usuario, etc.).

Estructura de la instrucción (sintaxis)

La comunicación con este conector utiliza una estructura específica de clave-valor para mapear los parámetros de la BAPI.

  • Comando: inicia siempre con CALL FUNCTION <NOMBRE_DE_LA_BAPI>.

  • Parámetros: se definen después del signo de dos puntos ":".

  • Agrupaciones

    • Paréntesis ( ): envuelven un par clave-valor único o un objeto.

    • Corchetes [ ]: envuelven listas de elementos o múltiples parámetros.

  • Sintaxis

    CALL FUNCTION NOMBRE_BAPI: [ (PARAMETRO_1: VALOR), (TABLA: [ (CAMPO: VALOR) ]) ]

Ejemplos

Consulte ejemplos de instrucciones para el conector SAP BAPI:

Validación de conectividad

  • Instrucción

    En la instrucción siguiente, el conector SAP BAPI llama a la función STFC_CONNECTION en SAP. Esta función es una BAPI estándar de SAP, utilizada para probar la conectividad entre el sistema cliente (en este caso, Sensedia Integrations) y el servidor SAP.

    CALL FUNCTION STFC_CONNECTION: []
    Los corchetes [] indican que no se pasaron parámetros adicionales en la llamada.
  • Retorno (log)

    • El fragmento del log muestra la ejecución exitosa del conector SAP BAPI al llamar a la función de prueba STFC_CONNECTION.

    • SAP respondió a la solicitud confirmando la conexión con información sobre el sistema, cliente, usuario y fecha/hora.

    • El estado HTTP 200 garantiza que no hubo error de integración.

      {
      "message": {
      
        "payload": "{\"STFC_CONNECTION\":{\"INPUT\":{\"REQUTEXT\":\"\"},\"OUTPUT\":{\"ECHOTEXT\":\"\",\"RESPTEXT\":\"SAP R/3 Rel. 740   Sysid: ERQ      Date: 20250912   Time: 130104   Logon_Data: 300/APISENSEDIA/E\"}}}",
      
        "status": 200 }
      }

Lectura de tabla

  • Instrucción

    La instrucción siguiente lee las 5 primeras líneas de la tabla T001 en SAP, devolviendo solo los campos BUKRS y BUTXT, separados por punto y coma.

     CALL FUNCTION RFC_READ_TABLE: [
      (IMPORTING: [
       (QUERY_TABLE: T001),
       (DELIMITER: ;),
       (ROWCOUNT: 5)
      ]),
      (TABLES: [
       (FIELDS: [
        (FIELDNAME: BUKRS),
        (FIELDNAME: BUTXT)
       ])
      ])
    ]
  • Partes de la instrucción

    • FUNCTION RFC_READ_TABLE: define que se ejecutará la función de lectura de tablas.

    • IMPORTING: contiene los parámetros de entrada simples que configuran la llamada de la función.

      • QUERY_TABLE: T001: indica la tabla que será consultada (T001, que contiene información sobre Company Codes).

      • DELIMITER: ;: define que los campos devueltos serán separados por punto y coma.

      • ROWCOUNT: 5: limita el retorno a las 5 primeras líneas de la tabla.

    • TABLES: define los parámetros en formato de tabla, utilizados para enviar o recibir listas de registros.

      • FIELDS: especifica los campos de la tabla que deben ser devueltos (si se omite, devuelve todas las columnas, lo que puede causar lentitud o desbordamiento de memoria).

        • BUKRS: código de la empresa (Company Code).

        • BUTXT: descripción de la empresa (Company Name).

  • Retorno (log)

    Consulte dos fragmentos del payload de respuesta registrado en los logs:

    • INPUT: muestra los parámetros de consulta: tabla consultada, número máximo de registros, delimitador y opciones adicionales.

      {\"INPUT\":{\"QUERY_TABLE\":\"T001\",\"ROWCOUNT\":5,\"GET_SORTED\":\"\",\"NO_DATA\":\"\",\"USE_ET_DATA_4_RETURN\":\"\",\"ROWSKIPS\":0,\"DELIMITER\":\";\"}
    • DATA (fragmento): trae los valores devueltos de la consulta.

      DATA\":{\"item\":[{\"WA\":\"300;0001;SAP Brazil ;Sao Paolo ;BR ;BRL ;P;INT ;10;K4;2;000001; ; ; ; ; ; ; ;00000000;2; ; ; ; ;0001; ; ; ;X; ; ; ; ; ; ; ; ; ; ; ;0001; ;0001;0001; ; ;0001; ; ; ; ; ;IE;SE;1; ;X;X; ; ;FMRE; ; ;0; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;\"}

      En este ejemplo:

      • El campo WA (Work Area) trae los datos concatenados por el delimitador elegido

      • 300: MANDT (Cliente SAP)

      • 0001: BUKRS (Código de la Empresa)

      • SAP Brazil: BUTXT (Nombre de la Empresa)

      • Sao Paolo: ORT01 (Ciudad)

      • BR: LAND1 (País)

      • BRL: WAERS (Moneda)

Posibles errores de configuración

A continuación listamos algunos errores comunes que pueden ocurrir al utilizar el conector SAP BAPI y las soluciones recomendadas.

  • Error calling BAPI function in SAP: error genérico de ejecución.

    • Verifique si el usuario configurado tiene permiso de acceso (objeto S_TABU_DIS) a la tabla solicitada o permiso de ejecución en la BAPI.

    • Verifique si los nombres de los campos en FIELDS existen en la tabla.

  • Retorno vacío (DATA: []): ningún registro corresponde a los criterios definidos en OPTIONS.

    • Verifique si la fecha está en el formato AAAAMMDD.

    • Verifique si los valores están en letras mayúsculas, ya que SAP diferencia entre mayúsculas y minúsculas para los datos.

  • ROWCOUNT ignorado: SAP devolvió más líneas de las solicitadas.

    Esto ocurre en ciertas versiones del módulo de función cuando no hay índice primario en el filtro.
    • Aplique un componente de script o filtro en su flujo para eliminar las líneas excedentes.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]