Office 365 Zugriff auf SAP Daten per VBA

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
3 Beiträge Seite 1 von 1
3 Beiträge Seite 1 von 1

Office 365 Zugriff auf SAP Daten per VBA

Beitrag von Volker Bunge (ForumUser / 2 / 1 / 0 ) » 7. Mär 2019 09:02

Hallo zusammen,
ich habe ein großes Problem mit VBA und den Zugriff auf die Daten von SAP Geschäftspartnern.

Habe gestern mit einem fähigen SAP-Berater fast 3 Stunden versucht, auf die Adresse und Bankdaten eines Geschäftspartners (GP) zu kommen.
Ich arbeitet in der Energieversorgerwirtschaft mit ISU. Das Problem fing mit der Umstellung der Rechner von Windows 7 auf Windows 10 und das SAP GUI 740 auf 750 (Dateiversion 7500.2.8.1152, Build 188 1633, Patch-Level 8) an. Alle alten Rechner konnten noch mit der alten Methode super auf die Daten zugreifen (Es wurden mittlerweile alle in Frage kommenden Rechner umgestellt.)

Der Berater meinte, das der folgende Code eigentlich funktionieren muss, es aber nicht tut.
Wir haben gestern mit einer Access-Datenbank gearbeitet, die ich zum Testen diverser Daten einmal erstellt habe. Später sollen diese Aufrufe auch mit Word und Excel funktionieren. Ach so, um Zuge der Umstellung wurde von Office 2010 auf 2016/365 umgestellt.

Hier mal der Code der Probleme macht.

Code: Alles auswählen.

Public Function GPAdresse_zuweisen(Optional AnzeigeVorherlöschen As Boolean = True)
    ' Funktionsbaustein lesen
    Call SAP_Anmelden(SAPGeschäftspartner)
    
    Call Variablen_Löschen(Geschäftspartner)
    
    ' Prüfen, ob überhaupt eine Verbindung besteht.
    If boolLogon = False Then
        MsgBox "Bitte erst im SAP Anmelden"
        Exit Function
    End If
     
'    Call Vertragskonto_Daten_Lesen("00" & GP_Nr)
    
    Dim GPAdr As GP_Adresse ' legt die
    
    ' Für die Adressdaten
    Dim oBusinessPartner As Object ' Legt den Geschäftspartner fest

    Dim oPartnerData As Object ' Legt den Geschäftspartner fest
'    Dim oBVE_Kreditinstitut As Object ' greift auf die BVE_Kreditinstitutsliste zu
    Dim oBusinessPartnerAdressData As Object ' Aufrufvariable für die Adressdaten des GP's
    Dim oBusinessPartnerCentralData As Object '
    Dim oBusinessPartnerCentraldataPersonData As Object ' Für die Kundendaten einer Person
    Dim oBusinessPartnerCentraldataOrganizationData As Object ' Für die Kundendaten einer Organisation
    Dim oBusinessPartnerCentraldataGroupData As Object ' Für die Kundendaten einer Gruppe
    
    Dim oAdressbemerkung As Object ' Aufrufvariable für die Adressbemerkung des GP's
    Dim oTelefonnr As Object ' Für die Telefonnr.
    Dim oFaxNr As Object ' Für die Faxnr.
    
    Dim StandardAddressGuid As String ' Beinhaltet die AdressGUID-Nr., die die Adresse eindeutig identifiziert
            
    Dim oPartner   As Object
    Dim oTAddress  As Object
    Dim oTBankData As Object
        
    ' Den generellen Zugriff auf den Geschäftspartner setzen
    ' Objekt : Bodo Zugriff erlauben
    Dim oPartnerNumber As String
    oPartnerNumber = "Partner:= 00" & GP_Nr
    ' *************************************
   ' Diese nächste Zeile liefert kein Ergebnis und somit können die nachfolgenden Zeilen logischerweise auch nichts liefern
    ' *************************************
    Set oBusinessPartner = oBAPICtrl.GetSAPObject("UtilBusinessPartner", oPartnerNumber)
    
    ' Den Verwies auf die Ergebnisliste setzen
    ' Export-Parameter (Ergebnisliste)
    Set oPartnerData = oBAPICtrl.DimAs(oBusinessPartner, "GetDetail", "PartnerData") ' Partnerdaten
    Set oTAddress = oBAPICtrl.DimAs(oBusinessPartner, "GetDetail", "TAddress") ' Adressdaten
    Set oTBankData = oBAPICtrl.DimAs(oBusinessPartner, "GetDetail", "TBankData") ' Bankdaten
    
    ' SAP Daten tatsächlich abrufen
    oBusinessPartner.GetDetail PartnerData:=oPartnerData, TAddress:=oTAddres, TBankData:=oTBankData
    
    Exit Function
End Function
Und hier mal der Aufruf, den wir gestern hinbekommen haben und somit den Namen des GP ermitteln können. Über eine entsprechende Auswertung der Daten kann ich hier noch herausbekommen, um welchen Geschäftspartnertyp es sich handelt (Einzelperson, Gruppe, Organisation). Aber leider fehlen mir halt die Adresse und die Bankdaten des GP.

