Abap 比较N变量和数字时舍入。如何避免?

Abap 比较N变量和数字时舍入。如何避免?,abap,Abap,大家好,新年快乐。 我有以下问题:char字段包含金额,我想进行以下检查:如果wfile dmbtr

大家好,新年快乐。 我有以下问题:char字段包含金额,我想进行以下检查:
如果wfile dmbtr<0.00

我使用的代码是:

data: lv_dmbtr(18) type n.    
write wfile-dmbtr to lv_dmbtr.
replace first occurrence of '.' in lv_dmbtr with ''.
translate lv_dmbtr using ',.'.
if lv_dmbtr <= '0.00'.
数据:lv_dmbtr(18)类型n。
将wfile dmbtr写入lv_dmbtr。
将lv_dmbtr中第一次出现的“.”替换为“”。
使用“,”翻译lv_dmbtr。

如果lv_dmbtrElias。也祝你新年快乐

类型N不允许使用小数(即使如果强制使用小数,您可能可以在调试器中看到它)。这就是为什么这个数字被四舍五入,而条件评估“似乎”失败的原因

此外,在进行数字转换/格式化之后,最好使用decimal类型变量进行条件计算(例如数据元素MAXBT的类型)

例如:

DATA: lv_dmbtr(18) TYPE c,       " Used to be type N instead of pure CHAR.
      lv_aux       TYPE maxbt.


WRITE '0,01' TO lv_dmbtr.
REPLACE FIRST OCCURRENCE OF '.' IN lv_dmbtr WITH ''.
TRANSLATE lv_dmbtr USING ',.'.
CONDENSE lv_dmbtr.

lv_aux = lv_dmbtr.

IF lv_aux <= '0.00'.

  BREAK-POINT.

ELSE.

  BREAK-POINT.    " It should enter this bracket for the value 0,01

ENDIF.
DATA:lv_dmbtr(18)c型,“过去是N型而不是纯字符。
lv_辅助型maxbt。
将“0,01”写入lv_dmbtr。
将lv_dmbtr中第一次出现的“.”替换为“”。
使用“,”翻译lv_dmbtr。
冷凝低压dmbtr。
lv_aux=lv_dmbtr。

如果你是伊莱亚斯,也祝你新年快乐

类型N不允许使用小数(即使如果强制使用小数,您可能可以在调试器中看到它)。这就是数字被舍入且条件计算“似乎”失败的原因

此外,在进行数字转换/格式化之后,最好使用decimal类型变量进行条件计算(例如数据元素MAXBT的类型)

例如:

DATA: lv_dmbtr(18) TYPE c,       " Used to be type N instead of pure CHAR.
      lv_aux       TYPE maxbt.


WRITE '0,01' TO lv_dmbtr.
REPLACE FIRST OCCURRENCE OF '.' IN lv_dmbtr WITH ''.
TRANSLATE lv_dmbtr USING ',.'.
CONDENSE lv_dmbtr.

lv_aux = lv_dmbtr.

IF lv_aux <= '0.00'.

  BREAK-POINT.

ELSE.

  BREAK-POINT.    " It should enter this bracket for the value 0,01

ENDIF.
DATA:lv_dmbtr(18)c型,“过去是N型而不是纯字符。
lv_辅助型maxbt。
将“0,01”写入lv_dmbtr。
将lv_dmbtr中第一次出现的“.”替换为“”。
使用“,”翻译lv_dmbtr。
冷凝低压dmbtr。
lv_aux=lv_dmbtr。
如果lv_aux