首页 > 其他分享 >字符串增加千分位 负号提前处理

字符串增加千分位 负号提前处理

时间:2024-03-19 14:13:45浏览次数:21  
标签:CURRC ANBTR 负号 TMP1 千分 LV 字符串 TYPE OLE

*千分位
 DATA :
    LV_STR   TYPE STRING,
    LV_CURRC TYPE STRING,
    LV_TMP1  TYPE STRING,
    LV_TMP2  TYPE STRING,
    LV_LEN   TYPE I,
    LV_LEN1  TYPE I,
    LV_LEN2  TYPE I,
    LV_LEN3  TYPE I,
    LV_LEN4  TYPE I.
  DATA: LV_CURR  TYPE BAPICURR-BAPICURR,
        LV_ANBTR TYPE STRING.

  CLEAR:LV_STR,LV_CURRC,LV_TMP1,LV_TMP2,LV_LEN,LV_LEN1,LV_LEN2,LV_LEN3,LV_LEN4.

  CLEAR LV_ANBTR.
  LV_ANBTR = GS_OLE-ANBTR.


  CONDENSE GS_OLE-ANBTR NO-GAPS.
  LV_STR = GS_OLE-ANBTR.
*统一转换给外部数据,保留精度
  CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL'
    EXPORTING
      CURRENCY        = ''
      AMOUNT_INTERNAL = LV_STR
    IMPORTING
      AMOUNT_EXTERNAL = LV_CURR.

  CLEAR LV_CURRC.
  LV_CURRC = LV_CURR.
  SPLIT LV_CURRC AT '.' INTO LV_TMP1 LV_TMP2.
  CONDENSE:LV_TMP1,LV_TMP2.

  LV_LEN = STRLEN( LV_TMP1 ).
  LV_LEN1 = LV_LEN MOD 3.

  LV_LEN2 = LV_LEN DIV 3.

*根据整除保留的整数进行循环,无偏移时最后一次不用循环默认为0
  DO LV_LEN2 TIMES.
*小于1和无偏移时,最后一次的逗号不用加
    IF LV_LEN = 3 OR ( LV_LEN1 = 0 AND SY-INDEX = LV_LEN2 ).
      EXIT.
    ENDIF.

*偏移按照第一次进行偏移
    IF LV_LEN1 <> 0.
      LV_LEN3 = LV_LEN1 + SY-INDEX - 4 + 3 * SY-INDEX .
    ENDIF.

*无偏移3的倍数+当前次数-1,1为第一次偏移
    IF LV_LEN1 = 0.
      LV_LEN3 = 3 * SY-INDEX + SY-INDEX - 1.
    ENDIF.
*从中间插入
    LV_LEN4 = STRLEN( LV_TMP1 ) - LV_LEN3.
    CONCATENATE LV_TMP1+0(LV_LEN3) ',' LV_TMP1+LV_LEN3(LV_LEN4) INTO LV_TMP1.
  ENDDO.
*保留2位小数
  LV_CURRC = LV_TMP1 && '.' && LV_TMP2+0(2).
  CONDENSE LV_CURRC.
  CLEAR GS_OLE-ANBTR.

  GS_OLE-ANBTR = LV_CURRC.



*负号提前

  CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
    CHANGING
      VALUE = LV_ANBTR.

  IF LV_ANBTR+0(1) = '-'.
    GS_OLE-ANBTR = '-' && GS_OLE-ANBTR.
  ENDIF.

 

标签:CURRC,ANBTR,负号,TMP1,千分,LV,字符串,TYPE,OLE
From: https://www.cnblogs.com/Anyohh233/p/18082624

相关文章

  • 字符串的处理
    目录1、str.lower()2、str.upper()3、str.split(sep=None)4、str.count()5、str.find()6、str.index()7、str.startwith()、str.endswith()8、str.replace(old,news)9、str.center(width,fillchar)首先,字符串在python中是一个不可变的数据类型;其次,字符串包含了许多......
  • BCD转字符串
    //////BCD转字符串/////////偏移量///数字字符串位数//////publicstaticstringBCDToString(byte[]bcdNum,intoffset,intnumlen){stringretString="";intres;varlen=Math.DivRem(numlen,2,outres);if(res!=0){len++;}for(i......
  • C#在不区分大小写的情况下比较字符串是否相等
    string.Equals(varData_QCMH04.ST_NO.Trim(),tempSteelType,StringComparison.OrdinalIgnoreCase)publicvoidGetRemoteStandardToLocal(){try{//MyRegion读取数据库获取原始数据usingIDbConnectiondbConnection=newOracleConnection(st......
  • 字符串压缩(C++)
    字符串压缩:    例如:aaaabbbccx-->4a3b2cx,单个字符不压缩。基本思想:前后两两字符作比较,若相同则计数器加一,若不同则直接输出。程序代码:#include<iostream>intmain(){ strings; intcount=1; cin>>s; s=s+"";//加上空格是为了方便最后一个字符的比较 in......
  • 【字符串匹配】BF与KMP算法
    一、字符串匹配问题字符串匹配问题是指在一个主文本字符串中查找一个指定的模式字符串,并确定模式字符串在主文本中出现的位置。这个问题在计算机科学中非常常见,尤其是在文本处理、数据搜索和生物信息学等领域。字符串匹配问题通常涉及到以下几个方面:模式识别:识别主文本中是......
  • 【SQL Server】超详细SQLServer日期转换、字符串、数学、聚合等常用函数大全(最新版)
    文章目录一、字符串函数1、获取uuid2、字符串截取3、字符串拼接4、字符串去空格5、大小写转换6、格式化数字为字符串7、字符串替换、转换8、查找与定位9、ISNULL判空取值二、日期时间函数1、获取当前日期和时间2、提取日期部分3、DATENAME(datepart,date_expr)函数,返......
  • Python学习随记(三):字符串方法
    Python学习随记(三)字符串方法#字符串方法name='翟图南-袁培风-徐万里汪断水谷继之翟少泽俞名万'print(name)#去除空格strip()lstriprstrip首尾或首或尾的空格print(name.strip())#replace替换print(name.replace('翟','宅'))#切分所有的数据默认......
  • JavaScript学习笔记6: 对象 - 字符串Stirng
    JS对象-字符串String字符串的创建方式<script>//字符串创建方式1varstr1=newString("str1");//字符串创建方式2varstr2="str2";</script>字符串属性&方法length属性<script>console.log("获取字符串的length属性");    con......
  • 数据结构(六)串,Trie字符串统计---以题为例
    维护一个字符串集合,支持两种操作:Ix 向集合中插入一个字符串 x;Qx 询问一个字符串在集合中出现了多少次。共有 N 个操作,所有输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为......
  • oracle数据库执行报错:ORA-01861: 文字与格式字符串不匹配
    报错sql:selectto_date(sysdate,'yyyy-mm-dd')afromuser原因是:to_date()函数第一个参数,要求的是一个字符串格式,当这个值是一个日期格式的时候就会报错,解决方案:方案一:使用to_char(日期,'yyyy-mm-dd')将日期转为字符,再使用to_date(),方案二:修改数据库配置,让数据库隐式......