Fuente por lotes de tablas de SAP

En esta página se describe cómo configurar extracciones en bloque de datos de aplicaciones SAP.

El complemento de origen de lotes de tabla de SAP (complemento de tabla de SAP) te permite leer datos de tablas o vistas estándar y personalizadas de SAP. Permite la ingestión de datos en bloque desde aplicaciones SAP en BigQuery o en cualquier otro sistema de destino compatible mediante Cloud Data Fusion. El complemento tiene las siguientes funciones principales:

  • Usa SAP ECC, SAP S4/HANA o SAP BW como sistema de origen
  • No usa CDC (captura de datos de cambios) de SAP para monitorizar y extraer datos nuevos y delta de las fuentes de datos.
  • Usa el modo de extracción por lotes
  • Admite tablas de SAP y vistas CDS de ABAP como fuentes de datos
  • Accede a los datos de SAP a través de la capa de aplicación.

Puedes leer datos de:

  • Tablas transparentes
  • Tablas agrupadas en clústeres
  • Mesas de billar
  • Vistas CDS de ABAP
  • Objetos ADSO de SAP BW

Versiones de software compatibles

Software Versiones
SAP S4/HANA SAP S4/HANA 1909 y versiones posteriores
SAP ECC SAP ERP6 NW 7.31 SP16 y versiones posteriores
SAP JCo SAP JCo versión 3.0.20 y posteriores
Cloud Data Fusion 6.3 y versiones posteriores

Para obtener más información sobre SAP en Google Cloud, consulta la información general sobre SAP en Google Cloud.

Antes de empezar

Configura los siguientes sistemas y servicios que utiliza el complemento de tabla de SAP:

  1. Configura el sistema ERP de SAP. Este proceso incluye los siguientes pasos:
    • Instala los archivos de transporte de SAP.
    • Configura las autorizaciones y los roles de SAP necesarios.
    • Configura SAP Java Connector.
  2. Implementa el complemento en Cloud Data Fusion.

    • Importante: Elige una versión del complemento que sea compatible con la versión de Cloud Data Fusion.
    • Si actualizas la versión de tu instancia o complemento de Cloud Data Fusion, evalúa el impacto de los cambios en el ámbito funcional y el rendimiento de la canalización.
  3. Establecer la conectividad RFC entre Cloud Data Fusion y SAP

    • Asegúrate de que la comunicación esté habilitada entre la instancia de Cloud Data Fusion y el servidor SAP.
    • En el caso de las instancias privadas, configura el emparejamiento entre redes de VPC.
    • Tanto el sistema SAP como la instancia de Cloud Data Fusion deben estar en el mismo proyecto.

