ABAP Call Vbscript Program…

本文介绍了一个ABAP程序如何通过调用WS_EXECUTE函数执行VBS脚本来获取并显示本地计算机的IP地址。VBS脚本使用MSWinsock.Winsock对象来获取IP,并通过MsgBox显示出来。

ABAP Call Vbscript Program…

VBS 程序部分,这里先给一个简单的vbs 程序,存在一个网络共享文件夹内,是供在abap 中调用的。

这个vbs 是显示本地IP的一个小程序,内容如下

eg: IP.VBS

Dim WS

Set WS=CreateObject("MSWinsock.Winsock")

IPAddress=WS.LocalIP

MsgBox "Local IP=" & IPAddress

ABAP 程序部分,通过Call function WS_EXECUTE, 调过程序WSCRIPT.EXE 执行ip.vbs 脚本程序

*-----------------------------------------------------------------------

* Company XXX Company Limited

*

* Report Name: ZZW_CALL_VBS

*

* Author: Lilo.Zhu

*

* Date: 2009.10.20

*-----------------------------------------------------------------------

* Description:

* =============

* This report is to show how to call vbscript in abap

*-----------------------------------------------------------------------

* Change History:

* ===============

* Task# Date By Description

* xxxxx 2009.10.20 wei_zhu Initial Implementation

* Transport Request : ---

*----------------------------------------------------------------------

REPORT ZZW_CALL_VBS .

PARAMETER: P_SVPATH LIKE RLGRAP-FILENAME.

START-OF-SELECTION.

DATA: COMMANDLINE(1000).

COMMANDLINE = P_SVPATH. "Full path of vbs file

CALL FUNCTION 'WS_EXECUTE'

EXPORTING

COMMANDLINE = COMMANDLINE

PROGRAM = 'WSCRIPT.EXE'

EXCEPTIONS

FRONTEND_ERROR = 1

NO_BATCH = 2

PROG_NOT_FOUND = 3

ILLEGAL_OPTION = 4

OTHERS = 5.

IF SY-SUBRC NE 0.

*MESSAGE 'Error.....' TYPE 'I'.

RAISE EXECUTION_FAILED.

ENDIF.

---程序运行结果部分---

clip_image002

<think> 我们注意到用户的新查询是关于ABAP中"call"的使用方法和相关规则。根据ABAP语言,这里的"call"可能指多种调用方式,主要包括: 1. CALL FUNCTION - 调用函数模块 2. CALL METHOD - 调用对象的方法 3. CALL SCREEN - 调用屏幕 4. CALL TRANSACTION - 调用事务代码 5. CALL DIALOG - 调用对话框(较少用) 6. CALL BADI - 调用BADI实现 由于用户没有具体说明,我们将重点介绍最常用的两种:CALL FUNCTION和CALL METHOD。 同时,我们参考了之前的引用,但之前的引用主要关于XML解析和货币转换函数,与当前问题关联不大,因此我们将主要依据ABAP标准语法进行说明。 下面我们将详细说明CALL FUNCTION和CALL METHOD的用法。 </think> ### ABAP 中 `CALL` 的使用方法与规则详解 在 ABAP 中,`CALL` 是用于调用函数模块、方法或事务的核心命令,主要有三种形式: #### 1. **CALL FUNCTION - 调用函数模块** 语法: ```abap CALL FUNCTION '<函数模块名>' EXPORTING param1 = value1 param2 = value2 IMPORTING result = var TABLES itab = internal_table EXCEPTIONS error = 4. ``` **规则**: - 必须声明 `EXPORTING/IMPORTING/TABLES` 参数 - 可通过 `EXCEPTIONS` 捕获错误(如 `error = 4` 表示返回 SY-SUBRC=4) - 示例调用货币转换函数[^2][^3]: ```abap DATA: lv_amount TYPE bapicurr_d. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = 'USD' amount_int = '100000' IMPORTING amount_ext = lv_amount. " 输出格式: 1000.00 ``` #### 2. **CALL METHOD - 调用对象方法** 语法: ```abap CALL METHOD <对象引用>-><方法名> EXPORTING param = value RECEIVING result = var. ``` **规则**: - 需先创建对象实例(`CREATE OBJECT`) - 静态方法调用:`CALL METHOD <类名>=><方法名>` - 支持链式调用:`obj->method1( )->method2( )` #### 3. **CALL TRANSACTION - 调用事务代码** 语法: ```abap CALL TRANSACTION '<TCODE>' WITH AUTHORITY-CHECK AND SKIP FIRST SCREEN. ``` **规则**: - 跳过初始画面用 `AND SKIP FIRST SCREEN` - `WITH AUTHORITY-CHECK` 强制权限检查 - 常用于后台执行事务(如 `CALL TRANSACTION 'VA01'`) #### ⚠️ 关键注意事项 1. **参数匹配**: - `EXPORTING` 参数需与函数/方法定义完全匹配 - 可选参数可省略,但必选参数必须传递值 - 使用 `IS SUPPLIED` 检查可选参数是否传入 2. **错误处理**: - `EXCEPTIONS` 优先级高于 `RAISE` 异常 - 推荐用 `TRY...CATCH` 替代 `EXCEPTIONS`(面向对象场景) 3. **性能优化**: - 批量处理时用 `TABLES` 代替单条循环调用 - 使用 `RFC` 前缀函数进行远程调用(如 `RFC_READ_TABLE`) 4. **调试技巧**: - 在 `CALL` 语句前设断点 `/H` - 使用 `SYSTEM-CALL` 跟踪内核函数(需授权) > **最佳实践**: > - 函数调用优先使用 `CALL FUNCTION`(兼容性强) > - 面向对象场景用 `CALL METHOD`(支持多态) > - 事务调用后需检查 `SY-SUBRC`[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值