news 2026/4/15 15:44:00

10.[SAP ABAP] 字符串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10.[SAP ABAP] 字符串

文章目录

    • 一、字符串的数据类型
    • 二、声明与初始化
    • 三、常用字符串操作
      • 3.1 连接字符串
      • 3.2 获取长度
      • 3.3 截取字串
      • 3.4 查找子串
      • 3.5 替换内容
      • 3.6 大小写转换
      • 3.7 去除空格
      • 3.8 拆分字符串(按分隔符)
      • 3.9 合并内表为字符串
      • 3.10 字符串模板(STRING Temlates)-强大功能
      • 3.11 字符串格式化
      • 四、总结与建议

在SAP ABAP中,字符串(String)是处理文本数据的核心数据类型之一。字符串(String)是一种动态长度的字符数据类型,用于存储文本信息。

一、字符串的数据类型

ABAP中常用的字符类型有:

类型说明
C固定长度字符串(e.g DATA lv_text(20) TYPE C.)C变量来保存字母数字字符,最少1个字符,最多65535个字符。默认情况下,它们左对齐。
STRING动态长度字符串(推荐用于不确定长度的文本)
CHAR与C相同,是C的别名
CLIKE通用字符类接口,用于泛型处理

推荐使用STRING类型处理现代ABAP程序中的文本,因为它不会因长度限制而截断内容。

二、声明与初始化

REPORT Z_GOYEER_01. DATA my_Char(6) VALUE 'GOYEER'. WRITE my_Char. DATA: lv_str1 TYPE STRING, lv_str2 TYPE STRING VALUE 'GOYEER', lv_str3 TYPE STRING VALUE 'ABAP'. WRITE / lv_str1. WRITE / lv_str2. WRITE / lv_str3.

三、常用字符串操作

3.1 连接字符串

lv_str1 = 'GOYEER' && ' ABAP'. " 结果: 'GOYEER ABAP' lv_str1 = |{ lv_str2 } { lv_str3 }|. " 字符串模板(推荐,可嵌入变量)

3.2 获取长度

DATA(len) = strlen( lv_str1 ). " 返回字符数(Unicode 系统下)

3.3 截取字串

" 偏移语法:从第0位开始取5个字符 DATA(sub) = lv_str1+0(5). " 或使用内置函数 sub = substring( val = lv_str1 off = 0 len = 5 ).

3.4 查找子串

FIND 'ABAP' IN lv_str1. IF sy-subrc = 0. WRITE: / 'Found!'. ENDIF. " 获取位置 FIND FIRST OCCURRENCE OF 'ABAP' IN lv_str1 MATCH OFFSET DATA(pos).

3.5 替换内容

REPLACE ALL OCCURRENCES OF 'ABAP' IN lv_str1 WITH 'BTP'. " 函数式写法(不可变,返回新字符串) lv_str1 = replace( val = lv_str1 sub = 'ABAP' with = 'BTP' ).

3.6 大小写转换

lv_str1 = to_upper( lv_str1 ). " 转大写 lv_str1 = to_lower( lv_str1 ). " 转小写

3.7 去除空格

lv_str1 = trim( lv_str1 ). " 去除首尾空格 lv_str1 = condense( lv_str1 ). " 去除所有多余空格(中间多个空格变一个)

3.8 拆分字符串(按分隔符)

DATA: lt_parts TYPE STANDARD TABLE OF string. SPLIT 'A,B,C' AT ',' INTO TABLE lt_parts.

3.9 合并内表为字符串

DATA(result) = concat_lines_of( table = lt_parts sep = ';' ).

3.10 字符串模板(STRING Temlates)-强大功能

DATA: name TYPE string VALUE 'Alice', age TYPE i VALUE 30. DATA(msg) = |Hello, my name is { name } and I am { age } years old.|. " 输出: Hello, my name is Alice and I am 30 years old.

3.11 字符串格式化

|Price: { price CURRENCY = 'USD' NUMBER = '999,999.99' }|

四、总结与建议

  • 不要用C类型存储不确定长度的文本(易截断)
  • 避免对STRING使用OCCURS或数组式访问(如str[1]无效)。
  • 使用strlen( )而非xstrlen( )(后者用于字节)。
  • 在 Unicode 系统中,STRING按字符处理,更安全。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 2:20:55

仿写文章Prompt:NumberFlow SSR技术深度解析

仿写文章Prompt:NumberFlow SSR技术深度解析 【免费下载链接】number-flow An animated number component for React, Vue, and Svelte. 项目地址: https://gitcode.com/gh_mirrors/nu/number-flow 请基于NumberFlow项目的SSR功能,撰写一篇技术深…

作者头像 李华
网站建设 2026/4/15 12:57:52

BaiduPanFilesTransfers:告别百度网盘手动转存的终极解决方案

BaiduPanFilesTransfers:告别百度网盘手动转存的终极解决方案 【免费下载链接】BaiduPanFilesTransfers 百度网盘批量转存工具 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduPanFilesTransfers 你是否曾经为了转存几个百度网盘分享链接,不得…

作者头像 李华
网站建设 2026/4/15 12:59:05

OpenWrt网络加速神器:迅雷快鸟插件终极配置指南

OpenWrt网络加速神器:迅雷快鸟插件终极配置指南 【免费下载链接】luci-app-xlnetacc OpenWrt/LEDE LuCI for XLNetAcc (迅雷快鸟) 项目地址: https://gitcode.com/gh_mirrors/lu/luci-app-xlnetacc 在当今高速网络时代,OpenWrt系统用户有了更好的…

作者头像 李华
网站建设 2026/4/15 12:09:19

NoHello终极指南:快速隐藏Root权限,打造安全防护屏障

NoHello终极指南:快速隐藏Root权限,打造安全防护屏障 【免费下载链接】NoHello A Zygisk module to hide root. 项目地址: https://gitcode.com/gh_mirrors/nohe/NoHello 🚀 你是否遇到过这样的困扰? 手机Root后&#xff0…

作者头像 李华
网站建设 2026/4/15 12:08:19

Maestro性能基准测试终极指南:建立UI响应时间标准

Maestro性能基准测试终极指南:建立UI响应时间标准 【免费下载链接】maestro Painless Mobile UI Automation 项目地址: https://gitcode.com/gh_mirrors/ma/maestro 想要确保你的移动应用UI测试既快速又可靠?Maestro作为一款现代化的移动UI自动化…

作者头像 李华
网站建设 2026/4/10 20:20:31

Windows命令行安装器Scoop终极指南:告别繁琐软件管理

Windows命令行安装器Scoop终极指南:告别繁琐软件管理 【免费下载链接】Scoop A command-line installer for Windows. 项目地址: https://gitcode.com/gh_mirrors/scoop4/Scoop 还在为Windows软件安装的种种烦恼而头疼吗?😩 那些没完没…

作者头像 李华