如何在不丢失逗号的情况下进行类型转换?
How to do typecasting without loosing a comma?
任务: 我有 data col(30) TYPE c VALUE '-1111,45'.
我需要检查这个值是否为负数,如果为负数 - 进行类型转换。但是在输出上我得到 5 虽然我必须得到 1111,45 没有减号,然后再次对以前的类型 (с) 进行类型转换。
REPORT Z_CAST.
data col(30) TYPE c VALUE '-1111,45'.
data numc type n.
numc = col.
if numc < 0.
numc = -1 * numc.
endif.
col = numc.
WRITE col. "Output: 5
REPORT Z_CAST.
data col(30) TYPE c VALUE '-1111,45'.
if col+0(1) EQ '-'.
WRITE col+1. "1111,45
endif.
这是最小的字符处理方式:
col = replace( val = col
sub = '-'
with = ' ' ).
您不必先找到 -
来替换它。
这是ABAPer通常会选择的干净数字方式:
DATA n TYPE p LENGTH 12 DECIMALS 2.
n = col.
n = abs( n ).
请注意,这 不适用于您的示例 '-1111,45'
不过:ABAP 需要点 .
作为小数点分隔符,但您的号码使用本地化格式为逗号 ,
,因此您必须先将数字标准化。
任务: 我有 data col(30) TYPE c VALUE '-1111,45'.
我需要检查这个值是否为负数,如果为负数 - 进行类型转换。但是在输出上我得到 5 虽然我必须得到 1111,45 没有减号,然后再次对以前的类型 (с) 进行类型转换。
REPORT Z_CAST.
data col(30) TYPE c VALUE '-1111,45'.
data numc type n.
numc = col.
if numc < 0.
numc = -1 * numc.
endif.
col = numc.
WRITE col. "Output: 5
REPORT Z_CAST.
data col(30) TYPE c VALUE '-1111,45'.
if col+0(1) EQ '-'.
WRITE col+1. "1111,45
endif.
这是最小的字符处理方式:
col = replace( val = col
sub = '-'
with = ' ' ).
您不必先找到 -
来替换它。
这是ABAPer通常会选择的干净数字方式:
DATA n TYPE p LENGTH 12 DECIMALS 2.
n = col.
n = abs( n ).
请注意,这 不适用于您的示例 '-1111,45'
不过:ABAP 需要点 .
作为小数点分隔符,但您的号码使用本地化格式为逗号 ,
,因此您必须先将数字标准化。