将内部表传递给功能模块
将内部表传递给函数模块遵循与将内部表传递给子例程相同的规则。有两种方法:
通过接口的
tables
部分。这相当于通过 perform 语句的 tables 加法传递它通过接口的
importing
或changing
部分。第一个相当于 perform 语句上的 using ,最后一个相当于 changing 对 perform
若要返回源自函数模块的内部表,请使用下列方法之一:
- 接口的
tables
部分 - 接口的
exporting
部分
通过 TABLES 参数传递内部表
如果使用接口的 tables 部分,则可以将内部表与标题行一起传递。如果它没有标题行,它将自动在函数模块中获取一个标题行。 tables 参数始终通过引用传递。
要使用此方法,请从“函数库初始屏幕”中选择“表参数/异常接口”单选按钮,然后按“更改”按钮。您将看到“表参数/异常”屏幕。在屏幕上半部分的“表参数”列下,键入内部表参数的名称。
如果内部表是结构化类型,则可以在“引用结构”列中键入 DDIC 结构的名称。此处只能输入 DDIC 结构名称。如果未在此处指定 DDIC 结构,则无法访问函数模块中内部表的任何组件。这样做会导致语法错误。
如果内部表不是结构化类型,则可以改为在“引用类型”列中输入 ABAP/4 数据类型。
通过导出/导入和更改传递内部表
如果使用接口的 exporting / importing 或 changing 部分,则只能传递内部表的正文。但是,接口的这些部分使您能够选择是按值(默认值)还是按引用传递内部表体。使用此方法时,必须在“引用类型”列中指定 table 。
CALL FUNCTION 'CONVERT_IBAN_2_BANK_ACCOUNT'
EXPORTING
i_iban = wa_tiban-iban
IMPORTING
e_bank_account = lv_bank_account
e_bank_control_key = lv_control_key
e_bank_country = lv_bank_country
e_bank_number = lv_bank_number
EXCEPTIONS
no_conversion = 1
OTHERS = 2.
调用语法
CALL FUNCTION [PARAMETER-TABLE ptab] [EXCEPTION-TABLE etab].
:通过特殊的内部表 ptab 和 etab 将实际参数分配给功能模块的形式参数,并将值返回给非基于类的异常。
使用参数
PARAMETER-TABLE:用于为被调用函数模块的所有形参分配实参。 ptab 表的数据类型需要参照类型池 ABAP 的表类型 abap_func_parmbind_tab
或行类型 abap_func_parmbind
创建,类型为排序表。 列名称和种类构成了表 ptab 的唯一键。当语句 CALL FUNCTION 被执行时,对于每个非可选的形式参数,表格必须只包含一行。 对于每个可选的形式参数,这一行都是可选的。 表参数列表:
NAME:函数模块的参数名称,类型 char30
KIND:类型为 i,形式参数的类型。 kind 必须包含类型池 ABAP 的以下常量之一的值,如果从调用者角度指定的类型与形参的实际类型不匹配,则会引发可捕获异常
abap_func_exporting
:for input parameters value 10abap_func_importing
:for output parameters value 20abap_func_tables
:for table parameters value 30abap_func_changing
:for input/output parameters value 40
VALUE
:定义类型为REF TO data
,作为指向实际参数的指针。 value 中的引用变量所指向的数据对象被分配给 name 中指定的形参。如果该引用变量类型与 FM 实际参数变量类型不一致,则引发异常CX_SY_DYN_CALL_ILLEGAL_TYPE
EXCEPTION-TABLE
:用于将返回值分配给未标记为异常类的被调用功能模块的异常。 etab 参照类型池 ABAP 的表类型 abap_func_excpbind_tab 或行类型 abap_func_excpbind 创建散列表。 当执行语句 CALL FUNCTION 时,该表可以为功能模块的每个非基于类的异常只包含一行。 表参数列表:NAME: 对于相应异常的名称,或 error_message,或以大写字母指定 OTHERS,,类型 char30
VALUE:类型为 i ,处理 name 中指定的异常后在 sy-subrc 中可用的数值
MESSAGE:定义类型为
REF TO data
- 点赞
- 收藏
- 关注作者
评论(0)