公众号:SAP Technical
本文作者: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'.

【ABAP系列】SAP ABAP-模块 字符串操作基础知识的更多相关文章

  1. 【ABAP系列】ABAP CL_ABAP_CONV_IN_CE

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]ABAP CL_ABAP_CON ...

  2. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  3. Python专题三字符串的基础知识

    Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...

  4. spring cloud系列教程第四篇-Eureka基础知识

    通过前三篇文章学习,我们搭建好了两个微服务工程.即:order80和payment8001这两个服务.有了这两个基础的框架之后,我们将要开始往里面添加东西了.还记得分布式架构的几个维度吗?我们要通过一 ...

  5. Spring Cloud系列之Commons - 1. 背景与基础知识准备

    本文基于 Spring Cloud 2020.0 发布版的依赖 本系列会深入分析 Spring Cloud 的每一个组件,从Spring Cloud Commons这个 Spring Cloud 所有 ...

  6. Golang 入门系列(三)Go语言基础知识汇总

    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...

  7. JavaEE系列之(一)JSP基础知识详解

    一.JSP基础语法     1.JSP简介        JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...

  8. java输入输出--I/O操作基础知识学习

    一.java的I/O流 1. 输入流(字节流和字符流,字节流操作的数据单元是8位的字节,字符流操作的是16位的字符)(InputStream 和Reader作为基类) 2.输出流(字节流和字符流,字节 ...

  9. 日志学习系列(一)——Log4net的基础知识学习

    今天把Log4net日志记录做了封装,作为一个公共的类库.记录一下应该注意的地方.先了解一下log4net的理论知识. 参考百度百科 一.log4net是什么? log4net库是Apache log ...

随机推荐

  1. HNUSTOJ-1689 送外卖(TSP问题)

    1698: 送外卖 时间限制: 1 Sec  内存限制: 128 MB 提交: 115  解决: 24 [提交][状态][讨论版] 题目描述 在美团和饿了么大行其道的今天,囊中羞涩的小周和小美,也随大 ...

  2. 问题 A: 组合数

    问题 A: 组合数 时间限制: 1 Sec  内存限制: 128 MB提交: 1975  解决: 150[提交] [状态] [命题人:jsu_admin] 题目描述 求组合数C(N,M),以及C(N, ...

  3. 除了a链接跳转,还有其他的跳转方式

    一.直接在要跳转部分加上onclick事件 1.加入onclick事件: <div onclick="window.open('http://baidu.com','_blank')& ...

  4. Feign负载均衡

    Feign是一个声明式的Web Service客户端,比Ribbon好用,默认也是轮巡.我们只需要使用Feign创建一个接口,并用注解就好了.如果你基于spring cloud发布一个接口,实际上就是 ...

  5. PhotonServer新增应用的配置

    一,如下代码配置 <MyGameInstance MaxMessageSize=" MaxQueuedDataPerPeer=" PerPeerMaxReliableData ...

  6. asp.net core2.1认证和授权解密

    来源:https://www.cnblogs.com/pangjianxin/p/9372562.html asp.net core2.1认证和授权解密 本篇文章翻译自:https://digital ...

  7. sqoop简单使用

    一,通过sqoop将MySQL里面的数据加载到HDFS 先查看有哪些数据库 查看表person sqoop list-databases --connect jdbc:mysql://ly-p2p4: ...

  8. 解决 myEclipse与tomcat 不同步的问题

    在我们使用eclipse做web调试的过程中,一般只需要在eclipse修改程序,然后在浏览器刷新就能发现文件更改,今天突然发现保存后不能更改了.1.检查tomcat中的文件发现文件没有更新.2.检查 ...

  9. 10-基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台

    基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台 1.板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含一片TI DSPTMS3 ...

  10. 一、.Net Core 分块上传文件

    一..Net Core 分块上传文件 一.前端实现 @* For more information on enabling MVC for empty projects, visit http://g ...