Configurar el complemento

  1. Ve a la interfaz web de Cloud Data Fusion y haz clic en Studio.
  2. Comprueba que esté seleccionada la opción Flujo de procesamiento de datos - Lote (no En tiempo real).
  3. En el menú Fuente, haz clic en Tabla de SAP. El nodo Tabla de SAP aparece en tu flujo de procesamiento.
  4. Para configurar el origen, vaya al nodo Tabla de SAP y haga clic en Propiedades.
  5. Introduce las siguientes propiedades. Para ver una lista completa, consulta Propiedades.

    1. Introduce una etiqueta para el nodo de tabla de SAP. Por ejemplo, SAP tables.
    2. Introduce los detalles de la conexión. Puedes configurar una conexión nueva y puntual o una conexión reutilizable que ya tengas.

      Nueva conexión

      Para añadir una conexión única a SAP, sigue estos pasos:

      1. Mantén desactivada la opción Usar conexión.
      2. En la sección Conexión, introduce la siguiente información de la cuenta de SAP en estos campos:

        1. En el campo Nombre de referencia, introduce un nombre para la conexión que identifique esta fuente para el linaje.
        2. En el campo Cliente de SAP, introduce el nombre del cliente de una instancia o un entorno específicos de SAP. Un administrador de SAP puede proporcionar el nombre del cliente.
        3. En el campo Idioma de SAP, introduce un idioma de inicio de sesión de SAP. El valor predeterminado es EN (inglés).
        4. Seleccione uno de los siguientes tipos de conexión.

          • Directa (a través del servidor de aplicaciones de SAP). Si eliges este tipo predeterminado, introduce información en los siguientes campos: Host del servidor de aplicaciones SAP, Número del sistema SAP y Router SAP.
          • Balanceo de carga (a través de SAP Message Server). Si eliges este tipo, introduce información en los siguientes campos: Host del servidor de mensajes de SAP, Servicio del servidor de mensajes de SAP o número de puerto, ID del sistema SAP (SID) y Nombre del grupo de inicio de sesión de SAP.
        5. En el campo Nombre de la tabla o vista de SAP, introduce el nombre de la tabla o la vista de tu sistema SAP.

        6. Proporciona las credenciales de SAP: pide a tu administrador de SAP el nombre de usuario de inicio de sesión de SAP y la contraseña.

        7. En el campo Ruta de Cloud Storage de la biblioteca JCo, introduce la ruta de SAP Java Connector (SAP JCo) en Cloud Storage que contiene los archivos de la biblioteca SAP JCo que has subido.

        8. Para generar un esquema basado en los metadatos de SAP que asigna los tipos de datos de SAP a los tipos de datos correspondientes de Cloud Data Fusion, haga clic en Obtener esquema. Para obtener más información, consulta Asignaciones de tipos de datos.

        9. Opcional: para optimizar la carga de ingestión de SAP, introduce información en los siguientes campos:

          1. Las opciones de filtro le permiten extraer registros en función de las condiciones de selección, como las columnas que tienen un conjunto de valores definido. Define las condiciones en la sintaxis de OpenSQL en una cláusula WHERE. Por ejemplo, esta consulta devuelve todas las filas de la tabla Roster en las que la columna SchoolID tiene el valor SchoolID > 52:

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            Para obtener más información, consulta Filtros admitidos.

          2. En el campo Número de filas que se van a obtener, puedes limitar los datos extraídos proporcionando un número entero positivo de filas.

          3. En el campo Número de divisiones, puedes crear particiones para extraer registros de datos en paralelo, lo que mejora el rendimiento. El número de divisiones puede afectar a los procesos de trabajo de SAP y debe seleccionarse con cuidado.

          4. En el campo Tamaño del paquete, especifica el número de registros que se extraerán en una sola llamada de red SAP. El tamaño del paquete influye en el rendimiento y los recursos disponibles, por lo que debe seleccionarse con cuidado.

      Conexión reutilizable

      Para reutilizar una conexión, sigue estos pasos:

      1. Activa Usar conexión.
      2. Haz clic en Ver conexiones.
      3. Haz clic en el nombre de la conexión.

        .

      Si no existe ninguna conexión, sigue estos pasos para crear una conexión reutilizable:

      1. Haz clic en Añadir conexión > SapTable.
      2. En la página Crear una conexión SapTable que se abre, introduzca un nombre y una descripción para la conexión.
      3. En el campo Cliente de SAP, introduzca el nombre del cliente de una instancia o un entorno específicos de SAP. Un administrador de SAP puede proporcionar el nombre del cliente.
      4. En el campo Idioma de SAP, introduce un idioma de inicio de sesión de SAP. El valor predeterminado es EN (inglés).
      5. Seleccione uno de los siguientes tipos de conexión.

        • Directa (a través del servidor de aplicaciones de SAP). Si eliges este tipo predeterminado, introduce información en los siguientes campos: Host del servidor de aplicaciones SAP, Número del sistema SAP y Router SAP.
        • Balanceo de carga (a través de SAP Message Server). Si eliges este tipo, introduce información en los siguientes campos: Host del servidor de mensajes de SAP, Servicio del servidor de mensajes de SAP o número de puerto, ID de sistema de SAP (SID) y Nombre del grupo de inicio de sesión de SAP.
      6. Proporciona las credenciales de SAP: pide a tu administrador de SAP los valores de nombre de usuario de inicio de sesión de SAP y contraseña.

      7. En el campo Ruta de Cloud Storage de la biblioteca JCo, introduce la ruta de SAP Java Connector (SAP JCo) en Cloud Storage que contiene los archivos de la biblioteca SAP JCo que has subido.

      8. Opcional: En el campo Propiedades de conexión SAP adicionales, introduzca los pares clave-valor que deban anular los valores predeterminados de SAP JCo.

      9. Haz clic en Crear.

Propiedades

