zoukankan      html  css  js  c++  java
  • 【ABAP系列】SAP ABAP-模块 字符串操作基础知识

    公众号:matinal
    本文作者:matinal
     

    前言部分

    大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

    正文部分

    ��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'.

  • 相关阅读:
    静态代码块执行顺序
    静态代码块
    方法的定义(实例与静态)
    变量的声明(实例与静态)
    static关键字
    封装2
    线程1
    数组元素的查找——二分法查找
    docker介绍、安装及要素讲解
    渗透测试基础
  • 原文地址:https://www.cnblogs.com/SAPmatinal/p/11180806.html
Copyright © 2011-2022 走看看