要从SAP TC FBL5N导出的Vbs

时间:2015-03-18 15:58:36

标签: vbscript sap

我录制了一个脚本,使“另存为”对话框弹出。

但是我不能使用任何命令,如sendkey。

我需要一个代码来提供文件路径和文件名。

到目前为止,我有以下代码:(来自SAP脚本录制和播放)

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
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
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/lbl[30,2]").setFocus
session.findById("wnd[0]/usr/lbl[30,2]").caretPosition = 25
session.findById("wnd[0]").sendVKey 16

谢谢。

大卫

2 个答案:

答案 0 :(得分:0)

我不确定tcode FBL5N是如何工作的,但我使用此代码在某些基础交易中导出结果。它可能适用于您的情况,请尝试。



session.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[2]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\folder1\folder2"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "filename.txt"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 13
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 2
session.findById("wnd[1]/tbar[0]/btn[11]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press




答案 1 :(得分:0)

请参阅我的帖子"从SAP保存PDF"我在哪里发布了一个处理另存为窗口的解决方案。如果适用于SAP和其他Windows,因为它基于WinAPI。

基本上,您需要执行以下4个步骤:

  1. 将vbs脚本转换为VBA(您将在excel中运行)。不要包含触发保存为窗口的行。从:

    开始

    子脚本()  Dim SapAPP As Variant  Dim i As Integer  设置SapGuiAuto = GetObject(" SAPGUI")  设置SapAPP = SapGuiAuto.GetScriptingEngine  设置连接= SapAPP.Children(0)  设置Session = Connection.Children(0)

  2. 2.仅使用触发“另存为”窗口的行创建新脚本。例如:

    If Not IsObject(application) Then
       Set SapGuiAuto  = GetObject("SAPGUI")
       Set application = SapGuiAuto.GetScriptingEngine
    End If
    If Not IsObject(connection) Then
       Set connection = application.Children(0)
    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
    session.findById("wnd[0]").sendVKey 16
    

    3.要求VBA运行此VB脚本

    Shell "wscript insert_path_here", vbNormalFocus
    

    4.处理另存为窗口(如我的帖子中所述)。

    这对我来说在另一个SAP菜单中起作用,但FBL5n应该完全相同。

    最佳,