Я сделал дополнение для модуля ППМ SAP B1 и пытаюсь создать производственный заказ из рекомендации заказа.У меня есть ошибка «Элемент компонента не может быть фантомным элементом».
Свойства моих элементов:
ItemCode: «M1», Товарно-материальные запасы и Товар, Метод планирования: ППМ -Марка
ItemCode: "M2", это только позиция продажи, метод планирования: MRP - Марка
ItemCode: "M3", Инвентарь, позиция продажи и покупки, метод планирования: MRP - покупка
И дерево продуктов M1 -> M2 -> M3
В чем причина этой ошибки?Когда я пытаюсь создать производственный заказ M1 на стандартном MIP без моего аддона, он работает успешно.
Вот код, который добавляет производственный заказ:
public void createWOrderFor(int id,
string itemCode,
string itemName,
int qty,
int satisSip,
string cardCode,
string cardName,
string releaseDate)
{
DataTable dataTable2 = new DataTable();
using (var connection = new SqlConnection("Server=" + server + ";Database=" + database + ";User Id=" + user + ";Password=" + pass + "; connection timeout=30;"))
{
connection.Open();
var comm = new SqlCommand("select Code, Quantity from ITT1 where Father='" + itemCode + "'", connection);
SqlDataReader dr = comm.ExecuteReader();
if (dr.HasRows)
dataTable2.Load(dr);
}
SAPbobsCOM.ProductionOrders BO_itemP;
BO_itemP = (SAPbobsCOM.ProductionOrders)getCompany().GetBusinessObject(SAPbobsCOM.BoObjectTypes.oProductionOrders);
SAPbobsCOM.ProductionOrders_Lines BO_item_lines = null;
BO_itemP.PostingDate = DateTime.Now;
BO_itemP.DueDate = DateTime.Parse(releaseDate);
BO_itemP.ItemNo = itemCode;
BO_itemP.PlannedQuantity = qty;
BO_itemP.ProductionOrderType = SAPbobsCOM.BoProductionOrderTypeEnum.bopotSpecial;
int count2 = 0;
foreach (DataRow row2 in dataTable2.Rows)
{
BO_item_lines = BO_itemP.Lines;
BO_itemP.Lines.ItemNo = row2["Code"].ToString();
BO_itemP.Lines.PlannedQuantity = miktar * qty;
BO_itemP.Lines.SetCurrentLine(count2);
count2++;
BO_itemP.Lines.BaseQuantity = miktar * qty;
BO_itemP.Lines.Warehouse = "1100";
BO_itemP.Lines.Add();
}
var retVal = BO_itemP.Add();
String err = base.getCompany().GetLastErrorDescription();
if (!err.Equals("")) { SAPbouiCOM.Framework.Application.SBO_Application.StatusBar.SetText("BO_item Hata: "+err, SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error); }
}