对不起,这个基本的ABAP问题.在ABAP中调用方法的不同方法有哪些?他们的"官方"名字是什么?我听说过执行,方法调用和内部/内联方法调用.
我猜,Perform使用PERFORM关键字和方法调用CALL METHOD语法.但什么是"内部"或"内联方法调用"?
Jag*_*ger 10
这些是内联方法调用的可能性.
如果您正在调用所谓的函数方法,它只有IMPORTING参数和可选的一个RETURN参数,您可以像这样调用它.
CLASS lcl_test DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
func_meth
IMPORTING
i_param TYPE i
RETURNING
VALUE(r_res) TYPE char1.
ENDCLASS.
l_res = lcl_test=>func_meth( 1 ).
* you could also call it like this
l_res = lcl_test=>func_meth( i_param = 1 ).
* also this variant is possible
l_res = lcl_test=>func_meth( EXPORTING i_param = 1 ).
* the traditional CALL METHOD syntax would be like this
CALL METHOD lcl_test=>func_meth
EXPORTING
i_param = 1
RECEIVING
r_res = l_res.
Run Code Online (Sandbox Code Playgroud)
如果有多个IMPORTING参数,则必须指定参数的名称.
CLASS lcl_test DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
func_meth
IMPORTING
i_param1 TYPE i
i_param2 TYPE i
RETURNING
VALUE(r_res) TYPE char1.
ENDCLASS.
l_res = lcl_test=>func_meth(
i_param1 = 1
i_param2 = 2
).
Run Code Online (Sandbox Code Playgroud)
如果方法中有EXPORTING或CHANGING参数,则仍然可以进行内联调用,但必须明确指定参数类别.
CLASS lcl_test DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
func_meth
IMPORTING
i_param TYPE i
EXPORTING
e_param TYPE c
CHANGING
c_param TYPE n.
ENDCLASS.
lcl_test=>func_meth(
EXPORTING
i_param = 1
IMPORTING
e_param = l_param
CHANGING
c_param = l_paramc
).
Run Code Online (Sandbox Code Playgroud)
你把很多事情搞混了。让我们友善地从一些基础知识开始:
方法是类的成员函数的正式名称,意味着如果你谈论方法,你就谈论面向对象编程(OOP)。方法调用变体的方式大约有两三种,至少在abap中是这样。如果您决定开发以下 OO 范式,那么在您向我保证之后,让我们稍后详细了解这一点。你应该。
函数只是一个函数,一小段(或大)代码,可以从多个调用者中调用,以便重用。它不是 OOP 范式,自编程开始以来就存在。然而,在 abap 中它有一个稍微“更大”的定义,如果你答应我,让我们详细讨论一下它。如果您想开发 ABAP,您应该这样做。
履行 ?“Perform”是一个 abap 关键字,用于调用表单例程。表单例程是真正的老式函数,相当于 abap 中的函数,与编程刚开始时的美好旧时代的函数最相似。小块可重用代码,可以从您的程序中的任何地方调用,但有时从其他地方调用(这对您来说太远了)。
因此,如果您已经混淆了这三个(或这三个中的两个),那么您根本就没有处于一个好的位置来谈论内部或内联。抱歉,但事实就是如此。这并无冒犯之处。
你曾经用另一种语言开发过吗?