Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello There,
I want to create an image of the SAP transaction MD04 in order to let all lagging Items. For this I ask for each item from the function block and make MD_STOCK_REQUIREMENTS_LIST_API per item (about 20,000) a QVD file.
The whole process takes about 9 hours. That's way too long for the requirements of the company. So I'm looking for a way to speed up the whole. Here is my script. I am grateful for any help.
EDIT: The best solution would be a way to get the whole Content of MD_STOCK_REQUIREMENTS_LIST_API in one query. If anyone know such a way with Qlikview or SAP please let me know.
// BAPI Connector
CUSTOM CONNECT TO "Provider = QvSAPBAPIConnector.dll; ASHOST = xx.xx.xx.xx; SYSNR = XX; CLIENT = XX; XUserId = ABC; XPassword = DEF;";
// Create QVD for each article
Export:
LOAD Material_MATNR
FROM
(Txt, UTF8, embedded labels, delimiter is '', MSQ);
For i = 1 to NoOfRows ('export')
let v_Material = Field Value ('Material_MATNR', $ (i));
$ (V_Material):
LOAD *;
SQL {
"Function": "MD_STOCK_REQUIREMENTS_LIST_API"
"Output": "MDPSX"
"Parameter":
[
{"Direction", "out", "name": "E_CM61M", "optional": false},
{"Direction": "in", "length": 18, "name": "MATNR", "optional": false, "type": "CHAR", "value": "$ (v_Material)"},
{"Direction": "in", "length": 3, "name": "PLSCN", "optional": true, "type": "NUM", "value", "000"},
{"Direction": "in", "length": 4, "name": "Drive", "optional": false, "type": "CHAR", "value", "1000"},
{"Direction", "tables", "name": "MDPSX", "optional": true}
]
};
store [$ (v_Material)] into [residue list \ MDPSX ___ $ (v_Material) .qvd];
drop table $ (v_Material);
// *****
next
Translated with Google Translate - Qlik Community Administrative Team
Hallo,
Ich möchte ein Abbild der SAP Transaktion MD04 erstellen um alle rückständigen Artikel anzeigen zu lassen. dazu frage ich für jeden Artikel den Funktionsbaustein MD_STOCK_REQUIREMENTS_LIST_API ab und erstelle pro Artikel (ca. 20.000) eine QVD Datei.
Das ganze dauert etwa 9 Stunden. Das ist viel zu lang für die Anforderungen der Firma. Ich such also einen Weg um das Ganze zu beschleunigen. Hier mein Skript. Ich bin für jede Hilfe dankbar.
// BAPI Connector
CUSTOM CONNECT TO "Provider=QvSAPBAPIConnector.dll;ASHOST=XX.XX.XX.XX;SYSNR=XX;CLIENT=XX;XUserId=ABC;XPassword=DEF;";
// create QVD for each article
Export:
LOAD Material_MATNR
FROM
(txt, utf8, embedded labels, delimiter is ' ', msq);
for i = 1 to NoOfRows('Export')
let v_Material = FieldValue('Material_MATNR',$(i));
$(v_Material):
LOAD *;
SQL {
"function":"MD_STOCK_REQUIREMENTS_LIST_API",
"output":"MDPSX",
"parameters":
[
{ "direction":"out", "name":"E_CM61M", "optional":false },
{ "direction":"in", "length":18, "name":"MATNR", "optional":false, "type":"CHAR", "value":"$(v_Material)" },
{ "direction":"in", "length":3, "name":"PLSCN", "optional":true, "type":"NUM", "value":"000" },
{ "direction":"in", "length":4, "name":"WERKS", "optional":false, "type":"CHAR", "value":"1000" },
{ "direction":"tables", "name":"MDPSX", "optional":true }
]
};
store [$(v_Material)] into [Rückstandsliste\MDPSX___$(v_Material).qvd];
drop table $(v_Material);
//*****
next
Hallo Matthias,
warum für jeden Artikel eine eigene QVD? Auf den ersten Blick kommt mir das sehr umständlich vor und neben dem Fakt, das für jeden Artikel eine neue SQL ausgeführt wird, generiert man so auch sehr viele I/O Operationen mit dem OS und es ist kein Wunder das es recht lange dauert.
Besser ist es auf jeden Fall erstmal alle (gefiltert per Excel-Filterliste ?) Artikel aus SAP zu ziehen und falls wirklich so kleinteilig benötigt die QVD-Scheiben per Resident-Load zu generieren.
Schöne Grüße
Marcus
Ich brauche die Daten in jedem Fall für jeden Artikel. Warum eine QVD pro Artikel? Weil ich bisher nur den Weg über den Funktionsbaustein gefunden habe um an die Daten zu kommen die ich brauche. Dort kann ich eben nur einen Artikel pro SQL übergeben.
Da gibt es sicher andere Wege um die Materialstamm-Tabelle direkt abzufragen. Da ich selber nicht direkt auf SAP zugreifen kann und mir daher praktische Beispiele fehlen, muss ich Dich auf die folgenden Gruppen verweisen:
Not sure whether this helps but can you call the BAPI once and use a list of single values for MATNR ? how does that impact performance ?
I guess if most of the time is spent on the BAPI run time, maybe some performance tuning is required in SAP side.
Yaniv
Probier mal die Tabellen MDKP und MDTB (wenn MDTB leer ist dann sind die Daten wahrscheinlich in MDTC)
Da hast Du alle Artikel und Daten auf einmal --- nur leider nicht per FB.
I would suggest that you prioritize the pull by materials that have a missing part status first. They will be the most critical. This is found in Table FTIND or by looking for the Missing Part Flag on table RESB.