cancel
Showing results for 
Search instead for 
Did you mean: 

SAP Business One DI API (Java) - How to add a Blanket Agreement

Former Member
0 Kudos

Hello, this is my first post here.

I need to create and add a Blanket Agreement using the Java DI API.

I am able to update an existing Blanket Agreement using the following code:

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();


// Suppose I want to update the Blanket Agreement number 350
BAParam.setAgreementNo(350); 


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


// Exemple
BA.setBPCode(myBP.getBPCode());
BA.setDescription(myBP.getDescription());
//...


 BAService.updateBlanketAgreement(BA);

But what I really want to do now is to add a new Blanket Agreement.

I can't find any Java example for doing this and I am having no success to declare a new Blanket Agreement object.

I tried many things, like the following code for example:

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);
// I also tried BA = (com.sap.smb.sbo.api.BlanketAgreement) myBPSInicio.getDataInterface(SBOCOMConstants.BlanketAgreementsServiceDataInterfaces_basBlanketAgreement);

With this code I get an exception:

java.lang.ClassCastException: com.sap.smb.sbo.wrapper.com.Dispatch cannot be cast to com.sap.smb.sbo.api.BlanketAgreement

Can someone teach me how to declare and add a new Blanket Agreement Object using the DI API and Java?

Thanks!

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hello!

I had the same problem for months, except with the ProfitCenters - you should first initialize the myBPSInicio.getDataInterface to an Object, and also when you initialize BA variable, you should leave the "I" before the BlanketAgreement like this:

IBlanketAgreement BA;
Object obj = myBPSInicio.getDataInterface(SBOCOMConstants.BlanketAgreementsServiceDataInterfaces_basBlanketAgreement);
BA = new BlanketAgreement(obj);

I didn't try your code, but this is my working Java code for adding/updating profitcenters with the same SAP Service thing like your BlanketAgreementService:

protected int getProfitCenter(String pProfitCenter){

        try {
            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;
            boolean exists = true;
            try{
                pc = (IProfitCenter) pcservice.getProfitCenter(pcparam);
                if (pc.getCenterCode() == null ? pc.getCenterName() != null : !pc.getCenterCode().equals(pc.getCenterName())){
                    pc.setCenterName(pProfitCenter);
                    pc.setActive(1);
                    pc.setEffectivefrom(new Date());
                    pcservice.updateProfitCenter(pc);
                }
            } catch (Exception ex){
                serr("ProfitCenter not exists? " + ex.getMessage());
                exists = false;
            }

            if (!exists){
                Object obj = pcservice.getDataInterface(SBOCOMConstants.ProfitCentersServiceDataInterfaces_pcsProfitCenter);
                pc = new 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);
        }
}