前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
��1. 字符串连接
��CONCATENATE dobj1 dobj2 ... INTO result
�� [IN { BYTE | CHARACTER } MODE]
�� [SEPARATED BY sep].
��
��2.字符串分隔, split 一个string的部分到一个内表或一系列的变量
��SPLIT dobj AT sep INTO
�� { {result1 result2 ...} | {TABLE result_tab} }
�� [IN {BYTE|CHARACTER} MODE].
��
��3. 字符串查找, 在一个字符串中查找模式串(FIND or SEARCH)
��FIND sub_string
�� IN SECTION [OFFSET off] [LENGTH len] OF dobj --> 灰色部分用来缩小目的串被查找的范围
�� [ IN { BYTE | CHARACTER } MODE ]
�� [ { RESPECTING | IGNORING } CASE ]
�� [ MATCH OFFSET moff ] [MATCH LENGTH mlen ].
FIND 'knows'
�� IN SECTION OFFSET 5 OF 'Everybody knows this is nowhere'
�� MATCH OFFSET moff " => moff = 10
�� MATCH LENGTH mlen. " => mlen= 5
��
��在字符串dobj中查找pattern
��SEARCH dobj FOR pattern [IN { BYTE | CHARACTER } MODE]
�� [STARTING AT p1] [ENDING AT p2]
�� [ABBREVIATED]
�� [AND MARK].
��if sy-subrc = 0. then SY-FDPOS = 返回pattern在dobj中的位置
��About pattern:
��'pat' - 忽略尾部空格
��'.pat.' -不忽略尾部空格
��'*pat' - 以pat结尾
��'pat*' - 以pat开始
��单词是指: 用 空格 , ; : ? ! () / + =分隔的字串
�
SEARCH <c> FOR <str> <options>.
该语句在字 段 <c> 中搜索<str> 中的字符串 。如果成功 ,则将 SY-SUBRC 的返回代码 值设置为0并 将 SY-FDPOS 设置为字段 <c> 中该字符串 的偏移量。 否则将 SY-SUBRC 设置为4。
��4. 字符串替换
��REPLACE SECTION [OFFSET off] [LENGTH len]
�� OF dobj WITH new
�� [IN { BYTE | CHARACTER } MODE].
��
��REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF]
�� [SUBSTRING] sub_string
�� IN [SECTION [OFFSET off] [LENGTH len] OF ] dobj WITH new
�� [IN {BYTE|CHARACTER} MODE]
�� [{RESPECTING|IGNORING} CASE]
�� [REPLACEMENT COUNT rcnt]
�� [REPLACEMENT OFFSET roff]
�� [REPLACEMENT LENGTH rlen].
��eg:
��DATA: text1 TYPE string VALUE 'xababx'.
��REPLACE 'ab' IN text1 WITH 'xx'. --> xxxabx
��
��5. 去前导0 (Remove leading zero)
��SHIFT dobj LEFT DELETING LEADING '0'.
��FM : CONVERSION_EXIT_ALPHA_OUTPUT
��
��增前导0 (Add leading zero)
��DATA v_s(5).
��UNPACK '123' to v_s. ==> v_s = '00123'
��FM: CONVERSION_EXIT_ALPHA_INPUT
��
��SHIFT dobj
�� [{BY num PLACES} | {UP TO sub_string}]
�� [LEFT|RIGHT] [CIRCULAR]
��SHIFT dobj
�� {LEFT DELETING LEADING} | {RIGHT DELETING TRAILING} pattern.
�� [IN {BYTE|CHARACTER} MODE].
��
��6. 字符串的长度, 内表的行数
�� STRLEN( dobj) 字符串的长度
�� LINES( itab ) 内表的行数
��
��7. 删字符串中的空格: CONDENSE text [NO-GAPS].
��
��8. 大小写转换,字符变换
��TRANSLATE text {TO {UPPER|LOWER} CASE} | {USING pattern}.
��eg: text = `Barbcbdbarb`.
��TRANSLATE text USING 'ABBAabba'. =>'Abracadabra'
��
��9. CONVERT
��CONVERT DATE dat [TIME tim [DAYLIGHT SAVING TIME dst]]
�� INTO TIME STAMP time_stamp TIME ZONE tz.
��
��CONVERT TIME STAMP time_stamp TIME ZONE tz
�� INTO [DATE dat] [TIME tim]
�� [DAYLIGHT SAVING TIME dst].
��
��CONVERT TEXT text INTO SORTABLE CODE hex.
��
��10. OVERLAY text1 WITH text2 [ONLY pattern].
��如果不指定后面的ONLY pattern, text1中的空格会被text2中的对应字符替代
��如果指定只有匹配的字符才会被替代,注意大小写敏感
��
��11. 模式匹配
��CO / CN contains only or not
��CA / NA contains any or not any
��CS / NS contain string or not
��CP / NP contains pattern or not
��
��NOTE:
��a) . CO, NO, CA, NA比较时区分大小写, 并且尾部空格也在比较的范围之内
��data: s1(10) value 'aabb'.
��if s1 co 'ab' ==> false
��if s1 co 'ab ' ==>true
��CS, NS, CP, NP不区分大小写和尾部空格
��
��b) .对于CP, NP
��* = s?
��+ = s
��# 换码字符, 用于匹配 *, +这样的字符
�� ##
�� #*
�� #+
�� #___ 比较结尾空格
�� #[a-z] 在CP, NP中强制区分大小写
��
��c) . 比较结束后,如果结果为真,sy-fdpos将给出s2在s1中的偏移量信息。
��12. 特殊字符
��在字符串中加入回车换行或TAB字符,在其他语言可以使用$13$10这样的ASCII码进行插入.但在ABAP中要使用sap的类CL_ABAP_CHAR_UTILITIES. 里面有字符常量:CR_LF,HORIZONTAL_TAB,NEWLINE等等.
��
��13. 字符串位操作
��DATA: v_s(10) value 'abcd'.
��v_s+0(1) = 'b'.
��v_s+2(*) = '12'.
��=> v_s = 'bb12'.