Source de table SAP par lot

Cette page explique comment configurer les extractions groupées de données d'application SAP.

Le plug-in source de la table SAP par lot (plug-in Table SAP) vous permet de lire les données des tables ou vues SAP standards et personnalisées. Il permet l'ingestion groupée de données provenant d'applications SAP dans BigQuery ou tout autre système cible compatible, à l'aide de Cloud Data Fusion. Voici les principales fonctionnalités du plug-in :

  • Utilise SAP ECC, SAP S4/HANA ou SAP BW comme système source
  • N'utilise pas la capture des données modifiées (Change Data Capture) SAP pour suivre et extraire les données nouvelles et delta dans les sources de données
  • Utilise le mode d'extraction par lot
  • Compatible avec les tables SAP et les vues CDS ABAP en tant que sources de données
  • Accède aux données SAP via la couche d'application

Vous pouvez lire les données à partir des sources suivantes :

  • Tables transparentes
  • Tables de cluster
  • Tables de billard
  • Vues ABAP CDS
  • Objets ADSO SAP BW

Versions logicielles compatibles

Logiciel Versions
SAP S4/HANA SAP S4/HANA 1909 et versions ultérieures
SAP ECC SAP ERP6 NW 7.31 SP16 et versions ultérieures
SAP JCo SAP JCo version 3.0.20 et versions ultérieures
Cloud Data Fusion 6.3 et versions ultérieures

Pour en savoir plus sur SAP sur Google Cloud, consultez la présentation de SAP sur Google Cloud.

Avant de commencer

Configurez les systèmes et services suivants utilisés par le plug-in SAP Table :

  1. Configurez le système SAP ERP. Ce processus comprend les étapes suivantes :
    • Installez les fichiers de transport SAP.
    • Configurez les autorisations et les rôles SAP requis.
    • Configurez le connecteur Java SAP.
  2. Déployez le plug-in dans Cloud Data Fusion.

    • Important : Choisissez une version de plug-in compatible avec la version de Cloud Data Fusion.
    • Si vous mettez à niveau la version de votre instance ou de votre plug-in Cloud Data Fusion, évaluez l'impact des modifications sur le champ d'application fonctionnel et les performances du pipeline.
  3. Établissez une connectivité RFC entre Cloud Data Fusion et SAP.

    • Assurez-vous que la communication est activée entre l'instance Cloud Data Fusion et le serveur SAP.
    • Pour les instances privées, configurez l'appairage de réseaux VPC.
    • Le système SAP et l'instance Cloud Data Fusion doivent se trouver dans le même projet.

