这个时候就用到 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
  
     
 










