java-如何在ABAP,SAP中编写此返回方法?

我习惯了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的评论.

上一篇:用脚本创建和恢复 DB2数据库


下一篇:Python 实现三维建模工具(上)