文章目录
2、字符串长度CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
18.2方法二 函数:HR_NZ_ROUNDING_DECIMALS
前言
个人对于字段串相关知识记录整理,方便以后查看更新。。。
1、字符串个数 STRLEN
strlen( )只能计算字符串的个数,不能计算含有中文字符串的长度,如下所示:
2、字符串长度CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
通过cl_abap_list_utilities=>dynamic_output_length来精确获取字符串长度,如下所示:
3、去掉字符 TRANSLATE
4、向上向下取整 CEIL FLOOR
5、类型强制转换 CONV
6、分割 SPLIT
7、去除非字符串前导0
因为项目需要,找到了一个大佬的博客感觉很好收藏分享给大家
*&---------------------------------------------------------------------*
*& 程 序 名:YTEST_002
*& 程序描述:XXXXX
*& 创 建 者:XXXX
*& 创建日期:YYYYMMDD
*&---------------------------------------------------------------------*
*& 版本 修改者(公司) 日期 修改描述
*& 1.0.0 XXXX YYYYMMDD 创建程序
*&---------------------------------------------------------------------*
REPORT ytest_002.
DATA:
lv_len TYPE i,
lv_num TYPE i,
lv_nu TYPE i.
DATA:l_ort02 TYPE char50.
l_ort02 = '000你好你好'.
lv_len = strlen( l_ort02 ). "字符个数
DO lv_len TIMES.
lv_nu = sy-index.
IF l_ort02+lv_num(1) = '0'.
lv_num = lv_num + 1.
ELSE.
EXIT.
ENDIF.
ENDDO.
SHIFT l_ort02 BY lv_num PLACES LEFT.
BREAK-POINT.
8、SHIFT
8.1字符串截断
*&---------------------------------------------------------------------*
*& 程 序 名:YTEST_002
*& 程序描述:XXXXX
*& 创 建 者:XXXX
*& 创建日期:YYYYMMDD
*&---------------------------------------------------------------------*
*& 版本 修改者(公司) 日期 修改描述
*& 1.0.0 XXXX YYYYMMDD 创建程序
*&---------------------------------------------------------------------*
REPORT ytest_002.
DATA(lv_data) = '12345JYH67890'.
*如果位数未指定,默认为1,如果指定的位数小于等于0,则字符串不变。
*如果位数超出字符串的长度,则字符串变空
SHIFT lv_data BY 3 PLACES RIGHT. " 去掉右边三位
CONDENSE lv_data NO-GAPS.
SHIFT lv_data BY 3 PLACES LEFT. " 去掉左边三位
CONDENSE lv_data NO-GAPS.
BREAK-POINT.