SAP ABAP
如果脏活属于BASIS,那么累活就是ABAP了
刘欣的博客
深耕SAP技术领域20年,一直为企业的ERP-SAP系统保驾护航。
熟悉制造企业PLM、DMS、MES、LES、SRM等各业务域系统及业务。
展开
-
ABAP 开发场景与语法备忘(刘欣)
ABAP 语法备忘 刘欣原创 2022-10-31 13:05:48 · 538 阅读 · 0 评论 -
ABAP 透明表操作备忘 刘欣
关于ABAP openSQL操作备忘,博主会把平时使用的例句,都统统记录到这个文档里。"-------查询透明表(按条件抓一行)--------SELECTSINGLEBWKEYFROMT001WWHEREWERKSEQ@GS_LOG-WERKSINTO@DATA(LV_BWKEY)."-------修改日志表(按工作区修改一行)----------gs_log-AENAM=SY-UNAME.gs_log-AEDAT=SY-D............原创 2021-11-05 13:42:15 · 1103 阅读 · 0 评论 -
ABAP 内表操作备忘 刘欣
内表的定义《SAP ABAP 面向对象程序设计》"1. 定义结构体类型,包含了三个字段,这就是表的每一行的基本类型TYPES: BEGIN OF ty_flight, airline_id TYPE i, airline_name(20) TYPE c, flight_number TYPE i, END OF ty_flight."2. 依照结构体类型,定义标准表类型,并定义不唯一的默认主键 airline_id,即主键值相原创 2021-09-08 11:34:21 · 755 阅读 · 0 评论 -
ABAP 为N的一个数,在原来基础上浮动在-30~30
需求:为N的一个数,在原来基础上浮动在-30~30。原创 2023-07-25 11:19:31 · 141 阅读 · 0 评论 -
SAP ABAP结构复用的两种数据结构
二、定义结构中字段都放平层,原创 2023-07-03 15:51:45 · 379 阅读 · 0 评论 -
SAP ABAP BAPI_ACC_DOCUMENT_POST 创建财务凭证
何喜告诉我,gl那个是总账的,但是21记账码有供应商,不能放总账参数中。这点很关键,我一开始搞不懂,把21的行项目放到总账的参数中了。然后我在系统中找到一个批量调用这个BAPI的程序,发现我们已经有对记账码的增强了,只需要把记账码放到对应参数中就可以了。严顾问也说,借贷的金额应该是对应的,抵消为0。OK,虽然从来没有玩过这个BAPI,几个小时后,仍然可以驾驭它了,让它乖乖产生财务凭证。BAPI_ACC_DOCUMENT_POST,创建财务凭证。需求是这样,要按指定过账码和科目产生供应商索赔的财务凭证。原创 2023-06-26 17:30:26 · 1676 阅读 · 0 评论 -
SAP 字符串关键字找程序
李燕问我,她有一个程序忘记了,是自开发的程序,她只记得里面有一个关键字“ZSD_0028_KUNNR”,OK。我们可以在SE38中用一个查找搜索程序来查找对应的程序,这个查询程序的名称是:RPR_ABAP_SOURCE_SCAN或RS_ABAP_SOURCE_SCAN。再双击点进去,就可以看得整个程序了。原创 2023-04-21 10:21:14 · 1001 阅读 · 0 评论 -
两段不同的ABAP代码实现相同的业务逻辑
我自己以为,代码并不是越少越好,比如下面两段代码,对三个车间处理保留对应的物料,实现得逻辑完全一致,代码比较多的一段,把程序流程限制得很死,出错的概率相对会小,更容易以后维护。原创 2023-03-09 13:39:45 · 226 阅读 · 0 评论 -
SAP ABAP 把大表的数据移动到历史表中
【代码】SAP ABAP 对大表按月统计条数。原创 2023-02-07 09:40:31 · 421 阅读 · 0 评论 -
ABAP CLEAR REFRESH FREE 说明(刘欣)
本文仔细测试总结了ABAP中的clear、refresh、free,因为很多时候程序的BUG就是出现在变量没有清理干净,希望整理一个定式出来以后少出BUG。看起来,最好的避免这些清空命令出现BUG的方案就是放弃带表头的表的使用,包括今天中午出现的BUG也是这个原因,为什么我的程序中会出现表头表呢,原来程序中照搬了一段信息记录的BDC程序,原程序使用了带表头的表啊!--------带表头的表------------clear TABLE[] 命令清理。clear TABLE 命令清理。,表头未清,表清空。原创 2022-12-01 17:34:32 · 911 阅读 · 0 评论 -
ABAP BDC的返回参数处理
CONVERT_BDCMSGCOLL_TO_BAPIRET2,这个BAPI不错,可以把BDC的多行返回参数返回为一行,还是最后的文本在MESSAGE中。原创 2022-11-27 01:32:20 · 1115 阅读 · 0 评论 -
SAP ABAP SE37中填入函数参数自动大写问题
今天调试一个函数,花了一下午时间,原来是函数参数字符自动被设置为大写了啊!! 就是这样,因为APO的订单ID是22位无意义的字符,里面很多小写,结果填入后函数把字符改成了大写,导致传入数据找不到系统内的订单ID。...原创 2022-06-16 16:49:48 · 771 阅读 · 2 评论 -
SAP ABAP 内表分类汇总
1个内表里有3个字段,字段1、2是主键,汇总放到字段3:REPORT ztest01.TYPES: BEGIN OF struct, key1 TYPE string, key2 TYPE string, col TYPE i, END OF struct, itab TYPE STANDARD TABLE OF struct WITH EMPTY KEY.DATA(itab) = VALUE itab(原创 2022-05-26 13:27:31 · 1302 阅读 · 0 评论 -
SAP ABAP 多表查询ON后面的AND和WHERE区别
两种写法语法都没有错,都可以执行,但是有区别吗?何喜的回答:原创 2022-05-26 10:13:41 · 349 阅读 · 0 评论 -
SAP ABAP 传递内表数据到后台程序
一鸣要改一个程序,导入excel文件,放后台去执行,我给他改了一个,用了SAP的内存共享放松传递2张内表。A程序,把内表数据放内存中,启动一个后台作业: EXPORT GT_ALV TO SHARED BUFFER indx(aa) ID 'GT_ALV1'. EXPORT gt_vlc TO SHARED BUFFER indx(bb) ID 'gt_vlc1'. "启动一个后台作业 DATA : lv_jobn原创 2022-05-06 17:26:48 · 1609 阅读 · 2 评论 -
SAP ABAP层与数据库的字段对比
SAP业务后台可配置特性,让SAP系统可以适应绝大部分的业务场景。SAP使用自己的ABAP层,为系统的扩展提供了完整的一套开发平台。而SAP在底层数据库表设计中并没有使用复杂的表约束来设计。(环境:SAP ECC6 SQLserver2008)比如:EKPO(采购订单行项目)和EINA(采购信息记录)表。在采购模型中,采购订单的行项目包含了信...原创 2016-06-28 23:08:17 · 2917 阅读 · 0 评论 -
SAP ABAP、C#、SQLserver 的变量对照表
Power by james_lx 2018.12ABAP C# SQLserver NUMC nvarchar(4) CHAR string nvarchar(18) QUAN 13,3 Decimal numeric(13, 3) DATS DateTime date UNIT ...原创 2018-12-10 14:34:55 · 745 阅读 · 0 评论 -
SAP ABAP 两个SESSION间数据传递
SAP ABAP 两个SESSION间数据传递.这个ROOT类要勾选这个原创 2022-03-29 11:12:44 · 687 阅读 · 1 评论 -
SAP ABAP APP log 自开发程序中大量使用应用日志是很糟糕的设计
在我们的自开发程序中,大量使用了应用日志,我感觉是很糟糕的设计。1、这个应用日志,没有关键字按结构化查询。2、大量使用使代码可读性降低。3、代替了本应该有的日志功能,出现异常增加排错难度。就是这种东西,完全没办法查询....原创 2022-03-24 17:33:25 · 557 阅读 · 0 评论 -
SAP ABAP 程序延迟启动一个后台作业
接到一个需求,程序去启动一个后台作业,但是这个后台作业要在30分钟后执行。ABAP的时间戳100个单位是一秒,有区别与其它语言。DEMO代码如下:*&---------------------------------------------------------------------**&ReportZJAMES021*&-------------------------------------------------------------------...原创 2022-03-15 15:01:36 · 932 阅读 · 0 评论 -
SAP ABAP 跨系统拷贝表数据
放这里免得忘记了:一、在源系统放一个RFC函数ZPP_TABLE_GET来取数FUNCTIONZPP_TABLE_GET.*"----------------------------------------------------------------------*"*"本地接口:*"IMPORTING*"VALUE(DATE)TYPESY-DATUM*"VALUE(ZZ_PLATFORM)TYPEZZ_PLATFORM*"TABLES*"...原创 2022-02-11 15:20:49 · 1071 阅读 · 0 评论 -
SAP ABAP RFC接口分批次发数据和进度条显示
程序环境:RFC server 接口模式今天接到一个需求,是物料主数据接口一次发送数据过多的场景就会比较慢,需要在接口上分批次发出。参考了原来原厂顾问的代码,发现比较精炼,虽然感觉有点怪怪的,还是按这个逻辑改完。自己再加了一个进度条,提示用户体验:全部代码如下:FORMfrm_send_data.DATA:lv_linesTYPEchar10,lv_rfcdestTYPErfcdest,ls_dataTYPEzspd001...原创 2021-12-24 14:08:53 · 1648 阅读 · 0 评论 -
ABAP 内表修改 MODIFY 和 MODIFY table 的区别
MODIFYtablegt_intableFROMgs_intable.MODIFYgt_intableFROMgs_intable.对于内表修改命令,MODIFY 与 MODIFYtable的区别:MODIFYtable1、是出现在LOOP外对内表的修改;2、有一个前提是该内表的定义一定要有主键,如果没有,该语句不能成功。3、排序表和散列表的主表键是只读的,不能修改。4、sy-tabix系统变量无关。5、利用工作区只能修改一行数据。MODIFYta...原创 2021-12-17 09:58:30 · 10383 阅读 · 0 评论 -
SAP 找出Z自建表中没有MANDT字段的表
一、在DD02L表中,找到全部的Z表。二、在DD03L表中,输入全部的表名,查找MANDT字段:三、全部表359个,有MANDT的347个,有12个没有MANDT字段。再继续看看这12个表,果然,有表是没有MANDT字段的:...原创 2021-11-30 17:17:24 · 589 阅读 · 0 评论 -
SAP ABAP 查询接口参数数据结构的报表
查询接口RFC函数中使用的字段报表,发现透明表也可以查询:*&---------------------------------------------------------------------**&ReportZJAMES009*&---------------------------------------------------------------------**&*&----------------------------...原创 2021-11-30 16:01:06 · 3937 阅读 · 0 评论 -
ABAP报表程序结构框架
按金圣俊书中12章所写,ABAP报表程序结构如下,当选择屏幕出现时,系统会自动创建1000的屏幕,所以报表程序会很简单,选择屏幕完成后,再出现ALV控件,这样就接上了,不用去写屏幕相关的代码。*&---------------------------------------------------------------------**&ReportZJAMES0017*&----------------------------------------------------..原创 2021-11-29 10:45:53 · 772 阅读 · 0 评论 -
ABAP LOOP中删除不正确问题
LOOP中用如下语法时要当心:DELETEgt_flightINDEXSY-TABIX.如果LOOP中包含RFC,SY-TABIX会被重置为1,导致该删的没有删掉,不该删除的行被删掉了。问题再现程序如下:REPORTZJAMES016.TYPES:BEGINOFty_flight,namea(20)TYPEc,ENDOFty_flight."定义内表DATAgt_flightTYPETABLEOFty_fl...原创 2021-11-09 16:22:12 · 877 阅读 · 0 评论 -
SAPGUI黑色背景设置
SAPGUI黑色背景设置原创 2021-11-08 11:10:15 · 1259 阅读 · 0 评论 -
SAP ABAP 检查物料账期函数
"James_lx2021.11.04添加过滤掉不在账期中的数据开始loopatgt_logintodata(gs_log).SELECTSINGLEBWKEYFROMT001WWHEREWERKSEQ@GS_LOG-WERKSINTO@DATA(LV_BWKEY)."通过工厂抓公司CALLFUNCTION'MM_PERIOD_CHECK'"检查物料账期函数EXPORTINGi_bukrs...原创 2021-11-05 13:29:21 · 1249 阅读 · 0 评论 -
多条数据分类汇总后调用BAPI
之前都是用 AT END OF,感觉不好用,今天整理了一个方法:全部代码:*&---------------------------------------------------------------------**& Report ZJAMES008*&---------------------------------------------------------------------**&*&-----------------原创 2021-10-26 09:51:40 · 275 阅读 · 0 评论 -
ABAP smartforms 打印多页打印在同一页上解决
1、SPAD,选出输出设备:2、双击CNSAPWIN设备类型:3、选出该类型的格式:4、双击有问题的格式:5、可以看到,格式不完整,尾页和行结束功能没有点亮:6、点拷贝,把其他正常的格式拷贝覆盖到当前格式,完成:...原创 2021-10-19 10:51:13 · 1362 阅读 · 0 评论 -
关于ABAP中锁参数SCOPE的使用bug一粒
这2天我们处理了一个关于程序锁的bug,本来还不想写blog,因为并没有完全清楚V1,V2和锁的机制,不过兴伟提了一下,那还是记录一个吧。场景:LES系统每天会把现场投入5个车间的生产物料情况,传给SAP系统。SAP系统收到这些投料数据后,会有程序批量的把它们投料到生产工单上,完成物料在SAP系统中的消耗。最初在1000工厂,我们开展的整车业务,随后,在1010工厂,我们开展了自制件业务。把整车业务的投料程序拷贝了一份,并对订单类型做了限制,就成了自制件业务的投料程序。因为这个程序会有几原创 2021-10-14 13:58:05 · 1889 阅读 · 0 评论 -
SAP ABAP APP log 消息开发说明
一、标准DEMO,SBAL_DEMO_06中可以看到APP LOG的使用说明:1、BAL_LOG_CREATE函数 创建log头把log对象给该函数,它创建log head,返回一个UUID作为这个新log的句柄:2、BAL_DB_SAVE函数 把log保存到数据库,保存数据库后,返回log的id(20位)该函数输入是多行log句柄,输出多行log句柄及log id,应该可以一次处理多个log。3、BAL_LOG_MSG_ADD函数,把消息内...原创 2021-10-13 14:33:51 · 902 阅读 · 0 评论 -
SAP ABAP 字符串替换
去掉一个指定的*字符,结果:代码:Data lv_s type MATNR.lv_s = '111*$22'.REPLACE ALL OCCURRENCES OF '*' IN lv_s WITH space.BREAK-POINT.原创 2021-10-12 09:23:50 · 4441 阅读 · 0 评论 -
SAP ABAP 新语法
何喜在国庆节分享的SQL新语法自动加0:SQL新语法自动减0:REPORT ZJAMES_20211008.*SELECT MATNR , LPAD( SERNR , 18 , '0' ) AS A** FROM OBJK** INTO TABLE @DATA(LT_OBJK). SELECT MATNR , LTRIM( SERNR , '0' ) AS SERNR FROM OBJK INTO TABLE @DATA(LT_OBJK...原创 2021-10-08 09:10:05 · 1591 阅读 · 0 评论 -
SAP ABAP SQL修改透明表 大于日期范围
年份2020,日期在2020.9.1~29的数据,年份改为2021,凭证日期、过账日期改为2021年9月29。*&---------------------------------------------------------------------**& Report ZTPP0029_SQL*&---------------------------------------------------------------------**& 年份2020,日原创 2021-09-29 15:08:42 · 613 阅读 · 0 评论 -
SAP ABAP 控制选择屏幕的控件显示
第一次执行,两组控件都显示了:点击 p_hide1, 界面马上隐藏了第一组控件:点击 p_hide2, 界面又隐藏了第二组控件:*&---------------------------------------------------------------------**& Report ZJAMES001*&-------------------------------------------------------------------...原创 2021-09-27 09:52:25 · 1132 阅读 · 0 评论 -
花了一下午,找一个自己写的BUG
在一个大循环中,有好多小循环填充每一处字段,结果在填充数量时,手误把上面的变量拿来做了判断,一时半会儿看不出来,发现不了。导致莫名其妙的填充了数量的数据,最后在测试环境,用少量的测试数据一步一步调试,终于找到了这个BUG。...原创 2021-09-23 16:03:48 · 219 阅读 · 0 评论 -
SAP ABAP 找增强
有增强在MSEG中,把SGTXT字段填了值,通过SAP提供了一个标准程序SNIF,找到了增强代码。百度到如下说明:注:SAP提供了一个标准程序SNIF,通过这个程序可以直接查找出系统已经实施的BAdi、BTE、客户出口、字段出口甚至是调用的BAPI。具体操作方法:打开【系统】|【状态】菜单,双击进入程序,点击【对象列表】按钮,然后通过点击【上级对象列表】按钮,找到程序所在的包。SE38运行程序SNIF,输入包名,如果勾上【也选择SAP实施业务加载项】就会把SAP标准的增强实现也显..原创 2021-09-15 11:48:02 · 568 阅读 · 0 评论 -
数据表为什么叫透明表呢?
Jamesypeng2009 :透明表,在 ABAP 字典里指那些结构定义与在数据库中的结构完全相同的表,也就是说,对于 ABAP 中的透明表,必定在后台数据库中存在一个同名的数据库表,并且这两个表中的字段数量和名字也完全相同。由于这个特性,所有对 ABAP 字典中的透明表的数据操作都相当于直接对数据库表进行操作,这就是u201C透明u201D的含义。不过需要注意的是,从 R/3 4.0 版以后,ABAP 字典中透明表的字段顺序可能与数据库的字段顺序不一致,但是这个不一致并不会影响用户使用 ..原创 2021-09-10 13:28:40 · 410 阅读 · 0 评论