SAP 小技巧 BDC 的特殊执行方式

作者:ABAP技巧与实战 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

BDC是SAP一种录屏并重复执行的方式,一般用于批量导入数据

基本情况可以参阅文章

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 BDC记录创建单据

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247488196&idx=1&sn=41499faec8a2f30a757bfea8d2890a2f&chksm=cf5dcff2f82a46e4d95217b2b369da20a19f1f1596034c2d4a6284cac0015339a91b74486bf5&token=1105767289&lang=zh_CN#rd)

**本文主要介绍BDC的一种特殊执行方式**

缘起

BDC虽然很简单,但是因为录制的屏幕严格依赖于环境,配置与主数据的差异都有可能影响BDC的执行过程,因此项目上应该尽量使用SAP提供的BAPI函数处理主数据和单据.

修改销售订单的BAPI函数

BAPI_SALESORDER_CHANGE

看似允许修改销售订单的售达方,但执行的时候总会报错 VPD 006

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

SAP的官方NOTES给出了说明: 从4.6B开始,售达方不允许通过BAPI修改. (原因没有说明)

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

VA02前台执行可以修改售达方, 因此BDC就成了修改销售订单售达方的唯一方式

问题

但是当使用BDC产生的函数修改销售订单时. 却总不成功, 处理方式改成前台执行时(DISMODE='A)发现,在销售订单修改售达方的过程中,

有个计划行确认的屏幕, 该屏幕在录制的时候并没有出现.

反复核对了销售订单修改售达方的记录过程. 发现了一个奇怪现象

记录时系统提供了一个选项

模拟后台处理(不同于其它选项, 该选项字段没有F1帮助) (如图一)

屏幕中的每个选项都对应于 CALL TRANSACTION 语法中的 OPTIONS FROM (如图二),

界面上的字段帮助可以找到对应的参数,(如图三)

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

图一

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

图二

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

图三

模拟后台执行 在标准事务代码SHDB 中测试执行记录时,也可以勾选

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

图四

标准处理模式中的4个选项

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

图五

分析

修改销售订单售达方的录屏,生成的函数执行总是报错(缺了计划行屏幕的确认动作), 但是用SHDB测试执行却能通过,(勾选模拟后台执行).

因此尝试跟踪了一下SHDB勾选模拟后台执行对 CALL TRANSATION语句调用的影响.

发现了如下现象, SHDB 测试执行调用 CALL TRANSACTION 语句传递的DISMODE= ‘Q’. 这个值不在该参数的允许范围(如图五).

因此判断,这是一个BDC调用的隐藏参数

SAP 小技巧 BDC 的特殊执行方式 - 封面图
SAP 小技巧 BDC 的特殊执行方式 - 封面图

解决

销售订单修改售达方的录屏生成的函数

Z_SO_CHANGE_KUNNR

,调用时设置DISMODE = ‘Q’ ,完美解决了报错问题.

总结

SAP的屏幕处理逻辑中可能会检查某些特定的系统变量,比如SY-BINCT 等. 这些参数会影响屏幕执行逻辑,导致前台执行和后台执行时不一致.

一般情况把记录生成函数,调用该函数时, 会选择后台执行(DISMODE = ‘N’ ),只有分析错误时,会使用 ‘A’或’E’模式执行.

如果记录的时候,勾选了模拟后台执行复选框. 则务必把执行模式调整成 ‘Q’ . 这样执行过程与记录过程更趋于一致,会减少执行报错的情况.

不清楚SAP的DISMODE 的选项中为何没有列出该执行方式, 估计是代码与文档的同步问题吧.

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP小技巧BDC的特殊执行方式.md」整理生成,仅用于内部技术分享与学习交流。