
SAP-ABAP开发
文章平均质量分 58
记录abap编程的学习和遇到问题的解决
小羔羊的学习账号
经历让人成长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ABAP-创建锁对象,避免并发修改工单
在处理上一个问题时(),想到平时工单处理时,当工单被打开时锁定该工单,防止其他用户同时修改。原创 2025-08-14 13:35:57 · 626 阅读 · 0 评论 -
释放ABAP内存的利器:FREE MEMORY ID
在 SAP 系统中,内存管理是非常重要的,特别是在处理大量数据或长时间运行的程序时。释放不再需要的内存可以防止内存泄漏,提高系统性能。这行代码是ABAP(SAP 的编程语言)中的内存释放语句,用于释放 SAP 系统中特定标识符(ID)的内存区域。可用于数据处理后释放内存空间(最常见):或者临时数据存储后释放。<memory_id>:需释放的内存区域标识(最多60字符)ID 后面跟着一个标识符,表示要释放的内存区域的名称。存储的数据,从而释放内存空间。程序间数据共享后清理内存。原创 2025-07-14 08:41:18 · 247 阅读 · 0 评论 -
CO01增强-给客户屏幕增加项目编号字段
首先确认需要添加的字段,CO01的主界面是订单抬头数据,存储在AUFK数据表中,将字段名加入到表中(se11修改表),我这里系统里面表中专门有个结构存放增强的字段。按照业务需要判断是在保存生产订单里面,可以在这里直接双击进入,或者是SE80里面找到函数组:EXIT_SAPLCOZV_001。接下来查找增强点,如果是系统中有写过相关增强,找到实施点直接在屏幕上加字段,将校验代码填写进入即可。这里直接找到增强实施添入。CMOD找到增强文件打开组件(可以通过模糊搜索找到这部分)看到分配在哪些实施出口里面。原创 2025-07-02 15:48:02 · 435 阅读 · 0 评论 -
修改数据表的数据元素后不能激活成功
由于程序修改需要,将数据表中的一个字段的数据类型从原来的数字类型(整数位13,小数位6)修改成数字类型(整数位9,小数位3),激活时报错 Length changed from 000013 to 000009。注意:跨系统传输后,在传输到的系统里面也需要在se14里面激活一下才不会出错。由于字段长度的减少可能会影响已有数据的存储,系统无法自动完成调整,因此报错。直接激活不成功,在修改后需要在se14里面将修改的表激活后即可。原创 2025-06-16 11:04:41 · 193 阅读 · 0 评论 -
ABAP 代码中的SET UPDATE TASK LOCAL和Field-Symbols
Field-Symbols可以被视为指向数据对象的指针,允许你直接访问和修改这些数据对象的内容。②未分配的Field-Symbol: 在使用Field-Symbol之前,必须确保它已经被成功分配。在SAP中,更新任务是指那些需要异步执行的数据修改操作,比如插入、更新或删除数据库记录。等语句进行的数据库操作)应该直接在当前的工作进程中执行,而不是被发送到中央更新系统(Update System)中排队等待执行。①类型兼容性: Field-Symbol的类型必须与分配给它的数据对象的类型兼容。原创 2025-03-04 16:14:57 · 347 阅读 · 0 评论 -
【SAP-PP】开发中常用到的后台数据表
查询后台数据或者二次开发取数的时候多次用到的数据表,这里主要使用到PP模块相关系统表不包含自建表,如有遗漏,欢迎大家补充~后台数据表可以通过事务码SE16N进入查询到具体的数据。原创 2025-02-19 10:16:07 · 1790 阅读 · 0 评论 -
SAP ABAP开发学习-relid的巧妙运用与代码解析
MI被用于查询Excel模板,这可能意味着MI类型专门用于存储和标识Excel格式的模板。如果是指HTML模板,那么这种类型的对象可能用于生成HTML格式的报告或页面。如果是指内部模板,那么这种类型的对象可能用于系统内部处理,如数据转换、格式化等。在SAP开发中,relid(关系ID或类型ID)是一个关键字段,用于区分和管理不同类型的对象或文档。在写功能开发的过程中,接触到很多通过本地模板批量导入操作,从SAP服务器中下载Excel模板的时候回指定类型,主要用relid关键字。原创 2025-02-17 09:06:12 · 404 阅读 · 0 评论 -
SAP-创建后台定时任务【从变式到设置完整流程】
SAP后台定时任务是SAP系统中用于自动化执行特定业务流程或作业的功能。这些任务可以在没有用户干预的情况下,按照预定的时间表自动运行,从而提高系统效率并减少人工操作。用于创建和维护作业。用于监控和管理作业。用于监控作业的日志和错误。用于创建变式。原创 2025-01-07 08:09:30 · 2821 阅读 · 0 评论 -
SAP-ABAP学习之DEBUG调试
ABAP开发过程中,DEBUG调试是一个非常重要的环节,它可以找到程序中问题所在,也能看清程序中逻辑流向。断点类型主要如下:图标关键字内容静态断点在代码中直接输入BREAK-POINT,也可使用BREAK testuser 来指定特定用户。外部断点在ABAP编辑器中设置。为设置断点的用户维持2小时,即使重新登录也维持。内部断点在ABAP编辑器中设置。在外部会话中设置的断点,在用户能打开的6个窗口中都有效。动态断点在新版调试画面中设置的断点,单击保存按钮,可变成内部断点。原创 2025-01-02 11:11:28 · 1731 阅读 · 0 评论 -
ABAP开发中offset用法
在SAP ABAP编程语言中,offset关键字通常用于指定数据结构中的位置偏移量。内表(Internal Table)是ABAP中用于存储数据的结构化表。offset可以用于访问表中的特定字段。OFFSET 0是默认的,因为它指定的是从当前索引开始的偏移量。通常,OFFSET在单行读取时不会使用,但在处理表中的结构化数据时可能会用到。offset可以用于直接访问结构体中的特定字节位置,如下例,访问的是结构体struc中从起始位置偏移8个字节的数据,这通常是field2字段的数据。原创 2024-12-31 11:00:14 · 396 阅读 · 0 评论 -
SAP-ABAP开发-完整OOALV示例(详细步骤代码)
OO ALV,即采用面向对象(Object-Oriented)编程方式实现的ALV输出,其基本使用原理是通过界面调用,在界面的Customer Control控件中进行ALV的输出展示。CLASS ALV的优势在于它使用了面向对象的编程方式,这不仅提高了代码的灵活性和可维护性,而且通过使用容器技术,允许在一个界面的指定位置进行ALV的输出,从而优化了用户界面的布局和交互体验。原创 2024-12-30 11:53:29 · 2312 阅读 · 1 评论 -
SAP面向对象事件调用示例【事件是OOALV里最核心的部分】
事件是OOALV里面最核心的部分!也是最常用的内容。原创 2024-12-26 07:54:08 · 659 阅读 · 0 评论 -
ABAP开发中REDUCE的用法
在ABAP中,REDUCE是一个非常有用的关键字,它用于对内表(内部表格)中的数据进行迭代并累积结果。REDUCE通常用于计算总和、平均值、最大值、最小值等,使用REDUCE可以使代码更简洁、更易于阅读,尤其是在处理数据累积操作时。以下是REDUCE的基本用法和一些示例。原创 2024-12-25 08:09:51 · 1153 阅读 · 0 评论 -
ABAP开发中NEXT的用法
在ABAP中,NEXT关键字通常用于循环结构中,特别是在LOOPDOWHILE循环以及REDUCE和FIND等控制结构中。以下是几种常见的使用NEXT。原创 2024-12-24 11:54:42 · 601 阅读 · 0 评论 -
SAP面向对象示例:用面向对象写计算圆面积
1.一个接受变量,I_R 为半径 ,声明一个传出EXPORT变量,E_ROUND为面积,根据半径计算。2.一个接受变量,I_R 半径,声明一个返回变量 RETURN,E_ROUND为面积根据半径计算。PARAMETERS 输入半径,从屏幕接收值;最后调用方法,分别调用,输出结果。分析:私有区域:声明常量C PI 3.14;公有区域:声明2个方法。场景:用面向对象方法写计算圆面积。原创 2024-12-20 11:55:10 · 465 阅读 · 0 评论 -
SAP-ABAP开发学习-面向对象开发OO(2)
事务代码SE24: CL_GUI_ALV_GRID或者 在Object Navigator(SE80)中左侧的导航区域,在右键弹出的上下文菜单上选择“Create->Class Library->Class” 在弹出的窗口中输入类名,在下个输入域输入该类的简短描述,在“Instantiation”输入域选择“Public”,并且选择“Final”复选框。说明。原创 2024-12-18 08:01:20 · 1574 阅读 · 0 评论 -
sap中调用其他程序时屏幕值传不进的问题
业务背景:运行md04记录时,查看底表数据,与供需报表里面的数值有差异。查找问题点:找一条错误的数据,DEBUG查找字段值传输。原创 2024-12-17 08:14:27 · 619 阅读 · 0 评论 -
SAP-ABAP开发学习-面向对象OO(1)
随着SAP R/3 4.0版本的开发,ABAP语言开始引入了面向对象的开发概念。这在ABAP语言的发展过程中,面向对象(Object-oriented)的概念被引入,ABAP对象成为了ABAP语言的扩展,它集合了Java、C++、Smalltalk等语言的特点,并与原有的ABAP语言无缝集成。在面向对象的解决方法中,重点在于对现实生活中的对象进行结构化或抽象化。属性(Attributes),即对象的属性和特征;方法(Method),即定义对象的行为。原创 2024-12-11 11:51:50 · 1244 阅读 · 0 评论 -
ABAP开发中COMMIT WORK AND WAIT.用法
这条语句的作用是提交前面执行的操作,并等待直到提交过程完成。注意,这里的第一个组合句用于从数据库表中删除所有记录,并确保这些更改被永久保存。在执行这样的操作时,应该始终确保你有适当的备份和恢复策略,以防万一。原创 2024-12-10 08:11:59 · 651 阅读 · 0 评论 -
VALUE #( BASE r_ekorg[] ( sign = ‘I‘ option = ‘EQ‘ low = ls_t024e-ekorg ) ).
在ABAP中,这段代码使用的是ABAP 7.40(或更高版本)引入的新的内部表赋值语法,称为"链式赋值"(Chained Assignment)。这个语句的作用是将一个结构(在这里是。关键字用于指定一个现有的内表,新的行将被追加到这个内表的末尾。:这是ABAP中创建内表或结构的关键字,以声明式的方式创建和初始化结构体或内表。等字段,这些字段通常用于表示选择条件(类似于SQL中的WHERE子句)。的基础上添加新的记录,而不是创建一个新的内表。子句的一部分,以筛选出符合特定条件的记录。原创 2024-12-05 13:43:23 · 337 阅读 · 0 评论 -
实战示例:在报表中添加权限管控
业务场景:需要给报表添加权限管控,没有工厂权限的用户使用该事务码查询不到对应的数据。原创 2024-12-04 15:56:49 · 1138 阅读 · 0 评论 -
lo_tabdescr ?= cl_abap_structdescr=>describe_by_data( gs_out ).
DFIES(Data Field Information)表包含了关于结构中每个字段的各种信息,如字段名称、数据类型、长度、输出长度、小数位数等。这个信息可以用于进一步处理,比如在ALV(ABAP List Viewer)报表中显示字段信息。这段ABAP代码用于获取结构描述信息并将其转换为数据字段信息(DFIES)表。原创 2024-12-03 14:42:53 · 484 阅读 · 0 评论 -
SAP中ALV格式颜色相关
列颜色在FIELDCAT里面有个EMPHASIZE字段,把颜色值赋给它就可以了。单元格颜色需要设置颜色代码,如果多个就循环内表,如上面示例的代码;ALV颜色主要有三位数组成,分别表示颜色、强调、取反(填充),即如果同时设置颜色,那么单元格的颜色会覆盖其他的。行颜色需要在内表里面添加颜色字段记录颜色;示例:选中行并更改颜色。原创 2024-11-29 09:46:27 · 653 阅读 · 0 评论 -
SAP-ABAP开发-第三代增强示例(BADI)
在程序中写BADI增强主要方法步骤①数据库表:存储数据,以行项目为主键②一个内表:用来存储界面中的数据③对应的结构体④3个函数:PUT DATA 从内表取数 传给函数;GET DATA 从函数获取 可以存储到内表;SAVE DATA 出内表存储到数据库表。原创 2024-11-29 08:38:29 · 3107 阅读 · 0 评论 -
SAP-ABAP开发-第二代增强示例
以VA01为例。原创 2024-11-28 09:47:14 · 912 阅读 · 0 评论 -
记录在ABAP代码中经常遇到的语句
字段符号是一个引用变量的占位符,它可以引用任何数据对象,而不需要知道该对象的确切类型或结构。这行代码是ABAP CDS(Core Data Services)视图的一部分,用于定义一个内联视图(INLINE VIEW),并给它一个别名。:这个关键字在CDS视图中用于定义一个内联视图,它允许你创建一个临时的结果集,这个结果集可以在CDS视图的后续部分中使用。这个内联视图可以在CDS视图的后续查询部分中被引用和使用,以进一步处理或联接数据。:这是内联视图的实际定义,它是一个子查询。:这是给内联视图指定的别名。原创 2024-11-28 08:27:45 · 1258 阅读 · 0 评论 -
SAP-ABAP开发-第一代增强示例
以SD用户出口为例(SD及MM较多的程序都是基于源码控制来实现增强的)基于销售订单,当选择ZUSS类型的销售订单时,PO编号必输。进入事务代码VA01,查找字段名称:订单类型VBAK-AUART 采购订单编号VBKD-BSTKD。T-code: spro 进入后台配置目录,找到用户出口,找到相关程序名。需要申请access key才能更改的,相当于修改了SAP的标准程序。以及更新后会被覆盖。进入到se80里面开发类VMOD找到。注意的是,这里不能直接更改,出口程序:include中。原创 2024-11-27 09:59:36 · 553 阅读 · 0 评论 -
SAP-ABAP开发学习-增强基础知识
这种增强是用事务SE18和SE19来实现的。这类增强都需要修改sap的标准代码,它们在发布的时候都是空的,集中在一些文件名倒数第二个字符为Z的包含程序中,由于在标准程序中,所以所有程序的全局数据都可以使用,但同时。①基于SAP源代码的增强-----对SAP所预留的空的子过程进行编码,用户可以编辑此子过程,并在这个子过程中添加自定义的代码,以增加SAP标准程序的控制功能。②基于函数的增强-----SAP为此类出口提供了相应的函数,依据函数结构指定的传入/传出参数,程序执行时,调用该函数并检查相应的代码。原创 2024-11-27 09:16:41 · 873 阅读 · 0 评论 -
SAP-内存管理
内存是程序之间为了传递数据而使用的共享存储空间。SAP内存分为①SAP内存:主会话之间的数据共享,通过SET/GET PARAMETER语句共享不同ABAP内存领域之间的内存。②ABAP内存,内部会话之间的数据共享,只有在同一个窗口执行的程序才能共享内存,在每个程序里使用的内存有ABAP内存和SAP内存。原创 2024-11-26 19:51:27 · 1155 阅读 · 0 评论 -
SAP-ABAP开发-BDC
SAP系统提供的BDC有两种从其它SAP系统和非SAP系统向本系统传递数据的基本方法。这两种方法统称为“批输入”或“批数据通讯”。两种批输入方法都通过执行常规SAP事务进行工作,正如用户输入一样。批输入可自动执行事务,因此适用于输入以电子表格表格形式存在的大量数据。主要用于一些数据量大,但是对速度又要求不高的数据传输。原创 2024-11-25 11:35:01 · 1867 阅读 · 0 评论 -
跨系统传输请求
我们在sap中某一个系统中更改或创建代码、事务码等会保存在自己请求中,测试无误后想要在同步到其他系统里面,就得传输请求。SE10:先释放内层请求再释放外层请求,释放后查看状态。事务码STMS 筛选出自己的请求。3、回到300里面查看传输记录。1、在300系统里面释放请求。2、到500接受请求。原创 2024-11-24 15:47:59 · 447 阅读 · 0 评论 -
维护数据库表数据的三个方法
必须在数据库内先行设置,界面编号从0-9999,每个函数组中不能重复;设置完毕后,进入SM30,输入表名,可以维护数据。3、SM30通过批量维护视图查看表内容,需要通过generator生成。1、SE11->contents查看表内容,默认为单条修改。2、SE16N查看表内容,最好不在此事务码下进行修改。原创 2024-11-21 11:36:34 · 383 阅读 · 0 评论 -
SAP-LSMW 批量录入
进入LSMW,点击口可以新建对象,点击执行已创建对象,清单中依序执行即可。主要分成两部分:单次操作录屏(相当于示范) + 批量上传。例:对 MM02 修改物料主数据中的基本数据 批量修改。③创建本地文件,把需要批量修改的物料和物料描述放入,跳过定义值,直接进入第七条Specify Files。选中上图第一条,点击执行,进入下面界面。②继续执行,执行完保存退回继续下一步。,给需要改动的定义一个结构,保存。回退到下面界面,点击带出,保存。可以去MM02里面查看是否修改。原创 2024-11-20 09:07:33 · 853 阅读 · 0 评论 -
SMARTFORMS函数调用完整示例:打印工厂物料信息
这里用到强制分页,当物料库位不同时分页。首先对需要强制分页的变量进行全局定义。首先规划想要打印的效果和信息,这里示例的是想要打印物料数据库里面的信息。这里提一个额外的,如果不想出现下面的提示栏,可以在程序里面写上默认。①对相关数据表创建表结构:SE11。原创 2024-11-19 19:57:44 · 705 阅读 · 0 评论 -
使用BAPI函数添加组件工厂
在SAP系统中,要使用BAPI(Business Application Programming Interface)函数添加组件工厂,你需要使用特定的BAPI函数,如。原创 2024-11-18 11:06:10 · 480 阅读 · 0 评论 -
上传/修改批量导入模板
下载的模板也是要上传到SAP系统里面,并在函数里面调用,新建上传和修改:SMW0。选上新的模板就好了。原创 2024-11-13 14:38:15 · 397 阅读 · 0 评论 -
SAP-ABAP开发-BAPI
BAPI (Business Application Programming Interfaces) 业务应用编程接口.它实际上是一种特殊的Remote Function Modules (RFC)是为了提供使用外部程序与系统来进行交易活动. 与RFC不同的是它提供的基于(Business Object) 技术的接口应用界面。原创 2024-11-12 17:15:34 · 1316 阅读 · 0 评论 -
SAP-ABAP开发-F4搜索帮助和下拉菜单
2、文件路径的F4:函数F4_FILENAME 界面中的控件定义为RLGRAP-FILENAME。1、首先声明,在屏幕设置它的属性为下拉,如果该字段有固定值,会直接带出。1、日期类型的F4:函数F4_DATE 注意界面中的控件定义为D类型。调用函数F4IF_INT_TABLE_VALUE_REQUEST。2、DATA ELEMENT 与搜索帮助对象的关联。在对应的表里面找到数据元素,将搜索帮助关联进去。1、创建搜索帮助(显示清单、限制条件)(外键是最基本的一种搜索帮助)给屏幕里面加搜索帮助。原创 2024-11-12 10:04:58 · 1115 阅读 · 0 评论 -
SAP-ABAP开发-DIALOG补充
执行顺序:执行MODULE A => 执行MODULE B => 将数据从ABAP/4工作区传到screen工作区 =>显示界面 => 点击回车 => 将数据从Screen工作区传到ABAP/4工作区 => 执行MODULE C => 执行MODULE D。原创 2024-11-08 17:34:36 · 826 阅读 · 0 评论 -
SAP-ABAP开发-ONLINE 程序、DIALOG屏幕开发
Report程序:1类型程序 制作报表,数据列表(Data List)输出Online程序:M类型程序 查询数据,录入、修改、删除等Module Pool 程序:以Module Pool形态进行业务流程的逻辑处理Online 程序,强调用Online Transaction来处理业务流程进行过程Screen 程序,主要使用Screen(及屏幕对象),并实现界面间Flow Logic(流逻辑)原创 2024-11-07 17:21:07 · 1747 阅读 · 0 评论