Code: Alles auswählen.

    ' Den generellen Zugriff auf den Geschäftspartner setzen
    Set oBusinessPartner = oBAPICtrl.GetSAPObject("UtilBusinessPartner")
            
    ' Für die spätere Filterung den Verweis setzen
    ' Import-Parameter (Filter)
    Set oTPartner = oBAPICtrl.DimAs(oBusinessPartner, "GetList", "TPartner") ' Geschäftspartner
    
    ' Den Verwies auf die Ergebnisliste setzen
    ' Export-Parameter (Ergebnisliste)
    Set oTList = oBAPICtrl.DimAs(oBusinessPartner, "GetList", "TList") ' Endergebnis
    
    ' Die Filterwerte für Geschäftspartner einstellen
    Set oRangeRow = oTPartner.ROWs.Add ' Geschäftspartner
    oRangeRow("SIGN_ISU") = "I" ' Inkludieren (einschließen)
    oRangeRow("OPTION_ISU") = "EQ" ' Equals (Gleich)
    oRangeRow("LOW_ISU") = "00" & GP_Nr ' GP-Nr incl, führende Nullen
    
    ' SAP Daten tatsächlich abrufen
    oBusinessPartner.GetList TPartner:=oTPartner, TList:=oTList
       
    ' Die Daten in die entsprechenden Variablen schreiben
    ' ES gibt imer nur eine Zeile, da ich ja nur 1 GP abfrage
    Dim oZeile As Object
    For Each oZeile In oTList.ROWs
      Msgbox oZeile("NAME_LAST")
      Msgbox oZeile("NAME_FIRST")
  Next
(Der Code ist ggf. noch aufzuräumen und die Kommentare sind auch noch so nicht richtig, aber all das kommt noch, wenn es läuft.)

Die beiden Codeblöcke bringen keine Fehlermeldungen und funktionieren "grundsätzlich" eigentlich. Der zweite Codeblock liefert mir den Vorname und Nachname einwandfrei zurück. Nur der erste Codeblock liefert kein Ergebnis in den einzelnen Variablen.
Es wäre echt super, wenn mir jemand von Euch helfen könnte.
Vielen Dank schon einmal für Eure Hilfe
Volker


Re: Office 365 Zugriff auf SAP Daten per VBA

Beitrag von Tron (Top Expert / 1013 / 8 / 204 ) » 7. Mär 2019 14:03

Moin.
Mit SAPGUI 750 gingen ein paar grundlegende Änderungen für RFC Zufgriffe einher.
Deshalb habe ich auch meine VBA Programme anpassen müssen.
Siehe https://abapforum.com/forum/viewtopic.php?f=18&t=23202
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag (Insgesamt 2):
ewxVolker Bunge

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Office 365 Zugriff auf SAP Daten per VBA

Beitrag von Volker Bunge (ForumUser / 2 / 1 / 0 ) » 11. Mär 2019 07:14

Hallo Jens,

vielen Dank erst einmal für die schnelle Rückmeldung.

Könntest Du mir mal kurz erklären, was der Unterschied zwischen 740 und 750 ist bzw. wie Dein Bsp. arbeitet?

Wenn ich das richtig sehe, logst Du Dich als erstes ein, danach rufst Du die Tabelle T001W auf und legst dort ein Werk (8000) als Filter fest. Die Spalten "Werks" und "Name1" sind dann die Spalten, die später durchlaufen bzw. angezeigt werden.

Gleiches machst Du dann mit der Tabelle MSEG.

Was ich noch nicht verstehe, warum Du die Subs jeweils 3 Mal aufrufst?

Wie ich in meinem Beispiel gezeigt habe, will ich die Daten des Geschäftspartners haben (hier speziell die Adresse und die Bankdaten.

Was für einen Zugriffsfehler mache ich in meinem Code bzw. woran liegt es, dass ich keine Daten mehr abfragen kann?

Wäre schön, wenn Du oder jemand anderes mir bei meinem Problem helfen könnstes.

Vielen Dank

Volker

Seite 1 von 1

Aktuelle Forenbeiträge

Quellcodeänderung mehrerer Programme
vor 9 Minuten von Tron 11 / 307
BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
Format xx oder xx-xx oder xx-xx-xx
vor 2 Tagen von black_adept 5 / 195
Salv Table - Layouts speichern
vor 2 Tagen von ewx 2 / 81
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41

Unbeantwortete Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
Gestern von SweetRuedi 1 / 55
WCOCO: Gruppe für Betragsfelder 0S01
vor 3 Tagen von SAP_ENTWICKLER 1 / 41
CAS-Nr.: Chemical Abstracs Service
vor 5 Tagen von SAP_ENTWICKLER 1 / 76
Interaktives Skript, Rolle IC-Manager
vor einer Woche von erubadhron86 1 / 118
Wie findet man das Rahmenprogramm eines Infosets?
vor einer Woche von DeathAndPain 1 / 142