负数的负号前置显示

这篇博客介绍了如何在ABAP中处理负数的负号前置显示问题。通过求质、转换到字符类型并添加负号,然后压缩空格来实现。程序示例包括对整数和浮点数的处理,确保负数在输出时负号位于前方且右对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上午老大开会时提到负数在ABAP表中显示的问题. 之前还没注意过,于是上网搜了些资料看了,写了个程序试验了下.

步骤:
1. 求质.
2. 放到CHAR型变量里.
3. 在前面加负号,连接,压缩空格,输出.

最简单的就是用字符转换吧,还有个功能函数就是专门用来负号前置的,但有些附带的问题,以后用到再看.

程序代码:
----------------------------------------
REPORT  zpab06_t_negtive.

*----------------------------------------------------------------------*
*  负数的负号前置显示 (i,f,p 类型为右对齐显示"RIGHT-JUSTIFIED")        *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*      整数
*----------------------------------------------------------------------*


DATA: output(12)   TYPE c,
      outdata  TYPE i VALUE '-1'.

IF outdata < 0.
  outdata = ABS( outdata ).                "OUTDATA = OUTDATA * ( -1 ).
  MOVE outdata TO output.
  CONCATENATE '-' output INTO output.
  CONDENSE output NO-GAPS.                 "压缩字符串,去掉空格
ENDIF.

WRITE : / output.

*----------------------------------------------------------------------*
*      浮点数
*----------------------------------------------------------------------*

DATA: output1(19)   TYPE c,
      outdatum   TYPE p DECIMALS 2 VALUE '-1.23'.

IF outdatum > 0.
  WRITE outdatum TO output1.                        "RIGHT-JUSTIFIED.
  CONCATENATE ' ' output1 INTO output1.
ELSE.
  outdatum = outdatum * ( -1 ).
  WRITE outdatum TO output1.                        "RIGHT-JUSTIFIED.
  CONCATENATE '-' output1 INTO output1.
ENDIF.

CONDENSE output1 NO-GAPS.

WRITE: / output1.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值