Matrix.getValue() liefert leeren String obewohl Feld gefüllt
Johannes Barop
Hallo,ich habe ein Problem. Und zwar habe ich eine Workflow-Regel geschrieben, die sicher stellt, dass gewisse Belege gültige Basisbelege besitzen. Das funktioniert auch bis auf einen Fall: Lieferung mit Basisbeleg Ausgangsvorrausrechnung.
Das Problem ist, dass das "baseType = receiptRows.GetValue("43", i)" einen leeren String liefert, obwohl das Feld im SAP gefüllt ist.
// Matrix mit den Belegzeilen
Matrix receiptRows = Matrix.GetFromUID(pVal.Form, "38");
// Über alle Belegzeilen iterieren
for (int i=0; istring artikelNr = receiptRows.GetValue("1", i); // Artikelnummer einlesen
string artikelBeschr = receiptRows.GetValue("3", i); // Artikelbeschreibung einlesen (für schönere Fehlermeldung)
string baseType = receiptRows.GetValue("43", i); // Typ des Basisbelegs einlesen
string baseRef = receiptRows.GetValue("44", i); // Nummer des Basisbelegs einlesen
// Nur Zeilen beachten, die eine Artikelnummer besitzen
if (artikelNr.Length != 0) {
// Überprüfen ob der Basisbeleg gültig ist.
SwissAddonFramework.UI.Dialogs.MessageBox.Show("BaseType: "+baseType, "na gut..");
if (validBaseTypeRequired && (baseRef.Length == 0 || !allowedBaseTypes.Contains(baseType))) {
SwissAddonFramework.Messaging.StatusBar.WriteError("Zum Artikel '"+artikelNr+" - "+artikelBeschr+"' ist kein gültiger Basisbeleg eingetragen!");
return false;
}
}
}
Wenn ich mir das betroffende Feld im Beleg anschaue, fällt mir auf, dass statt des Strings "Ausgangsrechnung" die Zahl "13" eingetragen ist. "13" ist der BaseType als Integerwert den ich erwarte.
In dem Beleg "Ausgangsgutschrift" funktioniert das ohne Probleme. Dort steht jedoch auch nicht "13" sondern "Ausgangsrechnung".
Was ist da kaputt?
Viele Grüße,
Johannes
Michael Egloff
Hallo Johannes,die Methode 'GetValue()' liefert den Wert direkt vom SDK von SAP.
Was hast du denn für eine SAP Version? PL?
Ich habe bei mir soeben eine Lieferung mit Basisbeleg Vorausrechnung gemacht und eine mit Basisbeleg Kundenauftrag.
Bei beiden wird der Referenzbeleg als String dargestellt, abgespeichert wird aber der DocType als Zahl (13 und 17 in meinem Beispiel).
Wenn bei dir kein Wert zurück gegeben wird, obwohl was drinn steht, sieht das nach einem SAP Bug aus, d.h. du musst eine SAP Meldung eröffnen.
Melde dich, falls du weitere Informationen benötigst.
Gruss
0
Please sign in to leave a comment.
Comments
0 comments