Sap bapi conector, date-zilnic

În cele din urmă, a fost timpul să scriem despre o altă versiune a conectorului SAP, care este, de asemenea, utilizat în mod activ la locul de muncă!

Deci, ne întâlnim: SAP BAPI Connector!

Conectorul SAP BAPI funcționează cu module de funcții din SAP.

Modulul funcțional (FM, de asemenea FM) este codul ABAP, proiectat ca o funcție separată, care poate fi reutilizată în alte aplicații.

Are două tipuri de parametri:

  • Importate - datele transferate la "intrarea" FM din programul apelant;
  • Exportate - datele returnate din FM, rezultatul muncii;

Numai cu acești parametri conectorul funcționează, transmite anumite valori către intrare și primește rezultatul solicitat.

Parametrii importați pot fi fie valori specifice, fie variabile, fie tabele. Rezultatul este, de obicei, sub forma unui tabel.

Utilizarea conectorului SAP BAPI

Utilizăm conectorul SAP BAPI în două cazuri:

  1. Primirea de date (tabel) de la un FM existent în SAP. Tabelul rezultat din SAP este integrat în modelul asociativ al Clipului sau încărcat într-un fișier format din qvd.
  2. Transferul de date către SAP utilizând parametrul importat ca tabel. Astfel, transferăm datele către modul și deja aceste date sunt procesate pe partea SAP și scrise la masa finală din partea SAP, adică Transferăm direct datele în structura tabelului SAP. Ca date exportate, primim un tabel cu înregistrări procesate fără succes, precum și motivul pentru care înregistrarea a fost respinsă (această funcție este implementată de specialiștii SAP).

Deoarece pe tabelele SAP avem strict doar drepturile de citire, această funcționalitate sa dovedit a fi o oportunitate foarte convenabilă pentru interacțiunea cu QlikView și SAP.

Acum, pe trepte, vă voi spune despre fiecare din cele două cazuri.

Crearea unei conexiuni și primirea datelor din SAP FM

Mai întâi trebuie să creați un șir de conexiuni.

Alegeți între opțiunile de conectivitate QvSAPBAPIConnector (dacă aveți un conector SAP instalat)

Sap bapi conector, date-zilnic

Specialiștii SAP vă vor informa cu plăcere despre parametrii necesari, rămâne să apăsați TestConnection:

Sap bapi conector, date-zilnic

Dacă este corect încărcat, obținem:

Sap bapi conector, date-zilnic

Apoi, mergeți la modul de lucru cu modulele funcționale și faceți clic pe butonul BAPI:

Sap bapi conector, date-zilnic

În fereastra următoare, efectuăm următoarele acțiuni:

  1. Specificați numele modulului funcțional.
  2. Apăsăm butonul "Getparameters".
  3. Completăm valorile necesare pentru parametrii obținuți.
  4. Selectați parametrul de export.
  5. Apăsăm butonul "Adăugare apel pentru script"
  6. Codul scriptului va fi generat
  7. Faceți clic pe butonul "OK" și obțineți scriptul de la pasul 6 din scriptul QV.

Sap bapi conector, date-zilnic

În scriptul rezultat, puteți specifica variabile în locul valorilor parametrilor.

Ca rezultat, obținem tabelul ET_CALENDAR_TB și apoi îl folosim fie pentru a construi un model asociativ, fie pentru a încărca datele într-un fișier cu format qvd.

Transferarea datelor către SAP utilizând conectorul BAPI

Acest caz mi se pare mai interesant și mai neobișnuit, așa că îl vom examina în detaliu.

Un algoritm exemplar pentru transferul de date ca tabel ca parametru la utilizarea conectorului SAP BAPI este următorul:

  1. Decideți asupra datelor
  2. Pregătiți datele
  3. Se potrivește formatul.
  4. Descărcați date pentru reconciliere preliminară.
  5. Pregătiți variabilele.
  6. Transferați datele către SAP
  7. Procesați datele de pe partea SAP
  8. Pentru a procesa informațiile transferate de la SAP (în cazul nostru, după cum sa spus, este un tabel cu înregistrări procesate fără succes și motivele acestora)

