kk-*_*v11 4 java methods abap return bsp
我习惯了JAVA,因此无法在ABAP中编写此代码。
我用两个参数调用一个方法。它应该返回一个数字,所以我可以保存它。
我想要的是..
int result = generate_num(40,5);
int generate_num(int thisNum, int newDigit){
return thisNum * 10 + newDigit;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经在ABAP中进行了尝试。
//声明的方法
methods GENERATE_NUM
importing
!thisNum type I
!NEWDIGIT type DIGIT_NUMBER_VALUE.
Run Code Online (Sandbox Code Playgroud)
//调用方法
CALL METHOD me->Generate_NUM
EXPORTING
thisNUm = 40
newDigit = 5.
Run Code Online (Sandbox Code Playgroud)
//方法本身
METHOD GENERATE_NUM.
DATA: newNum type i.
If thisnum < 0.
newNum = thisnum * 10 - newdigit.
Else.
newNum = thisnum * 10 + newdigit.
ENDIF.
RETURNING VALUE(newNum).
ENDMETHOD.
Run Code Online (Sandbox Code Playgroud)
但是我迷上了这段代码,不知道如何返回值以及如何将其保存在另一个变量中。
这就是您声明带有返回参数的方法的方式:
METHODS generate_num
IMPORTING
thisNum TYPE i
newdigit TYPE digit_number_value
RETURNING
value(result) TYPE i.
Run Code Online (Sandbox Code Playgroud)
请注意,一个方法只能有一个RETURNING
参数,并且该参数必须始终按值传递。
在方法实现中,您可以通过修改声明为返回参数的局部变量来设置返回值:
METHOD generate_num.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
Run Code Online (Sandbox Code Playgroud)
返回的值将是result
方法返回时的值。就像使用EXPORTING
参数一样。
调用方法时,您可以使用经典的CALL语法,而该语法更像是经验丰富的ABAP开发人员用来:
DATA lv_foo TYPE i. " the variable you want to store the return value in
CALL METHOD me->generate_num
EXPORTING
thisNUm = 40
newDigit = 5
RECEIVING
result = lv_foo.
Run Code Online (Sandbox Code Playgroud)
或类似于Java语法的函数语法,您可能会习惯于:
lv_foo = me->generate_num( thisNUm = 40 newDigit = 5).
Run Code Online (Sandbox Code Playgroud)
如果该方法不仅具有导入参数,而且具有更改或导出参数,则语法如下所示:
lv_foo = me->generate_num(
EXPORTING thisNUm = 40
newDigit = 5
CHANGING cv_bar = lv_bar ).
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5092 次 |
最近记录: |