2016-11-21 78 views
0

我正在尝试使用SAP Business One(B1或BO)数据接口API(DI API)为.NET获取所有公司帐户的列表。
一个帐户被表示为ChartOfAccounts SDK的类型。
我无法弄清楚,如果有一种方法可以做这样的事情(这是我应得的项目列表):如何获取所有公司帐户的列表?

var oItem = (Items) Company.GetBusinessObject(BoObjectTypes.oItems); 
    var oSBObob = (SBObob)Company.GetBusinessObject(BoObjectTypes.BoBridge); 
    var oRecordSet = oSBObob.GetItemList(); 

但似乎有类似的都没法GetItemList()为账户为SBObob类型。

有谁知道如何获取公司帐户列表?

+0

SDK中提到的GL帐户没有明显的并行GetItemList()。您可以通过直接查询OACT表获得记录集。 – Daz

+0

@Daz:谢谢,我确实按照您的建议实施了它 - 请参阅下面的答案。在我看来,就像是一个经常使用SDK类的例子,我希望它的类可以包含一个方便的方法来执行它,而不需要研究数据库模式并依赖SQL查询。 –

回答

2

我实现此使用Recordset方法通过直接查询OACT DB表帐户键(AcctCode DB字段)的列表,然后使用ChartOfAccountsGetByKey()方法来填充其他ChartOfAccounts的字段是这样的:

  var sapAccount = (ChartOfAccounts)Company.GetBusinessObject(BoObjectTypes.oChartOfAccounts); 
      var oRecordSet = (Recordset)company.GetBusinessObject(BoObjectTypes.BoRecordset); 
      oRecordSet.DoQuery("SELECT AcctCode FROM OACT"); 

      while (!oRecordSet.EoF) 
      { 
       var key = oRecordSet.Fields.Item(0).Value.ToString(); 
       sapAccount.GetByKey(key) 

       // Now sapAccount is filled with current account data - do something with its fields 

       oRecordSet.MoveNext(); 
      } 
相关问题