ABAP CA CO CS等操作符

本文介绍 ABAP 中的字符串匹配操作,包括部分匹配(CA)、完全匹配(CO)、字符串包含(CS)及模式匹配(CP)。此外,还介绍了特殊字符的使用方法和字符串位操作技巧。

1.CA  contain  any

str1 ca str2  遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:只要有一个字符成功,就为true.

如:str1 = ‘我a’  str2='hubab'   -----true

 

CO contain  only

str1 ca str2  遍历str1,其中的每个字符对应到str2的每个字符,如果对应成功,注意:str1中的每一個字符成功,就为true.

如:str1 = ‘我a’  str2='hubab'  -----false

str1 = ‘ba’  str2='hubab'   -----true

 

CS contain string

str1 ca str2  str1 是否包含str2。

 

CP contains pattern 

str1 ca str2  

str1 = 'aac'   str2 = '#aA#c'    true

str1 = 'aAc'   str2 = '#aA#c'    true

str1 = '123abc123' str2 = '*abc*'    sy-fdpos = 3.

 

摘自網絡:

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


http://blog.csdn .NET/zhongguomao/article/details/7825569
### 使用 `VALUE` 操作符对内表赋值 在 ABAP 中,`VALUE` 操作符提供了一种简洁的方式来初始化结构或内表,并支持在声明时直接赋值。该操作符适用于结构体和内表的初始化,尤其在构造表达式中非常高效。 #### 使用 `VALUE` 初始化并赋值内表 当使用 `VALUE` 操作符构造内表时,可以通过括号内的表达式逐行定义内表内容。这种方式适用于一次性初始化内表并填充数据的场景。 ```abap TYPES: BEGIN OF ty_line, comp1 TYPE i, comp2 TYPE c LENGTH 10, END OF ty_line. TYPES: ty_line_tab TYPE TABLE OF ty_line WITH EMPTY KEY. DATA(itab) = VALUE ty_line_tab( ( comp1 = 1 comp2 = 'A' ) ( comp1 = 2 comp2 = 'B' ) ). ``` 该方式会清空内表变量原有内容,并重新赋值。如果仅需初始化结构但不赋值字段,也可以使用空括号: ```abap DATA(ls_jerry) = VALUE #( ). ``` 此语句将结构初始化为空值,适用于占位或后续赋值操作[^1]。 #### 使用 `BASE` 附加方式扩展已有内表 如果希望在不删除已有数据的前提下向内表中添加新行,可以结合 `BASE` 附加使用 `VALUE` 操作符。这种方式特别适用于动态扩展内表内容的场景。 ```abap itab = VALUE ty_line_tab( BASE itab ( comp1 = 3 comp2 = 'C' ) ( comp1 = 4 comp2 = 'D' ) ). ``` 通过 `BASE` 关键字,`VALUE` 表达式会基于 `itab` 当前内容进行扩展,而不会清空原有数据。这在需要逐步构建或更新内表时非常有用[^2]。 #### 使用 `VALUE` 构造嵌套结构的内表 对于包含嵌套结构的内表,`VALUE` 也支持逐层构造。例如,如果内表的每一行包含一个结构体字段,可以使用嵌套的 `VALUE` 表达式进行赋值。 ```abap TYPES: BEGIN OF ty_nested, id TYPE i, detail TYPE ty_line, END OF ty_nested. TYPES: ty_nested_tab TYPE TABLE OF ty_nested WITH EMPTY KEY. DATA(nested_tab) = VALUE ty_nested_tab( ( id = 1 detail = VALUE ty_line( comp1 = 10 comp2 = 'X' ) ) ( id = 2 detail = VALUE ty_line( comp1 = 20 comp2 = 'Y' ) ) ). ``` 这种嵌套结构的构造方式适用于复杂数据模型的初始化,提高了代码的可读性和开发效率。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值