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 FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言