ABAP自定义截取字符串长度函数
2024-08-24 22:27:30
SAP 中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度,如字符串“SAP大波霸”,strlen('SAP大波霸') = 6,其实真实长度为3+3*2 = 9。
我们可以通过cl_abap_list_utilities=>dynamic_output_length来精确获取字符串长度,下面我写了一个截取字符串长度的函数,供参考:
FUNCTION zotfm001.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_STRING) TYPE STRING
*" VALUE(I_STRLEN) TYPE I
*" EXPORTING
*" VALUE(E_STRING1) TYPE STRING
*" VALUE(E_STRING2) TYPE STRING
*"----------------------------------------------------------------------
DATA:lv_char TYPE string,
lv_len TYPE i,
lv_st1 TYPE i,
lv_st2 TYPE i,
lv_str TYPE i. CHECK i_string IS NOT INITIAL AND i_strlen IS NOT INITIAL.
lv_str = strlen( i_string ). DO.
IF lv_str >= sy-index.
lv_char = i_string+0(sy-index).
CALL METHOD cl_abap_list_utilities=>dynamic_output_length
EXPORTING
field = lv_char
RECEIVING
len = lv_len.
IF lv_len >= i_strlen.
e_string1 = lv_char. lv_st1 = strlen( lv_char ).
lv_st2 = lv_str - lv_st1.
e_string2 = i_string+lv_st1(lv_st2).
EXIT.
ENDIF.
ELSE.
e_string1 = i_string.
e_string2 = ''.
EXIT.
ENDIF.
ENDDO. ENDFUNCTION.
最新文章
- iOS - + initialize 与 +load
- pycharm 中 pep8 检查开启.
- 歐洲國家拓展其移動和IT服務業務
- 新机自动创建yum库
- CSS布局 -- 左右定宽,中间自适应
- CodeForces - 427B (模拟题)
- DP/最短路 URAL 1741 Communication Fiend
- DataGrid参数
- 《JavaScript高级程序设计》笔记(3):传递参数
- NIR相机
- Android入门——UI(8)——Fragment(2)
- C# 关闭子线程的方法
- 修复关于apache-xampp的问题:Port 443 in use by “vmware-hostd.exe”!
- 对css语法中position值的理解
- BOM 和 DOM
- 【laravel5.4】安装指定版本的predis 和 处理laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误
- react组件(react-grid-gallery)
- Mysql索引机制B+Tree
- Unity3.x游戏开发经典教程 书例 100%完毕~
- ubuntu各系统双网卡绑定