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

调用BAPI_REQUISITION_DELETE删除采购申请时报错的问题求助

排查BAPI_REQUISITION_DELETE报错“No purchase requisitions satisfying these selection criteria exist”的方案

针对你调用BAPI删除采购申请时遇到的报错,结合代码给出以下排查方向:

1. 采购申请/行项目的格式匹配问题

系统中采购申请编号(EBAN-BANFN)是10位字符型,行项目(EBAN-BNFPO)是5位字符型,如果内表gt_final中存储的是不带前导零的数字类型,直接赋值给BAPI参数会导致系统无法匹配到对应单据:

  • 修复方式:给ls_item_to_delete赋值时,使用转换出口函数补全前导零:
    " 处理采购申请编号
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = <lfs_final>-banfn
      IMPORTING
        output = ls_item_to_delete-preq_no.
    
    " 处理行项目编号
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = <lfs_final>-bnfpo
      IMPORTING
        output = ls_item_to_delete-preq_item.
    

2. 行项目的有效性校验逻辑问题

代码中对PR状态的判断( <lfs_final>-statu <> 'N' AND <lfs_final>-statu <> space )可能存在遗漏:

  • 检查gt_final中的statu字段是否和系统表EBAN的STATU完全一致,部分已释放(状态'R')但无后续单据的PR仍可删除;
  • 确认loekz字段是否正确映射了EBAN-LOEKZ(删除标识),避免误过滤可删除的行项目。

3. BAPI参数传递的准确性

  • 检查lt_items_per_pr的结构是否与BAPI的REQUISITION_ITEMS_TO_DELETE表结构完全匹配,确保preq_no、preq_item、delete_ind字段的类型和长度正确;
  • 调用BAPI时,number参数传入的lv_banfn同样需要确保是10位带前导零的字符格式,避免因格式不匹配导致BAPI找不到单据。

4. 权限与单据状态限制

  • 用事务码SU53检查当前用户是否拥有M_BANF_DEL权限对象的授权(采购申请删除权限);
  • 确认目标PR未生成后续采购订单(EBAN-BSTYP为空),未被完全收货/发票校验,且符合系统配置的删除规则。

5. 扩展返回信息排查

修改代码中对BAPI返回表lt_return_delete的处理逻辑,输出所有返回信息(不仅是错误类型'E'),可以获取更详细的报错原因:

LOOP AT lt_return_delete INTO ls_return_delete.
  CASE ls_return_delete-type.
    WHEN 'E' OR 'W' OR 'I'.
      MESSAGE ls_return_delete-message TYPE ls_return_delete-type.
  ENDCASE.
ENDLOOP.

内容的提问来源于stack exchange,提问作者darth-coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 12:13:10