El complemento de fuente por lotes de tablas de SAP (complemento de tablas de SAP) te permite leer datos de vistas o tablas estándar y personalizadas de SAP. Permite la transferencia masiva de datos desde las aplicaciones de SAP a BigQuery o a cualquier otro sistema de destino compatible mediante Cloud Data Fusion. El complemento tiene las siguientes funciones clave:
- Usa SAP ECC, SAP S4/HANA o SAP BW como sistema de origen
- No usa SAP CDC (captura de datos de cambio) para hacer un seguimiento y extraer datos nuevos y delta en las fuentes de datos
- Usa el modo de extracción por lotes
- Admite tablas de SAP y vistas de 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 las siguientes fuentes:
- Tablas transparentes
- Tablas de clústeres
- Mesas de billar
- Vistas de CDS de ABAP
- Objetos SAP BW ADSO
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 posterior |
SAP JCo | SAP JCo versión 3.0.20 y posteriores |
Cloud Data Fusion | 6.3 y posteriores |
Para obtener más información sobre SAP en Google Cloud, consulta la Descripción general de SAP en Google Cloud.
Antes de comenzar
Configura los siguientes sistemas y servicios que usa el complemento de tabla de SAP:
- Configura el sistema SAP ERP.
En este proceso, se incluyen los siguientes pasos:
- Instala los archivos de transporte de SAP.
- Configura las autorizaciones y los roles de SAP necesarios.
- Configura el conector de Java de SAP.
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 alcance funcional y el rendimiento de la canalización.
Establece 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 de SAP.
- Para las instancias privadas, configura el intercambio de tráfico entre redes de VPC.
- El sistema SAP y la instancia de Cloud Data Fusion deben estar en el mismo proyecto.
Cómo configurar el complemento
- Ve a la interfaz web de Cloud Data Fusion y haz clic en Studio.
- Comprueba que la opción Data Pipeline - Batch esté seleccionada (no Realtime).
- En el menú Fuente, haz clic en Tabla de SAP. El nodo de la tabla de SAP aparecerá en tu canalización.
- Para configurar la fuente, ve al nodo de la tabla de SAP y haz clic en Propiedades.
Ingresa las siguientes propiedades. Para obtener una lista completa, consulta Propiedades.
- Ingresa una Label para el nodo de la tabla de SAP, por ejemplo,
SAP tables
. Ingresa los detalles de la conexión. Puedes configurar una conexión nueva de un solo uso, o una existente y reutilizable.
Nueva conexión
Para agregar una conexión de un solo uso a SAP, sigue estos pasos:
- Mantén desactivada la opción Usar conexión.
En la sección Conexión, ingresa la siguiente información de la cuenta de SAP en estos campos:
- En el campo Nombre de referencia, ingresa un nombre para la conexión que identifica esta fuente para el linaje.
- En el campo Cliente de SAP, ingresa el nombre de cliente de una instancia o entorno específico dentro de SAP. Un administrador de SAP puede proporcionar el nombre del cliente.
- En el campo Idioma de SAP, ingresa un idioma de inicio de sesión de SAP. El valor predeterminado es EN (inglés).
Selecciona uno de los siguientes Tipos de conexión.
- Directo (a través de SAP Application Server). Si eliges este tipo predeterminado, ingresa la información en los siguientes campos: SAP application server host, SAP system number, y SAP router.
- Carga balanceada (a través de SAP Message Server). Si eliges este tipo, ingresa la información en los siguientes campos: SAP Message Server host, SAP Message Server service or port number, SAP System ID (SID) (ID del sistema de SAP (SID)) y SAP signn group name (Nombre del grupo de inicio de sesión de SAP).
En el campo Nombre de la tabla/vista de SAP, ingresa el nombre de la tabla o vista de tu sistema SAP.
Proporciona las credenciales de SAP: solicita a tu administrador de SAP el nombre de usuario de inicio de sesión de SAP y la contraseña.
En el campo Ruta de acceso de la biblioteca de JCo de Cloud Storage, ingresa la ruta de acceso del conector de SAP Java (SAP JCo) en Cloud Storage que contiene los archivos de la biblioteca de SAP JCo que subiste.
Para generar un esquema basado en los metadatos de SAP que asigne los tipos de datos de SAP a los tipos de datos de Cloud Data Fusion correspondientes, haz clic en Obtener esquema. Para obtener más información, consulta Asignaciones de tipos de datos.
Para optimizar la carga de transferencia desde SAP, ingresa la información en los siguientes campos (opcional):
El uso de las Opciones de filtro te permite extraer registros según las condiciones de selección, como las columnas que tienen un conjunto definido de valores. Define las condiciones en la sintaxis de OpenSQL en una cláusula
WHERE
. Por ejemplo, esta consulta muestra todas las filas de la tablaRoster
en las que la columnaSchoolID
tiene el valorSchoolID > 52
:SELECT * FROM Roster WHERE SchoolID > 52;
Para obtener más información, consulta Filtros compatibles.
En el campo Cantidad de filas que se recuperarán, puedes limitar los datos extraídos si proporcionas un número entero y positivo de filas.
En el campo Cantidad de divisiones, puedes crear particiones para extraer registros de datos en paralelo, lo que mejora el rendimiento. La cantidad de divisiones puede afectar los procesos de trabajo de SAP y debe seleccionarse con cuidado.
En el campo Tamaño del paquete, especifica la cantidad de registros que se extraerán en una llamada de red única de SAP. El tamaño del paquete afecta el rendimiento y los recursos disponibles y debe seleccionarse con cuidado.
Conexión reutilizable
Para volver a usar una conexión existente, sigue estos pasos:
- Activa Usar conexión.
- Haz clic en Browse connections.
Haz clic en el nombre de la conexión.
Si no existe una conexión, sigue estos pasos para crear una reutilizable:
- Haz clic en Agregar conexión > SapTable.
- En la página Crear una conexión de SapTable que se abre, ingresa el nombre y la descripción de la conexión.
- En el campo Cliente de SAP, ingresa el nombre de cliente de una instancia o entorno específico en SAP. Un administrador de SAP puede proporcionar el nombre del cliente.
- En el campo Idioma de SAP, ingresa un idioma de inicio de sesión de SAP. El valor predeterminado es EN (inglés).
Selecciona uno de los siguientes Tipos de conexión.
- Directo (a través de SAP Application Server). Si eliges este tipo predeterminado, ingresa la información en los siguientes campos: Host del servidor de aplicaciones de SAP, Número de sistema de SAP y Router de SAP.
- Carga balanceada (a través de SAP Message Server). Si eliges este tipo, ingresa información en los siguientes campos: SAP Message Server host, SAP Message Server service or port, SAP System ID (SID) (ID del sistema de SAP (SID)) y Nombre del grupo de inicio de sesión de SAP (SAP).
Proporciona las credenciales de SAP: solicita a tu administrador de SAP los valores de nombre de usuario de inicio de sesión de SAP y contraseña.
En el campo Ruta de acceso de la biblioteca de JCo de Cloud Storage, ingresa la ruta de acceso del conector de Java de SAP (SAP JCo) en Cloud Storage que contiene los archivos de la biblioteca de SAP JCo que subiste.
Opcional: En el campo Propiedades adicionales de conexión de SAP, ingresa los pares clave-valor que deben anular los valores predeterminados de SAP JCo.
Haz clic en Crear.
- Ingresa una Label para el nodo de la tabla de SAP, por ejemplo,
Propiedades
Propiedad | Macro habilitado | Propiedad obligatoria | Descripción |
---|---|---|---|
Etiqueta | No | Sí | El nombre del nodo en tu canalización de datos. |
Usar conexión | No | No | Usa una conexión reutilizable. Si se usa una conexión, no necesitas proporcionar las credenciales. Para obtener más información, consulta Administra conexiones. |
Nombre de referencia | No | Sí | Si la opción Usar conexión no está activada, aparecerá este campo. El nombre de la conexión que se usará para el linaje. |
Nombre | No | Sí | Si la opción Usar conexión está activada, aparecerá este campo. El nombre de la conexión reutilizable. |
Cliente SAP | Sí | Sí | La instancia o el entorno en un sistema SAP. |
Tomar una instantánea | Sí | Sí | Habilitar instantáneas de datos en SAP Cuándo activar las instantáneas:
Cuándo desactivar las instantáneas: Debes ejecutar varias extracciones de datos de gran volumen en paralelo. Las instantáneas usan tablas de búfer en SAP, lo que puede generar problemas de out of memory en SAP. Sin embargo, cuando se completa la extracción de datos, se borra la tabla de búferes. |
Lenguaje de SAP | Sí | Sí | El idioma en el que se muestran y procesan la interfaz de usuario y los datos de SAP. |
Tipo de conexión | No | Sí | El tipo de conexión de SAP: directa o balanceo de cargas. |
Host del servidor de aplicaciones de SAP | Sí | No | Solo para el tipo de conexión directa, este nombre de host proviene de SAP Application Server, que funciona como una capa de middleware entre clientes SAP (como la interfaz web de SAP, navegadores web o apps para dispositivos móviles) y la base de datos subyacente. |
Número del sistema SAP | Sí | No | Solo para el tipo de conexión directa, este número es el identificador único asignado a cada sistema SAP. Por ejemplo, 00 . |
Router SAP | Sí | No | Solo para el tipo de conexión directa, esta es la string del router del servidor proxy, que proporciona un canal seguro para la comunicación entre los sistemas SAP y los clientes o socios externos. |
Host del servidor de mensajes de SAP | Sí | No | Solo para el tipo de conexión de balanceo de cargas, este es el nombre del host, lo que facilita el balanceo de cargas entre varios servidores de aplicaciones en SAP. |
Número de puerto o servicio del servidor de mensajes de SAP | Sí | No | Solo para el tipo de conexión Balanceo de cargas, este es el puerto de red en el que el servidor de mensajes de SAP escucha las conexiones entrantes de los clientes de SAP y los servidores de aplicaciones dentro de SAP. |
ID del sistema SAP (SID) | Sí | No | Solo para el tipo de conexión de balanceo de cargas, este ID se asigna a cada sistema SAP. |
Nombre del grupo de inicio de sesión de SAP | Sí | No | El nombre de la agrupación lógica o la configuración de varios servidores de aplicaciones de SAP. El valor predeterminado es PUBLIC . |
Nombre de la vista o tabla de SAP | Sí | Sí | Nombre de vista o tabla válido que no distingue mayúsculas de minúsculas, en el que se pueden extraer todas las columnas. |
Nombre de usuario de inicio de sesión de SAP | Sí | Sí | Nombre de usuario para SAP Recomendado: Si el nombre de usuario cambia de forma periódica, usa una macro. |
Contraseña de inicio de sesión de SAP | Sí | Sí | Contraseña de SAP. Recomendación: Utilice macros seguras. |
ID del proyecto de GCP | Sí | Sí | ID del proyecto de Google Cloud. |
Ruta de acceso de GCS de la biblioteca de SAP JCo | Sí | Sí | Es la ruta de acceso a Cloud Storage en la que subiste 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 de Cloud Data Fusion correspondientes. Consulta Asignación de tipos de datos. |
Propiedades adicionales de conexión de SAP | Sí | No | Establecer propiedades adicionales de SAP JCo para anular los valores predeterminados de SAP JCo.
Por ejemplo, si se configura jco.destination.pool_capacity = 10 , se anula la capacidad predeterminada del grupo de conexiones. |
Filtros | Sí | No | Condiciones especificadas en la sintaxis de Open SQL que filtran con una cláusula WHERE de SQL. Extrae registros según condiciones, como las que se encuentran en columnas con un conjunto definido de valores o un rango de valores.
Para obtener más información, consulta Filtros compatibles. |
Cantidad de filas que se recuperarán | Sí | No | Limita la cantidad de registros extraídos.
|
Cantidad de divisiones que se generarán | Sí | No | Crea particiones para extraer registros en paralelo. El motor del entorno de ejecución crea la cantidad especificada de particiones (y conexiones de SAP) mientras extrae los registros. Ten cuidado cuando aumentes este valor, ya que aumenta las conexiones simultáneas con SAP. Recomendado: Planifica tener conexiones SAP para cada canalización y la cantidad total de canalizaciones que se ejecutan de forma simultánea. Si el valor es 0 o se deja en blanco, Cloud Data Fusion elige un valor apropiado según la cantidad de ejecutores disponibles, los registros que se extraerán y el tamaño del paquete. |
Tamaño del paquete | Sí | No | La cantidad de registros que se extraerán en una sola llamada de red de SAP. Es la cantidad de registros que SAP almacena en búfer en la memoria durante cada llamada de extracción de red. Ten cuidado cuando configures esta propiedad. Varias canalizaciones de datos que extraen datos pueden aumentar el uso de memoria, lo que causa fallas debido a errores Out of memory .
|
Filtros compatibles
Se admiten las siguientes condiciones de filtro.
Filtro que contiene un operador de comparación
Usa operadores de comparación para realizar filtros 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 la coincidencia de 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 los operadores IN
para especificar una lista de valores con los que deben coincidir.
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 debe coincidir.
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 período
Usa períodos para recuperar las filas en las que una columna de fecha y hora se encuentra dentro de un período 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 recuperar filas en las que se usa datetime.
Sintaxis
SELECT * FROM table_name WHERE datetime_column > 'target_date';
Ejemplo
AUDAT GE '20230910' AND AUDAT LE '20230914'
Combinar fecha y hora de la combinación de filtros
Si tu columna de fecha y hora incluye la fecha y la hora, puedes filtrar según corresponda.
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)
Filtro que combina varias condiciones con operadores lógicos
Puedes recuperar filas que cumplan con 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 mediante la combinación de 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 en función de 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' )
Filtrar combinación de condiciones de fecha y valor
Puedes combinar condiciones basadas en la fecha y en el valor 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 la base de datos.
Sintaxis
SELECT * FROM table_name \ WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \ AND datetime_column <= 'YYYY-M
No compatible: Filtro que contiene funciones y operadores de comparación
En SAP, las funciones de la cláusula WHERE de QUERY no son compatibles.
No compatible: 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 compatible: Filtro que extrae el componente de fecha
En SAP, no se admite el filtrado de desplazamiento.
Ejemplo
WHERE YEAR+0(4) = 2023
Asignaciones de tipos de datos
En la siguiente tabla, se muestra una lista de los tipos de datos de SAP con los tipos correspondientes de Cloud Data Fusion.
Tipo de datos SAP | Tipo de ABAP | SAP description | Tipo de datos de Cloud Data Fusion |
---|---|---|---|
INT1 (numérico) |
b | Número entero de 1 byte | int |
INT2 (numérico) |
s | Número entero de 2 bytes | int |
INT4 (numérico) |
i | Número entero de 4 bytes | int |
INT8 (numérico) |
8 | Número entero de 8 bytes | long |
DEC (numérico) |
p | Número empaquetado en formato BCD (DEC) | decimal |
DF16_DEC , DF16_RAW (números numéricos) |
a | Número de punto flotante decimal 8 bytes IEEE 754r | double |
DF34_DEC , DF34_RAW (números numéricos) |
e | Número de punto flotante decimal, 16 bytes, IEEE 754r | double |
FLTP (numérico) |
f | Número de punto flotante binario | double |
CHAR , LCHR (Personaje) |
c | Cadena de caracteres | string |
SSTRING , GEOM_EWKB (Personaje) |
string | Cadena de caracteres | string |
STRING (Personaje) |
string | CLOB de string de caracteres | bytes |
NUMC , ACCP (Personaje) |
n | Texto numérico | string |
RAW , LRAW (Byte) |
x | Datos binarios | bytes |
RAWSTRING (Byte) |
xstring | BLOB de cadenas de bytes | bytes |
DATS (fecha/hora) |
d | Fecha | date |
TIMS (fecha/hora) |
t | Tiempo | hora |
TIMS (fecha/hora) |
CLCL | (Utclong), TimeStamp | timestamp |
Casos de uso
Se admiten dos contextos de extracción:
- Tablas y vistas de bases de datos de SAP
- CDS de SAP ABAP
En cada uno de los contextos, el complemento de tablas 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 unión de tablas.
- No admite vistas de CDS con parámetros.
- No se admite sin campos de clave.
- Si la función de instantáneas está habilitada, el uso de un tamaño de paquete superior a 30,000 puede causar fallas en la canalización. Este tamaño del paquete puede variar según la cantidad de columnas en la tabla de SAP. Puedes calcular un tamaño de paquete óptimo para una tabla mediante esta fórmula: tamaño de fila (en cantidad de caracteres) × 5.
- Connection Manager te permite navegar por un máximo de 1,000 nombres de tablas de SAP.
- Cuando se produce un error de canalización, como un error en el receptor, el complemento de tabla de SAP intenta limpiar cualquier proceso secundario activo de SAP relacionado con la extracción mediante una llamada al RFM personalizado destinado a la limpieza:
/GOOG/RFC_READ_TABLE_CLEANUP
.
Notas de la versión
¿Qué sigue?
- Obtén más información sobre SAP en Google Cloud.