[56012] in SAPr3-news

home help back first fref pref prev next nref lref last post

Re: SAP-Transaktion aus VBA aufrufen

daemon@ATHENA.MIT.EDU (Christian Zalto)
Fri Nov 18 15:16:19 2005

To: sapr3-news@mit.edu
Date: Fri, 18 Nov 2005 21:17:15 +0100
From: "Christian Zalto" <zalto@t-online.de>
Message-ID: <dllcnd$scr$01$1@news.t-online.com>

"Markus Lutz" <markus.lutz@unterland.at> schrieb:
> Ich möchte gerne aus Visual Basic bzw. VBA eine SAP-Transaktion
> aufrufen (z.B. VA03) und dabei bestimmte Daten (z.B. Auftragsnummer)
> mitgeben.
>
Ja, man kann eine Transaktion mittels RFC_CALL_TRANSACTION
aus Excel aufrufen. Die Datenübergabe erfolgt dann nach Art eines
Batch-Input, den man mit "/BDA" abbricht und dadurch den SAPGUI
mitten in der Transaktion einblendet. Code-Beispiel für R/3 4.6c, die
Belegnummer VBELN ist entsprechend anzupassen.

Sub Call_VA03()
'How to execute a transaction in SAP R/3 and jump into SAPGUI
'This script was developed using R/3 Release 4.6c
'Christian Zalto zalto@-tonline.de
Dim FunctionCtrl As Object
Dim BdcTable As Object
Dim conn As Object
Dim RfcCallTransaction As Object

'sales document to be displayed
Const VBELN = "20000205"

Set FunctionCtrl = CreateObject("SAP.Functions")
Set conn = FunctionCtrl.Connection

'needed for frontend dialog
conn.RfcWithDialog = True

'log on with logon dialog
If Not conn.Logon(0, False) Then
  MsgBox "Logon not succesful."
  Set conn = Nothing
  Exit Sub
End If

'call transaction VA03
Set RfcCallTransaction = FunctionCtrl.Add("RFC_CALL_TRANSACTION")
RfcCallTransaction.Exports("TRANCODE") = "VA03"
RfcCallTransaction.Exports("UPDMODE") = "S"
Set BdcTable = RfcCallTransaction.Tables("BDCTABLE")

'enter data for first screen
add_bdcdata BdcTable, "SAPMV45A", "102", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "VBAK-VBELN"
add_bdcdata BdcTable, "", "", "", "VBAK-VBELN", VBELN
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/00"

'stop and display SAPGUI using /BDA
add_bdcdata BdcTable, "SAPMV45A", "4001", "X", "", ""
add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "/BDA"

RfcCallTransaction.Call

'logoff and free objects
conn.Logoff
Set conn = Nothing
End Sub

Public Sub add_bdcdata(BdcTable As Object, _
program As String, dynpro As String, dynbegin As String, _
fnam As String, fval As String)
    BdcTable.Rows.Add
    BdcTable.Value(BdcTable.Rows.Count, "PROGRAM") = program
    BdcTable.Value(BdcTable.Rows.Count, "DYNPRO") = dynpro
    BdcTable.Value(BdcTable.Rows.Count, "DYNBEGIN") = dynbegin
    BdcTable.Value(BdcTable.Rows.Count, "FNAM") = fnam
    BdcTable.Value(BdcTable.Rows.Count, "FVAL") = fval
End Sub

-- 
Mit freundlichen Grüßen,
Christian Zalto 



home help back first fref pref prev next nref lref last post