Exemple talendo per connectar-nos a Sap

PDRTJS_settings_712365_post_594 = {
"Id": "712365",
"Unique_id": "wp-post-594",
"Title": "Exemple + talendo + per + connectar + a + Sap",
"Item_id": "_post_594",
"Permalink": "http% 3A% 2F% 2Fchurriwifi.wordpress.com% 2F2010% 2F01% 2F13% 2Fejemplo-talendo-sap% 2F"
}
(Read in English Language here )

Abans de continuar amb el procés ETL per a la càrrega de la taula de Fets de vendes, anem a fer una pausa per veure com utilitzar talendo per connectar-nos a Sap utilitzant els components tSapConnection, tSapInput i tSapOutput.En el nostre projecte, podríem haver utilitzat aquests components per fer la lectura de dades des de l'ERP (però hem utilitzat el component tOracleInput per llegir directament de la base de dades).

Encara que el component Sap de talendo és lliure, per poder utilitzar-lo cal una llibreria Java proporcionada per Sap (sapjco.jar), que haurem de tenir instal al nostre sistema. Aquesta llibreria només es pot descarregar de Sap si som usuaris registrats ( http://service.sap.com/connectors ). La versió del sapjco que hem instal lat és la 2.1.8 (hi ha una posterior, la 3.0.4, però amb aquesta no funciona talendo).

La forma d'instal lar la llibreria sapjco.jar és la següent:

  • Un cop descarregat el corresponent fitxer (segons la versió de sistema operatiu que estem utilitzant), el descomprimim en un directori de la nostra elecció.La prova, en el nostre cas, l'hem realitzat utilitzant Windows Vista.
  • Si tenim una versió més antiga de la dll librfc32.dll al directori de windows system32, la substituïm amb la que ve de Sap.
  • Incloem el directori d'instal lació en la variable d'entorn PATH (en el nostre cas c: \ sapjco).
  • Finalment, afegim a la variable d'entorn CLASSPATH el fitxer sapjco.jar amb el seu camí complet (per exemple, CLASSPATH = c: \ sapjco \ sapjco.jar).

A continuació, instal la llibreria al directori de classes de talendo i comprovem que aquest correctament instal.Per això, deixem caure el fitxer sapjco.jar al directori <directorio_instalacion_talend> \ lib \ Java. A continuació obrim talendo, i en la pestanya Modules, comprovem que aparegui el mòdul sapjco.jar correctament instal lat (tal com veiem en la imatge).

Finalment, anem a veure un exemples pràctic de connexió a Sap per recuperar informació, utilitzant mòduls de funció (RFC) implementats en Sap ia les que podrem accedir des talendo (això és realment el que ens permet fer el component, accedir a Sap a través dels seus RFC'sy BAPIS).

Les RFC's (Remote Function Call) són la base per a la comunicació entre Sap i qualsevol sistema extern.Són components de programació (un programa Abap, per exemple), encapsulat en una funció, amb el seu corresponent interfície d'entrada i sortida de dades, que a més pot ser cridat des de dins del propi Sap, o de manera remota si està habilitada l'opció " Mòdul Accés Remot "(tal com veiem en la imatge inferior). En aquest cas, és quan podrem anomenar-, per exemple, des talendo.


Definició de la RFC "RFC_READ_TABLE" a Sap

Sap té programades moltes RFC's de forma estàndard, ia més nosaltres podrem construir les nostres amb codi que realitzi les tasques que desitgem.A més, existeix un altre tipus de RFC's dins sap, les anomenades BAPIS, que inclouen regles addicionals integrades amb el funcionament de l'aplicació Sap (per exemple, la Bapi BAPI_SALESORDER_CREATEFROMDAT2 ens permet la creació d'una comanda de vendes a partir de les dades que passem a la funció en la interfície).

Exemple: Lectura del contingut d'una taula utilitzant la RFC "RFC_READ_TABLE".

Anem a fer un Job en talendo per llegir el contingut d'una taula de Sap, en concret, anem a recuperar tots els materials que són d'un determinat tipus.El Job complet tindrà la següent estructura:

En talendo utilitzarem el component tSapInput per fer la crida a la RFC d'Sap. Per poder fer això, haurem de conèixer quina és la interfície que té definida està en Sap per saber que paràmetres li podem passar i que resultats i en quins tipus d'estructures de dades podem rebre. En la transacció SE37 de Sap podem veure com estan definits els mòduls de funció, i veure com es realitzarà la comunicació amb aquest component.

Per exemple, en mòdul de funció RFC_READ_TABLE (com veiem en la imatge inferior), té 5 paràmetres d'entrada, definits en la pestanya IMPORT.Els que utilitzarem en el nostre exemple seran: QUERY_TABLE (la taula de la qual volem obtenir informació), delimitar (delimitador per les dades obtingudes).


Definició RFC en Sap - Import (paràmetres Entrada)

Existeix també la pestanya EXPORT, on podriem veure que paràmetres de sortida tenim (per al cas de variables o estructures simples).En el cas de treballar amb taules, aquestes apareixeran a la pestanya TAULES. Les taules són estructures complexes de Sap (com una matriu de dades). Les taules es poden utilitzar tant per rebre dades de la RFC com per passar-. En el nostre exemple, utilitzarem la taula DATA per rebre els registres recuperats de la base de dades.


Definició RFC en Sap - Tables (paràmetres Entrada / Sortida)

A continuació, tornarem a talendo i completarem els diferents camps del component:

  • Client: mandant de Sap del qual recuperarem les dades.
  • Userid: usuari per a la connexió.Haurà de tenir permisos per a executar la RFC i per accedir a les dades desitjats.
  • Password: contrasenya.
  • Language: llenguatge de connexió.
  • Host Name: Host on està ubicat el servidor Sap.
  • System Number: nombre d'instància Sap del servidor (normalment la 00 on només hi ha un servidor).
  • Function name: Nom de la RFC a la qual anem a invocar.

Exemple d'ús de component tSapInput

  • Initialize input: Inicialització dels paràmetres d'entrada.Són els valors que passarem al mòdul de funció. En el nostre cas, observar que hem passat valors simples (variables) i també hem passat valors a algunes de les taules.
    • Input single: els paràmetres "QUERY_TABLE" i "delimita" són del tipus input_single (entrada senzilla) i els inicialitzem passant-los un valor, en concret el nom de la taula que volem llegir i el delimitador a utilitzar.
    • Table input: introduïm valors en dues taules.A la taula OPTIONS, al camp TEXT, indiquem una condició per a restringir la lectura de dades (com si fos una condició del where). A la taula Fields, en el camp FIELDNAME, li indiquem a Sap quins camps de la taula són els que volem recuperar (en aquest cas el codi del material, el seu tipus i la seva línia de producte). D'aquesta manera, limitem tant el nombre de registres retornats, com els camps obtinguts (no volem veure els camps de cada registre d'aquesta taula). Observar com per indicar diversos valors per al camp FIELDNAME de la taula Fields, hem posat diverses entrades separades per coma.
  • Outputs: definició de les estructures on anem a gestionar les dades retornades per Sap.Aquí indicarem el tipus de valor recuperat (table_output per quan el resultat sigui una taula), el nom de la taula en Sap (en el camp TableName (Structure Name) i el nom del Schema (serà un nom per al flux de dades, podem posar-li qualsevol). En el nostre exemple, estem llegint de la taula de Sap DATA, que és una taula de registres, i cada registre té un únic camp que es diu WA. Els passos a seguir en aquesta secció per a una correcta definició d'intercanvi d' dades són les següents:
  • Creem en primer lloc el flux de sortida premut el botó del signe "+". Premut en Schema li donarem un nom a aquest flux (registros_devueltos en el nostre exemple) i indicarem els camps que componen l'estructura de sortida del component tSapInput.En aquest cas, només tindrem un camp, anomenat WA (tal com veiem en la imatge), que correspon amb el camp de la taula DATA de Sap.

Definició de l'estructura de sortida "registros_devueltos"

  • A continuació, caldrà associar aquesta columna a la component de Sap on es recuperen les dades. Per a això polsarem en el camp Mapping, i se'ns obrirà una nova finestra. Aquí ens apareixerà el fluxde dades definit en el pas anterior més el camp Schema XPatchQuerys, que és el que ens permet Mapejar el camp de talendo amb el camp del diccionari de dades de Sap, i així poder rebre les dades de Sap correctament (els valors introduïts en XPatchQuerys hauran anar entre cometes dobles, utilitzant el símbol ").
Mapatge entre l'estructura de sortida en talendo i la de Sap

Amb aquest exemple, hem pogut d'una forma relativament senzilla recuperar dades d'Sap en un únic control.Coneixent els diferents RFC's existents en Sap i les Bapis, segurament podrem realitzar tasques molt més complexes i aprofitar funcionalitats que ja estan definides en Sap. Fins i tot pot ser una forma de realitzar interfícies amb Sap utilitzant aquests components ja definits i paquetitzats.

Per veure en detall com hem definit cada component, podeu accedir a la documentació HTML completa generada per talendo aquí . Podeu descarregar-vos el fitxer zip que conté la documentació aquí .