Skip to Content
avatar image
Former Member

Running SAP reports from Excel with BAPI

Dear all,

I`m trying to run reports with SE38 directly from Excel but without sucess... The result of report should be download to a .txt file or excel.

Can anyone help?

Thanks!

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

4 Answers

  • avatar image
    Former Member
    Sep 12, 2008 at 01:53 PM

    Just one more sample detail:

    The idea is run report RSUSR000 and have the result in .txt or .xls file.

    Thanks!

    Add comment
    10|10000 characters needed characters exceeded

  • Sep 30, 2008 at 04:01 PM

    Hi Nuno,

    you can't call a transaction directly. You must create an RFC- Function module in that you call

    CALL FUNCTION 'TH_SERVER_LIST'

    TABLES

    LIST = SERVER_LIST.

    and

    CALL FUNCTION 'THUSRINFO' DESTINATION DESTI

    TABLES

    USR_TABL = USR_LISTE

    EXCEPTIONS

    COMMUNICATION_FAILURE = 17 MESSAGE MSG

    SYSTEM_FAILURE = 17 MESSAGE MSG.

    See report RSUSR000

    This new function module you can call via VBA from Excel.

    At first you will need to logon:

    Option Explicit

    Public oconnect As Object

    Public Function Logon(Optional systemid As String) As Boolean

    Dim oConnection As Object

    Logon = True

    Set oconnect = CreateObject("SAP.FUNCTIONS")

    Set oConnection = oconnect.connection

    If Len(systemid) > 0 Then

    oConnection.systemid = systemid

    oConnection.autologon = True

    End If

    On Error GoTo installationerror

    If oConnection.Logon(0, False) = False Then

    MsgBox "Logon error", vbCritical, "Logon Status"

    Logon = False

    Else

    Logon = True

    Application.DisplayStatusBar = True

    Application.StatusBar = "Successfully loged on"

    End If

    Exit Function

    installationerror:

    MsgBox (Err.Description)

    Logon = False

    End Function

    After you logged on you can call your new function module:

    ...

    o_connect.RemoveAll

    Set lo_rfc_get_senarios = o_connect.Add("ISR_CUST_GROUP_GET")

    ' Importing Parameter

    Set loScenGrp = lo_rfc_get_senarios.exports("I_ISRGROUP")

    loScenGrp.value = gd_ScenGroup

    ' Return tables

    Set lo_scenarios = lo_rfc_get_senarios.tables("ET_SCENARIO")

    ' lo_OutMethods -> ET_METHOD_XML

    Set lo_characteristics = lo_rfc_get_senarios.tables("ET_CHARACTERISTICS")

    ' lo_attributes -> ET_ATTRIBUTE_XML

    ' Call fm ISR_CUST_GROUP_GET

    result = lo_rfc_get_senarios.Call

    If result = False Then

    Error = 1

    Exit Function

    End If

    In this example coding I call the function module ISR_CUST_GROUP_GET with parameter I_ISRGROUP and tables ET_SCENARIO and ET_CHARACTERISTICS.

    Kind regards

    Hans-Diteer

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Oct 29, 2008 at 11:42 AM

    Hi Nuno,

    If your reports are in ALV format.

    After displaying the report go to Menu Bar ->List->export->local file->you will see 4 options in that select spread sheet radio button and click enter it will ask the destination or the path where it has to store give the path and save. You can download in .txt html and rich format too.

    Cheers!!

    VEnk@

    Add comment
    10|10000 characters needed characters exceeded

  • Dec 11, 2008 at 09:38 PM

    I've used an SAP GUI script to logon, run a report, and within the report save it to a local drive. It requires that the PC be on, but that's it. Here's the .vbs code:

    'Launch saplogon

    Dim MySAPWorker

    Set MySAPWorker = CreateObject("Sapgui.ScriptingCtrl.1")

    If Not IsObject(application) Then

    Set SapGuiAuto = GetObject("SAPGUI")

    Set application = SapGuiAuto.GetScriptingEngine

    End If

    If Not IsObject(connection) Then

    'Pick system to log onto, based on SAPGUI discription

    Set connection = application.OpenConnection("c) NPS [46C-PRODUCTION]")

    End If

    If Not IsObject(session) Then

    Set session = connection.Children(0)

    End If

    If IsObject(WScript) Then

    WScript.ConnectObject session, "on"

    WScript.ConnectObject application, "on"

    End If

    'logs on as a particular user

    session.findByID("wnd[0]/usr/txtRSYST-MANDT").text = "[Client]"

    session.findByID("wnd[0]/usr/txtRSYST-BNAME").text = "[User Name]"

    session.findByID("wnd[0]/usr/pwdRSYST-BCODE").text = "[User Password]"

    session.findByID("wnd[0]/usr/txtRSYST-LANGU").setFocus

    session.findByID("wnd[0]/usr/txtRSYST-LANGU").caretPosition = 0

    session.findByID("wnd[0]").sendVKey 0

    'If there are multiple logons, we must process the pop-up

    If session.children.count > 1 Then

    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").select

    session.findById("wnd[1]/usr/radMULTI_LOGON_OPT2").setFocus

    session.findById("wnd[1]/tbar[0]/btn[0]").press

    End If

    'Run the transaction - ZDRG2 in this case

    session.findById("wnd[0]").maximize

    session.findById("wnd[0]/tbar[0]/okcd").text = "/nzdrg2"

    session.findById("wnd[0]").sendVKey 0

    session.findById("wnd[0]/tbar[1]/btn[17]").press

    'Use report selection variant PLANNING_BT

    session.findById("wnd[1]/usr/txtV-LOW").text = "PLANNING_BT"

    session.findById("wnd[1]/usr/txtV-LOW").caretPosition = 3

    session.findById("wnd[1]").sendVKey 0

    session.findById("wnd[1]/tbar[0]/btn[8]").press

    session.findById("wnd[0]/usr/chkP_COLOR").selected = false

    session.findById("wnd[0]/usr/chkP_FILDC").selected = true

    'Saves file location using a local path

    session.findById("wnd[0]/usr/ctxtP_FILEC").text = "T:\PLANNING\Respool\Scripting\wkdue3.xls"

    session.findById("wnd[0]/usr/ctxtP_FILEC").setFocus

    session.findById("wnd[0]/usr/ctxtP_FILEC").caretPosition = 30

    session.findById("wnd[0]/tbar[1]/btn[8]").press

    session.findById("wnd[0]/tbar[0]/btn[3]").press

    session.findById("wnd[0]/tbar[0]/btn[3]").press

    'close session

    session.findById("wnd[0]/tbar[0]/okcd").text = "/nex"

    session.findById("wnd[0]").sendVKey 0

    Add comment
    10|10000 characters needed characters exceeded