Propiedad Compatible con macros Propiedad obligatoria Descripción
Etiqueta No El nombre del nodo de su canalización de datos.
Usar conexión No No Usar una conexión reutilizable. Si se usa una conexión, no es necesario que proporcione las credenciales. Para obtener más información, consulta Gestionar conexiones.
Nombre de referencia No Si la opción Usar conexión no está activada, este campo aparece. Nombre de la conexión que se va a usar para el linaje.
Nombre No Si la opción Usar conexión está activada, este campo aparece. El nombre de la conexión reutilizable.
Cliente de SAP La instancia o el entorno de un sistema SAP.
Hacer una captura Habilita las copias de los datos en SAP.
Cuándo activar las instantáneas:
  • Extraer datos de cualquier tabla transaccional activa
  • Extraer datos de las tablas en las que las consultas de datos son más lentas y consumen más memoria por cada llamada de extracción.

Cuándo desactivar las copias de seguridad: cuando ejecutes varias extracciones de datos de gran volumen en paralelo. Las copias de seguridad usan tablas de búfer en SAP, lo que puede provocar problemas de out of memory en SAP. Sin embargo, una vez completada la extracción de datos, se borra la tabla de búfer.
Idioma de SAP El idioma en el que se muestran y se procesan la interfaz de usuario y los datos de SAP.
Tipo de conexión No El tipo de conexión SAP: Direct o Load balanced (Balanceo de carga).
Host del servidor de aplicaciones SAP No En el caso del tipo de conexión Direct (Directa), este nombre de host procede del servidor de aplicaciones SAP, que actúa como capa intermedia entre los clientes SAP (como la interfaz web de SAP, los navegadores web o las aplicaciones móviles) y la base de datos subyacente.
Número de sistema de SAP No Solo en el caso del tipo de conexión Direct, este número es el identificador único asignado a cada sistema SAP. Por ejemplo, 00.
SAP Router No Solo para el tipo de conexión Directa, esta es la cadena del router del servidor proxy, que proporciona un canal seguro para la comunicación entre los sistemas SAP y los clientes o partners externos.
Host del servidor de mensajes de SAP No Solo para el tipo de conexión Equilibrada de carga, este es el nombre del host, que facilita el equilibrio de carga entre varios servidores de aplicaciones de SAP.
Servicio o número de puerto del servidor de mensajes de SAP No Solo para el tipo de conexión Balanceo de carga, este es el puerto de red en el que el servidor de mensajes de SAP escucha las conexiones entrantes de los clientes y servidores de aplicaciones de SAP.
ID de sistema SAP (SID) No Este ID solo se asigna a cada sistema SAP en el tipo de conexión Balanceo de carga.
Nombre del grupo de inicio de sesión de SAP No Nombre de la agrupación lógica o configuración de varios servidores de aplicaciones SAP. El valor predeterminado es PUBLIC.
Nombre de tabla o vista de SAP Un nombre de tabla o vista válido que no distingue entre mayúsculas y minúsculas, y del que se pueden extraer todas las columnas.
Nombre de usuario de inicio de sesión de SAP Nombre de usuario de SAP
Recomendación: si el nombre de usuario cambia periódicamente, usa una macro.
Contraseña de inicio de sesión de SAP Contraseña de SAP.
Recomendación: usa macros seguras.
ID del proyecto de GCP Google Cloud ID de proyecto.
Ruta de GCS de la biblioteca SAP JCo Ruta a Cloud Storage donde has subido los archivos de la biblioteca SAP JCo.
Obtener esquema N/A N/A El complemento genera un esquema basado en los metadatos de SAP, que asigna los tipos de datos de SAP a los tipos de datos correspondientes de Cloud Data Fusion. Consulta Asignación de tipos de datos.
Propiedades de conexión de SAP adicionales No Defina propiedades adicionales de SAP JCo para anular los valores predeterminados de SAP JCo. Por ejemplo, si se define jco.destination.pool_capacity = 10, se anula la capacidad predeterminada del grupo de conexiones.
Filtros No Condiciones especificadas en la sintaxis de Open SQL que filtran mediante una cláusula SQL WHERE. Extraer registros en función de condiciones, como los de las columnas con un conjunto de valores definido o un intervalo de valores.
Para obtener más información, consulta Filtros admitidos.
Número de filas que se van a obtener No Limita el número de registros extraídos.
  • Introduce un número entero positivo.
  • Si el valor es 0 o se deja en blanco, Cloud Data Fusion extrae todos los registros de la tabla.
  • Si introduces un valor positivo que sea mayor que el número de registros seleccionados (en función de los demás valores de filtro), Cloud Data Fusion solo extraerá los registros seleccionados.
