2

私はABAPオブジェクトを学んでいます。パックされた数値型を返すオブジェクト メソッドが必要です。私は最終的にそれを機能させましたが、それが正しい方法であるかどうかはわかりません.オンラインで見つけることができない詳細な説明が必要です.

整数の場合、正常に機能します。

METHODS: getamount RETURNING VALUE(r) TYPE i,

パックされた数の場合、それはしません:

METHODS: getamount RETURNING VALUE(r) TYPE p,

エラー: RETURNING パラメータの型を完全に指定する必要があります

METHODS: getamount RETURNING VALUE(r) TYPE p LENGTH 10 DECIMALS 3,

エラー: RETURNING パラメータの型を完全に指定する必要があります

(1)p型で動作させる方法はありますか?

私はそれを使用して動作させましたdec5_2

getamount RETURNING VALUE(r) TYPE dec5_2

(2) それは正しい代替案ですか? 類似のタイプのリストはありますか?

また、私はこの解決策を見つけましたが、私にはうまくいきません:

CLASS lcl_rowinvoice DEFINITION.
  PUBLIC SECTION.
    METHODS:
      getamount RETURNING VALUE(r) TYPE typeprice,  
  PRIVATE SECTION.
    TYPES:
      typeprice TYPE p LENGTH 10 DECIMALS 2,

不明なタイプ「TYPEPRICE」。

(3) このソリューションを機能させる方法はありますか?

4

2 に答える 2

3

戻りパラメーターは完全に型指定する必要があり、p はジェネリック型であるため、次の 3 つのオプションがあります。

  1. データ ディクショナリから定義済みのデータ要素を使用する (SE11 => データ要素)

 METHODS getamount RETURNING value(r) TYPE netwr.
  1. ローカル クラスの PUBLIC セクションで定義されている型を使用する

TYPES: lty_p TYPE p LENGTH 15 DECIMALS 2.
METHODS getamount RETURNING value(r) TYPE lty_p.
  1. 完全に事前定義されたタイプ (decfloat16 または decfloat34) を使用する

METHODS getamount RETURNING value(r) TYPE decfloat16.
于 2018-06-05T09:50:01.917 に答える