You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ABAP字符串字符计数替换异常:重复超10次显示*而非数字

ABAP字符统计替换问题修复

你的问题出在数值类型到字符串的自动转换格式限制:count默认是整数类型(I),在字符串模板中自动转换时,ABAP使用了默认的数值输出格式,当数值位数超过默认宽度时,会用*代替显示。

修复后的代码

DATA(input) = 'WWWWWWWWWWWWWWWWBWWBBBWWWWB'.
DATA(count) = 1.
DATA result TYPE string.

DO strlen( input ) - 1 TIMES.

  DATA(lv_single1) = substring( val = input off = sy-index - 1 len = 1 ).
  DATA(lv_single2) = substring( val = input off = sy-index  len = 1 ).

  IF lv_single1 = lv_single2.
    count = count + 1.
  ELSE.
    " 显式将count转换为字符串,避免自动格式限制
    result = |{ result }{ COND #( WHEN count = 1 THEN '' ELSE string( count ) ) }{ lv_single1 }|.
    count = 1.
  ENDIF.

ENDDO.

" 同样处理最后一段字符的计数转换
result = |{ result }{ COND #( WHEN count = 1 THEN '' ELSE string( count ) ) }{ lv_single2 }|.

说明

  • 使用string( count )显式将整数类型的计数转换为字符串类型,绕过ABAP默认的数值输出格式限制,确保任意位数的计数都能正常显示。
  • 也可以通过在字符串模板中指定数值格式实现:|{ count WIDTH = 0 }|,效果一致,只需把string( count )替换为该格式即可。

对应你提供的输入字符串,修复后实际输出为16WB2W3B4WB;如果是12个W开头的输入,则会输出期望的12WB2W3B4WB。

内容的提问来源于stack exchange,提问作者Sefa_Kurtuldu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:30:12