Office 365 Zugriff auf SAP Daten per VBA


Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

Moderatoren: Jan, Steff, SRMler

Office 365 Zugriff auf SAP Daten per VBA

Beitragvon Volker Bunge » 07.03.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
Volker Bunge
ForumUser
 
Beiträge: 2
Registriert: 07.03.2019, 06:12
Dank erhalten: 0 mal
Ich bin: sonstiges

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Office 365 Zugriff auf SAP Daten per VBA

Beitragvon Tron » 07.03.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 viewtopic.php?f=18&t=23202
gruß Jens
<:: 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.

Für diese Nachricht hat Tron 2 Dankeschön bekommen :
ewx, Volker Bunge
Tron
Expert
 
Beiträge: 976
Registriert: 04.08.2007, 21:08
Wohnort: Hamburg
Dank erhalten: 189 mal
Ich bin: Entwickler/in

Re: Office 365 Zugriff auf SAP Daten per VBA

Beitragvon Volker Bunge » 11.03.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
Volker Bunge
ForumUser
 
Beiträge: 2
Registriert: 07.03.2019, 06:12
Dank erhalten: 0 mal
Ich bin: sonstiges


Zurück zu Tips + Tricks & FAQs

  Aktuelle Beiträge   
gelöst Switchen via Radiobutton zwischen Parameter & Select-options
vor 5 Stunden von der_Schwede 2 Antw.
Klasse /SAPSLL/CL_PRCLS_API
vor 9 Stunden von SAP_ENTWICKLER 0 Antw.
SAP Sanbdox Zugriff
vor 10 Stunden von doorconfig 0 Antw.
WF - 'fehlender' Parameter in BO-Methode
vor 11 Stunden von bapimueller 0 Antw.
FS 'WS_UPLOAD' in Klasse umwandeln cl_gui_frontend_services
vor 12 Stunden von L0w-RiDer 0 Antw.

  Ähnliche Beiträge beta
Zugriff auf XML-Document mittels XPATH
23.05.2017, 10:02 von mydoghasworms 3 Antw.
Code-Schnippsel: bel. Daten mittels RTTI bestimmen
04.01.2012, 10:15 von a-dead-trousers 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder