2016-05-10 12 views
0

Ich möchte einen BAPI-Aufruf von Java an das BAPI "BAPI_MDDATASET_CREATE_OBJECT" machen.BAPI_MDDATASET_CREATE_OBJECT MDX Query

Deshalb möchte ich die folgende MDX-Abfrage verwenden:

SELECT 
[0DISTR_CHAN].Members ON COLUMNS, 
[0MATERIAL].Members ON ROWS 
FROM [$/PKG/AB_C01] 

Da der Parameter „COMMAND_TEXT“ zu kurz ist, habe ich 4 Einträge wie folgt aus: enter image description here

Jetzt habe ich das BAPI laufen und bekommen eine DATASETID im Gegenzug. Ich benutze diese ID mit dem nächsten BAPI "BAPI_MDDATASET_CHECK_SYNTAX"

Aber jetzt bekomme ich eine Ausnahme: enter image description here

Deutsche Version:

enter image description here

Warum ist das so?

Diese MDX-Abfrage scheint in Ordnung zu sein, da in der Transkation "MDXTEST" diese Abfrage funktioniert.

Irgendwelche Vorschläge?

+0

sieht ok - tun Sie am Ende ein Semikolon müssen 'FROM [$/PKG/AB_C01];' – whytheq

+0

Ich versuchte es, aber die gleiche Ausnahme. – LStrike

+0

was ist die BOTSCHAFT? "Es ist ..." Können Sie bitte ins Englische übersetzen? – whytheq

Antwort

0

Im Folgenden wird eine große Tabelle zurück, die n * m ist, wobei n die Anzahl der Spalten und m die Anzahl der Zeilen ist:

SELECT 
[0DISTR_CHAN].Members ON COLUMNS, 
[0MATERIAL].Members ON ROWS 
FROM [$/PKG/AB_C01] 

n = Anzahl der Mitglieder in dieser Dimension [0DISTR_CHAN] + 1
m = Anzahl der Elemente in dieser Dimension [0MATERIAL]

Dies ist keine Antwort, aber vielleicht hilft, um herauszufinden, ob die mdx das Problem ist. Wenn Sie das oben genannte auf nur ein einzelnes Element in Zeilen und ein einzelnes Element in Spalten vereinfachen, erhalten Sie immer noch einen Fehler?

SELECT 
    {[0DISTR_CHAN].[0DISTR_CHAN].[someMemberY]} ON COLUMNS, 
    {[0MATERIAL].[0MATERIAL].[someMemberX]} ON ROWS 
FROM [$/PKG/AB_C01]; 
1

Ich hatte das gleiche Problem nur mit C# und Sap-Anschluss. Ich habe es gelöst. Benötigen Sie alle Befehle in einem Kontext zu verwenden:

RfcSessionManager.BeginContext(destination); 
Create_Object(); 
CheckSyntax(); 
etc. 
RfcSessionManager.EndContext(this.destination); 
+0

Viel besser ;-) Kontext ist der fehlende Schlüssel. Nein, ich habe eine neue Ausnahme ... Syntaxfehler, aber das ist etwas woran ich arbeiten kann. Danke. – LStrike