此博客为原创博客,都是个人工作经历所得,转载请注明出处

20170225 ABAP获取字符串长度/字节长度

函数YGET_CHAR_LONG:

复制代码
FUNCTION YGET_CHAR_LONG.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(STRING) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     VALUE(STR) TYPE  STRING
*"     VALUE(G_LONG) TYPE  I    "字符串长度
*"     VALUE(G_LONG_STR) 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,G_LONG_STR.
    T_LEN = STRLEN( STRING ).
    G_LONG = STRLEN( STRING ).

    S_LEN = STRLEN( STR ).
    T_LEN =  T_LEN - S_LEN .
    S_LEN = S_LEN * 2 .
    G_LONG_STR =  T_LEN + S_LEN.
*  WRITE :/,'CHARLEN=' ,charlen, 'STR= ',str.
  ENDIF.


ENDFUNCTION.
复制代码

 

posted @   Rainystuday  阅读(10628)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示