我已经习惯了JAVA,因此在ABAP中编写这些代码时遇到了问题。
我用两个参数调用一个方法。它应该返回一个数字,这样我就可以保存它。
我想要的是
int result = generate_num(40,5);
int generate_num(int thisNum, int newDigit){
return thisNum * 10 + newDigit;
}
到目前为止,我在ABAP中尝试过这种方法。
//声明方法
methods GENERATE_NUM
importing
!thisNum type I
!NEWDIGIT type DIGIT_NUMBER_VALUE.
//调用方法
CALL METHOD me->Generate_NUM
EXPORTING
thisNUm = 40
newDigit = 5.
//方法本身
METHOD GENERATE_NUM.
DATA: newNum type i.
If thisnum < 0.
newNum = thisnum * 10 - newdigit.
Else.
newNum = thisnum * 10 + newdigit.
ENDIF.
RETURNING VALUE(newNum).
ENDMETHOD.
但我迷失在这段代码中,不知道如何返回值以及如何将其保存在另一个变量中。
这就是用返回参数声明方法的方法:
METHODS generate_num
IMPORTING
thisNum TYPE i
newdigit TYPE digit_number_value
RETURNING
value(result) TYPE i.
请注意,一个方法只能有一个RETURNING
参数,并且该参数必须始终按值传递。
在方法实现中,通过修改声明为返回参数的局部变量来设置返回值:
METHOD generate_num.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
当方法返回时,返回的值将是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.
或者更像您可能习惯的Java语法的函数语法:
lv_foo = me->generate_num( thisNUm = 40 newDigit = 5).
如果该方法不仅具有导入参数,而且还具有更改或导出参数,则语法如下所示:
lv_foo = me->generate_num(
EXPORTING thisNUm = 40
newDigit = 5
CHANGING cv_bar = lv_bar ).