程序人生 ABAPer
文章平均质量分 60
SAP剑客
一日不读书,胸臆无佳想。一月不读书,耳目失精爽。
展开
-
【ABAP】MM采购发票校验开发Demo
SAP采购发票校验BAPI主要用于校验采购发票是否符合系统的要求,包括检查公司代码、供应商、物料等信息是否正确,同时还会执行相关的账务检查。原创 2023-04-19 19:36:41 · 3367 阅读 · 2 评论 -
【FI】制造费用尾差结转Program
SAP的标准成本中心实际/计划/差异报表“S_ALR_87013611”在每月月结处理完毕之后,有存在尾差的情况,某些集团公司由于生产成本中心有上百个,逐个确认耗时费劲,则会按照一定的规则自动生成一张结转凭证。原创 2023-04-03 20:26:56 · 2052 阅读 · 1 评论 -
【ABAP】报表进度提示
报表进度提示有些报表逻辑处理比较复杂,查询处理会占用一些时间,用户建议做个进度提示,可以看到进行到哪个环节了,比如我们常用的MB5B报表就有类似的功能。主要逻辑就是划分功能块,按流程显示进度。另外一种情况就是列表进度,可以让用户看到总记录数及当前处理到第几条。【核心代码】METHODSAPGUI_PROGRESS.DATA:LV_TEXTTYPECHAR80,LV_PER(3)TYPEN,LV_CURRENTTYP...原创 2022-02-10 19:52:55 · 1279 阅读 · 0 评论 -
【ABAP】SAP供应商自定义决裁生成实现
SAP供应商自定义决裁生成实现一、需求由于目前SAP中供应商主数据管理比较松散,创建比较随意,导致存在大量重名的或者税号相同的供应商代码,也有一部分供应商主数据创建未使用,给实际业务中选取供应商造成了困扰。现需要针对供应商主数据做集中管理,关闭目前的创建和修改功能(XK01/XK02/MK01/MK02/FK01/FK02),新建一个申请程序,通过该程序对供应商的创建和修改做申请,然后通过流程审批控制,最终决裁后生成供应商主数据。二、效果下面的示例图仅供参考。首先需要收集决裁信息原创 2021-12-22 20:21:08 · 542 阅读 · 0 评论 -
【ABAP】采购申请自定义审批策略的实现
采购申请自定义审批策略的实现一、自定义审批策略和流程首先需要确定审批策略,通常以部门为基准来建立,然后新建一个自定义表,维护申请者和审批策略之间的关系。比如采购一部:Z1旗下多个业务员(由于ERP ID个人化程度很高)均分配此审批策略“Z1”。接着需要针对策略维护审批流。比如上面的审批策略“Z1”需要以下四人进行审批:采购一部经理→ 采购副总→ 财务经理→ 子公司经理最后创建审批对象表及审批Log表,包含采购申请及审批状态。二、采购申请原创 2021-12-09 20:07:57 · 1007 阅读 · 0 评论 -
【学习笔记】ABAP OOD设计模式 - 桥接模式
ABAP OOD设计模式 - 桥接模式整理转自—《SAP ABAP 面向对象程序设计(原则、模式及实践)》桥接模式又称为桥梁模式,在程序开发中,采用不同的维度分解一系列对象,然后采用组合的方式,根据需要灵活组合,这个过程就是解耦和提高灵活度的过程,也就是所谓的桥接模式。其中,Abstraction为抽象化角色,定义出该角色的行为,同时保存一个对实现化角色的引用;Implementor是实现化角色,它是接口或者抽象类,定义角色必需的行为和属性;RefinedAbstract原创 2021-12-07 18:21:34 · 800 阅读 · 0 评论 -
【学习笔记】ABAP OOD设计模式 - 观察者模式
ABAP OOD设计模式 - 观察者模式 整理转自—《SAP ABAP 面向对象程序设计(原则、模式及实践)》定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,这个对象相关依赖的所有对象都可以得到通知并能够自动更新的行为模式就成为观察者模式(Observer Pattern),观察者模式属于行为型模式。效果:观察者模式将观察者和被观察者解耦,被观察者可以按需要增加或者删除观察者,并能够将变化及时通知给所有相关的观察者。【示例】比如工厂库存消耗后低于一定量会触发再订原创 2021-11-30 21:04:09 · 643 阅读 · 0 评论 -
【学习笔记】ABAP OOD设计模式 - 单例模式
ABAP OOD设计模式 - 单例模式整理转自—《SAP ABAP 面向对象程序设计(原则、模式及实践)》单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式之一,是只有一个实例被创建出来的模式。需要定义一个特殊的类,该类能够实现这样几个特性:类只能有一个实例,即使再次创建,保证返回的是同一个实例对象; 类必须能够在内部控制实例的创建,调用者无法任意创建; 类能够被全局访问和共享;解决方案:定义一个单例类,该类的可见度是Private,即外原创 2021-11-29 19:57:39 · 643 阅读 · 0 评论 -
【学习笔记】类对象的内存释放
类对象的内存释放整理转自—《SAP ABAP 面向对象程序设计(原则、模式及实践)》类对象与其他数据变量一样,都是要占据程序内存的,如果确定后续程序不会再使用对象实例,我们就可以删除对象实例,释放内存。SAP ABAP中对于不再使用的类对象实例使用垃圾收集器(Garbage Collector)删除。ABAP OOP其实跟Java一样,不必主动删除和释放对象,虚拟机的垃圾收集机制会帮助我们清理和收集对象内存。清除类对象可以使用”CLEAR”和”FREE”操作,将类对象设置为空值(NU原创 2021-11-28 20:41:29 · 1964 阅读 · 0 评论 -
【学习笔记】持久类和对象持久化的应用
持久类和对象持久化的应用整理转自 —《SAP ABAP 面向对象程序设计(原则、模式及实践)》对于一般的面向对象语言,对象持久化通常是指将对象存储于数据库或者磁盘文件中,便于以后调用处理,也就是通过操作将内存中的对象保存到数据库或者文件中。对于ABAP程序,持久化一般是保存到数据库表中,ABAP也提供了自动化方式和服务来帮助我们管理和操作持久化对象。【实例】下面通过一个简单实例来说明:系统中的一个类对象,在业务处理中属性被赋予了不同的值,我们将对象实例的属性值存储到SAP数据原创 2021-11-25 20:30:44 · 1259 阅读 · 1 评论 -
【转载】ABAP中数据和对象的动态创建和调用
ABAP中数据和对象的动态创建和调用动态创建数据或者对象是指在程序运行过程中创建数据变量或者对象实例,我们可以用引用定义来创建数据变量,格式为:CREATE DATA gt_def TYPE (‘ty_i’) “用来创建类型为ty_i的变量访问上述变量的方式是:gt_def->* = 1因为数据引用变量自身没有属性,所以可用“*”来代表数据变量里面所有的内容。基于类对象的动态创建,一般方式是将业务类型与对应的类类型存储在自定义的数据库表中,然后在程序...原创 2021-11-18 19:54:27 · 1174 阅读 · 0 评论 -
【转载】字段符号在ABAP OOP中的应用
字段符号在ABAP OOP中的应用字段符号是ABAP中类似于指针的一种应用,字段符号并不保存数据,其仅仅指向数据内存地址。ABAP的字段符号可以较为方便灵活地访问数据,字段符号使用尖括号“<>”来定义。定义语法如下:FIELD-SYMBOLS <FS> [<type>|STRUCTURE <s> DEFAULT <wa>].字段符号的特点如下:字段符号并不占有自己的内存空间; 字段符号可以指向ABAP所支持的所原创 2021-11-18 19:52:26 · 808 阅读 · 0 评论 -
【ABAP】销售订单修改税率
【实例】比如某企业配置了销项税条件类型可以手动修改,那么如何通过外部接口传值进行SO的税率更新呢?其实采用常用的BAPI:'BAPI_SALESORDER_CHANGE'就可以实现了。其中会调用函数'SD_SALES_ITEM_COND_MAINTAIN'进行更新。其中的函数'PRICING_CHECK_CONDITION_LINES'我们需要了解一下,会对传入的内容进行一系列的校验。【源码】FUNCTION pricing_check_condition_lines.原创 2021-08-04 19:26:45 · 2681 阅读 · 0 评论 -
【ABAP】如何判断单据是否被锁定
比如有这样一个场景,通过外部接口对信贷状态进行更新,可通过函数'SD_ORDER_CREDIT_RELEASE'/'SD_DELIVERY_CREDIT_RELEASE'释放销售订单/交货单,但是函数并没有返回值,一旦单据被某用户锁定,则会对方系统会中断,且没有任何提示。 CALL FUNCTION 'SD_ORDER_CREDIT_RELEASE' EXPORTING VBELN = LV_VBELN. CALL FUNCTION 'S原创 2021-08-02 21:48:22 · 1458 阅读 · 0 评论 -
【ABAP】根据Tcode查找后台IMG路径
要是知道一个后台配置的事务代码,比如“OAYZ”——指定折旧期限的默认值,如何快速的找到其IMG路径呢?网上看到一个网友分享的方法,觉得挺有意思的,分享给大家。这里用到了两个FM:S_CUS_IMG_ACTIVITY_GET_W_TCODE S_CUS_IMG_ENTRY_VIA_ACTIVITY【第一步】SE37运行函数“S_CUS_IMG_ACTIVITY_GET_W_TCODE”,输入事务代码Tcode:OAYZ,执行。结果“ACTIVITIES_FOUND”找到5条记录,原创 2021-07-28 19:42:19 · 979 阅读 · 0 评论 -
【奥运代表团加油】ABAP字符处理杂例
ABAP字符处理杂例今天一早就看到这样一个新闻标题“东京奥运会中国体育代表团名单来了”,简直令人振奋,点进去一看,说此次总人数777人,为境外参赛规模最大的一届。同时发现了一个奇怪的现象,我们的男运动居然不善于玩大球,在玩小球(羽毛球/乒乓球)的道路上“不能自拔”。此时我有一个猥琐的想法,就是将这部分名单导入至SAP表进行分析处理(PS:虽然Excel处理起来更方便)。【原文链接】首先将网页上面的内容都复制到Excel中,占据一列内容。在SAP新建一个Table进行存储。原创 2021-07-15 18:16:34 · 412 阅读 · 1 评论 -
【学习转载】One more ABAP to JSON Serializer and Deserializer
WhyThere are a lot of other implementations of theABAP to JSONSerializerand Deserializerin SDN, but for different reasons, all implementations I have found were not suitable for my needs. From SAP_BASIS 7.40 there is alsoa simple transformationavai...转载 2021-06-13 14:44:03 · 641 阅读 · 0 评论 -
【ABAP】CK11N相关Table
CK13N可以通过FM:BAPI_COSTESTIMATE_GETDETAIL来进行查询。具体保存于表:KEKO :产品成本核算 - 表头数据KEPH :产品成本核算: 制造成本的成本构成CKHS:抬头:单位成本核算(控制+总计)CKIS:项目单位成本核算/产品成本核算分项列举BOM相关Table:STKO :BOM 表头STPO :BOM 项目MAST :BOM 链接物料工艺路线相关Table:PLKO :任务清单 - 表头...原创 2021-05-05 19:51:28 · 2915 阅读 · 1 评论 -
【Demo】改变SO项目状态并取消拒绝原因实现
销售订单审批状态配置的数据表有三级(转自:博客链接):状态参数文件的数据表是TJ20,对应的语言描述表TJ20T; 用户状态条目的数据表是TJ30,对应的语言描述表TJ30T,注意字段TJ30-ESTAT(用户状态)是条目的自增长值,不可以编辑,格式“Exxx”,例如E0001、E0002; 用户状态控制的数据表是TJ31,字段MODKZ存放编辑标志,1为允许、2为允许但警告、3为禁止。下面的Demo的作用是改变审批状态,同时取消行项目拒绝原因。1、更新审批状态data: ls_obj原创 2021-04-08 20:42:19 · 1185 阅读 · 0 评论 -
【实用】ABAP邮件发送(HTML+Attachment)
这几天接到这样一个ABAP需求:SAP邮件自动发送给各个部门领导,邮件的正文为了美观需要采用指定的HTML格式,同时需要附上Excel附件。之前都是简单的采用函数“SO_NEW_DOCUMENT_ATT_SEND_API1”来进行发送的,那么这里该如何处理呢?这里需要考虑两个问题:正文采用HTML格式; 带有Excel附件;这里我简单做了一个DEMO,基本可以满足需求,但是比较繁琐,当然有更好的方式可以在留言中提出来,由于涉及用户隐私,所以不希望本文被转载。首先看一下最终简单的效果图:原创 2021-02-18 19:45:53 · 2177 阅读 · 0 评论 -
【实用】ABAP邮件发送(HTML+Attachment)
这几天接到这样一个ABAP需求:SAP邮件自动发送给各个部门领导,邮件的正文为了美观需要采用指定的HTML格式,同时需要附上Excel附件。之前都是简单的采用函数“SO_NEW_DOCUMENT_ATT_SEND_API1”来进行发送的,那么这里该如何处理呢?这里需要考虑两个问题:正文采用HTML格式; 带有Excel附件;这里我简单做了一个DEMO,基本可以满足需求,但是比较繁琐,当然有更好的方式可以在留言中提出来,由于涉及用户隐私,所以不希望本文被转载。首先看一下最终简单的效果图:原创 2021-02-18 19:43:59 · 1422 阅读 · 0 评论 -
【测试】生成采购信息记录 Demo
Serves as a source of information for Purchasing. The purchasinginforecord(also referred to in abbreviated form as the "inforecord") contains information on a specific material and a vendor supplying the material. For example, the vendor's current pric...原创 2020-10-02 10:07:57 · 765 阅读 · 0 评论 -
【测试】生成MD11计划订单Demo
A planned order is sent to a plant and is an MRP request for the procurement of a particular material at a determined time. It specifies when the inward material movement should be made and the quantity of material that is expected.A planned order has t.原创 2020-09-28 21:00:20 · 1346 阅读 · 0 评论 -
【测试】生成CO01生产订单Demo
*&---------------------------------------------------------------------**& Report ZTEST_CREATE_ORDER*&*&---------------------------------------------------------------------**&*&*&----------------------------------------.原创 2020-09-27 19:36:53 · 893 阅读 · 0 评论 -
【测试】批量删除供应商配额(Quota )
【测试代码】查询代码:主要涉及Table:EQUK(配额文件: 标题)和EQUP(配额文件:项目)***选择屏幕SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.PARAMETERS: P_WERKS TYPE EQUK-WERKS DEFAULT '1200' OBLIGATORY.SELECT-OPTIONS: S_MATNR FOR EQUK-MATNR MODIF ID G2.SELE...原创 2020-09-26 21:34:23 · 1900 阅读 · 0 评论 -
【实用】ALV 清单右击隐藏列失效的处理
ALV OO中右击显示列进行隐藏列处理,但是右击后发现无效,该如何处理?其实问题出在创建“ALVgridcontainer”这里。问题代码:"Create ALV grid container PERFORM CREATE_GRID_CONTAINER USING GV_CONT_BODY GV_GRID ABAP_TRUE.*&--------------------------------------------------------------------...原创 2020-09-24 19:32:22 · 870 阅读 · 0 评论 -
【实用】ABAP“FOR ALL ENTRIES”的Hints 优化
ABAP“FOR ALL ENTRIES”的Hints 优化通常默认情况下“FOR ALL ENTRIES IN”语句会将内表每5个数据生成一个新的Where语句来执行。可通过事务代码“RZ11”查询参数名称“rsdb/max_blocking_factor”,如下图所示。比如下面的代码(仅供测试): REPORTZTEST. DATA:BEGINOFLT_KNA1OCCURS0, KUNNRTYPEKNA1-KU...原创 2020-09-23 19:21:43 · 4105 阅读 · 2 评论 -
【实用】表维护视图SM30增加自定义按钮的实现
表维护视图SM30增加自定义按钮的实现1、新建Table并通过“表维护生成器”生成SM30维护视图。正常的创建表维护视图到这一步也就结束了,最多是进函数组调整字段名称和显示效果,但这里我们需要演示的是如何在SM30维护界面中新增按钮,并实现其相应的功能。2、拷贝用户界面,便于后续增加自定义按钮。因为SM30使用的状态栏是存于SAPLSVIM中,所以需要拷贝SAPLSVIM的对应的用户接口到自建表维护程序对应的函数组中。在“生成表维护对话:生成环境”界面通过菜单..原创 2020-09-21 19:52:53 · 2020 阅读 · 0 评论 -
【实用】SAP MR8M校验增强
需求:利用事务代码MR8M冲销采购发票的时候需做相关校验,比如发票凭证符合某些条件则无法冲销,提示报错。实现:这里介绍比较简单的一个处理方式—写隐式增强。首先找到相关程序名称SAPLMR1M。点击“编辑”—“增强操作”显示隐式增强选项。接口点击“增强”按钮,并选中需要添加SPOT的行(通过光标定位),创建实施。类似于BADI,也需要创建实现。接着就可以在代码中进行添加校验逻辑。最后全部激活即可。可以在SE19中进行删...原创 2020-09-10 19:48:53 · 3414 阅读 · 0 评论 -
【实用】SAP成本组件分割价格取数逻辑
本文整理CKM3中“CV成本组件”视图下各项成本的价格取值逻辑。代码段1:SELECTTCKH3~ELEMT ”成本构成号TCKH3~EL_HV ”全部成本TCKH1~TXELE ”成本构成名称TKEVA04~WERTKOMP1 ”字段名FROMTCKH3INNERJOINTCKH1ONTCKH1~ELEHK=TCKH3~ELEHK ANDTCKH1...原创 2020-09-09 20:23:04 · 10392 阅读 · 2 评论 -
【实用】ABAP ALV单元格修改信息提示
ABAP日常开发中经常会用到ALV OO(CL_GUI_ALV_GRID)进行清单显示,其中对指定单元格进行操作也是日常必备技能,比如下图中的需求,对指定单元格的“原因代码”列进行修改,校验值的有效性,给出如下所示的提示框,若校验不通过,恢复原值。类的定义与实现CLASSlcl_event_receiverDEFINITION.PUBLICSECTION.METHODS:handle_data_changedFOREVENTdat...原创 2020-09-08 20:14:54 · 1918 阅读 · 0 评论 -
关于GUI_DOWNLOAD中下载excel等文档的乱码问题
1 GUI_DOWNLOAD1.1 问题表现GUI_DOWNLOAD在应用当中有时会导致输出的文件在某些电脑正常显示,在某些电脑乱码显示。这个固然是由于各个电脑系统配置有差异,但是我们可以在应用该函数时就排除该差异来保证任意台电脑正常显示输出的文件。如下属代码:该代码把一个内表it_printab[]直接放到一个文件sfile中(代码示例来自于ZHRR0028)。转载 2012-02-07 08:59:20 · 6244 阅读 · 0 评论 -
The SAP Toolbar control
The SAP Toolbarcontrol GeneralAddmethodAdd_button_groupmethodSet_buttonstate methodSimpleexampleAdvancedexampleGeneralSee alsoSet up event handling for controls for a general原创 2011-05-18 14:34:00 · 1713 阅读 · 0 评论 -
SAP RFC-RFC概述
SAP RFC-RFC基础知识SAP RFC-RFC概述RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAPABAP系统。这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用转载 2012-04-24 09:13:55 · 1895 阅读 · 0 评论 -
SAP PO相关打印编程
1.PO打印通常企业打印PO有两种方式,一是套打(由印刷厂商印制好一式多联的格式以备打印的PO送给相关部门,比如采购部,供应商,财务部,仓库等保存),另一种就是直接打印在A4纸上.不管哪种方式,可直接写一个外挂程序或使用SAP配置来打印,谁优谁劣无可非议只要能正确将东西打印出来就行.在打印报表的问题上我个人很喜欢Crystal report因为能很容易定义所需要的各种复杂格式,遗憾的是转载 2012-04-23 15:23:00 · 5196 阅读 · 0 评论 -
java 调用SAP RFC函数错误信息集锦
RFC接口调用SAP如果有异常会通过com.sap.mw.jco.JCO$Exception: 抛出异常在开发中遇到的异常有如下用户名密码可能是错误或者用户无权限,确认用户,必要时联系SAP负责人,检查用户(103) RFC_ERROR_LOGON_FAILURE: ##.#####,####(103) RFC_ERROR_LOGON_FAILURE: Name or pa转载 2012-04-24 14:22:05 · 6476 阅读 · 2 评论 -
SAP生产订单预留相关的备忘录
在我公司的SAP项目中,发现对生产订单的发料凭证中,经常有冲销预留错误的现象。例如同时发三个批次的物料,总是最后一批有冲预留,而前面的批次都与预留无关。因为预留与MRP运算有关,因此必然造成MRP的运算结算不准确。这不是一个小问题。这几天专门调查,发现了问题所在,记录在此以共享经验:1,生产订单在建立时或者在下达时(IMG中配置)就创建了材料预留。用MB23就可以查看了。但是注意:如果订单转载 2012-04-26 11:01:45 · 1366 阅读 · 0 评论 -
SAP生产订单预留相关的备忘录
在我公司的SAP项目中,发现对生产订单的发料凭证中,经常有冲销预留错误的现象。例如同时发三个批次的物料,总是最后一批有冲预留,而前面的批次都与预留无关。因为预留与MRP运算有关,因此必然造成MRP的运算结算不准确。这不是一个小问题。这几天专门调查,发现了问题所在,记录在此以共享经验:1,生产订单在建立时或者在下达时(IMG中配置)就创建了材料预留。用MB23就可以查看了。但是注意:如果订单转载 2012-04-26 11:15:00 · 1311 阅读 · 0 评论 -
ABAP函数:SD_VBAP_READ_WITH_VBELN(根据销售订单读取表vbap中的信息)
function:SD_VBAP_READ_WITH_VBELN 功能:根据销售订单读取表vbap中的信息 参数: import:I_VBELN 订单号(必输项) I_BYPASSING_BUFFER 是否回避buffer I_REFRESH_BUFFER转载 2012-04-27 13:15:31 · 7621 阅读 · 0 评论 -
銷售訂單 (Sales Order): 資料表及更新記錄
銷售訂單建立記錄: (Create)select VBELN from VBAK where ERDAT GE I_DATUM_FM AND ERDAT LE I_DATUM_TO更新/刪除記錄: (Change/Delete)select distinct OBJECTID from CDHDR where OBJECTCLAS = 'VERK转载 2012-04-27 13:17:10 · 3967 阅读 · 0 评论