- 博客(186)
- 资源 (2)
- 收藏
- 关注
原创 ABAP开发:数据库表更新时机介绍
事务管理:合理使用`COMMIT`和`ROLLBACK`,确保数据的一致性和完整性。以下探讨一下ABAP中`INSERT`、`UPDATE`等操作的更新时机,以及如何在实际开发中正确使用它们。在这个例子中,我们首先创建了一个客户记录的内部表,然后使用`INSERT TABLE`将其插入到数据库表中,并执行`COMMIT WORK`确保数据被持久化。`UPDATE`语句用于修改现有记录。与`INSERT`类似,数据的修改也是首先在内存中进行,直到执行`COMMIT WORK`后才会被持久化到数据库。
2024-11-06 21:36:52
650
原创 ABAP开发--如何理解ABAP 程序中的退出操作?
RETURN用来退出当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环。2)EXIT如果出现在循环之外,退出的是当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,其作用与RETURN类似。1) EXIT如果出现在循环中,退出的是整个循环操作,.程序会从循环结束处开始继续执行,其作用相当于Java与C++中的break。
2024-11-06 21:34:10
339
原创 SAP ABAP开发:如何为自定义字段提供F4帮助?
通过调用SAP标准函数`F4IF_INT_TABLE_VALUE_REQUEST`,我们可以轻松地实现这一功能,从而为用户提供一个更加友好和高效的数据输入体验。示例程序中,在`AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.`事件中,我们实现了F4帮助的功能。在ABAP程序中,我们可以通过编写特定的代码来为自定义字段提供F4帮助。2. 调用函数`F4IF_INT_TABLE_VALUE_REQUEST`,该函数是SAP提供的用于实现F4帮助的标准函数。
2024-09-20 10:21:54
491
1
原创 ABAP开发--如何理解ABAP 程序中的退出操作?
RETURN用来退出当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环。2)EXIT如果出现在循环之外,退出的是当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,其作用与RETURN类似。1) EXIT如果出现在循环中,退出的是整个循环操作,.程序会从循环结束处开始继续执行,其作用相当于Java与C++中的break。
2024-09-20 10:18:10
466
原创 SAP ABAP选择屏幕(ACTIVE,INPUT,REQUIRED)
2.必输性:REQUIRED。1.可见性:ACTIVE。3.可输性:INPUT。
2024-09-11 11:56:40
511
原创 SAP PO接口报文保存到内表中
有一个需求,接收PI传数据过来后,除整理数据保存到用户数据表外,在后期还需要把报文加工一下(要求报文内容与原接收报文一致,只是补加少量值),在发送到其它的系统。由于数据接收后已对数据加工到了用户表,已没有原报文内容(比如金额已累计),如从用户数据表中再取出数据整理加入发送出去,一是整理数据太麻烦,二是一些数据可能已丢失,并不能很好的还原接收到的报文。所以考虑在接收到报文时,把接收到的报文(结构化数据)保存到内表中,然后在需要再次发送出去时,从内表中取出数据,并做必要的整理,然后再发送出去。1.
2024-08-07 10:15:14
622
原创 SAP BSEG优化问题
做一个需求,需要取BSEG-XREF1(业务伙伴参考码),并且是批量的取,开始为了省事,所以想着先从BKPF取到会计凭证,公司代码,年度到内表LT_BKPF,然后使用FOR ALL ENTRIES LT_BKPF来从BSEG中得到明细数据, 但由于BSEG 是聚集表,并且数据太大了,所以取数据非常慢,所以想到从BSIS\BSAS,BSIK\BSAK,BSID\BSAD中取数的方法,但这些表中都没有业务伙伴参考码这个字段,所以没得办法,还是只能从BSEG表中想办法,
2024-08-07 10:12:29
537
原创 SAP 接口PO(PI,XI)在ECC端日志记录及显示
在接口的处理中通常会需要记录日志,而如果是与PO(PI,XI)做的接口的话,可以使用事务码SXI_MONITOR – XI:消息监控,来查询日志,但对于一些有加密,或者在业务接口功能上想直接查询报文日志时,会在ECC中创建一个表来记录报文日志信息,以下是一个调用PI的接口,调用完成后,把PI接口的MESSAGE_ID记录到表中,这样可以通过表中记录的MESSAGE_ID来直接打开PI日志。同时由于发送的报文是加密的,所以把发送前未加密的报文,及收到的解密 后的报文保存到日志表中。
2024-08-06 10:52:46
875
2
原创 ABAP编程中,函数组与ABAP OO编程的相似性
例如,可以创建一个计数器类,它包含一个私有的计数器属性和一个公共的方法来增加计数器的值,这样就可以创建多个计数器对象,每个对象都有自己的计数器实例。在传统的ABAP开发过程中,ABAP中对象的最接近等价物是函数模块和函数组。接口:函数组通过函数模块提供了一个明确的接口,外部程序必须通过这些接口来与函数组交互,这与面向对象编程中的公共方法(public methods)相似。封装:函数组通过函数模块封装了对COUNT变量的操作,这与面向对象编程中的封装原则相似,即隐藏内部实现细节,只暴露必要的接口。
2024-07-03 13:19:01
362
原创 ABAP OO面向对象编程--定义、实现和使用类
然后,它创建了第二个飞机实例,并使用set_attributes方法(这个在原始的lcl_airplane类定义中没有提供,是在zbc404_hf_lcl_airplane1中定义的)来设置第一个飞机实例的名称和类型。类中有两种类型的组件——那些为每个对象单独存在的组件,以及那些不论实例数量如何,整个类只存在一次的组件。- Define, implement and use simple class(定义、实现和使用简单类):指的是在编程中创建一个基本的类,实现其功能,并在程序中使用它。
2024-07-03 13:17:16
1515
原创 ABAP 函数介绍:生成随机密码
代码首先初始化随机数生成器的种子,然后创建四个随机数生成器,分别用于生成特殊字符、数字、大写字母和小写字母。在循环中,根据随机数选择相应的字符集,并将随机字符添加到密码字符串中。最后,使用转换对象将二进制密码转换为字符串格式。本函数是SDN(SAP Developer Network)社区介绍、由Eddy De Clercq开发的,它提供了一个用于生成随机密码的ABAP函数模块,该模块可以根据导入参数指定的长度生成包含大小写字母和数字的随机密码。输入参数 :20 (要求密码长度为20)
2024-07-01 09:53:40
423
原创 ABAP 新语法-ITAB[ idx ]、ITAB[ key ]
进行关键字读取,根据指定条件获取内表中的元素。的方式,直接从内表元素中读取结构字段的值。进行索引读取,获取内表的第一个元素。选项在索引越界时避免抛出异常。,在特定条件下选择内表中的元素。语句,捕获特定的异常类型,这里是。检查内表中是否存在指定的行。,在索引越界时提供默认值。
2024-07-01 09:50:56
770
原创 ABAP开发示例:动态ALV List报表
这个程序首先声明了用于ALV的类型池和数据结构。然后,它通过用户输入的表名动态创建一个结构,并根据该结构构建字段目录。接着,程序创建了一个动态内表,并从数据库中读取数据填充到这个内表。最后,程序使用ALV函数REUSE_ALV_GRID_DISPLAY来显示内表数据。如果ALV显示过程中出现错误,程序会捕获异常并处理。
2024-07-01 09:47:02
315
原创 ABAP开发:动态Open SQL编程案例介绍
动态Open SQL是Open SQL的扩展。它不是要求整个SQL语句都是动态指定的。通过熟悉的静态ABAP编码表达静态已知的部分,动态元素的部分通过动态标记指定。动态片段不明确包含在ABAP源代码中,而是源代码包含一个ABAP变量,用括号括起来作为占位符。程序必须包含创建动态片段的ABAP源代码的编码,并将其存储在该变量中。在运行时,动态片段的ABAP源代码被解析并混合到语句的静态部分中。动态和静态部分对数据库来说看起来像一个单一的语句。这个过程对数据库是完全透明的。
2024-06-27 14:37:34
1088
原创 ABAP编程中的参数传递:使用EXPORT/IMPORT与SPA/GPA参数
本文档将介绍两种常用的数据传递方法:EXPORT/IMPORT和SPA/GPA参数,并提供实际示例。EXPORT/IMPORT语句允许程序在ABAP/4内存中存储和检索数据字段。SPA/GPA参数是全局保存在内存中的字段值,适用于用户会话期间的数据传递。通过屏幕制作器设置字段属性:在屏幕制作器中,设置字段属性为“SET参数”或“GET参数”,并指定“参数ID”。使用EXPORT时,如果多次输出同一对象到同一ID,会覆盖内存中的第一个版本。1. 使用EXPORT/IMPORT数据(ABAP/4内存)
2024-06-27 14:31:02
1220
原创 SAP系统中如何用事务码图形视图寻找MD04增强开发实施点
至于如何精准找到FORM sort_mdpsx来实施增强开发,一方面开发经验非常重要,根据子程序名称大致知道其相应功能,另一方面则是不断地设置断点进行调试,找到最后数据的输出表,再根据输出表找到数据排序的地方,从而确定增强实施点。在之前发布的文章中,介绍了善用事务码的图形视图以观察事务的执行流程以及如何在MD04中实施增强以改变生产订单的显示顺序。本文结合两者,介绍一下如何利用事务码的图形视图找到增强开发的实施点。可以看出内表MDPSX的排序逻辑,在此可根据特定需求修改此内表的排序。展开后,按下图再展开。
2024-06-26 11:27:24
543
原创 SAP BADI增强示例:在COOIS中增加额外字段显示
SAP ERP系统中的COOIS报表(订单信息系统)提供了有关生产订单的完整信息。本文主要谈及如何使用BADI在COOIS的输出显示中添加额外字段。在方法TABLES_MODIFY_LAY中,有许多表参数用于生产订单的不同数据显示。执行事务代码:SE19。
2024-06-26 11:23:31
480
1
原创 SAP系统中如何在ABAP开发过程中寻找增强点?
接下来运行事务代码如MIGO,当有BADI时将会被执行,这时在DEBUG模式下,会进入类CL_EXITHANDLER 的GET_INSTANCE 方法,按F6执行这个方法之后,点参数EXIT_NAME查看其对应的值,所有的方法实现都在此类对象中,此时就是我们所要找的BADI如MB_MIGO_BADI。以ME21N事务代码为例,进入TCODE后,选择点系统 -》状态 -》程序名称,双击后进入到程序中,再点菜单栏中的 转到 -》属性,找到开发类的名称,比如ME21N的开发类是‘ME’。
2024-06-26 11:14:35
1562
原创 如何找到和解决SAP ABAP程序中的性能问题
然后,可以使用性能跟踪工具(事务ST05)和ABAP运行时分析工具(事务SE30)对这些事务或模块进行深入分析,以找出性能瓶颈并进行优化。此外,由于这个工具可能会影响系统的性能,所以通常只在开发和测试环境中使用,而不在生产环境中使用。选择要分析的程序:在ABAP运行时分析工具中,点击“选择程序”按钮,然后输入你想要分析的ABAP程序的名称,点击回车。在SAP系统中,可以通过事务STAT/STAD和事务SM50来查看系统统计数据和观察程序运行时的情况,以帮助确定性能问题的原因。
2024-06-20 13:41:20
982
原创 ABAP程序示例:交互式ALV演示程序
请注意,这个程序是一个完整的报表程序,它包含了初始化、数据获取、ALV显示以及用户交互处理的所有必要部分。ALV输出子程序:构建ALV显示所需的字段目录、布局,并调用REUSE_ALV_GRID_DISPLAY函数来显示数据。事件退出子程序:设置ALV的事件退出处理,以便在用户执行特定操作(如刷新或点击事务代码)时执行相应的处理。ALV显示子程序:调用ALV显示函数,设置回调程序、字段目录、布局和事件退出处理,并指定输出表。用户命令处理子程序:处理用户在ALV中执行的命令,如点击事务代码或刷新列表。
2024-06-20 13:40:43
774
原创 SAP ABAP开发性能调整技巧讲解之一
通过使用视图,可以将复杂的查询逻辑封装起来,使得在后续的查询中可以直接引用视图,从而简化代码并提高性能。如果嵌套选择在性能上不能满足需求,可以考虑使用其他方法,如JOINs、使用视图(Select with view)或使用索引支持(Select with index support)等。通过遵循这些建议并合理使用选择条件,可以在SAP ABAP编程中更有效地获取和处理数据,从而提高程序的性能。这可以提高查询性能。在查询中使用视图:创建视图后,可以在SELECT语句中直接引用视图,就像使用普通表一样。
2024-06-18 17:18:23
1420
原创 SAP ABAP开发:如何读取物料主数据中的长文本?
在SAP ABAP开发中,读取物料主数据(Material Master Data)中的基本视图(Basic View)里的长文本信息通常涉及到对长文本(Long Text)的处理。长文本在SAP系统中是以特殊的方式存储的,它们被分割成多个部分,存储在数据库表STXL(Long Text Lines)和STXH(Long Text Headers)中。在SAP ABAP开发中,要读取物料主数据中基本视图里的长文本信息,你可以使用函数模块 READ_TEXT。但长文本信息如何从系统中读取呢?
2024-06-18 17:12:56
1418
原创 ABAP开发:屏幕输入中,在多个选项卡中如何确定选择了哪个Tab Strips?
但这样存在一个问题,就是当程序运行时,屏幕上显示的是默认的第一个标签即上图中的Name标签,若用户不选择其他标签就执行程序时,此时的sy-ucomm值为‘ONLI’ (代表点击了执行按钮),若根据上面的代码来判断,用户未对标签作出任何选择,这不符合我们的预期。在ABAP开发中,使用了SELECTION-SCREEN来创建了一个带有多个选项卡(Tab Strips)的屏幕。屏幕中有Name、Age、City三个标签选择,那么,在程序中如何确定选择了哪个标签呢?
2024-06-17 09:47:28
403
原创 ABAP程序示例:如何用ABAP显示图形?
在SAP ERP 系统中,对于用户来说,一般都是用ABAP来开发自己报表或事务,用WRITE输出报表或用ALV来显示报表。可否将报表中的相关数据用类似如下图形来显示呢?程序执行后就显示上图结果。
2024-06-17 09:42:20
553
原创 SAP ABAP开发过程中内表的概念及操作详解之三
`是您要汇总的内部表,``是一个可选的字段名,表示您希望根据哪个字段进行分组。在这个例子中,我们捕获了三个可能在处理内部表时引发的异常:`cx_sy_itab_no_lines`(表为空)、`cx_sy_itab_index_error`(索引错误)和`cx_sy_itab_unknown_key`(未知键)。内部表的异常处理(Exception Handling for Internal Tables)是在ABAP编程中确保在处理内部表时,能够妥善处理潜在的错误和异常情况。
2024-06-14 11:01:21
1478
原创 SAP ABAP开发常见问答
SIGN字段可以取以下值:I 包含(应用)、E 不包含(不应用) OPTION字段可以取以下值:EQ 等于、GT 大于、NE 不等于、BT 介于、LE 小于或等于、NB 不介于、LT 小于、CP 包含模式、GE 大于或等于、NP 无模式。答:4种类型的表:i)透明表 - 在字典和数据库中以相同的结构存在,数据和字段完全相同。答:步骤1:创建域(数据类型、字段长度、范围)。答:FI(财务会计)、CO(成本控制)、SD(销售和分销)、MM(物料管理)、PP(生产计划)、HR(人力资源管理)等。
2024-06-14 10:56:07
489
原创 SAP ABAP开发过程中内表的概念及操作详解之二
任意表(Any Table)操作是针对所有类型的内部表(包括标准表、排序表和哈希表)进行的操作。注意,这种插入方法会根据表键将行插入到正确的位置(对于排序表和哈希表)或附加到表末尾(对于标准表)。``是一个与内部表兼容的工作区,``是可选的,用于指定插入行的索引位置。这将把``的行插入到``中,根据``指定的位置。``是要读取的行的索引,``是用于存储读取数据的工作区。
2024-06-14 10:55:11
1440
原创 SAP ERP系统ABAP数据字典详细介绍
ABAP字典为开发人员提供了一个统一的平台,用于创建、修改和维护这些对象,从而确保数据的一致性和完整性。本指南详细介绍了SAP ABAP开发环境的各个方面,包括ABAP编程语言、SAP GUI for Windows、ABAP编辑器、调试工具、数据字典、ABAP内表、结构体、子结构体、自定义包含和附加结构、对象激活和版本管理以及ABAP仓库信息系统。在SAP系统中,数据字典是一个核心组件,它为开发人员提供了一个统一的平台,用于创建、修改和维护数据对象,从而确保数据的一致性和完整性。
2024-06-13 10:23:35
1592
2
原创 SAP ABAP开发过程中内表的概念及操作详解之一
在技术上,内部表可以看作是一个动态数据对象,其行数在运行时是可变的,而行结构在内部表的整个生命周期中保持不变。处理内部表(Internal Tables)是在ABAP编程中对已创建的内部表进行操作的过程。- 排序表(Sorted Table):按指定顺序排序的表,可以通过内部索引或键访问。通过了解和掌握这些处理内部表的方法,将能够在ABAP编程中更有效地使用内部表进行数据操作。当作为数据对象定义时,TYPE|LIKE应跟随现有的数据类型,但在这里,由于您正在将内部表声明为抽象数据类型,因此必须指定表类型。
2024-06-13 10:20:18
551
原创 ABAP开发示例:使用 ASSIGN加速 LOOP循环
使用 "LOOP AT itab ASSIGNING ." 而不是使用工作区(无论是显式的还是通过表头行的),可以避免数据在工作区的传输。字段符号是一个指针,指向(!)表中的行,所以可以直接修改表中的行而不需要使用 MODIFY ,从而避免另一次数据传输。根据下面的程序的运行对比,发现使用ASSIGN 的程序比另一个快了大约 25%。
2024-06-13 10:19:06
799
原创 SAP ABAP开发过程中如何获取客户、供应商地址信息?
在SAP ERP系统中,地址信息数据存储到ADR*数据表中,其中ADRC为主表,其他为从表,如:ADR2 (Phone) and ADR3 (Fax)。程序可以先从供应商主记录LFA1或客户记录KNA1等表中获取地址号(ADRNR),之后根据地址号再从这些地址相关数据表中读取数据,亦可使用ADDR_GET函数来提取数据。在SAP ERP系统中,在sap的应用中,很多地方需要用到地址和联系方式,sap对于地址采用了集中维护。那么,在ABAP编程中如何相关地址信息呢?
2024-06-12 15:27:30
944
原创 SAP ABAP开发过程中如何高效率从内表中获取不重复记录?
以上三种方法,在内表记录数不多的情况下,对系统运行影响不大,但若遇到内表记录数众多,则不同方法对系统运行性能将产生一定影响,以下是一个测试程序,测试结果,方法三是系统运行效率最高的。在SAP ERP系统开发过程中,经常会遇到需要将大量数据从数据库表中提取,储存在内表中,供进一步处理之用。方法二: 内部表循环赋值,使用AT NEW和APPEND语句追加记录。方法一: 内部表循环赋值,使用COLLECT语句追加记录。
2024-06-12 15:23:01
727
原创 如何查找SAP ERP系统中FORM格式的历史版本情况
在SAP ERP系统开发中,对于程序、表等对象的修改过程,都可在其历史版本中查询到,如对于程序YDMMR250 ,可在SE38中,从菜单:实用程序--版本--版本管理中查询到所有修改传输号,也就是其版本。从中就可见其修改历史情况。
2024-04-28 15:57:17
366
原创 ABAP开发:SAPscript表单设计及打印简介
变量必须前后用&标识,如&WLMS&代表从ABAP程序中获取变量WLMS的值,而在ABAP程序中,变量WLMS必须定义为全局变量。特别说明,其中的“,,,,”,一个“,,”代表段落格式中“制表符”定义的第一个标记位置,“,,,,”代表第二个标记位置,依此类推。这些Forms用来描述文档页面中的信息结构,比如地址抬头、item行、页脚等等,Forms设计就是要确定这些文档的输出格式。输入字体族及大小后保存,在段落属性中还可定义对齐、左右边缘等属性。输入“H1"和描述后,点击“字体”在上述界面中,点击抬头。
2024-04-28 15:54:12
2038
1
原创 SAP PO接口行项目json缺少中括号[]问题
PO接口小问题问题:如果需要同时传输DATA与ITEM,此处选择很重要,如果选择:HTTP Header ITEM将缺少[].需要注意。问题:如果需要同时传输DATA与ITEM,此处选择很重要,如果选择:HTTP Header。ITEM将缺少[].需要注意。
2024-02-26 14:26:39
748
1
原创 SAP 同系统跨Client RFC函数拉取数据
7、同系统跨Client RFC函数拉取数据。同系统跨Client RFC函数拉取数据。首先在SM59维护Client。
2024-02-26 14:23:26
577
SAP ABAP高级题库-供大家参考
2024-08-26
SAP-SD销售模块快速指南及学习基本知识
2024-07-01
SAP-QM模块快速指南及学习基本知识
2024-07-01
SAP-PS模块快速指南及学习基本知识
2024-02-27
SAP-HR模块快速指南及学习基本知识
2024-01-12
SAP ABAP中级题库,供大家参考
2023-10-23
SAP ABAP初级题库,供大家参考学习
2023-10-23
SAP-SRM模块快速指南及学习基本知识
2023-08-09
SAP-PP模块快速指南及学习基本知识
2023-08-09
SAP-FICO财务模块快速指南及学习基本知识
2023-08-09
SAP-PI接口服务开发配置手册
2023-08-04
SAP ABAP开发系统字段
2023-08-03
SAP各模板增强用户出口汇总
2023-08-03
SAP 财务增强CodingBlock客户化自定义新字段
2023-07-28
SAP财务管理模块(4-3)
2023-07-21
SAP财务管理模块(4-2)
2023-07-21
SAP财务管理模块(4-1)
2023-07-21
SAP ABAP Editor开发主题配置
2023-07-19
ABAP-语法总结及实例解释.doc
2020-06-05
SAP PI接口 -功能介绍.docx
2020-05-19
优快云文件上载,怎么一直在待审核状态?
2023-07-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人