这个时候就用到 STRING_SPLIT_AT_POSITION
描述为:Split a string with a proper position into two parts
测试界面如下
就是以一个固定的位置截取,比如从第三个位置,拆分成两段。
不是按字符长度,
因为中文,英文,全角,半角可能占的字符不一样。
测试用例
DATA
: C_STR1
TYPE STRING
.
DATA
: C_STR2
TYPE STRING
.
START-OF-SELECTION
.
PERFORM FRM_STRING_SPLIT
USING
'12三四五'
4
CHANGING
C_STR1
C_STR2
.
*&---------------------------------------------------------------------*
*& Form FRM_STRING_SPLIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_STR text 需要拆分的字符串
* -->P_LEN text 拆分的长度
* -->C_STR1 text 按拆分位置截取出的字符串
* -->C_STR2 text 剩余的字符串
*----------------------------------------------------------------------*
FORM FRM_STRING_SPLIT
USING P_STR
TYPE STRING
P_LEN
TYPE INT4
CHANGING C_STR1
TYPE STRING
C_STR2
TYPE STRING
.
DATA
: L_STR
(
254
)
TYPE
C
.
DATA
: L_C1
(
100
)
TYPE
C
.
DATA
: L_C2
(
100
)
TYPE
C
.
DATA
: L_POS_NEW
TYPE
I
.
DATA
: L_LEN
TYPE INT4
.
L_STR
= P_STR
.
L_LEN
=
STRLEN
( P_STR
)
.
IF L_LEN <= P_LEN
.
C_STR1
= P_STR
.
CLEAR C_STR2
.
RETURN
.
ENDIF
.
CALL
FUNCTION
'STRING_SPLIT_AT_POSITION'
EXPORTING