SAP Jobsuche bei DV-Treff
luci
  • luci
  • SAP Forum - Neuling Thema Starter
vor 12 Jahre
Hallo,

ich möchte auf Dokumente die im SAP liegen extern von einer Java-Applikation(mit JCo 3.0.8) aus zugreifen können. Ich habe dazu bisher nur die Funktion BAPI_DOCUMENT_CHECKOUTVIEW2 gefunden, leider benötigt die scheinbar eine SAPGUI,da ich den Parameter "DestinationDataProvider.JCO_USE_SAPGUI" aktivieren muss damit er überhaupt etwas macht.

Das Java Programm wird als Server laufen und deswegen wäre die Sache mit der SAPGUI äußerst ungünstig.

Gibt ein einen anderen Weg auf Dokumente zuzugreifen, vllt sogar durch direkten Zugriff.

Alpmann
vor 11 Jahre
Hallo luci,

ich stand auch vor der Herausforderung Dokumente mittels des Funktionsbausteines BAPI_DOCUMENT_CHECKOUTVIEW2 aus dem SAP zu holen. Da gibt da viel zu berücksichtigen. Dazu gleich mehr.

Ich habe dieses aber mittels Visual Basic (Access) gelöst:

- Access 2000 / SAP GUI 7.30 / Windows XP

- Access 2013 Runtime / SAP GUI 7.20 / Windows Server 2008 R2

- Access 2000 Runtime / SAP GUI 7.20 / Windows Server 2008 R2

Wichtig ist, das die Umgebungsvariable "Path" den Pfad des SAP-GUI’s enthalten muss (wegen Zugriff auf sapftp;saphttp) - zum Beispiel: "C:\Programme\SAP\FrontEnd\SAPgui"

Wenn diese Variable nicht den Pfad des SAP-GUI enthält, dann können die Programme sapftp und saphttp nicht gestartet werden, die die Übertragung aus dem Content-Server durchführen.

Das Ausführen der Dateien sapftp und saphttp muss erlaubt werden. Die Suche hiernach hat bei mir am meisten Zeit beansprucht. Dazu werden die folgenden Anweisungen benötigt.

Private Const RAccess As String = " "

Private Declare Function RfcAllowStartProgram Lib "librfc32" (ByVal RAccess As String) As Integer

Zu guter letzt hier die Funktion, die aus dem Content-Server die Datei holt. Die entsprechenden Rechte für den User, der angemeldet wird, müssen natürlich vorhanden sein.

Function Dokument_aus_Content_Server_kopieren()

Dim ReturnCode As Variant

Dim Rückgabe As Variant

ReturnCode = RfcAllowStartProgram("sapftp;saphttp")

Dim RFC_DOC_lesen As Object

Dim RFC_DOC_lesen_BAPI_DOC_FILES2 As Object

Dim RFC_DOC_lesen_RETURN As Object

' hier werden nur die SAP-Anmeldedaten in globale Variablen

' geholt

Rückgabe = get_SAP_Daten_Anmeldung()

' ab hier Dokumente aus dem Content Server holen

' via RFC

' im SAP Transaktion CV03N - Dokumente anzeigen

Set functionCtrl = CreateObject("SAP.Functions")

Set SapConnection = functionCtrl.Connection

SapConnection.CLIENT = SAP_Client

SapConnection.User = SAP_User

SapConnection.Password = SAP_User_Passwort

SapConnection.Language = SAP_Sprache

SapConnection.HostName = SAP_Host

SapConnection.SystemNumber = SAP_SystemNumber

SapConnection.tracelevel = 0

If Not SapConnection.Logon(0, True) Then

MsgBox "Logon failed !!"

Else

MsgBox "Logon erfolgreich!!"

End If

Set RFC_DOC_lesen = functionCtrl.Add("BAPI_DOCUMENT_CHECKOUTVIEW2")

Set RFC_DOC_lesen_BAPI_DOC_FILES2 = RFC_DOC_lesen.Tables("DOCUMENTFILES")

Set RFC_DOC_lesen_RETURN = RFC_DOC_lesen.Imports("BAPIRET2")

RFC_DOC_lesen.exports("DOCUMENTNUMBER") = "0000000000000010000011897" ' Dokumentnummer

RFC_DOC_lesen.exports("DOCUMENTTYPE") = "Q11" ' Dokumentenart

RFC_DOC_lesen.exports("GETSTRUCTURE") = "1" ' Dokumentenstruktur

RFC_DOC_lesen.exports("DOCUMENTPART") = "000" ' Dokumentenstruktur

RFC_DOC_lesen.exports("DOCUMENTVERSION") = "00" ' Dokumentenstruktur

RFC_DOC_lesen.exports("GETCOMPONENTS") = "X" ' Dokumentenstruktur

RFC_DOC_lesen.exports("ORIGINALPATH") = "c:\" ' Dokumentenstruktur

RFC_DOC_lesen.exports("GETHEADER") = "X" ' Kopfdokument auschecken

If RFC_DOC_lesen.CALL = True Then

Debug.Print "Datei: " & RFC_DOC_lesen_BAPI_DOC_FILES2.rows(1)(11)

Else

MsgBox "ERROR CALLING SAP REMOTE FUNCTION CALL"

End If

SapConnection.Logoff

End Function

Im Direktbereich in Access steht folgendes:

Datei: c:\_AN44201.pdf

Vorhandene Dateien werden überschrieben.

Da ich diese Antwort erst ca. ein Jahr nach deiner Frage reinstelle, denke ich, dass ich anderen hier mehr helfe, als dir, da du wahrscheinlich eine andere Lösung gefunden hast, oder das Projekt eingestampft hast.

Mit freunlichen Grüßen

Matthias Alpmann