You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FF_5导入MT940银行对账单时一次性客户子账过账失败问题

问题根因

Batch Input for screen SAPLFCPD 0100 does not exist(消息号00 344)报错的核心原因是:FF_5勾选即时过账时,POSTING_INTERFACE_DOCUMENT函数默认生成的批输入数据流,不会自动携带一次性客户(CPD)行项目的附加屏幕字段值。SAP标准逻辑下,过账到标记了一次性标识的客户科目时,会自动触发SAPLFCPD 0100屏幕要求录入地址类核心字段BSEC-NAME1,后台执行模式下无前台交互填值入口,直接触发报错。

此前在ES_BDC_FEBAN增强中手动生成SM35会话的方案失败,是因为该增强点的触发时机与POSTING_INTERFACE_DOCUMENT的BDC流生成逻辑上下文不匹配,手动追加的BDC条目没有绑定到标准过账的BDC执行流中,缺少屏幕跳转所需的前置OKCODE触发,导致会话条目执行时屏幕不匹配。

正确实现方案

无需单独生成独立SM35会话,直接通过标准ftpost内表传参即可实现字段自动带入,步骤如下:

  • 提前解析MT940报文:86字段的~32分段,取出一次性客户名称值,按BSEC-NAME1的35位字段长度做截断处理,避免超长触发字段校验错误。
  • 选择正确的增强点注入传值逻辑:优先使用FEB_BADI_001(FF_5/FEBA银行对账单过账标准BAdI)的CHANGE_BEFORE_POST方法,该方法触发时ftpost内表尚未传入POSTING_INTERFACE_DOCUMENT,且入参自带MT940解析后的结构化数据,可直接读取:86字段的分段值,无需自行解析报文。
  • 识别ftpost内表中对应一次性客户的行项目(判断规则:该行项目对应的客户科目在配置中标记了XCPDS=‘X’的一次性客户标识),按标准结构追加BSEC-NAME1的传值条目,注意不要直接修改bdcdata内表,POSTING_INTERFACE_DOCUMENT会自动将合法的ftpost条目转换为BDC流,手动修改bdcdata会被标准逻辑覆盖。
    追加条目的参考代码如下:
    CLEAR ls_ftpost.
    " stype赋值为'W'代表传入非BKPF/BSEG结构的附加屏幕字段
    ls_ftpost-stype = 'W'.
    " counr必须赋值为当前一次性客户行项目在ftpost内表中的行计数,值错会导致字段传到错误行
    ls_ftpost-counr = lv_cpd_line_index.
    ls_ftpost-fnam  = 'BSEC-NAME1'.
    ls_ftpost-fval  = lv_customer_name. " 传入从~32分段取出的客户名称值
    APPEND ls_ftpost TO ftpost.
    
    " 若系统中一次性客户账户组的字段状态配置了其他必填字段(如国家、城市),按相同格式追加即可
    " 禁止传入字段状态组中设置为隐藏的字段,否则会触发BDC屏幕字段不存在错误
    
  • 若当前系统版本较低无FEB_BADI_001,可对POSTING_INTERFACE_DOCUMENT函数做隐式增强,在函数执行ftpost转bdcdata的逻辑前,按上述规则补入BSEC-NAME1的ftpost条目即可,无需自行调用BDC相关函数生成会话。
校验规则
  • 追加的ftpost条目中counr字段必须与对应一次性客户行的行序号完全匹配,否则值无法传递到目标屏幕,仍会触发缺值报错。
  • 传值前通过事务码OBD2检查一次性客户对应账户组的字段状态配置,仅对必填/可选显示字段传值,不要给隐藏字段赋值。
  • 正式测试前先关闭即时过账选项,先生成SM35会话,通过模拟执行功能查看BDC流,确认SAPLFCPD 0100屏幕下BSEC-NAME1已被自动填充后,再开启即时过账验证全流程。

内容的提问来源于stack exchange,提问作者TyRRRax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:06:25