如何在不丢失逗号的情况下进行类型转换?

时间:2018-08-09 07:06:40

标签: sap 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

3 个答案:

答案 0 :(得分:1)

REPORT Z_CAST.

data col(30) TYPE c VALUE '-1111,45'.

if col+0(1) EQ '-'.

  WRITE col+1. "1111,45

endif.

答案 1 :(得分:1)

这是执行此操作的最小字符处理方式:

col = replace( val  = col
               sub  = '-'
               with = ' ' ).

您不必先找到-即可替换它。

答案 2 :(得分:0)

这是ABAPers通常会选择的干净数字方式:

geom_ribbon

请注意,这对您的示例DATA n TYPE p LENGTH 12 DECIMALS 2. n = col. n = abs( n ). 来说不起作用:ABAP期望将点'-1111,45'作为小数点分隔符,但您的数字使用带逗号{{ 1}},因此您必须首先将数字标准化。