当前位置: 首页 > news >正文

ABAP开发中的前导零和末尾零

前导零和末尾零是指分别出现在数字序列中第一个非零数字之前和最后一个非零数字之后的任何零数字。

关于前导 0

在 SAP 系统中,大多数字母数字字段在数据库中存储时都带前导零,完全占用字段的定义长度。但是,当字段显示给最终用户时,前导零就被省略掉了。

SAP 通过使用所谓的转换出口将数值从外部(输出)格式转换为内部(输入)格式来处理这种数据规范化过程。

添加或删除前导零是 ABAP 开发人员日常生活中的常见要求。随着语法的不断发展,实现上述要求的可能性也越来越多。

转换退出示例

下面的示例使用的是订单号数据元素 AUFNR,其数据类型为 CHAR,长度为 12。

DATA(lv_order_number) = CONV aufnr( 12345 ).

在 ABAP 字典中打开我们要转换的字段域,就会发现我们可以使用 “ALPHA ”转换例程。开发人员可以使用这些功能模块在大多数数字/ID 类型字段中添加和删除前导零。

ABAP 词典中的域 AUFNR (SE11):

函数模块

在过去,ALPHA 转换例程的功能模块是添加和删除零的最佳方法。

DATA(lv_order_number) = CONV aufnr( 12345 ).
WRITE |{ lv_order_number }|.    "Output: 12345"Add leading zeros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGinput  = lv_order_numberIMPORTINGoutput = lv_order_number.WRITE |{ lv_order_number }|.    "Output: 000000012345"Remove leading zeros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGinput  = lv_order_numberIMPORTINGoutput = lv_order_number.WRITE |{ lv_order_number }|.    "Output: 12345

使用字符串模板的简易形式

自从 ABAP 7.4 中的字符串模板和 ABAP 7.2 中的嵌入式 ALPHA 表达式出现后,ALPHA 转换的结果就可以在一行中实现。

DATA(lv_order_number) = CONV aufnr( 12345 ).
WRITE |{ lv_order_number }|.    "Output: 12345lv_order_number =  |{ lv_order_number ALPHA = IN }|.
WRITE |{ lv_order_number }|.    "Output: 000000012345lv_order_number =  |{ lv_order_number ALPHA = OUT }|.
WRITE |{ lv_order_number }|.    "Output: 12345

带构造函数运算符 CONV 的内联声明

我们甚至可以在一行中声明一个变量并填充前导零,这样就不需要可能的辅助变量了。

DATA(lv_order_number) = CONV aufnr( |{ '12345' ALPHA = IN }| ).
WRITE |{ lv_order_number }|.    "Output: 000000012345

其他例子

用 SHIFT 删除前导零

SHIFT 语句可用于删除零字符串。

DATA(lv_order_number) = CONV aufnr( |{ '12345' ALPHA = IN }| ).
WRITE |{ lv_order_number }|.    "Output: 000000012345SHIFT lv_order_number LEFT DELETING LEADING '0'.
WRITE |{ lv_order_number }|.    "Output: 12345

用 OVERLAY 添加尾数零

OVERLAY 语句可用于为字符串填充尾部的零。

DATA(lv_order_number) = CONV aufnr( 12345 ).
WRITE |{ lv_order_number }|.    "Output: 12345"Helper variable of type string, without any leading or trailing zeros
DATA(lv_order_number_string) =  |{ lv_order_number ALPHA = OUT }|.
OVERLAY lv_order_number_string WITH '000000000000'.
WRITE |{ lv_order_number_string }|.    "Output: 123450000000
http://www.lryc.cn/news/532958.html

相关文章:

  • Baklib赋能数字内容体验个性化推荐提升用户体验的未来之路
  • 关于Redis的持久化
  • 【C语言标准库函数】指数与对数函数:exp(), log(), log10()
  • 2024美团春招硬件开发笔试真题及答案解析
  • Python内置函数map(), list(), len(), iter(), hex(), hash()的详细解析,包括功能、语法、示例及注意事项
  • [LVGL] 在VC_MFC中移植LVGL
  • MySQL视图索引操作
  • 一次奇怪的空指针问题分析:事务、死锁与隐式回滚
  • 解决aspose将Excel转成PDF中文变成方框的乱码问题
  • .net8.0使用EF连接sqlite数据库及使用Gridify实现查询的简易实现
  • 2025.2.5——五、[网鼎杯 2020 青龙组]AreUSerialz
  • 电风扇各国检测认证详细介绍美国FCC+UL欧盟CE+ROHS日本PSE+METI备案+英国UKCA
  • Flutter Isolate解决耗时任务导致卡死
  • 使用deepseek快速创作ppt
  • STM32的HAL库开发---高级定时器---输出比较模式实验
  • python Excel 表读取合并单元格以及清除空格符
  • 额外题目汇总2-链表
  • C#控件开发6—指示灯
  • 探索从传统检索增强生成(RAG)到缓存增强生成(CAG)的转变
  • 【学习总结|DAY036】Vue工程化+ElementPlus
  • 【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )
  • c# 2025/2/7 周五
  • 蓝桥杯思维训练(五)
  • I.MX6ULL 中断介绍下
  • Elasticsearch 生产集群部署终极方案
  • Python用langchain、OpenAI大语言模型LLM情感分析苹果股票新闻数据及提示工程优化应用...
  • 【正点原子K210连载】第六十七章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南
  • Centos Ollama + Deepseek-r1+Chatbox运行环境搭建
  • ReactNative进阶(五十九):存量 react-native 项目适配 HarmonyOS NEXT
  • go并发和并行