abap帅哥
专注sap
展开
-
ABAP SQL模糊查询日期年月日方法
日期在ABAP内部是以字符形式存储的,格式为YYYYMMDD。例如,2023年10月15日会被存储为’20231015’。ABAP SQL支持一些类似于普通SQL的函数,比如SUBSTRING或者CAST,但是,直接使用SUBSTRING可能会影响性能,特别是如果表的数据量很大,因为函数的使用可能导致无法使用索引。在ABAP SQL中根据年月模糊查询日期字段的步骤如下:输入处理与验证:确保输入的年月有效(例如月份在1-12之间)。原创 2025-03-19 18:42:40 · 124 阅读 · 0 评论 -
ABAP 快捷键取消注释被占用问题
如果快捷键被占用了,打开SE38编辑器,找到红框中注释和取消注释两个快捷键,在新快捷方式中,把自己需要的快捷键组合按一下,然后保存就行了。原创 2023-02-09 23:44:57 · 971 阅读 · 1 评论 -
ABAP 处理动态内表中指定的数据
用指针把动态结构中的字段指向定义好的ANY DATA元素,就没有语法错误了。不过这个方法局限性在于,指针如果为空就红色警告了 (结构中的元素如果没了就DUMP了)。原创 2022-11-13 23:40:06 · 805 阅读 · 0 评论 -
ABAP 动态报表选择屏幕抬头
写了一个平台的程序,然后有几个通用的业务逻辑,就写在了一个程序里面,但是通过事务码进去发现抬头都是一样的,需要做出区别。然后在初始化事件中进行不同事务码的区分,就能实现这个效果。先创建一个GUI抬头。原创 2022-11-12 21:37:33 · 679 阅读 · 0 评论 -
ABAP PO JSON格式统一成数组
在配置PO过程中,如果配置了数据格式(表),不做特定的处理PO中会自动转换,单挑数据转成对象格式,多条转成数组的JSON格式。为了避免格式不统一,需要在CC中进行配置,如下图。网上有个比较详细的原理解释。原创 2022-11-12 21:29:51 · 961 阅读 · 0 评论 -
ABAP PO XML 消息的状态为“已记录的消息(缺少提交)。
通过PO做了SAP主动推送的异步接口,在测试的时候没发现问题,上了生产之后发现一个问题,有几次没有成功推送,也没有任何报错,数据也没有进入PO。打开XML监控器发现没有推送过去的数据都是有个未提交的标识。解决这个问题只需要在程序中加入 COMMIT WORK 这个语句。原创 2022-11-12 21:21:25 · 504 阅读 · 0 评论 -
ABAP 内存管理 短转储问题 dump ‘ TSV_TNEW_PAGE_ALLOC_FAILED ‘ SAP
文章目录一、TSV_TNEW_PAGE_ALLOC_FAILED 的错误原因1.第一种情况2.第二种情况二、操作系统细节,分配内存参数1.每个平台的扩展内存EM的配额定义为:2.可用的扩展内存总数由以下参数设置3.如何通过RSMEMORY临时修改内存设置总结一、TSV_TNEW_PAGE_ALLOC_FAILED 的错误原因首先这不是软件中的错误或错误,而与自定义SAP应用程序服务器上的资源有关。然后就要分析两种情况,可以进入ST22详细查看参数。在以下情况之一中会引发这种短时转储:1.第.原创 2021-04-24 17:48:44 · 5733 阅读 · 2 评论 -
ABAP OPENSQL 语法积累
之前一直忽视了SQL的语法拓展,因为感觉没有HANA运用从数据库取数很慢,特别是加了点SQL操作更慢,接触了7.4 之后的版本有HNAN数据库,感觉SQL真的很快,并且有了新语法就不用取数据出来再进行循环处理了,数据量大的话反而慢了,与时俱进吧,多积累一点对于自己来说算是进步的新知识,能够提升效率。一, substring 在SQL中可以截取对应字段中数据的长度,也可以适用在WHERE条件中,目前感觉很方便。二,ltrim 同样可以用在WHERE 中,去前导零。原创 2022-09-09 08:37:19 · 524 阅读 · 0 评论 -
ABAP BOM按层级删除数据
判断一下父级和组件物料的那个有值,工作区打上X , 然后直接MODIFY 把父级物料匹配上的物料进行打标识X, 再对有标识的进行循环(虽然这样有点不好,在内表循环里面进行再循环删数据,但是不影响), 循环里面只对组件物料匹配上的打标识,这样来不管是父级还是组件都不会有漏网之鱼,因为要求就是输入的物料不管上下级带出来的全部给干掉。例如输入58C2313X2 第一个组件物料,那么父级出现了58C2313X2 就需要全部删掉,但是组件出现了很多个物料,这些物料又成为了父级物料带出了其他这些也需要删掉。原创 2022-09-06 11:41:37 · 679 阅读 · 0 评论 -
SAP ABAP 无敌修改请求号
RDDIT076,请使用这个标准程序,狠活,估计开发人员留的后门。(双击请求号即可开启新世界)原创 2022-09-06 09:42:45 · 938 阅读 · 0 评论 -
SAP ABAP 删除请求号,请从这个世界消失
最近单独负责一个接口的开发项目,战线时间比较长,弄了三个请求,因为配置到PO中而且改来改去的造成很多不存在的对象在请求里面,传输正式机的时候报错,我又用程序退回了这个请求然后去清理请求,我就清理了三个小时。靠又锁住了一些其他程序,那个BASIS,把我后面修改的请求号又传上去了,造孽,,,,,,,,。导致生产机某些程序挂了,造孽,,,,,,,坑货BASIS。没办法直接把原先的请求删掉,重新包了有问题的请求号的对象进去,那个无效的时间属性没进来就能正常释放了,差点生产事故严重化。原创 2022-09-06 09:40:26 · 1698 阅读 · 2 评论 -
SAP PO/PI 返回空字段
首先我在ABAP 中判断内表为空的时候插入了一条空行,然后在MAPPING 中判断WERKS 这个节点是否存在,不存在返回一个常量值为空,存在就是继续原值。测试了一下确实可以,就是我做这个的时候有22个配置的接口,几百个返回字段,算了吧。。。。。。。。 只是记录一下能实现,但是花费精力太多了。以前也做过这种,也是通过PO中转,但是以前做的是,PO只配了一个XSTRING字段节点,SAP和交互系统都在自己的开发环境把数据拼接成JSON,通过一个XSTRING传递,这样的话双方系统各自做各自的校验以及一系列操作原创 2022-07-08 11:29:08 · 2094 阅读 · 0 评论 -
ABAP BDC代码
每次写BDC要去copy之前的PERFORM子程序,觉得不爽。。。。刚好最近学习使用了新语法,跟上一下时代,BDC代码就是往BDC的内表一条条复制,我不如直接用新语法,整齐直观。具体代码如下:SHDB录好屏了直接对着一个个填到VALUE中,对应的五个字段。“A” 显示所有输入屏幕,如果在 bdc_tab 中包含该屏幕的功能码,则会出现小窗口显示这个功能码。它也是默认值,如果指定不是下面的值,则都认为是 A。“E” 只有在出现错误时才显示屏幕,用户可以修正数据,修正后程序可以继续处理。“N” 不显示屏原创 2022-06-17 17:40:20 · 431 阅读 · 0 评论 -
ABAP 增强中实现BDC功能 SAP
今天碰到一个需求,需要在事务码XD02修改客户数据之后保存之后同时调用BDC录屏在XD05执行客户冻结的操作。当时拿到之后确实第一个想法就是找到XD02的合适的增强点,然后直接插入已经录好的BDC,尝试之后果然不行。因为BAD的特性决定了不能存在FROM,所以就不行。紧接着就封装了一个BDC函数,继续尝试,这次是BDC返回 SY-SUBEC = 1001 的错误,这个错误在BDC中代表了,批量输入错误,可能是数据问题,也可能是操作问题。因为得不到具体的错误,用到了下面这个函数去捕捉错误信息。捕捉错误信原创 2021-01-10 16:42:56 · 932 阅读 · 0 评论 -
ABAP RFC函数导入参数 EXPORTING 传入内表形式参数
创建一个RFC函数时,导入参数一般都是传入单条,或单值。那我想传入一个内表作为传入参呢,其实也可以,因为RFC有TABLE 参数可以传入内表类型的,但是我想在EXPORTING 传入内表,怎么做呢? 首先需要在数据字典有透明表,然后创建表类型并填入透明表名字,最后在EXPORTING 中TYPE 这个表类型就可以得到一个内表形式的传入参数。 按着下图顺序创建即可,但是会有个提示: 这样定义会影响RFC性能,看来SAP官方是不推荐这种形式的定义传入参数,因为完全可以在TABEL定义内表参数。权当记录一下原创 2022-05-11 11:54:55 · 2005 阅读 · 0 评论 -
SAP DEBUG 后台JOB 的方法
事务码SM37 F8 执行到自己设置的后...原创 2022-04-22 14:50:53 · 2571 阅读 · 0 评论 -
SAP GUI 750 版本免密快速登录方法
升级了GUI版本,为了安全性GUI 取消了创建快捷方式添加账号密码的功能,但是用习惯了,每次都输入密码真的是很难受。可以通过改注册表的方式来继续实现快捷登录功能。WIN10(管理员权限)+ 750版本方式:1.以管理员身份运行‘C:\Program Files (x86)\SAP\FrontEnd\SAPgui’路径下的‘sapshcut.exe’文件,提醒的信息可以忽略:2.WIN+R,输入命令‘REGEDIT’\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432N原创 2022-04-19 16:06:21 · 2617 阅读 · 0 评论 -
SAP ABAP 传输请求排序增强
用STMS 传输请求时,总要拉到最下面进行刷新才能看到刚刚释放的请求,在TMS_UIQ_INT_SORT_QUEUE 函数中的最下面 第91 行 打开隐式增强加入以下代码, 把请求号进行倒叙排序。 IF IV_SORT_FIELD IS INITIAL. SORT ct_requests by bufpos DESCENDING. ENDIF....原创 2022-03-28 15:09:27 · 474 阅读 · 0 评论 -
SAP ABAP 动态字段赋值
最近优化了很多老程序,代码很冗余,特别是财务的有很多有规则的字段以及月份计算。 通常的来可能会写一个form 来把通用的放在一起,然后通过传值来实现只用一个字段变量来达到动态的目的,但是这个有一个弊端,就是外层还是要把所有字段全部列出来,比如FAGFLEXT 表里的月份字段,12个都要列出来。为了更简单易懂,删除掉冗余的东西,还是要来点真正的动态。这里用到了指针。来举个具体的例子。用这段的背景是,我做了QM质检一系列的,有整机档案,检验批,质量通知单, 还有一个汇总的程序,因为要求实时获取,所以当运行原创 2022-03-22 23:02:44 · 2211 阅读 · 0 评论 -
ABAP SELECT SQL 判断是否存在
TABLES:XXXX.SELECT * FROM XXXX WHERE XXX = XXXIF SY-SUBRC = 0.ENDIF.这句判断一下EKKO表中有没有符合条件的数据,要提前声明这张表。还有另一种判断的语法,是聚合函数COUNT,计算数据数量的,用SUBRC判断也可以用另外一个字段判断,忘记了。。。。。。,也是SY-XXXX。SELECT COUNT(*) FROM XXXX WHERE XXX=XXXX“2022.3.29 更新sy-dbcnt 判断OUNT返回条数.原创 2021-12-12 18:34:16 · 2607 阅读 · 0 评论 -
ABAP RANGES及比较符号
RANGES*选项介绍:*1.SIGN 值为 I 和 E 。 I是包含, E是排除, 一般使用I。2.OPTION 如果HIGH 为空 ,为单值选择 。有 EQ、NE、GT、LE、LT等逻辑操作 对于的 CP包含 NP是排除 如果HIGH 不为空 为区间选择 有BT,NB可选*3.LOW 低值*4.HIGH 高值lt:less than 小于le:less than or equal to 小于等于eq:equal to 等于ne:原创 2021-12-12 17:41:13 · 4549 阅读 · 1 评论 -
ABAP 语法新特性
表达式vs关键字ABAP是一门包含有大量关键字的语言。SAP似乎意识到了关键字过多带来的不便,在尝试着在近期的更新中引入更多表达式的写法。表达式的写法比关键字更加简洁、可读,推荐尽量使用表达式代替关键字,比如: "实例化对象 DATA(e_receiver) = NEW event_receiver( ). "推荐的写法 DATA e_receiver TYPE REF TO event_receiver. "不推荐的写法 CREATE OBJECT e_receiver. *调用.原创 2021-11-23 14:27:16 · 529 阅读 · 0 评论 -
ABAP 导出SE11数据字典中表及结构
怎么导出SE11 中数据字典中的内容打印参数随意选择,然后点击打印预览打印预览界面切换成列表显示到下面这个界面就能导出这个界面了,其实可以录个屏,然后就方便很多。原创 2021-11-23 14:03:45 · 2776 阅读 · 0 评论 -
ABAP using与changing超详解 传值 技巧 使用习惯
PERFORM提示:运用PERFORM 子程序,常用的是USING CHANGING,用来传值,涉及到传值的变化,但还有些两个一起用,这里作出细致的解释文章目录PERFORM前言一、关于USING CHANGING的解释二、语法的具体使用1. PASS By Reference 通过参考2.PASS By Value 通过值三、使用技巧四,参数定义方法1.在FORM中定义表2.定义工作区总结前言USING CHANGING 对于FROM 子程序来说应该是很频繁使用的,但是通常会传递原创 2021-05-07 18:27:39 · 2380 阅读 · 0 评论 -
ABAP SE16N修改数据的几种方式
1. 打开SE16N,在输入事务码处,输入/H,然后输入好查询条件,点击执行,在变量处写入这个两个参数然后设置为X。I_EDIT输入XI_SAPEDIT输入X2. 以上同理,在事务码处输入&SAP_EDIT& 回车就可以了3.运行SE16N的函数SE16N_INTERFACE ,也是设置下面两个参数。I_EDIT输入XI_SAPEDIT输入X...原创 2021-07-09 09:54:59 · 1296 阅读 · 0 评论 -
ABAP GIT 使用教程
ABAPGIT文章目录ABAPGIT前言一、安装GIT二、使用教程1.离线模式2.在线模式总结前言SAP 中的二次开发语言ABAP虽然是一个比较小众的开发语言,但是也有很多大拿潜心研究,为了方便我们能学习到大拿的结果,在这介绍一个比较好用的开源项目ABAPGIT,ABAPGIT 拥有在线模式和离线模式两种,精华肯定就是在线模式了,离线模式对于程序的倒进导出也是很完善了,GITHUB上关于ABAP 开源的代码都可以通过离线导入。一、安装GIT安装ABAPGIT其实很简单,可以直接在GITHUB搜原创 2021-11-21 19:46:09 · 2201 阅读 · 0 评论 -
ABAP 分次数取数(分包) PACKAGE SIZE
当碰到大数据处理时,某一次取数会导致内存不够,或者是超出了内表最大的限制。就需要用到分包取数 PACKAGE SIZE n . N为多少次而不是空间(可以自己试验一下,跟循环DO 循环一样 制定次数)。使用分包取时,要用,SELECT ENDSELECT 打开循环,依次从DB数据库获取数据。这里面涉及到一个SQL 的INTO 或者APPEND ,之前也说过,INTO 有隐式操作会覆盖上一次数据,那为什么又要用INTO TABLE 呢?SAP中,一个C类型的字符占用两个字节(2Byte)。内存设原创 2021-08-15 15:32:07 · 2758 阅读 · 0 评论 -
SAP ABAP 通过NACE配置实现VA03前台打印
关于NACE 配置内容,最近做了几个打印都涉及到了,利用了SAP标准的功能去实现打印功能。之前的项目关于标准事务码的打印都是通过增强实现的,第一次做这种系统配置不是太熟练东问西问,但好歹实现了效果。把整个过程记录一下。配置第一步: NACE事务码配置还是需要强大的业务知识做支撑的,这里就只是贴出配置过程,业务知识还是询问一下其他人把。这次新增的是为VA03增加一个打印模板,看看前台是在哪打印的最终配置好就是这个实现的效果,然后就能进行打印ZA07就是新增的。那接下就是具体的配置过程。1.打原创 2021-11-17 14:05:22 · 2259 阅读 · 0 评论 -
ABAP 功能码用处
在屏幕开发的过程中,经常会有一些操作是需要回车,或者操作的了才会刷新一遍代码。那PBO 或 PAI 中总要有触发条件,而有些用户的需求就很与时俱进,要求选了某些值,或点击了哪哪就可以实现某些功能。这时候就要用到功能码这个属性了。很典型的一个场景,下拉框的选值,我想选到了特定的值给我弹出一个消息或者警告。那这个时候就跟界面输入值一样,是不会去触发任何代码的,除非你回车或者双击。那加了功能码之后,不要去处理这个功能码就行。把代码写在PBO中就能达到选特定值执行某些效果。这种还能做一些联动,挺实用的一个技巧。原创 2021-10-05 11:38:28 · 689 阅读 · 0 评论 -
ABAP TRANSPORTING NO FIELDS 用法
不用读取数据到工作区,只是遍历一遍内表数据。 加上WHERE 优化一些性能。 LOOP AT lt_bapi_return TRANSPORTING NO FIELDS WHERE type CA 'EA'. EXIT. ENDLOOP.原创 2021-10-05 11:32:47 · 2298 阅读 · 0 评论 -
ABAP 域值报错
在ABAP字典中建域的时候,有时候会加上预定义的预值。如果在屏幕中的字段使用了该域值,那么只能输入预定义的值,其他值就会提示 : 输入的值错误 E 类型的报错。 典型的就是,把有域值的字段做成复选单选框(其实定义域值绝大多数是做下拉框),SAP默认该类型字段的值为X,那该字段的域值定义中没有X ,就会报错。还有其他很多情况。...原创 2021-10-05 11:22:23 · 516 阅读 · 0 评论 -
ABAP FIELD-SYMBOLS
FIELD-SYMBOLS , 永远指向表中最后一个空行。 知道这个特性可以设计一些算法的东西。原创 2021-10-04 13:28:01 · 390 阅读 · 0 评论 -
ABAP 创建记录更改表的程序
关于一些要记录表的更改记录,做成记录可供展示。RSSCD000 创建更改记录程序RSSCD100 查询表更改记录原创 2021-10-03 17:40:03 · 464 阅读 · 0 评论 -
ABAP 指针传值ASSING
这个属于一个很实用的开发技巧了,避免了实用ABAP 内存和SAP 内存的方法实现跨程序传值。那我们首先要明白一些关于SAP进程的知识链接,关于使用的方法不难。 FIELD-SYMBOLS: <lfs_csin> TYPE csin, <lfs_bom> TYPE any. ASSIGN ('(SAPLCI04)CSIN') TO <lfs_csin>.他的原理也是在于进程管理机制,当堆栈的程序会保存全体变量。用ASSING指向想要的程序内存地原创 2021-10-03 17:28:46 · 1565 阅读 · 0 评论 -
ABAP BDC
BDC中有多行数据需要换行,用LOOP解决,按住CTRL 鼠标左键,并F1可以查看功能码注意点: 步骤一定要对,有些操作光标选择还是要的,比如工序的选择。BDC_FIELD 填充的字段和值BDC_CURSOR 鼠标光标所在字段BDC_DYNPRON 调用屏幕BDC_OKCODE =BU 保存 /00 回车BDC_SUBSCR 打开子屏幕 在录制时,如果您对此子屏幕参数进行了任何更改,则必须在BDC程序中提供此信息。OKCODE Description/nn Fun原创 2021-08-15 15:08:31 · 970 阅读 · 0 评论 -
ABAP 互相调用传值 (SUBMIT,MEMORY,获取ALV报表数据,获取内表数据,)
文章目录前言一、MEMORY ID二、类方法的调用总结前言 对于程序直接互相传值,大家常用的SUBMIT 也是一种调用程序传值的方法,也是配合传值工作的一个很重要的语法,对于一些标准程序就要用到BDC了。那为什么要用BDC 跟SUBMIT 呢,因为要让你获取的那个程序跑起来,执行到传出值的那一段代码才行,SUBMIT 和BDC 就不进行介绍了,着重介绍一下一、MEMORY ID1、External Session 和Internal Session区别:External Sessi原创 2021-04-22 17:58:45 · 4579 阅读 · 0 评论 -
ABAP邮件发送 SAP
最近写了一个发邮件的程序,在此记录一下。邮件主题:合规审批到期提醒收件人:取1中配置表邮件正文:您好!如下客户的合规审批即将到期,请您及时更新审批申请并上传系统。客户代码 客户名称 生效日期 到期日期KNA1-KUNNR KNA1-NAME1 KNA1-有效起始日期 KNA1-有效截止日期先把正文部分定义好这里的邮件模板是在ZMAIL里面定义的如下图定义:这里只定义一个模板配置配置代码如下:<html xmlns="http://www.w3.org/1999/x原创 2021-01-13 10:27:39 · 664 阅读 · 0 评论