Regel zum Löschen von nicht bebuchten Artikel-Lagerzuordnungen im Artikelstamm (OITW)
Michael Hubenschmid
Hallo zusammen.Habe eine Regel erstellt die ganze OITW prüft hinsichtlich erfassten Lagercodes (z.B. *1) welche nicht bebucht wurden um diese dann per DI löschen zu lassen. Diese funktioniert auch einwandfrei auf 2007 PL46. Unter PatchLevel 42 jedoch gibt es im Object WhsInfo keinen Delete-Befehl.
Hier die Regel:
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand();
com.CommandText = @"SELECT ItemCode, WhsCode FROM OITW WHERE (WhsName is Null OR WhsName = '') AND WhsCode not in (SELECT Warehouse FROM OINM) AND WhsCode not in (SELECT WhsCode FROM RDR1) AND WhsCode not in (SELECT WhsCode FROM POR1) AND WhsCode not in (SELECT WhsCode FROM QUT1)";
int i=0;
using(System.Data.SqlClient.SqlDataReader reader = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(com))
{
while(reader.Read())
{
SAPbobsCOM.Items oItem = (SAPbobsCOM.Items)SwissAddonFramework.B1Connector.GetB1Connector().Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oItems);
// Delete item warehouse info
string itemCodeTemp = reader["ItemCode"].ToString();
string whsCodeTemp = reader["WhsCode"].ToString();
oItem.GetByKey(itemCodeTemp);
if(oItem.WhsInfo.WarehouseCode == whsCodeTemp)
{
MessageBox.Show("Datensatz: " + itemCodeTemp + ", " + whsCodeTemp, "OK");
oItem.WhsInfo.Delete();
oItem.Update();
}
i++;
}
}
StatusBar.WriteSucess(i + " Artikel/Lager Zuordnungen gelöscht");
Auf PatchLevel 42 gibt es nur .WarehouseCode.Remove(int).
Ich denke damit ist die Zeilennummer gemeint. jedoch finde ich keine Methode die mir diese für einen best. Datensatz zurück gibt. Wäre für jeden Tip dankbar.
MFG
Michael Hubenschmid
Manuel Marhold
Hi Michael,du musst die ItemWarehouses durchlaufen, am besten mit einer for-schleife. dann kannst du über den Index das Remove() ausführen.
Michael Hubenschmid
Hallo Manuel,danke für deine Antwort. Aber irgendwie steh ich auf dem Schlauch.
Falls du sowas schon in ähnlicher Form gemacht hast wäre ich dir sehr dankbar wenn du in meinem Code die notwendige Anpassung kurz einbauen könntest.
Denn auf den Patch mit dem mein Code funktioniert kann ich wegen diverser anderer Partner Addons nicht gehen.
Merci schon mal im Vorraus für deine Hilfe.
Gruss Michael
Manuel Marhold
Hi Michael,ich habe mir das nochmal angeschaut..
ich glaube da habe ich dich falsch verstanden gehabt. das Löschen des Lagers aus einem Artikel geht dann so nicht.
Was Möglich wäre:
Per UI den Artikel suchen und dann das Lager löschen.. ist aber langsamer..
0
Please sign in to leave a comment.
Comments
0 comments