ABAP 前导0的处理

2024-04-10 21:12
文章标签 处理 abap 前导

本文主要是介绍ABAP 前导0的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前导0这个东西真的很烦,经常因为前导0导致连接条件有问题,出不来数据,这里就总结一下前导0 在sql语句中的添加和去除

文章目录

  • ABAP 前导0的处理
    • 添加前导0-自适应
      • 运行结果
    • 去除前导0
      • 方法一、使用SUBSTRING截取
        • 运行结果
      • 方法二、去零法
        • 运行结果

ABAP 前导0的处理

添加前导0-自适应

应用场景:需要用前导0来填充某些字段

REPORT z_test_zero_lhy.SELECTcarrid, "航线connid, "航班号lpad( connid, 10, '0' ) AS connid_l "在前面添加前导0,填充到10个长度为止FROM sflightINTO TABLE @DATA(lt_lpad).cl_demo_output=>display( lt_lpad ).

运行结果

在这里插入图片描述

在没有添加前导0的时候,查询不到数据

REPORT z_test_zero_lhy.DATA: BEGIN OF gs_data,werks TYPE mseg-werks,matnr TYPE marc-matnr,END OF gs_data.DATA gt_data LIKE TABLE OF gs_data.gs_data-werks = '1000'.
gs_data-matnr = '1781'.
APPEND gs_data TO gt_data.SELECTb~werks,b~matnr,c~maktxFROM @gt_data AS aLEFT JOIN marc AS b ON a~werks = b~werks AND a~matnr = b~matnrLEFT JOIN makt AS c ON  a~matnr = c~matnrWHERE c~spras = @sy-languINTO TABLE @DATA(lt_matnr).cl_demo_output=>display( lt_matnr ).

在这里插入图片描述

添加前导0之后

REPORT z_test_zero_lhy.DATA: BEGIN OF gs_data,werks TYPE mseg-werks,matnr TYPE marc-matnr,END OF gs_data.DATA gt_data LIKE TABLE OF gs_data.gs_data-werks = '1000'.
gs_data-matnr = '1781'.
APPEND gs_data TO gt_data.SELECTb~werks AS marc_werks,b~matnr AS marc_matnr,c~maktxFROM @gt_data AS aLEFT JOIN marc AS b ON a~werks = b~werks AND lpad( a~matnr,18,'0' ) = b~matnrLEFT JOIN makt AS c ON  lpad( a~matnr,18,'0' ) = c~matnrWHERE c~spras = @sy-languINTO TABLE @DATA(lt_matnr).cl_demo_output=>display( lt_matnr ).

在添加完前导0之后,才可以查询出相关的数据:
在这里插入图片描述

去除前导0

应用场景
A表A1字段取值后面两位与B表B1字段进行匹配连表,即连接条件的两个字段的长度不相等的时候,需要截取一段长度

方法一、使用SUBSTRING截取

这个方法适用于知道需要截取的位数,如下:

REPORT z_test_zero_lhy."工厂和供应商连接
SELECTmarc~werks, "工厂marc~matnr, "物料l~lifnr "供应商或债权人的帐号FROM marcLEFT JOIN lfa1 AS l ON substring( l~lifnr,7,4 ) = marc~werks "substring 供应商号 第七位开始取值4位 与 工厂匹配WHERE marc~werks = '1000'INTO TABLE @DATA(lt_temp)UP TO 20 ROWS.IF sy-subrc = 0.cl_demo_output=>display( lt_temp ).ENDIF.
运行结果

在这里插入图片描述

方法二、去零法

这个方法适用于不知道需要截取位数的情况下,可以使用去零法
LTRIM( arg, char ), String with the content of arg in which all trailing blanks and leading characters are removed that match the character in char. A blank in char is significant.
翻译:内容为arg的字符串,删除所有与char中字符匹配的尾随空格和前导字符。char中的空白是重要的。

"工厂和供应商连接
SELECTmarc~werks, "工厂marc~matnr, "物料l~lifnr "供应商或债权人的帐号FROM marcLEFT JOIN lfa1 AS l ON ltrim( l~lifnr,'0' ) = marc~werks "ltrim 供应商号 去掉0WHERE marc~werks = '1000'INTO TABLE @DATA(lt_temp2)UP TO 5 ROWS.IF sy-subrc = 0.cl_demo_output=>display( lt_temp2 ).ENDIF.
运行结果

在这里插入图片描述

这篇关于ABAP 前导0的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892162

相关文章

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装