【发布时间】:2015-07-24 20:30:23
【问题描述】:
是否可以从 Ruby 运行 VBScript?我有几个脚本可以自动执行 SAP 系统中的一些任务,我目前正在从 Excel 中运行它们。
我想把它移到我的其他模块所在的 Ruby 上。这可能吗?如果可以,我该如何实现?
编辑
更多背景信息:
我正在使用 VBScripts 在某些 SAP 事务中执行一些重复的日常任务。我必须携带一些数据进出 SAP 系统。我已将 VBScripts 集成到 VBA 中,并通过 Excel 运行它们,如有必要,我还会在其中解析数据。我还将一些变量(用户、事务等)传递给脚本。
现在我需要将这部分从 Excel 移动到我的 Ruby 应用程序并在那里触发这些 VBScript,同时收集返回的数据并在 Ruby 应用程序中使用它们。
@nmiranda:我浏览了很多 SCN 资源(也是你提到的那个),但是我不能使用 ES,因为我没有相应的用户级别。另一种选择是使用 RFC 连接到系统并执行任务 (https://github.com/mydoghasworms/nwrfc),但我还没有成功。
所以我想我会尝试如上所述从 Ruby 运行 VBScript。但是,这样做还需要我将这些变量作为参数传递给 VBScript。
例子:
- 运行 ruby 脚本并将参数传递给 VBScript
- 运行 VBScript
- 在系统中执行任务
- 离开系统
- 解析从系统接收到的数据(并非总是如此)
到目前为止,我已经搜索了执行此操作的可能性,但我没有找到以下答案中提到的资源。另外我对这方面的了解非常有限,所以在这里问了。
现在我已经尝试了下面的建议并且它有效:)
require 'open3'
stdin, stdout, stderr = Open3.popen3('cscript my_script.vbs')
我调用上面的脚本,它会在已经打开的系统中执行任务。
这会是最好的方法吗?而且,是否可以将参数传递给 VBScript?
我是这样传递参数的:
require 'open3'
stdin, stdout, stderr = Open3.popen3('cscript my_script.vbs 0001')
然后在我的 VBScript 中像这样捕获它们:
WScript.Arguments(0)
这是正确的方法吗?它似乎有效,我只需要确认...
问候
塞巴
【问题讨论】:
-
您想运行调用 SAP 函数的 VBScript?直接从 Ruby 调用 SAP 功能模块不是更好吗?在 SCN 中找到此链接:scn.sap.com/docs/DOC-18389。检查它是否有帮助。
-
欢迎来到 Stack Overflow。你试过什么?有很多方法可以运行子 shell 和命令,因此将它们全部列出将超出 SO 的范围。相反,请告诉我们您的尝试,我们会帮助您解决问题。
-
请看上面的编辑。