FD32 客户信贷管理 BAPI: CREDITLIMIT_CHANGE 调用报错后问题处理

文章描述了一位开发者在使用SE37调用BAPI修改信贷额度时遇到的问题,由于未正确填写字段导致系统崩溃。在分析错误并修复数据表后,开发者采取更谨慎的方法,先备份原有数据,再进行修改。最终,他编写了一个程序,将超过一年未下单客户的信贷额度设为0,并分享了相关代码。

今天用户提了个需求写个自动程序来修改授信额度。因为之前没有用过,我先直接在SE37上运行这个BAPI来看看要填入哪些字段来进行修改。我贸贸然写了这三个字段的数字就点击运行了。

SE37上显示运行成功了,

 

但我在前台FD33查看修改效果时,傻眼了,系统直接崩溃了。什么也查询不了了!

 

 

 然后我后台查查询了一下数据表。KNKK表中除了 KUNNR、KKBER、KLIMK三个字段有值为其他所有字段都被清空了。我稍稍分析一下,那个信贷账号字段KNKLI应该是不能为空的。我后台把这个字段补回去后就FD32查看就没有报错了。

接下来在开发这个程序时,我就谨慎了,先把旧的 KNKK表行的数据复制到要修改的行,然后在修改要修改的字段。如下图所示:

<think>好的,我现在需要回答用户关于SAP中BADI MB_MIGO_BADI是否会在BAPI BAPI_GOODSMVT_CREATE中被调用,以及它们的调用关系和实现机制的问题。首先,我需要回顾一下SAP中BADI和BAPI的基本概念。 BADI(Business Add-In)是SAP的一种增强技术,允许用户在不修改标准代码的情况下扩展功能。MB_MIGO_BADI应该与MIGO事务相关,可能在货物移动时触发。而BAPI_GOODSMVT_CREATE是一个用于创建货物移动的BAPI,通常用于后台处理,比如通过外部系统调用。 用户的问题核心是:当使用BAPI_GOODSMVT_CREATE时,是否会触发MB_MIGO_BADI这个BADI。根据经验,BADI的触发通常依赖于特定的事务代码或应用模块。例如,在MIGO事务中执行操作时,相关的BADI会被调用。但BAPI可能不会触发同样的BADI,因为它们可能绕过了某些前端检查或增强点。 接下来需要验证这一点。查阅相关资料,特别是用户提供的引用,其中引用[3]提到使用BAPI_GOODSMVT_CREATE时,可以通过EXTENSIONIN参数传递扩展字段,这可能涉及到BADI增强。但具体到MB_MIGO_BADI是否被调用,可能需要更深入的分析。 考虑到SAP的机制,BADI的实现通常与特定应用程序关联。如果MB_MIGO_BADI是为MIGO事务设计的,可能在BAPI调用时不会自动触发,除非BAPI显式调用了相关增强。需要检查BAPI_GOODSMVT_CREATE的文档或源代码,看是否有调用MB_MIGO_BADI的逻辑。 另外,用户引用[3]提到通过EXTENSIONIN传递扩展字段,这可能涉及到不同的BADI,例如在BAPI层面定义的增强点,而不是MIGO事务中的BADI。因此,MB_MIGO_BADI可能不会被BAPI_GOODSMVT_CREATE直接调用。 总结:MB_MIGO_BADI主要用于MIGO事务的前端处理,而BAPI_GOODSMVT_CREATE作为后台接口,可能不会触发该BADI。但需要注意是否有隐式的调用或配置使两者关联。建议通过实际测试或查看SAP官方文档确认。</think>关于MB_MIGO_BADI增强在BAPI_GOODSMVT_CREATE中的调用关系,需从SAP增强机制和业务逻辑实现两个层面分析: ### 一、调用关系结论 **MB_MIGO_BADI不会在标准BAPI_GOODSMVT_CREATE调用过程中自动触发**。该BADI设计用于MIGO事务界面操作,与BAPI存在以下差异: 1. **执行路径差异** - MIGO事务通过$$TCODE$$驱动前端校验和界面交互,会触发$$MB_MIGO_BADI$$[^3] - BAPI_GOODSMVT_CREATE直接访问物料凭证创建函数模块$$MB_CREATE_GOODS_MOVEMENT$$,绕过了MIGO界面层 2. **增强机制差异** BAPI增强需通过: - 扩展结构$$EXTENSIONIN$$参数传递增强字段[^3] - 特定BAPI增强点(如$$BADI_GOODSMVT$$) - 隐式增强点插入 ### 二、实现机制验证方法 || MIGO事务 | BAPI调用 | |---------|----------|----------| | **BADI触发** | 自动触发MB_MIGO_BADI | 需显式配置增强 | | **表更新** | 通过MKPF/MSEG更新[^2] | 同MKPF/MSEG但跳过部分检查[^1] | | **增强方式** | 标准BADI实现 | 需使用BAPI专用增强点 | ### 三、解决方案建议 若需要在BAPI调用中实现类似MB_MIGO_BADI逻辑: 1. 创建新BADI实现$$MB_CREATE_GOODS_MOVEMENT$$的隐式增强 2. 使用$$USEREXIT_SAVE_DOCUMENT$$等标准出口 3. 通过$$CALL BADI$$语句在自定义增强中显式调用 ```abap METHOD if_ex_goodsmvt_create~save_document_prepare. " 在此处插入自定义逻辑 CALL BADI l_mb_migo_badi->item_check EXPORTING is_mseg = cs_mseg. ENDMETHOD. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值