Skip to Content
avatar image
Former Member

Sap 9.2 AddOn connection and SboGuiApi connection

Hello everyone!

I have this situation.

A AddOn works with DI Server to manipulate some orders and the same AddOn have two events filters programmed. One MenuEvent and one ItemEvent. This worked fine in SAP B1 9.1, but in the 9.2 version no.

What is going on. If I pass the AddOn connection string to the Events Class, to set in SboGuiApi, the AddOn crashes in the starting. Show a token connection error.

If I set the connection inside the Events Class to SboGuiApi using

SBO_Application = B1Connections.theAppl;

The events still work, but the Form methods stops to work.

This

[B1Listener(BoEventTypes.et_FORM_DATA_ADD, true)]  public virtual bool OnBeforeFormDataAdd(BusinessObjectInfo pVal)

and this

[B1Listener(BoEventTypes.et_FORM_DATA_UPDATE, true)]  public virtual bool OnUpdate(BusinessObjectInfo pval)

stops to work.

Some ideas? How can I fix this?

Thanks a lot!

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

5 Answers

  • Best Answer
    avatar image
    Former Member
    Nov 03, 2016 at 01:07 PM

    Hello Pedro.

    Thanks a lot for your help! I saw some topics explaning about the "addonIdentity". This was be my next step. But, before I try this. I put this line

    var sConnectionString = B1Connections.connStr;

    inside the Events Class and finally the AddOn worked correctly!!

    So, I still learning more every day about the SAP B1 development!

    Thank you very much!

    Add comment
    10|10000 characters needed characters exceeded

  • Oct 31, 2016 at 08:12 PM

    Hi João,

    A AddOn works with DI Server to manipulate some orders and the same AddOn have two events filters programmed.

    Note that DI Server is an actual component that uses SOAP messages to communicate with B1. I think what you mean is DI API (the data interface) of the SDK. Am I assuming correctly?

    If I pass the AddOn connection string to the Events Class, to set in SboGuiApi, the AddOn crashes in the starting.

    Can you show us the code where this is being done (and mark the error line with a comment)?

    If I set the connection inside the Events Class to SboGuiApi using
    
    SBO_Application = B1Connections.theAppl;

    The SboGuiApi is a class used to establish connections to the UI server (SAPbouiCOM), the Application object, however (the one in B1Connections.theAppl), is an object that represents the client itself (B1).

    I've noticed you're using B1DE, and normally, it takes care of setting up the event system and assigning the application object to another variable doesn't interfere with the process.

    Without more details, it's hard to guess what might be the issue.

    If you can please post the code for the connection of your addon to B1 and we'll start there.

    Pedro Magueija

    LinkedIn | Twitter | Blog

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Nov 01, 2016 at 11:22 AM

    Hi Pedro. I understand your explanation. I guess it´s could be a conflict between connections and objects. Below part of the codes:

    AddOn connection

    cnnStr = System.Environment.GetCommandLineArgs().Length == 1 ? B1Connections.connStr : System.Environment.GetCommandLineArgs().GetValue(1).ToString();  
    
    try  {  
    
    retCode = B1Connections.Init(cnnStr, addOnIdentity, cnnType);  
    
    if (retCode != 0)  {  
    
    System.Windows.Forms.MessageBox.Show("ERROR - login Connection failed: " + B1Connections.diCompany.GetLastErrorDescription());  
    
    return;  
    
    }  
    
    new Integrador();  
    
    EF ef = new EF(); // events class  
    
    System.Windows.Forms.Application.Run();  
    
    }  
    
    catch (Exception ex)  {  
    
    System.Windows.Forms.MessageBox.Show("ERROR - load Connection failed: " +  ex.Message);  }

    Events Class connection

    private void SetApplication()  {  
    
    SBO_Application = B1Connections.theAppl;  
    
    }  
    
    private void SetFilters()  {     
    
    oFilters = new SAPbouiCOM.EventFilters();  
    
    oFilter = oFilters.Add(SAPbouiCOM.BoEventTypes.et_CLICK);  
    
    oFilter.AddEx("139"); // Orders Form  
    
    oFilter = oFilters.Add(SAPbouiCOM.BoEventTypes.et_MENU_CLICK);  
    
    oFilter.Add(139); // Orders Form  SBO_Application.SetFilter(oFilters);  }  
    
    public EF()  {  
    
    SetApplication();  
    
    SetFilters();     
    
    SBO_Application.MenuEvent += new SAPbouiCOM._IApplicationEvents_MenuEventEventHandler(SBO_Application_MenuEvent);     
    
    SBO_Application.ItemEvent += new SAPbouiCOM._IApplicationEvents_ItemEventEventHandler(SBO_Application_ItemEvent);  
    
    }
    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Nov 01, 2016 at 12:20 PM

    Update: If I pass the

    cnnStr

    to Events Class like parameter, the AddOn stops in the connection and the client shows a message like that Error connection, token problem.

    Add comment
    10|10000 characters needed characters exceeded

  • Nov 02, 2016 at 06:31 AM

    Hi João,

    I've noticed you're passing in an "addonIdentity". That's used when you have generated an id and requested a license from SAP that contains that id for your addon. More info here: https://archive.sap.com/discussions/thread/25126

    Otherwise, it should be null.

    Pedro Magueija

    LinkedIn | Twitter | Blog

    Add comment
    10|10000 characters needed characters exceeded