Să aruncăm o privire la exemplul transferului de date către SAP pentru colectarea de numerar din colectarea de numerar.

  1. Determinați datele de trimis.

Avem tabelul Rezultat. pe care trebuie să le transferăm către SAP:

Acesta este cel mai mare punct!

În primul rând, trebuie să învățăm de la experții SAP structura tabelului în care vor fi încărcate datele.

Structura tabelului țintă SAP în acest caz este după cum urmează:

MANDT, - numărul clientului

BUKRS, - numele codului companiei

BUDAT, - data

KUNNR, - numărul magazinului

WAERS, - valută

WRBTR, - suma în valută străină

HBKID - bancă de transfer

Nu avem toate coloanele, așa că noi creăm singuri coloanele care lipsesc, restul este transformat. În final, primim următorul cod:

SARCINA
"100" ca MANDT,
"BSTP" ca BUKRS,
Anul Num (Luna, Corp), 'Num' (Day, Corp.), '00') ca BUDAT,
PFM ca KUNNR,
"RUB" ca WAERS,
Etaj (sumă (codificată)) ca WRBTR,
ApplyMap ('BankNameMap2', Bank_plan) ca HBKID
Rezultatul Rezident
Unde nu este IsNull (PFM)
Grupați după data de sosire, PFM, ApplyMap ('BankNameMap2', Bank_plan);

  • Câmpurile MANDT. Burks. WAERS creăm independent.
  • Câmpul Date_input_correct este convertit în formatul acceptat de SAP, "YYYYMMDD".
  • Câmpul Bank_plan este corectat utilizând tabelul de mapare pentru valorile utilizate în SAP ca un cod scurt al creditorului.
  • Câmpul Proinkassirovano rotunjit și suma ca după aplicarea de mapare pot primi mai multe linii, un magazin / bancă într-o singură zi, ceea ce este contrar logicii de descărcare de gestiune.
  • Când treceți numerele cu o parte fracționată, trebuie să treceți valorile cu delimitatorul ". '(O perioadă), virgula ca delimiter de funcții nu a fost acceptată de modulul funcțional.

Deoarece logica de încărcare a fost astfel încât să suprascriem valorile actualizate pentru datele viitoare, a devenit necesar să adăugăm un cec, în cazul în care nu există date pentru nici un magazin în noua încărcare. Acest control poate fi implementat pe partea SAP, am făcut același lucru în QlikView în felul următor:

  • Adăugați un câmp cheie în LOAD:

Num (Arrival_Character) '|' ApplyMap ('BankNameMap2', Bank_plan) '|' PFM ca PFM_BANK_DATE

  • Evacuate din tabel, care va merge pentru a încărca, stoca informații, care nu este prezent în descărcarea de gestiune curentă, în loc de peredaom suma „0“ pentru a suprascrie datele din viitor:

Concatenate (T1)
SARCINA
Dacă (isNum (KUNNR), Num (KUNNR), KUNNR) ca KUNNR,
HBKID,
100 ca MANDT,
"RUB" ca WAERS,
"BSTP" ca BUKRS,
0 ca WRBTR,
An (BUDAT) Num (Luna (BUDAT), '00') Num (Ziua (BUDAT), 00)
Unde nu există (PFM_BANK_DATA, Num (BUDAT) '|' HBKID '|' Dacă (isNum (KUNNR), Num (KUNNR), KUNNR));
SELECT
KUNNR,
HBKID,
WRBTR,
BUDAT
Din Z_TABLE_IN_SAP
WHERE BUDAT> = '$ (vToday Year) $ (vTodayMonth) $ (vTodayDay)';

  • Ștergeți câmpul cheie DROP Câmpul PFM_BANK_DATE;

Pregătirea datelor este completă, dar asta nu este totul.

Acum trebuie să le convertiți pentru transfer suplimentar la modulul funcțional.

