097、批处理会话(Session)与SM35

📅 2026/8/27 2:35:35
097、批处理会话(Session)与SM35
097、批处理会话(Session)与SM35那是一个周四下午,生产机上的成本核算报表跑了一半就挂了,用户催得紧,我看了一眼SM35队列,里面躺着两千多个“错误”状态的会话,有些是前一天晚上批量导入物料主数据留下的。说实话,看到那个界面的时候,我脑子里只有一个念头:又是谁把BDC程序写得这么糙。后来我打开一个报错的会话,逐条看屏幕记录,发现第三屏的字段名写错了,程序在屏幕上敲了一个不存在的字段,然后系统就懵了,整个会话卡在那里。这个场景我见过太多次了。批处理会话,英文叫Batch Input Session,简称BDC Session,是SAP老一代数据批量操作的核心机制。它模拟用户在前台的事务操作,把一次业务处理拆成几步:启动事务、填字段、回车、保存。每一笔操作都被记录成“屏幕记录”,然后打包成一个会话扔到SM35里。系统在后台回放这些操作,就像有个隐形人在替你敲键盘。你得明白,它跟直接改数据库表完全是两回事,BDC不碰底层表,它走的是标准事务流程,所以业务校验、增强、用户权限这些都会被触发。这也是为什么很多老项目还在用它——安全,合规。但安全是有代价的,代价就是调试的时候很痛苦。写BDC程序,核心就三样东西:录屏、写代码、看会话。录屏最简单,用事务码SHDB,点“记录”,输入你要操作的事务代码,比如MM01、FB01、VD01之类的,然后在屏幕上把该填的填完,保存退出,系统会生成一段程序骨架,里面包含了你每一步操作的屏幕号和字段。这个骨架可以直接抄,但别指望它能直接跑通。现实是录屏环境跟你生产环境很可能有差异,屏幕顺序会因为配置、字段长度、增强而不同,所以骨架只是参考。我一般把它拷出来,然后手动把字段值替换成程序里的变量,再处理循环和文件读取的逻辑。这里有个巨坑:录屏