Número de divisiones que se van a generar No Crea particiones para extraer registros en paralelo.
El motor de tiempo de ejecución crea el número especificado de particiones (y conexiones SAP) al extraer los registros.
Ten cuidado al aumentar este valor, ya que incrementa las conexiones simultáneas con SAP.
Recomendación: Planifica las conexiones de SAP para cada pipeline y el número total de pipelines que se ejecutan simultáneamente.
Si el valor es 0 o se deja en blanco, Cloud Data Fusion elige un valor adecuado en función del número de ejecutores disponibles, los registros que se van a extraer y el tamaño del paquete.
Tamaño del paquete No Número de registros que se van a extraer en una sola llamada de red de SAP. Es el número de registros que SAP almacena en búfer en la memoria durante cada llamada de extracción de red.
Ten cuidado al definir esta propiedad. Si hay varias canalizaciones de datos que extraen datos, el uso de memoria puede alcanzar su punto máximo, lo que provoca errores debido a Out of memory.
  • Introduce un número entero positivo.
  • Si se deja en blanco o se introduce 0, el complemento usa el valor estándar 70000 o un valor calculado de forma adecuada.
  • Si la canalización de datos falla debido a errores de Out of memory, disminuya el tamaño del paquete o aumente la memoria disponible para sus procesos de trabajo de SAP.

Filtros admitidos

Se admiten las siguientes condiciones de filtro.

Filtro que contiene un operador de comparación

Utilice operadores de comparación para realizar filtrados más complejos basados en comparaciones entre valores.

Sintaxis
    SELECT * FROM table_name WHERE column_name > value; \
    SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
    
Ejemplo
AUDAT GT '20230914'

Filtro que contiene un operador LIKE

Usa operadores LIKE para buscar coincidencias con patrones. Para que coincida con cualquier carácter, usa el símbolo % como comodín.

Sintaxis
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
Ejemplo
ERNAM LIKE 'KIRAN%'

Filtro que contiene un operador IN

Usa operadores IN para especificar una lista de valores con los que se compararán los datos.

Sintaxis
    SELECT * FROM table_name WHERE column_name \
      IN ('value1', 'value2', 'value3');
    
Ejemplo
ERNAM IN ( 'LEE' , 'KIRAN' )

Filtro que contiene un operador lógico

Usa operadores lógicos para especificar una lista de valores con los que buscar coincidencias.

Sintaxis
    SELECT * FROM table_name WHERE condition1 AND condition2; \
      SELECT * FROM table_name WHERE condition1 OR condition2; \
      SELECT * FROM table_name WHERE NOT condition;
    
Ejemplos
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

Filtro que contiene un periodo

Usa periodos para obtener las filas en las que una columna de fecha y hora se encuentre dentro de un periodo específico.

Sintaxis
    SELECT * FROM table_name \
      WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
    
Ejemplo
AUDAT GE '20230910' AND AUDAT LE '20230914'

Filtro que contiene una comparación de fechas

Usa comparaciones de fechas para obtener filas en las que se utilice la fecha y la hora.

Sintaxis
    SELECT * FROM table_name WHERE datetime_column > 'target_date';
    
Ejemplo
AUDAT GE '20230910' AND AUDAT LE '20230914'

Filtro que combina fecha y hora

Si la columna de fecha y hora incluye tanto la fecha como la hora, puede filtrar los datos en función de ambos.

Sintaxis
    SELECT * FROM table_name \
      WHERE datetime_column >= 'target_datetime' \
      AND datetime_column <= 'target_datetime';
    
Ejemplo
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'

(Formato de marca de tiempo : AAAAMMDDHHMMSS)

Filtros que combinan varias condiciones con operadores lógicos

Puedes obtener filas que cumplan varias condiciones mediante operadores lógicos, como AND y OR.

Sintaxis
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' AND column2 > value2) \
      OR (column3 = 'value3' AND column4 < value4);
    
