如何定义Returning参数



我已经习惯了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 ).

相关内容

  • 没有找到相关文章

最新更新