5

やり方を知りたい

  1. 桁のグループ化

たとえば、3000000 ( 300 万) のようなお金の価値がある場合、画面に 3.000.000 を印刷したい (最後の文字から 3 文字ごとにドットがあります)。

  1. 値の前のゼロを削除

テーブルから値を選択して画面に出力すると、値は自動的にゼロで埋められます1290000129

4

4 に答える 4

6

このWRITEステートメントでは、通貨を指定できます。例:

DATA price TYPE p DECIMALS 2.
price = '3000000'.
WRITE: / price CURRENCY 'USD'.

これは数値自体を解釈するのではなく、指定した通貨に応じて特定の位置にコンマとドットを追加するだけであることに注意してください。したがって、値が の整数があり、3000000それを通貨で書き込んだ場合USD、結果は になります30.000,00

WRITEこのステートメント以外にも多くのオプションがあるため、ステートメントの F1 ヘルプ情報を読むことをお勧めします。

--

先行ゼロの削除は、変換ルーチンを使用して行われます。はCONVERSION_EXIT_ALPHA_INPUT先行ゼロを追加CONVERSION_EXIT_ALPHA_OUTPUTし、それらを削除します。これらのルーチンをディクショナリのドメインに追加できるため、変換は自動的に行われます。たとえば、次のようなMATNRタイプです。

DATA matnr TYPE matnr.
matnr = '0000129'.
WRITE: / matnr.

129ドメインMATNRには変換ルーチンが指定されているため、これが出力されます。

これを持たない型の場合、例えば:

DATA value(7) TYPE n.
value = '0000129'.
WRITE: / value.

出力は になります0000129CONVERSION_EXIT_ALPHA_OUTPUTルーチンを呼び出して、先頭にゼロを付けずに出力を得ることができます。

DATA value(7) TYPE n.
value = '0000129'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = value
  IMPORTING
    output = value.
WRITE: / value.
于 2011-10-23T13:27:15.343 に答える
2

WRITEステートメントによってトリガーされる数値型の出力変換は、ユーザーマスターデータのプロパティによって制御されることにも注意してください。そこでは、小数点と桁のグループ化を構成する必要があります。

これは、SU01 や SU01D などのユーザーマスタートランザクションで確認できます。

于 2011-12-14T17:55:13.263 に答える
1

ゼロ パディングを削除するには、NO-ZERO ステートメントを使用します。桁区切り記号については、ABAP が P 型の値を出力する標準的な方法であるため、問題はありません。サンプル コードを次に示します。

REPORT  ZZZ.

DATA:
  g_n TYPE n LENGTH 10 VALUE '129',
  g_p TYPE p LENGTH 12 DECIMALS 2 VALUE '3000000'.

START-OF-SELECTION.
  WRITE /: g_n, g_p.
  WRITE /: g_n NO-ZERO, g_p.

これにより、出力が生成されます。

000000129
           3.000.000,00
      129
           3.000.000,00
于 2011-10-23T13:33:07.777 に答える
1

先行ゼロを削除するには、次の操作を実行できます。

data: lv_n type n length 10 value '129'.

shift lv_n left deleting leading '0'.
于 2013-06-03T03:02:30.050 に答える