最近呀,写一个使用BDC批量导入数据到MIRO的程序,遇到一个很有意思的问题,愣是折腾了半天才找到原因,具体是啥问题呢,且听我细细道来。
Debug的时候发现,执行完CALLTRANSACTION 'MIRO'后,没有任何错误消息和成功的消息,MESSTAB里啥都没有。同样的数据在前台做一次就能有结果。(问题在系统已经修复,所以这里就不截图了)
后来追踪到的结果是,有同事正好在使用到的1120的BTE增强点里写了COMMIT WORK语句。(※ 增强里禁用COMMIT WORK或者ROLLBACK操作)
当然,修改增强代码,去掉COMMIT WORK是正解。但是万一以后还发生这种增强里出现COMMIT WORK的情况呢,那到时候过增强点的BDC程序是不是就会出现问题?所以,我们还得来个双保险。
CLEAR: gs_options.
gs_options-dismode = 'N'. " 后台模式
gs_options-updmode = 'S'. "同步更新
gs_options-cattmode = ''.
gs_options-defsize = ''.
gs_options-racommit = 'X'. " 忽略增强提交动作
gs_options-nobinpt = ''.
gs_options-nobiend = ''.
…………
" 调用miro
CALL TRANSACTION 'MIRO' USING bdcdata
OPTIONS FROM gs_options
MESSAGES INTO messtab.
就是使用BDC时OPTIONS的参数RACOMMIT给打上标记就可以了,这样即使有COMMIT WORK,它也不会中断流程,详见F1说明:
往期推荐
ERP:自开发程序涉及权限问题处理-Tcode权限和数据管理
SAP:解决SMARTFORM中因‘-’导致字符串折行的问题
小手点一点关注,顾问路上不迷路!
扫描二维码
获取更多精彩
菜鸟家园