我习惯了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.
在方法实现中,您可以通过修改声明为返回参数的局部变量来设置返回值:
METHOD GENERATE_NUM.
IF thisnum < 0.
result = thisnum * 10 - newdigit.
ELSE.
result = thisnum * 10 + newdigit.
ENDIF.
ENDMETHOD.
调用方法时,您可以使用经典的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).
函数语法只能用于仅具有IMPORTING参数和RETURNING参数的方法.当您有一种使用EXPORTING或CHANGING的方法(允许返回多个值)时,您必须使用CALL METHOD语法.有关如何将函数语法与EXPORTING和CHANGING参数一起使用,请参见Bryan Cain的评论.