拓冰建站拓冰建站
首页 / 资讯中心 / 正文

094、BDC程序设计(BDC_INSERT)

094、BDC程序设计(BDC_INSERT)刚被一个没关干净的事务日志折腾了半天,正好想起BDC_INSERT这段时间被问得最多的问题。干脆把之前调的一个故障拿出来做引子:上个月给客户做物料主数据批量导入,BAPI总是绕不过物料类型的一个隐含必填项,索性改用BDC。录屏程序在其他环境跑得好好的,到了生产测试环境,SM35里能看到会话,点进去屏幕上的字段值却错位了——物料号填到了旧物料号那里,有的屏幕直接报“Field not valid on the screen”。当时第一反应是BDC_TAB录错了,重新录了一遍,问题依旧。最后把整个程序里的BDC_INSERT调用日志打开,发现一个奇怪现象:调用前内表里的数据顺序和录屏时完全相反。另外,第二个屏幕的程序名写的是标准程序名,但实际调用的会话组里,事务代码对应的变式屏幕程序是另一个。就这么两个低级错误,折腾到深夜。所以今天专门聊聊BDC_INSERT。说到BDC,很多刚学ABAP的同学以为它是一句SQL。其实BDC全称Batch Data Communication,就是把你手动怼屏幕的那些操作——填字段、回车、翻页——录下来,按顺序保存到一个内表里,然后SAP像放录像一样重新执行一遍。BDC_INSERT就是那个“往录像带里录制每一帧”的函数。它不负责执行事务,它只负责把你准备好的屏幕输入序列挂到一个批输入会话组上。等到整个组都插完了,你再去事务代码SM35里处理这个会话组。也就是说,用BDC_INSERT至少要写三步:BDC_OPEN_GROUP打开一个会话组,BDC_INSERT往组里插入一条事务记录,BDC_CLOSE_GROUP关闭组。中间那步才是主角。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门