Ejemplo
    ( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \
      OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
    

Filtrar combinando condiciones anidadas

Puedes combinar condiciones de forma anidada para crear filtros complejos.

Sintaxis
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \
      AND column4 = 'value4';
    
Ejemplo
    ( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \
      AND FMBDAT EQ '20220722'
    

Filtro que usa subconsultas

Puedes usar subconsultas para filtrar los resultados de otra consulta.

Sintaxis
    SELECT * FROM table_name \
      WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
    
Ejemplo
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )

Filtro que combina condiciones de fecha y valor

Puede combinar condiciones basadas en fechas y en valores en un filtro complejo.

Sintaxis
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR column2 = 'value2') \
      AND datetime_column > 'target_datetime';
    
Ejemplo
    ( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
    

Filtro que contiene fechas de formato

En SAP, los campos de fecha y hora siempre se guardan sin - ni : a nivel de base de datos.

Sintaxis
    SELECT * FROM table_name \
      WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \
      AND datetime_column <= 'YYYY-M
    

No admitido: filtro que contiene funciones y operadores de comparación

En SAP, no se admiten las funciones de la cláusula WHERE de la QUERY.

No admitido: filtro que contiene intervalos

En SAP, no se admite la función NOW().

Sintaxis
    SELECT * FROM table_name \
      WHERE datetime_column >= NOW() - INTERVAL X DAY;
    

No admitido: filtro que extrae el componente de fecha

En SAP, no se admite el filtrado por desplazamiento.

Ejemplo
    WHERE YEAR+0(4) = 2023
    

Asignaciones de tipos de datos

En la siguiente tabla se muestra una lista de tipos de datos de SAP con los tipos de Cloud Data Fusion correspondientes.

Tipo de datos de SAP Tipo ABAP SAP description Tipo de datos de Cloud Data Fusion
INT1 (numérico) b Entero de 1 byte int
INT2 (numérico) s Entero de 2 bytes int
INT4 (numérico) i Entero de 4 bytes int
INT8 (numérico) 8 Entero de 8 bytes long
DEC (numérico) p Número empaquetado en formato BCD (DEC) decimal
DF16_DEC, DF16_RAW (numérico) a Punto flotante decimal de 8 bytes IEEE 754r doble
DF34_DEC, DF34_RAW (numérico) e Punto flotante decimal de 16 bytes IEEE 754r doble
FLTP (numérico) f Número de punto flotante binario. doble
CHAR, LCHR (carácter) c Cadena de caracteres cadena
SSTRING, GEOM_EWKB (carácter) cadena Cadena de caracteres cadena
STRING (Carácter) cadena CLOB de cadena de caracteres bytes
NUMC, ACCP (carácter) n Texto numérico cadena
RAW, LRAW (byte) x Datos binarios bytes
RAWSTRING (byte) xstring BLOB de cadena de bytes bytes
DATS (fecha y hora) d Fecha fecha
TIMS (fecha y hora) t Hora Tiempo
TIMS (fecha y hora) utcl (Utclong), TimeStamp timestamp

Casos prácticos

Se admiten dos contextos de extracción:

  • Tablas y vistas de bases de datos de SAP
  • SAP ABAP CDS

En cada uno de los contextos, el complemento de tabla de SAP admite tablas y vistas de bases de datos estándar y personalizadas.

Limitaciones

El complemento de tabla de SAP tiene las siguientes limitaciones:

  • No admite la combinación de tablas.
  • No admite vistas CDS con parámetros.
  • No admite campos sin clave.
  • Si la función de instantáneas está habilitada, usar un tamaño de paquete superior a 30.000 puede provocar errores en la canalización. El tamaño de este paquete puede variar en función del número de columnas de la tabla de SAP. Puedes calcular el tamaño óptimo de un paquete para una tabla con esta fórmula: tamaño de la fila (en número de caracteres) * 5.
  • El Gestor de conexiones te permite consultar un máximo de 1000 nombres de tablas de SAP.
  • Cuando se produce un error en una canalización, como un error en el receptor, el complemento SAP Table intenta limpiar los procesos activos del lado de SAP relacionados con la extracción llamando al RFM personalizado destinado a la limpieza: /GOOG/RFC_READ_TABLE_CLEANUP.

Siguientes pasos