やり方を知りたい
- 桁のグループ化
たとえば、3000000 ( 300 万) のようなお金の価値がある場合、画面に 3.000.000 を印刷したい (最後の文字から 3 文字ごとにドットがあります)。
- 値の前のゼロを削除
テーブルから値を選択して画面に出力すると、値は自動的にゼロで埋められます129
。0000129
この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.
出力は になります0000129
。CONVERSION_EXIT_ALPHA_OUTPUT
ルーチンを呼び出して、先頭にゼロを付けずに出力を得ることができます。
DATA value(7) TYPE n.
value = '0000129'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = value
IMPORTING
output = value.
WRITE: / value.
WRITE
ステートメントによってトリガーされる数値型の出力変換は、ユーザーマスターデータのプロパティによって制御されることにも注意してください。そこでは、小数点と桁のグループ化を構成する必要があります。
これは、SU01 や SU01D などのユーザーマスタートランザクションで確認できます。
ゼロ パディングを削除するには、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
先行ゼロを削除するには、次の操作を実行できます。
data: lv_n type n length 10 value '129'.
shift lv_n left deleting leading '0'.