3

私はJAVAに慣れているため、このコードをABAPで記述するのに問題があります。

2つのパラメーターを持つメソッドを呼び出します。保存できるように、数値を返す必要があります。

私が欲しいのは

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.

しかし、私はこのコードに迷い、値を返す方法とそれを別の変数に保存する方法がわかりません。

4

1 に答える 1

6

これが、戻りパラメーターを使用してメソッドを宣言する方法です。

METHODS generate_num 
  IMPORTING
    thisNum TYPE i   
    newdigit TYPE digit_number_value
  RETURNING
    value(result) TYPE i.

メソッドは1つのパラメーターしか持つことができずRETURNING、そのパラメーターは常に値で渡される必要があることに注意してください。

メソッドの実装では、戻りパラメーターとして宣言したローカル変数を変更して、戻り値を設定します。

METHOD generate_num.

  IF thisnum < 0.
    result = thisnum * 10 - newdigit.
  ELSE.
    result = thisnum * 10 + newdigit.
  ENDIF.     

ENDMETHOD.

戻り値はresult、メソッドが戻ったときの値になります。EXPORTINGパラメータと同じように。

メソッドを呼び出すときは、熟練したABAP開発者が慣れている構文に似た従来のCALL構文を使用できます。

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 ).
于 2012-09-07T12:07:37.537 に答える