SAP Business One DI API(Java)-如何添加一揽子协议

2020-09-27 02:17发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好,这是我在这里的第一篇文章。...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,这是我在这里的第一篇文章。

我需要使用Java DI API创建并添加一揽子协议。

我可以使用以下代码更新现有的一揽子协议:

 com.sap.smb.sbo.api.BlanketAgreementsService BAService =(com.sap.smb.sbo.api.BlanketAgreementsService)com.sap.smb.sbo.api.SBOCOMUtil.newBlanketAgreementsService(company.getCompanyService());
 BlanketAgreementsParams BAParams =(BlanketAgreementsParams)BAService.getBlanketAgreementList();
 BlanketAgreementParams BAParam =(BlanketAgreementParams)BAParams.add();


//假设我要更新一揽子协议编号350
 BAParam.setAgreementNo(350);


 IBlanketAgreement BA;
 BA =(IBlanketAgreement)BAService.getBlanketAgreement(BAParam);


//范例
 BA.setBPCode(myBP.getBPCode());
 BA.setDescription(myBP.getDescription());
//...


  BAService.updateBlanketAgreement(BA);
 

但是我现在真正想做的是添加一个新的一揽子协议。

我找不到用于执行此操作的任何Java示例,并且无法成功声明新的Blanket Agreement对象。

我尝试了很多事情,例如以下代码:

 com.sap.smb.sbo.api.BlanketAgreementsService BAService =(com.sap.smb.sbo.api.BlanketAgreementsService)com.sap.smb.sbo.api.SBOCOMUtil.newBlanketAgreementsService(company.getCompanyService());
 BlanketAgreementsParams BAParams =(BlanketAgreementsParams)BAService.getBlanketAgreementList();
 BlanketAgreementParams BAParam =(BlanketAgreementParams)BAParams.add();




 IBlanketAgreement BA;
 BA =(IBlanketAgreement)myBPSInicio.getDataInterface(SBOCOMConstants.BlanketAgreementsServiceDataInterfaces_basBlanketAgreement);
//我还尝试了BA =(com.sap.smb.sbo.api.BlanketAgreement)myBPSInicio.getDataInterface(SBOCOMConstants.BlanketAgreementsServiceDataInterfaces_basBlanketAgreement);
 

使用此代码,我得到一个例外:

java.lang.ClassCastException:com.sap.smb.sbo.wrapper.com.Dispatch无法转换为com.sap.smb.sbo.api.BlanketAgreement

有人可以教我如何使用DI API和Java声明和添加新的Blanket Agreement对象吗?

谢谢!

1条回答
Nan4612
2020-09-27 03:03

你好!

除了ProfitCenters以外,我几个月都遇到了相同的问题-您应该首先将myBPSInicio.getDataInterface初始化为对象,并且在初始化BA变量时,也应像这样在BlanketAgreement之前保留" I":

 IBlanketAgreement BA;
 对象obj = myBPSInicio.getDataInterface(SBOCOMConstants.BlanketAgreementsServiceDataInterfaces_basBlanketAgreement);
 BA =新的BlanketAgreement(obj); 

我没有尝试过您的代码,但这是我的工作Java代码,用于使用相同的SAP Service(例如BlanketAgreementService)添加/更新利润中心:

受保护的int getProfitCenter(字符串pProfitCenter){

         尝试{
             com.sap.smb.sbo.api.ProfitCentersService pcservice =(com.sap.smb.sbo.api.ProfitCentersService)com.sap.smb.sbo.api.SBOCOMUtil.newProfitCentersService(company.getCompanyService());
             com.sap.smb.sbo.api.ProfitCentersParams PcParams =(com.sap.smb.sbo.api.ProfitCentersParams)pcservice.getProfitCenterList();
             ProfitCenterParams pcparam =(ProfitCenterParams)PcParams.add();
             pcparam.setCenterCode(pProfitCenter);

             IProfitCenter pc = null;
             布尔存在= true;
             尝试{
                 pc =(IProfitCenter)pcservice.getProfitCenter(pcparam);
                 如果(pc.getCenterCode()== null?pc.getCenterName()!= null:!pc.getCenterCode()。equals(pc.getCenterName())){
                     pc.setCenterName(pProfitCenter);
                     pc.setActive(1);
                     pc.setEffectivefrom(new Date());
                     pcservice.updateProfitCenter(pc);
                 }
             }捕获(例外){
                 serr(" ProfitCenter不存在?" + ex.getMessage());
                 存在=假;
             }

             如果(!存在){
                 对象obj = pcservice.getDataInterface(SBOCOMConstants.ProfitCentersServiceDataInterfaces_pcsProfitCenter);
                 pc =新的com.sap.smb.sbo.api.ProfitCenter(obj);
                 pc.setCenterCode(pProfitCenter);
                 pc.setCenterName(pProfitCenter);
                 pc.setInWhichDimension(4);
                 pc.setEffectivefrom(new Date());

                 pcservice.addProfitCenter(pc);
             }

             pc.release();
             pcparam.release();
             PcParams.release();
             pcservice.release();
         } catch(SBOCOMException ex){
             Logger.getLogger(PcExport.class.getName())。log(Level.SEVERE,null,ex);
         }
 }
 

一周热门 更多>