abap 中文字符串提取和字节长度计算 (两种方法)

来源:互联网 发布:数据库中substring 编辑:程序博客网 时间:2024/05/17 04:24

  abap 中对于字符串长度的计算一般用 strlen 函数实现。但此函数只能算出字符的个数无法计算字符串的长度,例如 'ABC你好'用此函数计算得到的值为5,显然它不是我们想要的,它的字节长度为7 。

   经过研究,我写了一个函数可以实现功能代码如下:

FUNCTION YGET_CNCHAR_CHARLE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(STRING) TYPE  STRING 传入字符串
*"  EXPORTING 
*"     REFERENCE(STR) TYPE  STRING  返回字符串
*"     REFERENCE(CHARLEN) TYPE  I   返回长度
*"----------------------------------------------------------------------

DATA: w_uccp TYPE i,
w_temp(2) TYPE c,
w_left(100) TYPE c,
w_len(10) TYPE c,
s_len TYPE i
.
w_left = string.

DATA : BEGIN OF line,
       text TYPE c,
       END OF line,
       itab LIKE TABLE OF line WITH HEADER LINE.


*DATA str TYPE string.
DO.
  CALL FUNCTION 'TEXT_SPLIT'
    EXPORTING
      length = 2
      text   = w_left
    IMPORTING
      line   = w_temp
      rest   = w_left.

  CALL METHOD cl_abap_conv_out_ce=>uccpi
    EXPORTING
      char = w_temp
    RECEIVING
      uccp = w_uccp.
  w_len = STRLEN( w_temp ).
*  WRITE: /1 w_temp,
*  10 w_uccp,
*  25 w_len.
  IF w_uccp > 256.
    CONCATENATE str w_temp INTO str.
  ENDIF.
  IF w_left IS INITIAL OR sy-index > 100.
    EXIT.
  ENDIF.
ENDDO.
IF str IS NOT INITIAL.
  DATA:t_len TYPE i.
  clear :  s_len,charlen.
  t_len = STRLEN( string ).
  s_len = STRLEN( str ).
  t_len =  t_len - s_len .
  s_len = s_len * 2 .
  charlen =  t_len + s_len.
*  WRITE :/,'CHARLEN=' ,charlen, 'STR= ',str.
ENDIF.

 

ENDFUNCTION.



"""""""""方法2


DATAlv_str TYPE string,
            lv_len TYPE i.

lv_str 'AB中国'.

lv_len cl_abap_list_utilities=>dynamic_output_lengthlv_str ).

WRITE lv_len.

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝退货运费太贵卖家不退怎么办 顺丰文件丢失怎么办 京豆负9千多怎么办 京东押话题没了怎么办 没退运费险怎么办 本人身份证丢了怎么办 输入农行卡三次怎么办 花呗支付超限怎么办 在商场买到破衣服怎么办 vans鞋子磨脚怎么办 衣服白领子发黄怎么办 白衬衣染上黑色怎么办 车超过年检日期怎么办 用过期卫生间痒怎么办 驾照过期一个礼拜怎么办 月经总是后漏怎么办 护垫掉厕所里怎么办 健身房老板拿钱跑了怎么办 手机游戏变竖屏了怎么办 轮胎钢圈处磨损怎么办 屋里有刺鼻气味怎么办 脸上都是荧光剂怎么办 mac系统卡死了怎么办 笔记本关机要很久怎么办 mac关不了机怎么办 mac蓝屏无法开机怎么办 凤凰系统内存小怎么办 proe安装完成打不开怎么办 绿叶竹根发黑怎么办 月经期间肚子凉怎么办 来月经肚子冷怎么办 月经越来越少了怎么办 卫生巾闷出红疹子痒怎么办 开动物检疫证明怎么办 打桩机钻头掉了怎么办 临牌怎么办没有合格证 没有合格证怎么办零牌 贴了一等品瓷砖怎么办 香港过关货物被退港怎么办 换检验标过期怎么办 电动车合格证丢了怎么办