2016-09-22 39 views
0

我嘗試編寫一個軟件,這樣生產可以很容易地確認材料項目。 現在,當我想通過密鑰獲取生產訂單時,它無法找到採購訂單。 如果我與商業夥伴做同樣的事情,它就會起作用。 我們爲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_開頭)。生產訂單在此表中。我希望有一種方法可以做我想做的事... –

回答

0

如果我明白了,如果至少它在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

相關問題