Configurer le plug-in

  1. Accédez à l'interface Web de Cloud Data Fusion, puis cliquez sur Studio.
  2. Vérifiez que Pipeline de données – Lot est sélectionné (et non Temps réel).
  3. Dans le menu Source, cliquez sur Table SAP. Le nœud "Table SAP" s'affiche dans votre pipeline.
  4. Pour configurer la source, accédez au nœud "SAP Table" (Table SAP), puis cliquez sur Properties (Propriétés).
  5. Saisissez les propriétés suivantes. Pour obtenir la liste complète, consultez Propriétés.

    1. Saisissez un libellé pour le nœud de table SAP (par exemple, SAP tables).
    2. Saisissez les informations de connexion. Vous pouvez configurer une nouvelle connexion ponctuelle ou une connexion existante réutilisable.

      Nouvelle connexion

      Pour ajouter une connexion ponctuelle à SAP, procédez comme suit :

      1. Laissez l'option Utiliser la connexion désactivée.
      2. Dans la section Connexion, saisissez les informations suivantes du compte SAP dans les champs correspondants :

        1. Dans le champ Nom de la référence, saisissez un nom pour la connexion qui identifie cette source pour l'établissement de la lignée.
        2. Dans le champ Client SAP, saisissez le nom du client d'une instance ou d'un environnement spécifique dans SAP. Un administrateur SAP peut fournir le nom du client.
        3. Dans le champ Langage SAP, saisissez un langage de connexion SAP. La valeur par défaut est EN (anglais).
        4. Sélectionnez l'un des types de connexion suivants.

          • Directement (via le serveur d'application SAP) Si vous choisissez ce type par défaut, saisissez des informations dans les champs suivants : Hôte de serveur d'application SAP, Numéro du système SAP et Routeur SAP.
          • Équilibré (via le serveur de messages SAP) Si vous choisissez ce type, saisissez des informations dans les champs suivants : Hôte de serveur de messages SAP, Service de serveur de messages ou numéro de port SAP, ID système SAP (SID) et Nom du groupe de connexion SAP.
        5. Dans le champ Nom de la table/vue SAP, saisissez le nom de la table ou de la vue de votre système SAP.

        6. Fournissez les identifiants SAP : demandez à votre administrateur SAP le nom d'utilisateur de connexion SAP et le mot de passe.

        7. Dans le champ Chemin d'accès Cloud Storage de la bibliothèque JCo, saisissez le chemin d'accès SAP Java Connector (SAP JCo) dans Cloud Storage qui contient les fichiers de bibliothèque SAP JCo que vous avez importés.

        8. Pour générer un schéma basé sur les métadonnées de SAP qui mappe les types de données SAP sur les types de données Cloud Data Fusion correspondants, cliquez sur Obtenir le schéma. Pour en savoir plus, consultez Mappages des types de données.

        9. Facultatif : pour optimiser la charge d'ingestion depuis SAP, saisissez des informations dans les champs suivants :

          1. Les options de filtrage vous permettent d'extraire des enregistrements en fonction de conditions de sélection, par exemple des colonnes ayant un ensemble de valeurs défini. Définissez les conditions dans la syntaxe OpenSQL dans une clause WHERE. Par exemple, cette requête renvoie toutes les lignes de la table Roster dont la colonne SchoolID a la valeur SchoolID > 52 :

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            Pour en savoir plus, consultez la section Filtres compatibles.

          2. Dans le champ Nombre de lignes à extraire, vous pouvez limiter les données extraites en indiquant un nombre entier positif de lignes.

          3. Dans le champ Nombre de divisions, vous pouvez créer des partitions pour extraire les enregistrements de données en parallèle, ce qui améliore les performances. Le nombre de fractionnements peut avoir une incidence sur les processus de travail SAP et doit être sélectionné avec soin.

          4. Dans le champ Taille du package, spécifiez le nombre d'enregistrements à extraire dans un seul appel réseau SAP. La taille du package a un impact sur les performances et les ressources disponibles. Vous devez donc la sélectionner avec soin.

      Connexion réutilisable

      Pour réutiliser une connexion existante, procédez comme suit :

      1. Activez l'option Utiliser la connexion.
      2. Cliquez sur Parcourir les connexions.
      3. Cliquez sur le nom de la connexion.

      Si aucune connexion n'existe, procédez comme suit pour en créer une réutilisable :

      1. Cliquez sur Ajouter une connexion > SapTable.
      2. Sur la page Créer une connexion SapTable qui s'ouvre, saisissez un nom et une description pour la connexion.
      3. Dans le champ Client SAP, saisissez le nom du client d'une instance ou d'un environnement spécifique dans SAP. Un administrateur SAP peut fournir le nom du client.
      4. Dans le champ Langage SAP, saisissez un langage de connexion SAP. La valeur par défaut est EN (anglais).
      5. Sélectionnez l'un des types de connexion suivants.

        • Directement (via le serveur d'application SAP) Si vous choisissez ce type par défaut, saisissez des informations dans les champs suivants : Hôte de serveur d'application SAP, Numéro de système SAP et Routeur SAP.
        • Équilibré (via le serveur de messages SAP) Si vous choisissez ce type, saisissez des informations dans les champs suivants : Hôte de serveur de messages SAP, Service de serveur de messages ou numéro de port SAP, ID système SAP (SID) et Nom du groupe d'ouvertures de session SAP.
      6. Fournissez les identifiants SAP : demandez à votre administrateur SAP les valeurs Nom d'utilisateur de connexion SAP et Mot de passe.

      7. Dans le champ Chemin d'accès Cloud Storage de la bibliothèque JCo, saisissez le chemin d'accès SAP Java Connector (SAP JCo) dans Cloud Storage contenant les fichiers de bibliothèque SAP JCo que vous avez importés.

      8. Facultatif : Dans le champ Propriétés de connexion SAP supplémentaires, saisissez les paires clé/valeur qui doivent remplacer les valeurs par défaut de SAP JCo.

      9. Cliquez sur Créer.

Propriétés

Propriété Macro activée Propriété requise Description
Label Non Oui Nom du nœud dans votre pipeline de données.
Utiliser la connexion Non Non Utilisez une connexion réutilisable. Si une connexion est utilisée, vous n'avez pas besoin de fournir les identifiants. Pour en savoir plus, consultez Gérer les connexions.
Nom de référence Non Oui Ce champ s'affiche si l'option Utiliser la connexion n'est pas activée. Nom de la connexion à utiliser pour l'analyse de l'arborescence.
Nom Non Oui Ce champ s'affiche si l'option Utiliser la connexion est activée. Nom de la connexion réutilisable.
Client SAP Oui Oui Instance ou environnement dans un système SAP.
Prendre un instantané Oui Oui Activez les instantanés de données dans SAP.
Quand activer les instantanés ?
  • Extraire des données de n'importe quelle table transactionnelle active
  • L'extraction sur les tables où les requêtes de données sont plus lentes et consomment plus de mémoire pour chaque appel d'extraction.

Quand désactiver les instantanés : vous exécutez plusieurs extractions de données à grand volume en parallèle. Les instantanés utilisent des tables de mémoire tampon dans SAP, ce qui peut entraîner des problèmes out of memory dans SAP. Toutefois, une fois l'extraction des données terminée, la table tampon est effacée.
Langue SAP Oui Oui Langue dans laquelle l'interface utilisateur et les données SAP sont affichées et traitées.
Type de connexion Non Oui Type de connexion SAP : Direct ou Équilibrage de charge.
Hôte du serveur d'applications SAP Oui Non Pour le type de connexion Direct uniquement, ce nom d'hôte provient du serveur d'application SAP, qui sert de couche intermédiaire entre les clients SAP (tels que l'interface Web SAP, les navigateurs Web ou les applications mobiles) et la base de données sous-jacente.
Numéro de système SAP Oui Non Pour le type de connexion Direct uniquement, ce nombre correspond à l'identifiant unique attribué à chaque système SAP. Par exemple, 00.
Routeur SAP Oui Non Pour le type de connexion Direct uniquement, il s'agit de la chaîne de routeur pour le serveur proxy, qui fournit un canal sécurisé pour la communication entre les systèmes SAP et les clients ou partenaires externes.
Hôte du serveur de messages SAP Oui Non Pour le type de connexion Équilibrage de charge uniquement, il s'agit du nom de l'hôte, qui facilite l'équilibrage de charge sur plusieurs serveurs d'application dans SAP.
Service de serveur de messages ou numéro de port SAP Oui Non Pour le type de connexion Équilibrage de charge uniquement, il s'agit du port réseau sur lequel le serveur de messagerie SAP écoute les connexions entrantes des clients SAP et des serveurs d'applications dans SAP.
ID système SAP (SID) Oui Non Pour le type de connexion Équilibrage de charge uniquement, cet ID est attribué à chaque système SAP.
Nom du groupe d'ouverture de session SAP Oui Non Nom du regroupement logique ou de la configuration de plusieurs serveurs d'application SAP. La valeur par défaut est PUBLIC.
Nom de la table/vue SAP Oui Oui Nom de table ou de vue valide (non sensible à la casse) à partir duquel toutes les colonnes peuvent être extraites.
Nom d'utilisateur de connexion SAP Oui Oui Nom d'utilisateur pour SAP
Recommandation : si le nom d'utilisateur change régulièrement, utilisez une macro.
Mot de passe de connexion SAP Oui Oui Mot de passe SAP.
Recommandation : utilisez des macros sécurisées.
ID du projet GCP Oui Oui ID de projetGoogle Cloud .
Chemin d'accès GCS de la bibliothèque SAP JCo Oui Oui Chemin d'accès à Cloud Storage où vous avez importé les fichiers de bibliothèque SAP JCo.
Obtenir le schéma N/A N/A Le plug-in génère un schéma basé sur les métadonnées de SAP, qui mappe les types de données SAP sur les types de données Cloud Data Fusion correspondants. Consultez Mappage des types de données.
Propriétés de connexion SAP supplémentaires Oui Non Définissez des propriétés SAP JCo supplémentaires pour remplacer les valeurs par défaut de SAP JCo. Par exemple, la définition de jco.destination.pool_capacity = 10 remplace la capacité du pool de connexions par défaut.
Filtres Oui Non Conditions spécifiées dans la syntaxe Open SQL qui filtrent à l'aide d'une clause SQL WHERE. Extrayez des enregistrements en fonction de conditions, par exemple ceux des colonnes avec un ensemble de valeurs défini ou une plage de valeurs.
 Pour en savoir plus, consultez Filtres compatibles.
Nombre de lignes à récupérer Oui Non Limite le nombre d'enregistrements extraits.
  • Saisissez un nombre entier positif.
  • Si la valeur est 0 ou est vide, Cloud Data Fusion extrait tous les enregistrements de la table.
  • Si vous saisissez une valeur positive supérieure au nombre d'enregistrements sélectionnés (en fonction de vos autres valeurs de filtre), Cloud Data Fusion n'extrait que les enregistrements sélectionnés.
Nombre de divisions à générer Oui Non Crée des partitions permettant d'extraire les enregistrements en parallèle.
Le moteur d'exécution crée le nombre de partitions spécifié (et les connexions SAP) lors de l'extraction des enregistrements.
Soyez prudent lorsque vous augmentez cette valeur, car elle augmente le nombre de connexions simultanées avec SAP.
Recommandation : planifiez les connexions SAP pour chaque pipeline et le nombre total de pipelines exécutés simultanément.
Si la valeur est définie sur 0 ou n'est pas renseignée, Cloud Data Fusion choisit une valeur appropriée en fonction du nombre d'exécuteurs disponibles, du nombre d'enregistrements à extraire et de la taille du package.
Taille du package Oui Non Nombre d'enregistrements à extraire dans un seul appel réseau SAP. Il s'agit du nombre d'enregistrements que SAP met en mémoire tampon lors de chaque appel d'extraction de réseau.
Soyez prudent lorsque vous définissez cette propriété. Si plusieurs pipelines de données extraient des données, cela peut augmenter l'utilisation de la mémoire et entraîner des échecs imputables à des erreurs Out of memory.
  • Saisissez un nombre entier positif.
  • Si le champ est défini sur 0 ou n'est pas renseigné, le plug-in utilise une valeur standard de 70 000 ou une valeur calculée de manière appropriée.
  • Si le pipeline de données échoue en raison d'erreurs Out of memory, réduisez la taille du package ou augmentez la mémoire disponible pour vos processus de travail SAP.

Filtres acceptés

Les conditions de filtre suivantes sont acceptées.

Filtre contenant un opérateur de comparaison

Utilisez des opérateurs de comparaison pour effectuer un filtrage plus complexe basé sur des comparaisons entre des valeurs.

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

Filtre contenant un opérateur LIKE

Utilisez les opérateurs LIKE pour la mise en correspondance de modèles. Pour remplacer n'importe quel caractère, utilisez le symbole % comme caractère générique.

Syntaxe
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
Exemple
ERNAM LIKE 'KIRAN%'

Filtre contenant un opérateur IN

Utilisez les opérateurs IN pour spécifier une liste de valeurs à comparer.

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

Filtre contenant un opérateur logique

Utilisez des opérateurs logiques pour spécifier une liste de valeurs à comparer.

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

Filtre contenant une plage de dates

Utilisez des plages de dates pour récupérer les lignes dans lesquelles une colonne datetime se trouve dans une plage de dates spécifique.

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

Filtre contenant une comparaison de dates

Utilisez des comparaisons de dates pour récupérer les lignes où la date et l'heure sont utilisées.

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

Filtre combinant la date et l'heure

Si votre colonne datetime inclut à la fois la date et l'heure, vous pouvez filtrer les données en conséquence.

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

(Format de code temporel : AAAAMMJJHHMMSS)

Filtre combinant plusieurs conditions avec des opérateurs logiques

Vous pouvez récupérer les lignes qui répondent à plusieurs conditions à l'aide d'opérateurs logiques, tels que AND et OR.

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

Filtrer en combinant des conditions imbriquées

Vous pouvez combiner des conditions de manière imbriquée pour créer des filtres complexes.

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

Filtre utilisant des sous-requêtes

Vous pouvez utiliser des sous-requêtes pour filtrer les résultats d'une autre requête.

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

Filtrer en combinant des conditions de date et de valeur

Vous pouvez combiner des conditions basées sur des dates et des valeurs dans un filtre complexe.

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

Filtre contenant "Mise en forme des dates"

Dans SAP, les champs de date et d'heure sont toujours enregistrés sans - ni : au niveau de la base de données.

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

Non pris en charge : filtre contenant des fonctions et des opérateurs de comparaison

Dans SAP, les fonctions de la clause WHERE de la requête ne sont pas acceptées.

Non compatible : filtre contenant des intervalles

Dans SAP, la fonction NOW() n'est pas prise en charge.

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

Non compatible : filtre extrayant le composant de date

Dans SAP, le filtrage des décalages n'est pas pris en charge.

Exemple
    WHERE YEAR+0(4) = 2023
    

Mappages des types de données

Le tableau suivant répertorie les types de données SAP avec les types Cloud Data Fusion correspondants.

Type de données SAP Type ABAP SAP description Type de données Cloud Data Fusion
INT1 (numérique) b Entier à 1 octet int
INT2 (numérique) s Entier à 2 octets int
INT4 (numérique) i Entier à 4 octets int
INT8 (numérique) 8 Entier à 8 octets long
DEC (numérique) p Nombre compressé au format BCD (DEC) decimal
DF16_DEC, DF16_RAW (numérique) a Virgule flottante décimale 8 octets IEEE 754r double
DF34_DEC, DF34_RAW (numérique) e Virgule flottante décimale 16 octets IEEE 754r double
FLTP (numérique) f Nombre à virgule flottante binaire double
CHAR, LCHR (personnage) c Chaîne de caractères string
SSTRING, GEOM_EWKB (personnage) string Chaîne de caractères string
STRING (caractère) string Chaîne de caractères CLOB bytes
NUMC, ACCP (personnage) n Texte numérique string
RAW, LRAW (octet) x Données binaires bytes
RAWSTRING (octet) xstring BLOB de chaîne d'octets bytes
DATS (date/heure) d Date date
TIMS (date/heure) t Heure heure
TIMS (date/heure) utcl (Utclong), TimeStamp timestamp

Cas d'utilisation

Deux contextes d'extraction sont acceptés :

  • Tables et vues de la base de données SAP
  • SAP ABAP CDS

Dans chacun de ces contextes, le plug-in SAP Table est compatible avec les tables et vues de base de données standards et personnalisées.

Limites

Le plug-in SAP Table présente les limites suivantes :

  • Il n'est pas possible de joindre des tables.
  • Il n'est pas compatible avec les vues CDS avec paramètres.
  • Il n'est pas compatible sans champs clés.
  • Si la fonctionnalité "Instantanés" est activée, l'utilisation d'une taille de package supérieure à 30 000 peut entraîner des échecs de pipeline. La taille de ce package peut varier en fonction du nombre de colonnes dans le tableau SAP. Vous pouvez calculer la taille optimale d'un package pour une table à l'aide de la formule suivante : taille de la ligne (en nombre de caractères) * 5.
  • Le Gestionnaire de connexions vous permet de parcourir un maximum de 1 000 noms de tables SAP.
  • Lorsqu'une erreur de pipeline se produit, par exemple une erreur dans le récepteur, le plug-in SAP Table tente de nettoyer tous les processus SAP actifs liés à l'extraction en appelant le RFM personnalisé destiné au nettoyage : /GOOG/RFC_READ_TABLE_CLEANUP.

Étapes suivantes