Можно ли получить доступ к данным PPSONE с помощью DI SDK из SAP B1?

Я пытаюсь написать программное обеспечение, чтобы производство могло легко подтвердить материальные ценности. Теперь, когда я хочу получить производственный заказ по ключу, он не может найти заказ на поставку. Если я делаю то же самое с деловым партнером, это работает. Мы используем надстройку PPS One для SAP B1, в чем проблема? Возможно ли получить доступ к данным из этого дополнения или что я должен изменить?

SAPbobsCOM.BusinessPartners vBP = connection.company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
SAPbobsCOM.ProductionOrders vPO = connection.company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oProductionOrders);

if(vBP.GetByKey("L22437"))
{
  WriteLogLine("Name: " + vBP.CardName); // Works, i get the Name!
}
else { WriteLogLine("No matching customer record was found!");  }

if (vPO.GetByKey(anyKey)) // tried a lot of keys, no one worked
{
  WriteLogLine(vPO.GetAsXML());
}
else { WriteLogLine("No matching production order record was found!"); }

Также есть странная вещь: в графическом интерфейсе SAP заказы отображаются как заказы на работу, но соответствующая таблица в базе данных — @PPSONE_PRDORDERS. Но это не сработает, если я перейду с SAPbobsCOM.ProductionOrders на SAPbobsCOM.WorkOrders.


person White Wolf    schedule 22.09.2016    source источник
comment
Аддон создает стандартный производственный заказ?   -  person Teta    schedule 22.09.2016
comment
@Teta Я так не думаю, потому что у аддона есть свои таблицы в базе данных (начинающиеся с @PPSONE_). И производственные заказы в этой таблице. Я надеюсь, что есть способ сделать то, что я хочу...   -  person White Wolf    schedule 23.09.2016


Ответы (1)


Если я понял, не имеет значения, что делает аддон, если он хотя бы создает запись в таблице PO, если вы хотите найти записи PO, вы должны запросить таблицу OWOR, поле для использования в методе GeyByKey PO — это OWOR.DocEntry.

Если это UserTable без объекта, вы можете использовать объект UserTable

UserTable oUst = (UserTable)oCompany.UserTables.Item(YOURTABLE);
if oUst.GetByKey("1") ....

Если это UserTable с объектом, вам нужно искать GenericServices

Dim oGeneralService As SAPbobsCOM.GeneralService
Dim oGeneralData As SAPbobsCOM.GeneralData
Dim oGeneralParams As SAPbobsCOM.GeneralDataParams

Dim sCmp As SAPbobsCOM.CompanyService
sCmp = oCompany.GetCompanyService

'Get a handle to the SM_MOR UDO
oGeneralService = sCmp.GetGeneralService("SM_MOR")

'Get UDO record
oGeneralParams =    oGeneralService.GetDataInterface(SAPbobsCOM.GeneralServiceDataInterfaces.gsGeneralDataParams)
oGeneralParams.SetProperty("DocEntry", "2")
oGeneralData = oGeneralService.GetByParams(oGeneralParams)
person Teta    schedule 23.09.2016
comment
Но у меня нет записей в таблице OWOR. Так что аддон использует свою собственную таблицу. - person White Wolf; 23.09.2016
comment
Так вот почему вы не можете использовать гейбайкей ПО. я отредактировал ответ - person Teta; 23.09.2016
comment
Это выглядит как правильный ответ для меня, и его следует принять. - person Daz; 03.11.2016