是否可以使用SAP B1的DI SDK访问PPSONE数据?

问题描述:

我尝试编写一个软件,这样生产可以很容易地确认材料项目。 现在,当我想通过密钥获取生产订单时,它无法找到采购订单。 如果我与商业伙伴做同样的事情,它就会起作用。 我们为SAP B1使用PPS One插件,那么有问题吗?是不是可以从这个插件访问数据或我有什么改变?是否可以使用SAP B1的DI SDK访问PPSONE数据?

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 GUI宝显示为工单,但在分贝coresponding表@PPSONE_PRDORDERS。但是,如果我从SAPbobsCOM.ProductionOrders更改为SAPbobsCOM.WorkOrders,则它不起作用。

+0

是否插件创建标准产品订单? – Teta

+0

@Teta我不这么认为,因为插件在数据库中有自己的表(以@PPSONE_开头)。生产订单在此表中。我希望有一种方法可以做我想做的事... –

如果我明白了,如果至少它在PO表中创建一条记录,那么插件会做什么并不重要,如果要查找PO的记录,则必须查询OWOR表,要使用的字段在PO的GeyByKey方法中是OWOR.DocEntry。

如果这是一个没有对象OU中的用户表可以使用对象为UserTable

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

如果是使用对象一个用户表,你必须寻找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) 
+0

但是我在OWOR表中没有任何条目。所以插件使用他自己的表格。 –

+0

所以这就是为什么你不能使用PO的geybykey。我编辑了答案 – Teta

+0

这看起来对我来说是正确的答案,应该被接受。 – Daz