
SAP ABAP使用技巧
文章平均质量分 76
本专栏专注于SAP ABAP语言的在实践中的使用技巧,并会介绍使用ABAP语言在performance方面的最佳实践。
十年铸器
SAP领域技术博客
展开
-
ABAP使用SQL直接更新数据库与使用IN UPDATE TASK的区别
本文总结了在ABAP中,使用SQL直接更新数据库与使用IN UPDATE TASK的区别原创 2024-07-18 20:15:00 · 2690 阅读 · 1 评论 -
ABAP代码中如何监控COMMIT WORK执行结束?
本文介绍了ABAP代码中监控COMMIT WORK执行结束的一种方式,通过对于事件IF_OS_TRANSACTION~FINISHED的响应,让我们有机会在执行完SAP LUW的事务后,进行一些后续的操作。原创 2024-07-13 10:00:00 · 594 阅读 · 0 评论 -
介绍一个ABAP中基本已经被遗忘的技术 - Object Services(对象服务)
本文介绍了ABAP中的对象服务,并阐述了这种技术的使用场景。原创 2024-07-13 09:00:00 · 788 阅读 · 0 评论 -
ABAP中如何取消对于某一事件(EVENT)的监听?
本文简介了ABAP中事件EVENT的用法,并介绍了如何取消对于某一事件的监听。原创 2024-07-12 21:45:00 · 590 阅读 · 0 评论 -
如何判断代码是否是在UPDATE TASK的Session中执行?
本文介绍了ABAP程序中的一个系统类CL_SYSTEM_TRANSACTION_STATE,通过此类,可以识别出程序在当前SAP LUW状态。原创 2024-07-12 22:00:00 · 551 阅读 · 0 评论 -
说一说ABAP CDS View的发展历史与特性
本文介绍了ABAP CDS的发展历史和主要特性,有助于更好地理解这项技术。原创 2024-06-27 22:45:00 · 1972 阅读 · 1 评论 -
SAP锁机制(SAP Locks)经验小结
本文总结了SAP Lock的工作原理,并分享了实际使用中的经验。原创 2024-05-29 13:10:49 · 2908 阅读 · 0 评论 -
如何使用SAP BAdI中的Filter
本文总结了BAdI中filter的用法,并给出了代码示例。原创 2024-05-22 13:55:38 · 1214 阅读 · 0 评论 -
【13】SAP ABAP性能优化 - 共享对象 (Shared Objects)
本文介绍了ABAP编程中“共享对象”的概念,我们除了传统的EXPORT和IMPORT,还可以通过“共享对象”实现在不同ABAP进程间数据的传递。通过事物代码SHMA创建共享域,通过事物代码SHMM监控共享域。原创 2023-08-08 16:39:15 · 1197 阅读 · 0 评论 -
介绍个小工具 - ABAP Cleaner
本文介绍的ABAP Cleaner的安装和使用方法,希望各位小伙伴借助这个工具,可以写出更加优雅的ABAP代码。原创 2023-08-04 11:27:17 · 1284 阅读 · 0 评论 -
利用abapGit的离线模式导出、导入开发对象
本文介绍如何利用abapGit的离线模式,将一个开发对象包从一个系统导入到另一个系统,从而完成代码迁移。原创 2023-08-03 11:24:25 · 2139 阅读 · 1 评论 -
简单说说SAP系统中BASIS这个Package
BASIS是SAP系统中非常基础的一个包,属于SAP_BASIS这个模块,这个模块其实也代表着SAP Netweaver的版本,其提供了非常多的NW级别的工具,希望大家可以发掘更多BASIS包下的宝藏类原创 2023-07-29 17:07:47 · 1350 阅读 · 0 评论 -
一个常用的ABAP报表程序模板
分享一个常用的ABAP报表程序模板,通过一个本地的main class实现GUI相关的校验,然后预留start( )方法来启动真正的业务逻辑。原创 2023-03-14 16:29:31 · 791 阅读 · 1 评论 -
ABAP中Literals的用法(untyped literal vs. typed literal)
本文总结了ABAP编程中,对于literal的常见处理方式,辨析了c类型与string类型的literal,包括如何声明literal?如何拼接两个literal?并介绍了如何在ABAP 7.55以上使用指定类型的Literal。原创 2023-02-27 19:39:28 · 714 阅读 · 0 评论 -
ABAP中生成GUID、UUID的方法汇总
本文总结了ABAP中生成GUID的各种方式原创 2022-03-11 11:47:47 · 8188 阅读 · 0 评论 -
ABAP中的基础数据类型(b, c, d, decfloat16, decfloat34, f, i, int8, n, p, s, string, t, x, xstring)
很多同学不太清楚ABAP语言中的数据类型,本篇文章总结了,在ABAP语言中,所有的预定义数据类型以及其初始值、长度和用法。原创 2022-02-08 18:21:05 · 9713 阅读 · 0 评论 -
ABAP中的SET UPDATE TASK LOCAL是什么意思?
经常有小伙伴问,看到有些ABAP程序中,在CALL FUNCTION IN UPDATE TASK之前,会加上一步SET UPDATE TASK LOCAL,这个到底是什么意思呢?1. 基础知识1.1 SAP LUW要弄清楚SET UPDATE TASK LOCAL的作用,要先了解SAP LUW这个概念,不知道的小伙伴可以先百度下。简而言之, SAP LUW (logical unit of work) 是一个逻辑业务单元,将属于同一业务单元的数据看做一个整体。在一个SAP LUW内的操作,要么一起成原创 2022-01-26 20:21:58 · 4359 阅读 · 0 评论 -
ABAP字符串拼接保留空格的3种方式
ABAP字符串拼接保留空格,可以使用以下几种方式:DATA lv_char1 TYPE string VALUE 'Hello'.DATA lv_char2 TYPE string VALUE 'World'." 反例: 空格' '被吞掉DATA(lv_string1) = lv_char1 && ' ' && lv_char2 && '!'." 方式1:使用literal operator ` `DATA(lv_string2) = lv_原创 2021-09-13 12:59:25 · 7160 阅读 · 0 评论 -
ABAP新语法中函数式调用的几种常见写法(to_upper, for, line_exists, xsdbool)
S/4HANA版本的NetWeaver平台上,ABAP已经进化的和现代编程语言很类似了。ABAP可以支持很多“函数式”调用的写法,这种写法让ABAP的写法更简短,也更容易被现代程序员所接受。本文列举了最常见的几种“函数式”调用的写法,供大家参考。"1. Variable in-line declarationDATA(variable) = 'A'. " MOVE 'A' TO variable."2. Use build-in functionDATA(uppercase) = to_up原创 2021-09-03 11:06:55 · 2546 阅读 · 2 评论 -
ABAP中的向上取整函数Ceil( )使用注意事项(decfloat16 & decfloat34)
1. 问题的提出**Ceil( )**是ABAP的向上取整函数,然在在使用中,还是要留意数据类型的问题哦。先看下面代码:DATA lv_result_1 TYPE i.DATA lv_result_2 TYPE i.DATA lv_count_1 TYPE i VALUE '3600'.DATA lv_count_2 TYPE i VALUE '3001'.DATA lv_size TYPE i VALUE '1000'.lv_result_1 = ceil( lv_count_1 / lv原创 2021-08-12 18:05:57 · 4776 阅读 · 0 评论 -
【12】SAP ABAP性能优化 - 从‘lazy copy strategy‘说一说内表的使用
1. Session Memory DUMPABAP程序在运行过程中,每一个线程都会分配一定额度的内存,我们通常可以称之为“Session Memory”。SAP系统GUI上默认最大可以开6个窗口,一个窗口其实就是一个ABAP session。Session中的程序在运行时,如果超出最大的内存限额,程序便会发生Session Memory的DUMP:TSV_TNEW_PAGE_ALLOC_FAILED,也即分配新的内存额度失败。解决这个问题的方式有两种,一种是让Basis Team调整配置文件,原创 2021-05-27 20:13:16 · 1513 阅读 · 0 评论 -
你真的会使用“布尔类型(Boolean)”么?
布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。但你真的会使用么?本文列举了布尔型的常见错误用法,以及在ABAP语言中使用布尔型的一些最佳实践。1. 典型的误区1.1 用布尔型声明状态要点1: 布尔类型不是一种“类型代码”。布尔型是“逻辑运算”的结果类型。在编程中,我们会直觉地将一些变量声明成布尔型,例如男性/女性, 国内/国外, 看起来这些状态有且仅有2个状态。data(is_male) = abap_ture. 这是一个典型的误区, 因为使用布尔类型指原创 2021-03-23 16:53:09 · 5660 阅读 · 0 评论 -
【11】SAP ABAP性能优化 - SQL中CONCAT保留字符串拼接中的空格
1. CONCAT的问题SAP的OPEN SQL中提供了丰富的字符串操作函数,其中较为常用的是CONCAT关键字,通过CONCAT可以实现两个字段字符串的拼接,但在拼接过程中,字符串间的空格会被“吃掉”,将拼接的结果组成一个完整连续的字符。但很多情况下,我们是希望保留字段中的空格的,那么如何实现呢?结合上篇博客【10】SAP ABAP性能优化 - 在SQL语句中操作String查询复合...原创 2019-11-21 15:06:06 · 5610 阅读 · 0 评论 -
【10】SAP ABAP性能优化 - 在SQL语句中操作String查询复合主键AWKEY
1. 问题介绍在SAP系统中,有很多主键是复合在一个参考字段中的,例如字段BKPF-AWKEY。在某些情况下,我们需要通过查找这个复合主键来SELECT数据。如何进行操作呢?2. 解决方式SAP的OPEN SQL中提供了丰富的string操作方法,对于上面例子中的问题,我们可以通过动态拼接的方式,直接完成查找。例如:对于AWTYPE = 'BKPF'类型的日志,AWKEY会...原创 2019-11-20 17:17:22 · 1861 阅读 · 0 评论 -
【09】SAP ABAP性能优化 - 调优工具 SM50 | ST05 | SAT | SCI | STAD (STATS) | ST12
SAP系统提供了许多性能调优的工具,在本篇博客中,我将介绍下最常用的几种工具也即SM50, ST05, SAT, SCI, STAD (STATS) 和ST12.原创 2019-07-19 20:13:58 · 9985 阅读 · 0 评论 -
【08】SAP ABAP性能优化 - 正确使用簇表(Cluster Table)和池表(Pooled Table)
SAP提供了三种类型的数据库表,透明表(Transparent Table),簇表(Cluster Table)和池表(Pooled Table)。其中,透明表是最常见的数据库表,其使用主要注意“Buffer”和“Index”两个方面。但对于簇表和池表,很多ABAPer并不熟悉其原理和用法。在本篇博客中,将介绍如何在ABAP中使用簇表和池表。1.概念解析1.1 “簇表”和“表簇”首...原创 2019-03-13 20:42:13 · 6062 阅读 · 6 评论 -
【07】SAP ABAP性能优化 - 使用 Field Symbol 和 Data Reference
相比较于一般的数据类型(例如 I, P, F, N, C, D, T等)的变量,Field Symbol和Data Reference类型的变量是ABAP中两个相关复杂的类型。理解和使用这两种变量,对于编写高性能、高灵活性的ABAP程序是十分重要的。1.含义解析Field Symbol:类似于C语言中的“指针”。初始状态为Unassigned。Field Symbol类型的变量自身并不对占用...原创 2019-03-08 13:08:30 · 5259 阅读 · 0 评论 -
【06】SAP ABAP性能优化 - 内存管理 (ABAP Memory vs. SAP Memory)
1. 基础知识:ABAP程序在首次执行前(或新版本激活后,再次执行时),会经历编译的过程,生成一个可执行对象LOAD, 这个可执行对象是存储在应用服务器AS的buffer里的。其实对于运行环境而言,ABAP程序由两部分组成:一部分是固定不可修改的,例如编译后的可执行代码、程序中的文本、常量等等,这些内容会存储在PXA(Program Execution Area)中。另一部分,对程序而言,是可...原创 2019-03-04 21:38:27 · 4132 阅读 · 0 评论 -
【05】SAP ABAP性能优化 - 使用次键(Secondary Keys)提升内表查询性能
在SAP NW 7.02以上的版本,ABAP语言支持了对于内表“次键”的定义。上一篇博客《SAP ABAP性能优化 - 如何选用内表类型》中介绍了在不同的场景下,如何合适地选择并使用内表,在本篇博客中,我将介绍如何在选定的内表类型的基础上,进一步通过“次键”来优化ABAP的内表访问效率。1. 什么是次键?次键(Secondary Keys)是相对于内表的主键(Primary Keys)而言的...原创 2019-02-28 21:24:09 · 2342 阅读 · 3 评论 -
【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?
ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table)。在未声明内表类型时,系统会将类型默认为标准表。然而,标准表其实并不适用于所有的业务场景,我们应当根据实际的需求,定义使用合适类型的内表。1. 内表的类型让我们回顾下不同内表的访问方式。标准表和排序表是可以既通过index访问,有可通过key访...原创 2019-02-26 21:03:06 · 5088 阅读 · 0 评论 -
【03】SAP ABAP性能优化 - DB的存在性检查
存在性检查是经常使用的一个数据库操作,然而在实际工作中,作者发现很多人并没有在意这一点,DB的存在性检查写的很随意,并不规范。本篇博客列出了DB检查的常见错误写法,并给出了ABAP进行DB的存在性检查的常用方式。1.常见错误请看下面代码:DATA: lv_count TYPE i, ls_sflight TYPE sflight.SELECT COUNT(*) FROM ...原创 2019-02-25 21:16:05 · 1807 阅读 · 0 评论 -
【02】SAP ABAP性能优化 - 如何减少与DB交互的数据量?
在上一篇博客《如何减少DB的访问次数?》中谈到,为提升程序性能,在ABAP编程过程中应尽量减少DB的访问次数。与此同时,在访问DB时还应尽量减小在与DB交互的数据量,这样可减小DB通信的网络负担,提升访问速度。性能优化是一件锱铢必较的工作,在本篇博客中,让我们一起看下使用ABAP时,可以通过哪些方式达到“减少DB交互数据量”的目标。方式1: 避免 SELECT *这一点很好理解,也就是在...原创 2019-02-25 20:49:15 · 997 阅读 · 0 评论 -
【01】SAP ABAP性能优化 - 如何减少DB的访问次数?
正如在《【开篇】SAP ABAP性能优化 - 在哪些方面进行优化?》介绍的,ABAP程序在访问DB进行相关的操作时,访问数据的速度是最慢的,那么如何尽可能地减少DB的访问次数呢?原则一:尽量使用内表进行数据库的批量操作这个原则很好理解,例如,要向数据库中插入100条数据,那么可以通过内表批量操作。* -- Bad -- *LOOP AT lt_sflight INTO ls_sflig...原创 2019-02-23 17:57:26 · 960 阅读 · 0 评论 -
【开篇】SAP ABAP性能优化 - 在哪些方面进行优化?
1.前言ABAP作为SAP的专用的开发语言,衡量其性能的指标主要有以下两个方面:响应时间:对于某项特定的业务请求,系统在收到请求后需要多久返回结果吞吐量:在给定的时间能,系统能够处理的数据量2. ABAP语言的运行原理首先,让我们先了解下SAP系统的基本架构,看一看ABAP程序的运行原理。 SAP自从R/3开始使用三层架构的系统模型,即:表现层(可通过SAPGUI或浏览器等方式,...原创 2019-02-22 20:01:02 · 1896 阅读 · 0 评论