![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SAP ABAP
ABAP
Willie Y
这个作者很懒,什么都没留下…
展开
-
SAP 邮件发送smartform(转成PDF附件)实例
介绍一个项目中经常会遇到的场景:将smartform转化成PDF,然后再把PDF作为邮件的附件发送出去。1, 创建smartformTcode:smartforms创建一个简单的smartform添加一个文本节点,2, 创建程序创建一个abap程序,简单逻辑如下:1,生成smartform保存到spool中,注意控制参数(control_parameters)和输出选项(output_options )的设定2,调用RSPO_GET_ATTRIBUTES_SPOOLJOB转载 2020-05-18 15:48:52 · 2335 阅读 · 0 评论 -
VBA调用SAP RFC实现数据读取&写入
VBA调用SAP RFC实现数据读取&写入原创 2022-04-21 17:34:29 · 3441 阅读 · 0 评论 -
ABAP ALV显示金额与导出金额不一致
ABAP ALV显示金额与导出金额不一致原创 2022-04-02 18:45:36 · 1141 阅读 · 0 评论 -
KCD_EXCEL_OLE_TO_INT_CONVERT报错SY-subrc = 2
ABAP ALSM_EXCEL_TO_INTERNAL_TABLE报错yiyuzz 2019-04-29 08:57:33 1240 收藏文章标签: ABAP版权上传函数报错sy-subrc = 2 的时候 ,检查一下自己电脑有没有装福昕PDF阅读器,如果装了就卸载它,就好了。————————————————版权声明:本文为CSDN博主「yiyuzz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/y..原创 2021-06-02 16:10:37 · 720 阅读 · 2 评论 -
SAP BAPI_PO_CHANGE修改PO组件(数量)
DATA: C_FLAG(1) TYPE C. DATA: G_POHEADER LIKE BAPIMEPOHEADER, G_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE, G_POITEM LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE, G_POCOMPONENTS LIKE BAPIMEP...原创 2020-09-24 20:59:41 · 4496 阅读 · 0 评论 -
SAP BAPI_PO_CREATE1创建指定数量的PO
创建指定数量的PO(不使用SAP建议采购的数量)以下代码是RFC接口:表参数结构:代码如下所示:FUNCTION RFC_Z_SCE_POCREATE.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(IBUKRS) TYPE BUKRS*" VALUE(ILIFNR) TYPE原创 2020-09-24 20:55:02 · 1958 阅读 · 1 评论 -
ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)
ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)这里总结一下几个常用的退出操作:CHECK.(SAP官方推荐只在循环中使用)1)CHECK 后面要跟一个表达式,当表达式值为假(false)时,CHECK发生作用,退出循环(LOOP)或处理程序(Processing Block)。2)如果CHECK出现在循环中,则发生作用时,退出的是当前一次循环操作,程序会继续执行 下一次循环操作,其作用类似于Continue (Java 或C++中con转载 2020-09-22 19:14:05 · 792 阅读 · 0 评论 -
ABAP 调用SAP标准程序报错问题分析
1、报错信息自开发程序调用MB5B标准程序,当选择后台执行时,通过SM37查看运行情况显示:源码程序参看文章《ABAP-Submit调用SAP标准程序MB5B》2、原因分析双击查看Job日志(提示通过ST22查看DUMP信息):ST22查看到:Runtime Errors DYNP_TOO_MANY_RADIOBUTTONS_ONShort text More than one radio button active...原创 2020-09-14 15:28:16 · 4352 阅读 · 0 评论 -
ABAP SELECT查询语句优化
1、Where中尽量不使用LIKE模糊查询查询速度极慢,如下:当优化为如下时,代码速度快很多:原因: 使用 LIKE 模糊查询效率慢会索引失效从而引起全表扫描。2、SELECT语句中的WHERE条件也应该注意次序,通常必选条件放于最前。3、若不能优化代码,则可考虑建立索引。建立索引的方法可以参考网络文章:https://wenku.baidu.com/view/891b478176c66137ef061973.html...原创 2020-08-31 13:48:06 · 1558 阅读 · 0 评论 -
第四代增强:Enhancement-Point
第四代增强:Enhancement-Point此种不建议使用,只有无法通过User Exit与BADI都无法实现时,才考虑该增强。第四代其实是第三代上的加强解释:Ehancement Spot:用来组织Enhancement options,it's a container of Enhancement optionsEnhancement Implementation:用来组织Enhancement options的实现代码Enhancement Spot是对Enhancemen...转载 2020-08-25 11:59:56 · 1928 阅读 · 0 评论 -
ABAP-Submit调用SAP标准程序MB5B
*&---------------------------------------------------------------------**& Report ZMB5B_TEST*&*&---------------------------------------------------------------------**&*&*&-------------------------------------------.转载 2020-08-20 16:44:19 · 1773 阅读 · 0 评论 -
SAP 非开发环境修改Program程序(规避跨系统代码传输)
若要在非开发环境修改程序,可以使用以下程序实现。运行后输入要修改的Program名称,即可修改(前提是修改后的代码无语法错误)正式生产环境禁用(可能导致不合规)REPORTZMMT005.DATA:BEGINOFITABOCCURS0,LINE(100),ENDOFITAB.PARAMETERS:PROGLIKETADIR-OBJ_NAME.READREPORTPROGINTOITAB.EDITOR-CALLFORI...原创 2020-07-10 14:37:56 · 519 阅读 · 0 评论 -
SAP 其他增强---针对FI凭证的增强(BTE)增强
BTE(Business Transaction Events)增强事务代码:FIBF财务凭证最后保存之前调用BTE的增强,对保存到数据库的数据直接做修改。原创 2020-06-11 16:17:24 · 2361 阅读 · 0 评论 -
SAP 用户类型
在使用 SU01 维护用户时,在登录数据选项卡中会要求选择用户类型,一般我们都选择第一项 Dialog,但是其他几个选项有什么作用呢?下面我们就一一解释。对话用户A顾名思义,就是需要通过 SAP GUI 与 SAP 系统进行交互的用户。在对话用户登录时,系统会检查用户的有效期和初始密码,并且要求修改密码。重复登录时,系统会给出提示。系统用户系统用户主要用来执行系统中无需会话交互的应用(例如 RFC)或者是执行后台处理。这种用户不允许使用 SAP GUI 登录。这种用户类型没有密码有效期。转载 2020-06-11 14:01:21 · 974 阅读 · 0 评论 -
SAP 其他增强---针对FI凭证的增强
前言:1、查看物料凭证:MB03(数据库表:MKPF抬头,MSEG行项目) MKPF抬头表两个主键2、查看财务凭证:FB03(FB01 FB02)(数据库表:BKPF抬头,BSEG行项目簇表)BKPF抬头三个主键,故FB03中首页有三个输入框,即三个字段决定唯一的财务凭证: 3、创建财务凭证:tcode:F-02(FBV1预制财务凭证) 业务需求:F-02做会计凭证时,要求当抬头文本输入某文本时,行项目中也自动填充该抬头文本。...原创 2020-06-10 09:42:40 · 7437 阅读 · 0 评论 -
SAP增强 BADI屏幕增强实例(MIGO增加分页签)
最终效果:以下根据系统实例做的1、SE11建立数据表,主要是用于存放附加的数据;MANDT MANDT CLNT 3 0 客户端MBLNR MBLNR CHAR 10 0 物料凭证编号MJAHR MJAHR NUMC 4 0 物料凭证年度ZEILE MBLPO NUMC 4 0 物料凭证中的项...转载 2020-06-09 16:16:16 · 3053 阅读 · 2 评论 -
SAP BAPI_ACC_DOCUMENT_POST函数预制凭证失败报错--会计科目xxxxx 在会计科目表xxx 中没有定义
1、使用BAPI_ACC_DOCUMENT_CHECK时:CALLFUNCTION'BAPI_ACC_DOCUMENT_CHECK'EXPORTINGDOCUMENTHEADER=HEADERTABLESACCOUNTGL=ACCOUNTGLACCOUNTRECEIVABLE=ACCOUNTRECEIVABLECURRENCYAMOUNT=CURRENCYAMOUNT...原创 2020-06-02 15:44:25 · 3792 阅读 · 2 评论 -
SAP 增强--第三代BADI增强点--Enhancement Spot(实例)
第三代增强Enhancement Spot(实例)业务需要:MIGO事务代码,录入采购订单后,行项目详细信息中,增加一个分页签,分页签中增加输入框,保存按钮上增加保存至自建数据库表。业务模拟:1、SE24查找MIGO业务相关的BADI清单:使用SE24跟踪MIGO中的BADI,考虑可能需要的BADI在:(1)输入事务代码MIGO回车后: MB_MIGO_BADI、MB_MIGO_ITEM_BADI、GOS_SRV_SELECT、BADI_LAYER、BADI_MA...原创 2020-05-27 11:28:17 · 3969 阅读 · 0 评论 -
SAP 增强--第三代BADI增强(实例):
第三代BADI增强:业务需求:当使用MM01创建物料的销售视图时,要求对工厂P999+销售组织C999+销售渠道Z1中的物料销售视图销项税分类字段自动填写默认值‘0’。F1查看销售视图下的税分类字段:使用BADI增强,考虑MM01可能在以下环节具有BADI 增强:(1)输入MM01事务代码时候,(2)录入物料代码,(3)选择视图后,(4)点击回车进入界面时,(5)点击保存按钮时。业务模拟:1、SE24输入对象类型CL_EXITHANDLER,进入方法GET_INSTAN.原创 2020-05-22 16:02:20 · 2314 阅读 · 0 评论 -
SAP 增强--第三代增强出口BADI
第三代出口-BADIBAdIs(Business Add-Ins)是SAP在R/3 release 4.6A后增加的增强技术。总的来说,BAdIs克服了之前出口的所有缺点,并且还是用最新的OO技术实现。相关事务代码:1、SE24:查找相关事务代码的BADI增强出口2、SE18:创建及维护BADI对象。创建增强点、维护接口/类(Interface)、维护方法,维护方法的参数、维护实施Implementation(可以在SE19下面查看)3、SE19:维护BAdI实例,BAdI功能的实现原创 2020-05-22 14:30:32 · 838 阅读 · 0 评论 -
SAP 增强--第二代增强(实例)
业务需求:实现增强功能使得在VA01事务代码下,PO单号以及PO单日期,不可输入业务模拟:1、找到增强点,使用SMOD输入开发类(Package):2、查看增强下的函数:EXIT_SAPMV45A_004控制字段更改。查看该函数的输入、输出、表:C_SCREEN_INPUT = ‘0’,表示import中的字段名不可输入。添加增强代码:3、双击INCLUDE函数添加逻辑代码:激活代码,4、使用CMOD创建PROJECT:绑定增强:激活.原创 2020-05-21 09:47:46 · 2553 阅读 · 2 评论 -
SAP 增强—第二代出口Customer Exit
第二代出口-Customer Exit二代出口一般也叫函数出口。1、查找出口。A、通过CALL CUSTOMER-FUNCTION来查找出口查找事务代码的主程序,输入需要增强的事务代码(例如需要对创建SO做增强,则输入VA01),点击“状态”,找到主程序: 双击程序名进入程序,搜索“CALL CUSTOMER-FUNCTION”:可以看见CALL CUSTOMER-FUNCTION的很多程序(404、930、911、910等)而函数名称命名规则:EXIT_&...原创 2020-05-19 13:35:56 · 1609 阅读 · 0 评论 -
SAP 增强—第一代增强User exit
增强是针对SAP标准功能的扩展,关键字:源码、增强点(并不是可以随意增强,而是SAP预留的)1、基于SAP源代码的增强,第一代增强对SAP所预留的空的子过程进行编码,用户可以编辑此子过程,并在这个子过程中添加自定义的代码,以增加SAP标准程序的控制功能2、基于函数的增强,第二代增强SAP为此类出口提供了相应的函数,依据函数结构指定的传入/传出参数,程序执行时,调用该函数并检查相应的代码3、SAP BADI(Business Add-in),第三代增强使用面向对象的方式实现增强原创 2020-05-19 11:25:34 · 2610 阅读 · 0 评论 -
SAP TIMEOUT程序超时DUMP(特殊处理)
业务需求:企业开发人员的自开发程序有时运行时间较长(通常都是由于LOOP程序太耗时),会超过系统设置的最大运行时间,这时会导致程序因为time out而dump掉。若用户不在意运行时间,则程序员可以采取如下方式解决time out的问题:解决方法: 在LOOP循环程序中调用重置运行时间的函数: TH_REDISPATCHLOOPATTBL_OUTPUTINTOH_TBL_OUTPUT."程序TimeoutG_TIMEOUT=SY-T...原创 2020-05-26 18:01:46 · 2352 阅读 · 0 评论 -
SAP 发送外部邮件(增加到邮件队列)
************************************************************************Systemname:MM**Subsystemname:REPORT**Programname:PO未发送供应商邮件提醒...原创 2020-05-19 18:05:34 · 1780 阅读 · 0 评论 -
SAP ALV完整功能
*&---------------------------------------------------------------------**&ReportYTEST_ALV*&*&---------------------------------------------------------------------**&*&*&--------------------------------------------------...原创 2020-05-19 18:00:12 · 817 阅读 · 1 评论 -
SAP 共享缓冲器
共享缓冲器 所有主会话和内部会话中都可以共享数据,还可以与其他用户共享。(与MEMORY ID用法类似)EXPORT/IMPORT TO/FROM SHARED BUFFER …参考MEMORY ID使用方法:https://blog.csdn.net/willieyuan/article/details/106207965https://blog.csdn.net/willieyuan/article/details/106119963...原创 2020-05-19 11:18:41 · 267 阅读 · 0 评论 -
SAP 内存管理--ABAP内存
ABAP内存内部会话之间的数据共享(内部会话:在主会话中进行程序调用时,即call function,还在当前窗口中调用产生的窗口,就叫内部会话)。只有在同一个窗口执行的程序才能共享ABAP内存。另外:在每个程序里使用的内存有ABAP内存和SAP内存。使用ABAP内存时可以在程序级别上任意指定内存ID(memory id)名,不需要参数ID(即不需要到表TPARA中创建PID)使用ABAP内存的语句及步骤:1、EXPORT … TO … 向MEMORY ID传出数据2、IMPORT.原创 2020-05-19 11:12:42 · 2731 阅读 · 0 评论 -
SAP 内存管理-SAP内存
SAP内存:主会话之间的数据共享(主会话:即单开的SAP窗口,SAP最多支持同时打开6个主会话)引言在MM03事务下输入一个物料号A后,若再打开一个外部回话,进入物料相关的事务代码(包含有需要输入物料号的文本框),此时会话中将自动填充物料号A。这是因为使用了SAP内存,SAP内存使用SPA/GPA技术传递程序间数据。(传递内存参数来给其他程序输入字段赋值的操作叫做“SPA/GPA技术”)SAP/GPA参数指的是SAP内存的参数,可在表TPARA中进行确认。SPA/GPA技术只限相同的用户共享内存,(原创 2020-05-14 15:35:51 · 2032 阅读 · 0 评论 -
SAP 内存管理-标准事务程序、其他程序调用
ABAP内存内部会话之间的数据共享(内部会话:在主会话中进行程序调用时,即call function,还在当前窗口中调用产生的窗口,就叫内部会话)只有在同一个窗口执行的程序才能共享内存内部会话产生的方式:(1)、接口:使用SUBMIT语句调用程序,调用选择界面传值:SUBMIT program WITH p_1 = val1 WITH s_1 IN r_1 VIA SELECTION SCREEN AND R...原创 2020-05-14 14:30:15 · 562 阅读 · 0 评论 -
ABAP 最基础也最重要的语句之 SELECT语句
1、select里面用for all entries in itab 语句的话在之前要先对这个内表itab进行是否为空判断,即:if itab is initial的判断!2、select bukrs gjarh INTOCORRESPONDINGFIELDSOFTABLELT_DATA注意这样的写法,要放足够的字段去判别每一条数据是否一样,否则就会导致本来要抓两条数变成只抓到一条。例如如果有两条数据: a b c ...转载 2020-05-14 11:15:40 · 3916 阅读 · 1 评论 -
SAP 内存管理
SAP内存管理内存是程序之间为了传递数据而使用的共享存储空间SAP内存分类:1、SAP内存,2、ABAP内存1、SAP内存主会话之间的数据共享(主会话:即单开的SAP窗口,SAP最多支持同时打开6个主会话)通过SET/GET PARAMETER语句共享不同ABAP内存领域之间的内存2、ABAP内存内部会话之间的数据共享(内部会话:在主会话中进行程序调用时,即call function,还在当前窗口中调用产生的窗口,就叫内部会话)只有在同一个窗口执行的程序才能共享内存在每个原创 2020-05-12 15:59:04 · 667 阅读 · 0 评论 -
ABAP READ TABLE语句的几点注意事项
转载自:http://www.dlsap.com/thread-34-1-1.html向原作者莫怀远致谢1. 如果使用READ TABLE语句来读取内部表数据,而不是简单看返回值判断是否存在,那么在使用READ TABLE语句之前,一定要记得使用CLEAR语句清空内部表的工作区。2. READ TABLE itab WITH KEY = v BINARY SEARCH. 使用READ TABLE语句的二分法搜索以 代替标准顺 序搜索时, 必须首先按关键字中指定的次序对内表进行...转载 2020-05-11 11:10:49 · 8148 阅读 · 0 评论 -
ABAP 数据表视图DATABASE VIEW
创建DATABASE VIEW1、SE11输入视图名称创建2、设置需要关联的表及对应字段关系3、选择需要显示的表字段4、可以设置条件(满足条件的条目才能显示)5、激活,查看视图:...原创 2020-05-08 10:38:57 · 1263 阅读 · 0 评论 -
ABAP 透明表外键
*透明表外键例1 :系统中两个表,MARA -- 物料基本信息 MAKT -- 物料描述信息 而必须要先在表MARA有物料信息(例如物料号MATNR),才能在MAKT中有对应的物料描述。即需要表MARA中有物料号A,才能在MAKT中有物料号A对应的物料描述信息。且MARA中一条物料信息可以对应MAKT中多条物料描述信息(不同语言)故需要针对表MAKT中字段MATNR(物...原创 2020-05-08 10:36:14 · 1997 阅读 · 0 评论 -
ABAP 表维护生成器
表维护生成器:1、SE11下使用表维护生成器创建:2、配置表维护对话框(选择一步)权限组:设置权限相关配置函数组:类似于Package包,相当于放于某个文件夹。维护类型:分为一步和两步(即维护条目时的操作屏幕个数,本次选择一步)3、创建完成后,SM30即可创建或查看表维护对话框:紫色框(不能显示对应字段名称)是由于未维护相关字段的数据元素导致的。4、可...原创 2020-05-08 10:32:38 · 4992 阅读 · 0 评论 -
ABAP 创建透明表条目
创建表条目:1、SE11中:(单条维护)2、SE16(单条维护) 3、SE16N(多条维护) 注意:由于没有维护对应字段的数据元素(Data element),故上图中紫色框无法显示列名。(需要将字段数据元素维护完整)4、表维护生成器(表维护)上述三种方法(SE11,SE16,SE16N)都可以维护所有的数据库表,若将三个事务代码开发给用户则会有很大风险,通...原创 2020-05-08 10:32:17 · 626 阅读 · 1 评论 -
ABAP 内表数据操作
一、增加数据1、INSERT插入数据INSERT可以按内表的具体字段向表中插入一行或者多行数据:INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx].INSERT [wa INTO|INITIAL LINE INTO] TABLE itab.INSERT LINES OF itab1 [FROM idx] [TO idx2] I...原创 2020-05-07 18:10:54 · 10258 阅读 · 0 评论 -
ABAP 内表定义
内表内表是内存中建立的一个临时表,你可以在程序运行时对表中的数据进行,插入,修改,删除等操作,程序跑完了,就会被释放。内表共有3种类型:1.Standard:标准表,一般用的比较多2.Sorted:排序表3. Hashed:哈希表,一般用的比较少工作区工作区:内表按照行进行访问,必须使用某个区域(工作区)作为与表格互相传输的接口。注意:1、从内表中读...原创 2020-05-07 17:03:22 · 3132 阅读 · 0 评论 -
ABAP数据对象
1、变量变量定义包含name, length, type等,语法如下:DATA <name> [<length>] type <type>[ value <value>] [ decimal <decimals>]其中: [] 里的内容表示可选项。<>表示名称<name>: 变量名称, 最长3...原创 2020-05-07 16:22:48 · 472 阅读 · 1 评论