• ABAP学习(1):基本语法介绍


    ABAP学习

       ABAP学习基本资料整理。

    ABAP基本语法

        ABAP中不区分大小写,例如:Type 和type表示一个意思。

    1基本数据类型

    ABAP基本数据类型:

    I : 整形数据;

    C:字符型数据;

    N:只包含数字的字符串;

    P:包装数据类型;

    F:浮点类型;

    D:日期类型;

    T:时间类型;

    X:十六进制数据。

     F和P类型都保存浮点数,P的精度比F更高,一般使用P类型。

    示例:

    "整型
    
    DATA:num1 type I.
    
    "字符型
    
    DATA:num2(3) type C.
    
    "数字字符型
    
    DATA:num3(4) type N.
    
    "包装类型,decimals指定小数位数,只有P类型可用
    
    DATA:num4(10) type P DECIMALS 4.
    
    "浮点型
    
    DATA:num5 type F.
    
    "日期型
    
    DATA:num6 type D.
    
    "时间型
    
    DATA:num7 type T.
    
    "16进制型
    
    DATA:num8(10) type X.
    
    "字符串
    
    DATA:num9 type string.
    
    "C,N,X,P可以使用length定义长度
    
    DATA:num10 TYPE C LENGTH 14.
    
     
    
    "赋值操作
    
    "move to 语句
    
    "MOVE 1333 TO num1.
    
    num1 = 1234567890.
    
    num2 = 'abc'.
    
    num3 = '0010'.
    
    num4 = '1.23456789'.
    
    num5 = '12.3456789'.
    
    num6 = sy-datum.
    
    num7 = sy-uzeit.
    
    num8 = 1234567890.
    
    write :/ 'num1=',num1,'num2=',num2,'num3=',num3,'num4=',num4,'num5=',num5,'num6=',num6,'num7=',num7,'num8=',num8.
    
     
    
    "字符串转I,
    
    "不能有汉字,不能是科学计数法
    
    "num9 = '1.23300000E+2'.
    
    num9 = '12.33334'.
    
    num1 = num9.
    
    WRITE:/ 'num1',num1.
    
     
    
    "字符串转C
    
    num9 = ''.
    
    num2 = num9.
    
    WRITE:/ 'num2',num2.
    
     
    
    "字符串转N,会将小数点去掉
    
    num9 = '22.33'.
    
    num3 = num9.
    
    WRITE:/ 'num3',num3.
    
     
    
    "字符串转P,
    
    num9 = '12.3456'.
    
    num4 = num9.
    
    WRITE:/ 'num4',num4.
    
     
    
    "字符串转F,会变成科学计数法显示
    
    num9 = '12.34567'.
    
    num5 = num9.
    
    WRITE:/ 'num5',num5.
    
     
    
    "字符串转D,MMDDYYYY
    
    "输出:09302018
    
    num9 = '20180930'.
    
    num6 = num9.
    
    WRITE:/ 'num6',num6.
    
     
    
    "字符串转T,hhmmss
    
    num9 = '014423'.
    
    num7 = num9.
    
    WRITE:/ 'num7',num7.
    
     
    
    "字符串转X,长度超过20位,截取前20字符
    
    num9 = '123456789012345678901234'.
    
    num8 = num9.
    
    WRITE:/ 'num8',num8.
    
     
    
    "科学计数法转换
    
    DATA:str TYPE char25 VALUE '4.3999999999999997E-2'.
    
    DATA:m_str LIKE CHA_CLASS_DATA-SOLLWERT.
    
    DATA:c_str(16) TYPE C.
    
    DATA:c_num(16) TYPE P DECIMALS 3.
    
    MOVE str to m_str.
    
    "科学计数法字符串转换成数字
    
    CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
    
      EXPORTING
    
        I_NUMBER_OF_DIGITS             = 3
    
        I_FLTP_VALUE                   = m_str
    
        I_VALUE_NOT_INITIAL_FLAG       = 'X'
    
        I_SCREEN_FIELDLENGTH           = 16
    
      IMPORTING
    
        E_CHAR_FIELD                   = c_str.
    
    IF sy-subrc = 0.
    
      WRITE:/ c_str.
    
      c_num = c_str.
    
      WRITE:/ c_num.
    
    ENDIF.
    
     
    
    "不用function转换,QSOLLWERTE作为中间数据
    
    "将科学计数法字符串转换为其他数据
    
    DATA:mid_str TYPE QSOLLWERTE.
    
    mid_str = str.
    
    c_num = mid_str.
    View Code

    2 type定义数据类型

        语法结构:Types :<类型名> type <数据类型>

                  Types :<类型名> like <数据对象或数据类型>

        定义结构体

                 Types: begin of <结构名>,

                    <资料名> type <数据类型>,

                    …………

                    end of <结构名>.

                 Data: begin of <结构名>,

                    <资料名> type <数据类型>,

                    …………

                    end of <结构名>.

    "******************************************************************
    
    "type定义数据类型
    
    "******************************************************************
    
    TYPES: length TYPE I.
    
    TYPES: str(20) TYPE C.
    
    TYPES: BEGIN OF person,
    
            Name(10) type C,
    
            Age type I,
    
          END OF person.

    3变量声明

        相关语法:data: <变量名> type <数据类型> [value <值>] 。value值是指定初始值,也可以不指定初始值。

        多个变数声明,以逗号隔开,最后句号结尾。

    示例:

    "******************************************************************
    
    "基本数据类型和变数声明
    
    "******************************************************************
    
    data:
    
          num1 type I value 12,
    
          num2 type C value 1,
    
          num3(4) type N value '2333',
    
          num4 type P,
    
          num5 type F,
    
          num6 type D,
    
          num7 type T,
    
          num8 type X.

    4常量定义

    语法:constants <变量名> type <变量类型>  [value 值]

    "******************************************************************
    
    "常量定义constants
    
    "******************************************************************
    
    CONSTANTS Pi TYPE F VALUE '3.1415926'.

    5系统相关变量

    系统定义的相关变量。sy-变量名,可以获取系统的相关变量。

    状态信息:

    sy-subrc:系统执行命令后,是否成功变量,执行成功为0;

    例如:

    查询语句是否查询到相应记录,

    如果sy-subrc=0,查询成功;

    sy-subrc=4,没有查询到记录;

    sy-subrc=8,使用“select single for update”,没有查询到记录;

    插入语句是否插入成功,

    如果sy-subrc=0,插入成功;

    sy-subrc = 4,插入失败;

    Loop循环语句,是否有循环记录,

    如果sy-subrc=0,至少循环一次;

    sy-subrc=4,没有循环记录;

    删除语句,delete语句是否删除成功,

    如果sy-subrc=0,删除成功;

    sy-subrc=4,没有符合条件,删除失败;

    更新语句,update语句是否更新成功,

    如果sy-subrc=0,找到记录更新成功;

    sy-subrc=4,没有找到记录,没有更新;

    系统信息:

    sy-uname:SAP系统账号;

    sy-sysid:当前系统R/3名称;

    sy-mandt:当前系统编号

    sy-tcode:当前执行程序的Transaction code

    sy-repid:ABAP程序名;

    sy-cprog:ABAP程序名;

    日期:

    sy-datum:系统当前日期;

    sy-uzeit:系统当前时间;

    内表操作记录:

    sy-index:当前do循环次数;

    sy-tabix:当前处理内表第几笔记录;

    sy-dbcnt:被处理过的记录的笔数;

    sy-tmaxl:当前内表的总记录数;

    示例:

    sy-index只在do循环中有效,sy-tabix在loop循环内表有效

    "******************************测试sy-index sy-tabix
    
    "sy-index 和sy-tabix记录内表循环次数
    
    DATA:BEGIN OF people,
    
      name TYPE string,
    
      index TYPE I,
    
      tabix  TYPE I,
    
      END OF people.
    
     
    
    "不带表头行的内表
    
    *DATA:t_people LIKE TABLE OF people.
    
    "创建带表头行的内表
    
    DATA:t_people LIKE TABLE OF people WITH HEADER LINE.
    
     
    
    "sy-index只在do循环中有效
    
    DO 2 TIMES.
    
      t_people-name = 'tom'.
    
      t_people-index = sy-index.
    
      APPEND t_people.
    
    ENDDO.
    
     
    
    "sy-tabix在loop循环中有效
    
    LOOP AT t_people.
    
      WRITE:/ sy-tabix,t_people-name,t_people-index.
    
    ENDLOOP.
    
     
    
    DATA:test_spfli LIKE TABLE OF spfli.
    
    SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE test_spfli.
    
    "sy-dbcnt记录查询到的记录数
    
    WRITE:/ sy-dbcnt.
    
     
    
    "返回当前处理内表记录数
    
    WRITE:/ sy-tfill.
    
    "返回当前内表记录数
    
    DATA:lines TYPE I.
    
    DESCRIBE TABLE test_spfli LINES lines
    
    "返回当前内表行数
    
    DATA:line TYPE I.
    
    line = lines( test_spfli ).

    屏幕相关:

    sy-ucomm:屏幕,PAI驱动功能命令

    sy-lisel:选择行内容;

    sy-linno:当前行;

    sy-srows:屏幕总行数;

    sy-scols:屏幕总列数;

    sy-curow:屏幕上行

    sy-cucol:游标列

    sy-vline:画竖线;

    sy-uline:画横线;

    sy-pagno:当前页号;

    sy-linsz:当前报表宽度;

    sy-linct:当前报表长度;

    sy-cpage:列表当前显示页;

    sy-staro:真实行号;

    6赋值语句

    通过value关键子,可以声明变量时,给变量一个初始值。

    语法:move  <变量1> to <变量2>

    将变量1赋值给变量2

    示例:

    "******************************************************************
    
    "变数赋值语句
    
    "******************************************************************
    
    write :/'****************'.
    
    Write:/'变数赋值语句'.
    
    Data: number1 type I value 10,
    
          number2 type I.
    
    Move number1 to number2.
    
    write :/'赋值number2=',number2.
    
     
    
    "从第7个位置,后面5个字符
    
    Data: Str1 type String value 'hello world!',
    
          Str2 type String.
    
    Str2 = Str1+6(5).
    
    WRITE :/'Str2=',Str2.
    
     
    
    "结构体赋值
    
    DATA: BEGIN OF p1,
    
            name(10) value '1111113i3',
    
            age(2) value '10',
    
            addr(20) value 'chongqing',
    
           END OF p1.
    
     
    
    DATA: BEGIN OF p2,
    
          name type String,
    
          age type I,
    
          email type String,
    
          End of p2.
    
    MOVE-CORRESPONDING p1 to p2.
    
    WRITE: /'name=',p2-name,'age=',p2-age,'email=',p2-email.

    7算术运算函数

    运算符:

        算术运算符:加+、减-、乘*、除/、div整除、mod取余、x**y 乘方

    运算函数:

    ABS(N): 传回数值 N 的绝对值;

    SIGN(N):

         1   if  N > 0

         0   if  N = 0

         -1  if  N < 0

    CEIL(N): 传回大于数值N的最小整数 ;

    FLOOR(N): 传回小于数值N的最大整数;

    TRUNC(N): 传回数值N的整数部分;

        FRAC(N):  传回数值 N 的小数部分

    COS(A),SIN(A),TAN(A):传回三角函数 cos A, sin A, tan A 的值, A 为角度量;

    EXP(N): 传回 e^N 值;

    LOG(N): 传回 log eN 值;

    LOG10(N): 传回 log N值;

    SQRT(N): 传回 N 的平方根值。

    示例:

    "******************************************************************
    
    "算术运算函数
    
    "******************************************************************
    
    num5 = ceil( num5 ).
    
    write :/ num5. "ceil 获取不小于num5的最小整数。
    
    num5 = '4.33'.
    
    num5 = floor( num5 ).
    
    write :/ num5. "floor获取不大于num5的最大整数。
    
    num5 = '4.33'.
    
    num5 = trunc( num5 ).
    
    write :/ num5. "trunc获取整数部分。

    8移位操作

        语法:shift <变量名>

    对变数做移位元操作,默认移动一位

        语法:shift <变量名> by <位数> places <left|right> [circular]

    使用位数指定移动多少位,left,right指定左移或者右移,circular关键子表示是否循环移动。

        语法:shift <变量名> <left deleting leading | right deleting trailing>  <子串> [in (byte|character) mode]

        通过移位操作去掉指定重复的子串

    “ABCDEFG”移位操作,每次移位操作过后,会将改变的值赋给被处理变量。

    输出示例:

    左移一位:BCDEFG

    左移两位:DEFG

    循环左移:EFGD

    循环右移:DEFG

    示例:

    DATA: Str type String value 'ABCDEFG'.
    
    "shift,只能是C,N,D,T,STRING支持
    
    "默认左移一位
    
    SHIFT Str.
    
    write :/ Str.
    
    "左移两位
    
    shift Str by 2 PLACES LEFT.
    
    WRITE :/ Str.
    
    "默认循环左移
    
    shift Str by 1 PLACES CIRCULAR.
    
    write :/ Str.
    
    "设置为循环右移
    
    shift Str by 1 places  RIGHT CIRCULAR.
    
    WRITE :/ Str.
    
     
    
    "shift去掉前导0
    
    DATA:str(10) TYPE C VALUE '000233'.
    
    SHIFT str LEFT DELETING LEADING '0'.
    
    "调用function
    
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    
      EXPORTING
    
        INPUT         = str
    
      IMPORTING
    
       OUTPUT        = str.

    使用unpack语句增加前导0

    "增加前导0
    
    DATA: str(5) TYPE C.
    
    UNPACK '123' to str.
    
     
    
    "调用function,增加前导0
    
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    
      EXPORTING
    
        INPUT         = '123'
    
      IMPORTING
    
        OUTPUT        = str.

    9字符串操作

    字符串相关操作:

    1、获取字符串长度

    语法:strlen( str ),注意变量和括号之间需要使用空格隔开;

    语法:describe field <字符串> length <变量> [in byte|character mode]

    这种方式获取字符串长度,就是定义的类型的长度,因为如果值的长度小于定义长度,系统会自动填充字符到指定长度。

    示例:

    DATA: Str TYPE String VALUE 'abcdef',
    
          len TYPE I.
    
    len = strlen( Str ).
    
    WRITE :/'字符长度为',len.
    
     
    
    "这种方式str类型只能是C,N,D,T类型
    
    DATA: str(10) TYPE C VALUE 'abcdef',
    
          len TYPE I.
    
    DESCRIBE FIELD str LENGTH len in BYTE MODE.
    
    WRITE:/ len.
    
    DESCRIBE FIELD str LENGTH len in CHARACTER MODE.
    
    WRITE:/ len.

    2、字符串替换

    语法:replace <子串1> with <子串2> into <被操作字符串>

    使用将字符串中的子串1替换为子串2

        语法:replace section [offset <数字>] [length <数字>] of <被操作字符串> with <子串> [in (byte|character) mode]

        使用子串替换字符串offset指定位置开始后length长度的字符串。

        语法:replace

    [first occurrence | all occurrences of]

    [substring]

    <被替换子串> in <被操作字符串> with <新字符串>

        [in (byte|character) mode]

    [respecting|ignoring case]

        [replacement count <变数>]

        [replacement offset <变数>]

        [replacement length <变数>]

        语法:overlay <字符串> with <字符串> [ only patterm]

    示例:

    "字符串替换
    
    DATA :Str01 type String value 'abcdefg',
    
          Str02 type String value 'def',
    
          Str03 type String value '234'.
    
    REPLACE Str02 WITH Str03 INTO Str01.
    
     
    
    "字符串替换
    
    DATA:str TYPE string VALUE 'hello world,welcome'.
    
    REPLACE SECTION OFFSET 5 LENGTH 8 of str with '123'.
    
    WRITE:/ str.
    
     
    
    "字符串替换
    
    DATA:str TYPE string VALUE 'hello world,welcome'.
    
    "将第一个 o 替换成 2
    
    REPLACE 'o' in str WITH '2'.
    
    "substring关键词可有可无
    
    REPLACE SUBSTRING 'o' in str WITH '2'.
    
    "替换所有出现的'o'
    
    REPLACE ALL OCCURRENCES  OF 'o' in str WITH '2'.
    
     
    
    DATA:count TYPE I.
    
    DATA:offset TYPE I.
    
    DATA:length TYPE I.
    
    REPLACE ALL OCCURRENCES OF 'o' in str WITH '22'
    
    "替换次数
    
    REPLACEMENT COUNT count
    
    "最后一次替换位置
    
    REPLACEMENT OFFSET offset
    
    "替换字符串长度
    
    REPLACEMENT LENGTH length.

    3、字符串大小写转换

        语法:

        转换成大写

    translate <字符串> to upper case.

    转换成小写

        translate <字符串> to lower case.

    4、查找字符串

        search语法:

    search <被操作字符串> for <子串>

    [in (byte|character) mode]

    [starting at <数字>]

    [ending at <数字>]

    [ABBREVIATED]

    [and mark]

        Starting at:指定查询范围

        Ending at :指定查询范围

        查找字符串中是否有对应子串,如果查找到sy-subrc = 0,没找到sy-subrc=4。在sy-fdpos中存放查找到子串字符开始位置。

       

        find语法:

    find <查找字符串> in section

    [offset <数字>] [length <数字>] of <字符串>

    [in (byte|character) mode]

    [respecting|ignoring case]

    [match offset <变数a>]

    [match length <变数b>]

        查找指定字符串在字符串中位置,

        respecting case :严格匹配,区分大小写;

        ignoring case :不严格匹配,不区分大小写;

    match offset <数字> 比较分段;

    match length <数字>比较的范围;

    变量a保存查找字符串在匹配的位置;

    变量b,查找字符串长度,如果没有找到为0。

    示例:

    "查找字符串,找到sy-subrc为0,没有找到sy-subrc为4.sy-fdpos存放找到字符开始位置
    
    DATA: Str05 type String value 'abcdefg',
    
         Str06 type String value 'de'.
    
    SEARCH Str05 for Str06.
    
    WRITE:/'sy-subrc=',sy-subrc,'sy-fdpos=',sy-fdpos.
    
     
    
    DATA:begin_index TYPE I,
    
         char_len TYPE I.
    
    "查找字符串
    
    FIND 'name'
    
    IN SECTION OFFSET 5 LENGTH 18 OF 'hello everyone my name is tom'
    
    "查找到匹配开始位置
    
    MATCH OFFSET begin_index
    
    "匹配字符串长度
    
    MATCH LENGTH char_len.
    
    WRITE:/ 'begin_index:',begin_index,';char_len=',char_len.

    5、字符串截取

    语法:<字符串>+a(b),从a位置开始,读取b长度字符串

    示例:

    "字符串截取操作
    
    Data str07 type String value 'hello world'.
    
    str07 = str07+6(5).
    
    WRITE :/'截取字符串:',str07.

    6、字符串去除空格

        语法:condense <字符串>

    示例:

    "字符串去除空格(字符串后面的无论多少空格都不计算位数)
    
    Data: str08 type String value '       hello world       ',
    
          lenth type I.
    
    lenth = strlen( str08 ).
    
    write:/'原长度',lenth.
    
    CONDENSE str08.
    
    lenth = strlen( str08 ).
    
    write:/'去除前后空格',lenth.
    
    "去除所有空白
    
    CONDENSE str08 NO-GAPS.
    
    lenth = strlen( str08 ).
    
    write:/'去除所有空白',lenth.

    7、字符串拼接

        语法:concatenate <子串1> <子串2> [<子串3>……] into <字符串>

    [in (byte|character) mode] [separated by <字符串>]

        将子串1和子串2等多个字符串通过指定字符串连接,然后赋值给字符串。

        语法:使用’&&’也可以连接字符串

    示例:

    "字符串连接
    
    DATA: Str09 type String value 'hello',
    
          Str10 type String value 'world',
    
          Str11 type String.
    
    CONCATENATE Str09 Str10 INTO str11.
    
    WRITE :/'连接后字符串',str11.
    
    CONCATENATE Str09 Str10 INTO str11 SEPARATED BY ','.
    
    “CONCATENATE Str09 Str10 INTO str11 SEPARATED BY SPACE.
    
    WRITE :/'连接后字符串',str11.
    
     
    
    DATA:Str14(12) TYPE c VALUE 'hello'.
    
    DATA:Str15(5) TYPE c VALUE 'world'.
    
    DATA:Str16(17) TYPE c.
    
    DATA:Str17(17) TYPE c.
    
    CONCATENATE Str14 '|' Str15 INTO Str16.
    
    WRITE:/'concatenate连接:',Str16.
    
     
    
    Str17 = Str14 && '|' && Str15 .
    
    WRITE:/'&&连接:',Str17.

    8、字符串分割

        语法:split <字符串> at <分割字符串> into <子串1> <子串2> [in (byte|character) mode]。

    将字符串根据指定字符串分割成子串1和子串2。

    split <字符串> at <分割字符串> int table <内表> [in (byte|character) mode]。

    分割字符串到指定内表,内表中一定要有C类型字段。

    示例:

    "字符串分割
    
    DATA: str12 type String,
    
          str13 type String.
    
    SPLIT Str11 at ',' INTO str12 str13.
    
     
    
    DATA:BEGIN OF res_tab OCCURS 0,
    
        str(12) TYPE C,
    
      END OF res_tab.
    
    "将字符串分割进内表,内表字段必须是C类型,String类型不行
    
    SPLIT str11 at ' ' INTO TABLE res_tab.

    9、字符串模式匹配

    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

    比较时,如果str1和str2中有前置空格,可以加入比较,后置空格不加入比较。

    <str1> co <str2>:str1包含于或等于str2,返回true;区分大小写,str1中字符在str2中都能找到,顺序不要求。

    <str1> cn <str2> :str1 不仅包含于或等于str2,str1中有str2中没有的字符,返回true;区分大小写,顺序无要求。

    示例:

    DATA text1 type string value 'dea'.
    
    DATA text2 type string value 'abcde'.
    
     
    
    "text1的内容包含于或等于text2内容,不会比较空格
    
    IF text1 co text2.
    
      WRITE / 'co true'.
    
    ELSE.
    
      WRITE / 'co false'.
    
    ENDIF.
    
     
    
    "text1不仅包含text2内容,除了text2内容还包括其他内容"
    
    text1  = ' defo'.
    
    text2 = 'def,helo'.
    
     
    
    IF text1 cn text2.
    
      WRITE / 'cn true'.
    
    ELSE.
    
      WRITE / 'cn false'.
    
    ENDIF.

    <str1> ca <str2>: str1 包含任何str2字符,返回true;区分大小写,顺序无要求。

    <str1> na <str2>:str1 不包含任何str2字符,返回true;区分大小写,顺序无要求。

    示例:

    "text1只要含text2任何一点内容,为true"
    
    text1  = ' g'.
    
    text2 = ' abcdG'.
    
    IF text1 ca text2.
    
      WRITE / 'ca true'.
    
    ELSE.
    
      WRITE / 'ca false'.
    
    ENDIF.
    
    
    "text1不包含text2任何内容"
    
    text1  = 'G'.
    
    text2 = 'ag'. "使用大写G为false.
    
     
    
    IF text1 na text2.
    
      WRITE / 'na true'.
    
    ELSE.
    
      WRITE / 'na false'.
    
    ENDIF.

    CS和NS字符串整体匹配:不区分大小写,顺序一致

    <str1> cs <str2> :str1 包含str2字符串,返回true;不区分大小写,顺序有要求。

    <str1> ns <str2> :str1 不包含str2字符串,返回true;不区分大小写,顺序有要求。

    示例:

    "text1包含text2,连续字符串匹配,不区分大小写"
    
    text1  = 'defG'.
    
    text2 = 'fg'."大小写都为true
    
     
    
    IF text1 cs text2.
    
      WRITE / 'cs true'.
    
    ELSE.
    
      WRITE / 'cs false'.
    
    ENDIF.
    
     
    
    "text1不包含text2,连续字符串匹配,不区分大小写"
    
    text1  = 'abcdefG'.
    
    text2 = 'fG'.
    
     
    
    IF text1 ns text2.
    
      WRITE / 'ns true'.
    
    ELSE.
    
      WRITE / 'ns false'.
    
    ENDIF.

    CP和NP是模式匹配:不区分大小写,顺序一致,#表示区分大小写,*代表任意字符。

    <str1> cp <str2> :str1包含str2字符串,返回true;

    <str1> np <str2> :str1不包含str2字符串,返回true;

    示例:

    "text1包含text2,模式匹配。#用来表示区分大小写,*任意字符"
    
    text1  = 'BcdefG'.
    
    text2 = '*b*'.
    
     
    
    IF text1 cp text2.
    
      WRITE / 'cp true'.
    
    ELSE.
    
      WRITE / 'cp false'.
    
    ENDIF.
    
     
    
    "text1不包含text2,模式匹配。#用来表示区分大小写,*任意字符"
    
    text1  = 'BcdefG'.
    
    text2 = 'b*'.
    
    IF text1 np text2.
    
      WRITE / 'np true'.
    
    ELSE.
    
      WRITE / 'np false'.
    
    ENDIF.
  • 相关阅读:
    扫移动护理系统mysql数据库视图的Database通讯点报错Caused by: java.sql.SQLException: Value '00000000 00:00:00' can not be represented as java.sql.Timestamp
    ORACLE sql insert case when
    解决超过4000字符的字符串insert的时候报错ORA01461: 仅能绑定要插入LONG列的LONG值
    将92服务器上面的加解密服务run.bat形式改为后台服务形式
    Oracle调整sga_max_size内存参后报ORA00844和ORA00851 SGA_MAX_SIZE 42949672960 cannot be set to more than MEMORY_TARGET 6979321856. 导致数据库连接不上去,提示ORA01034:ORACLE notavailable
    解决MATLAB一直初始化,加速MATLAB(转载)
    WIN7下隐藏或显示Lenovo_Recovery_Q盘(转载)
    flowable流程中心设计(一)
    mysqlgroup by原理
    SpringMVC系列导航
  • 原文地址:https://www.cnblogs.com/tangToms/p/11602942.html
Copyright © 2020-2023  润新知