PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Utilisation DI API SAP B1 HANA
Utilisation DI API SAP B1 HANA
Débuté par EJ, 10 déc. 2017 11:29 - 3 réponses
Membre enregistré
18 messages
Popularité : +1 (1 vote)
Posté le 10 décembre 2017 - 11:29
Bonjour,
Je dois écrire un programme sous Windev 22, qui doit communiquer avec SAP B1 via la DI API livré par SAP.
Comme je commence dans l'utilisation des Framework sous Windev, voici la démarche que j'ai adopté:
* Installation du SDK SAP B1
* Importation dans Windev => Je vois bien toutes les classes et méthodes
* J'ai crée un projet Windev (executable 32bits)
* J'arrive à me connecter via la DI API sur le serveur.
clMaCompany est un SAPbobsCOM.CompanyClass

clMaCompany.Server = "hanab1:30015"
clMaCompany.LicenseServer = "hanab1:40000"
clMaCompany.language = BoSuppLangs.ln_French
clMaCompany.DbServerType = BoDataServerTypes.dst_HANADB
clMaCompany.DbUserName = "SYSTEM"
clMaCompany.DbPassword = "Toto"
clMaCompany.CompanyDB = "MAN_BASE"
clMaCompany.UserName = "Mon_User"
clMaCompany.Password = "Mon@MDP"

nRetour = clMaCompany.Connect()
sMessRetour = clMaCompany.GetLastErrorDescription()
nNumErr = clMaCompany.GetLastErrorCode()
SI nNumErr <> 0 ALORS
Info(sMessRetour,nNumErr)
SINON
Info("Connexion OK")
FIN


* Je veux lire une fiche BusinnessPartner (Client) via la méthode "GetByKey" => Erreur
clMonBusinessPartner est un SAPbobsCOM.BusinessPartnersClass dynamic
clMonBusinessPartner = clMaCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)

nRetour = clMonBusinessPartner.GetByKey("C00000001")

sMessRetour = clMaCompany.GetLastErrorDescription()
nNumErr = clMaCompany.GetLastErrorCode()
Info(sMessRetour,nNumErr)


J'ai l'erreur suivante lors de l’exécution
Erreur à la ligne 46 du traitement Clic sur BTN_SansNom1.
L'invocation de la méthode  du type <__ComObject> a échoué
L'invocation de la méthode  du type <__ComObject> a échoué

----- Informations techniques -----

Projet : Mon_Projet_SAP

Appel WL :
Traitement de 'Clic sur BTN_SansNom1' (fenMenu.BTN_SansNom1), ligne 46, thread 0

Que s'est-il passé ?
L'invocation de la méthode  du type <__ComObject> a échoué
L'invocation de la méthode  du type <__ComObject> a échoué

Code erreur : 200002
Niveau : erreur fatale

Dump de l'erreur du module 'wd220net4.dll' (22.0.9.0).
Identifiant des informations détaillées (.err) : 200002
Informations supplémentaires :
EIT_PILEWL :
Clic sur BTN_SansNom1 (fenMenu.BTN_SansNom1), ligne 46
EIT_DATEHEURE : 10/12/2017 11:19:55
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <18>

Assistance


N'arrivant pas forcement a comprendre pourquoi, j'ai crée un projet sous Visual Studio 2017 avec le code suivant
Public Class Form1
    Public oCompany = New SAPbobsCOM.Company
    Public nRetour As Integer
    Public nErrCode As Integer
    Public sErrMess As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        oCompany.Server = "hanab1:30015"
        oCompany.LicenseServer = "hanab1:40000"
        oCompany.language = SAPbobsCOM.BoSuppLangs.ln_French
        oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB
        oCompany.DbUserName = "SYSTEM"
        oCompany.DbPassword = "Toto"
        oCompany.CompanyDB = "MAN_BASE"
        oCompany.UserName = "Mon_User"
        oCompany.Password = "Mon@MDP"

        nRetour = oCompany.Connect()
        If nRetour <> 0 Then
            sErrMess = oCompany.GetLastErrorDescription()
            nErrCode = oCompany.GetLastErrorCode()
            MessageBox.Show(sErrMess)
            MessageBox.Show(nErrCode)

        Else
            MessageBox.Show("Connexion OK")
        End If

        Dim MonBusinessPartner As SAPbobsCOM.BusinessPartners
        MonBusinessPartner = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners)

MonBusinessPartner.GetByKey("C00000001")
        
    End Sub

End Class

En VB, je récupère bien ma fiche BusinessPartner.
Si quelqu'un a une idée, elle est vraiment la bien la venue.

Merci à tous
Membre enregistré
18 messages
Popularité : +1 (1 vote)
Posté le 12 décembre 2017 - 08:41
Personne n'a une petite idée....;(
J'ai fait aussi le test dans un projet en C# et cela fonctionne.
Je pense que l'assignation de l'objet n'est pas bonne avec Windev.
Voici le code en C#
SAPbobsCOM.BusinessPartners oBusinessP = null;
        oBusinessP = (SAPbobsCOM.BusinessPartners)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBusinessPartners);
        oBusinessP.GetByKey("C00000001");


J'ai quand même envoyé une demande au support PCSOFT

Si quelqu'un à une idée ?
Posté le 10 décembre 2020 - 13:00
Bonjour,

Je remonte ton post pour savoir si tu as pu résoudre ce soucis? J'ai les memes besoin et je semble me heurter aux memes problemes.

Cordialement,

Jerome
Posté le 28 février 2023 - 13:46
Bonjour, j'obtiens le même résultat que vous, avez-vous trouvé la solution? Est-ce que PC Soft vous répondu?

Merci,