Datele sunt transmise metodei funcționale după cum urmează (parte a scriptului pentru câmpul MANDT):

În interiorul bretelelor, trebuie să trecem toate valorile. Pentru a face acest lucru pentru o singură comandă, am găsit o astfel de soluție - să folosim variabilele.

  • Mai întâi, combinăm toate valorile într-un singur câmp, facem acest lucru cu funcția Concat. Utilizarea sortării este obligatorie; fără ea, datele din câmpul primit vor fi amplasate într-o ordine haotică.

Utilizați "," ca separator.

  • Tabelul T2 va conține o singură intrare, iar valoarea din fiecare câmp va conține toate valorile câmpurilor din tabelul anterior.

Folosiți câmpul BUDAT ca exemplu:

T2: // Combină valorile după câmpuri.
SARCINA
Concat (MANDT, '»,»') ca MANDTx,
Concat (BUKRS, '', '') ca BUKRSx,
Concat (BUDAT, "», »“, KUNNR * 100000000 + BUDAT + WRBTR) ca BUDATx, // KUNNR * 100000000 + BUDAT, sortarea, folosind CONCAT, fără ea, întregul script este inutil.
Concat (KUNNR, '', KUNNR * 100000000 + BUDAT + WRBTR) ca KUNNRx,

Concat (WAERS, '', '') ca WAERSx,
Concat (WRBTR, ' »,»“. KUNNR * 100000000 + BUDAT + WRBTR) ca WRBTRx,
Concat (HBKID, "", KUNNR * 100000000 + BUDAT + WRBTR) ca HBKIDx
Rezident T1;

  • Și, în sfârșit, valorile din câmpurile recepționate sunt transmise variabilelor, aici, ca opțiune, funcția Peek este potrivită.
  1. Rămâne să transferați date către SAP.

Facem o conexiune, ca în exemplul anterior.

În acest caz, parametrul de intrare este tabelul:

Sap bapi conector, date-zilnic

Pentru un exemplu și o înțelegere mai bună, completați mai multe intrări făcând clic pe rândul cu tabelul:

Sap bapi conector, date-zilnic

Faceți clic pe Adăugare apel pentru script

În scriptul rezultat, rămâne să înlocuiți valorile din parantezele pătrate cu variabilele create mai devreme!

Important: puneți variabila în ghilimele.

  1. Când executați scriptul QlikView, datele sunt transmise modulului funcțional, care procesează valorile rezultate.
  2. Ca parametru de export apare tabelul, dacă există înregistrări în el, puteți înțelege ce date nu au fost transferate în tabel.
  • Dacă este necesar, schimbând șirul de conectare, puteți transfera datele pe un alt server SAP (de exemplu, pe un server de testare) sau de mai multe ori pentru a descărca un modul cu parametri diferiți.
  • Datele însăși sunt scrise pe masă destul de repede, dar uneori răspunsul la QlikView merge o perioadă lungă de timp, iar programul trece la pasul următor cu o întârziere. În practică, a fost o singură dată. Ca urmare, încărcarea a fost împărțită în mai multe fluxuri.
  • Dacă după script-ul conectorului de pe filă există mai mulți operatori, atunci nu au evidențierea sintaxei. Această problemă este rezolvată prin crearea unei file noi.
  • Trebuie să vă asigurați că valorile din tabelul de pe partea SAP corespund valorilor din tabelul inițial, dacă există neconcordanțe, trebuie să reveniți la condiția de sortare a funcției Concat.

posibilități SAP BAPI Connector au fost foarte mult în cerere, am fost capabili să se mute în unele rapoarte utile QlikView direct din modulele de funcții, precum și posibilitatea de transmitere a tabelului ca parametru a permis să abandoneze schemele cu punerea fișiere pe acțiuni de rețea. Stabilitatea, viteza și flexibilitatea transmisiei de date au crescut.

Adresați-vă întrebările.

Vă mulțumesc pentru atenție!

Ați putea fi, de asemenea, interesat de: