BP 客户增强保存时增加校验事件 DCHCK

作者:SAPTAB 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, SD, 开发, 销售分销

原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

**不念过** **去**

**START**

**不畏将来**

**** B ** ** UPT- ** ** B ** ** P客户 ** ** 界面保存时增加校验事件 ** **

**** **** (DCHCK) ** ** ** **

我们对于前面的增强做一个限制,需求如下:

1.BP界面合作商类型字段为10,20,30时,才能维护合作商,99或为空时不允许维护;否则报错”当前合作商类型不允许维护合作商LIST”

2.BP界面合作商类型有值且不为99或空时,可以维护合作商LIST,合作商类型需要和BP界面的合作商类型一致;否则报错”存在合作商LIST的合作商类型和BP界面的合作商类型不一致”

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

## 1.创建保存前检查校验的函数

这时我们需要使用到事件 (BUS7)-DCHCK;

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

在该事件中维护函数:

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

在函数组ZBP_FG_ENHENCEMENT中创建DCHCK函数(ZBP_BUPA_EVENT_DCHCK):

在 BP事件中,可以使用 BUS_MESSAGE_STORE 函数来把你所想要报错的消息存储起来,当保存时,会去检测,有 E类型错误时,不准保存。

FUNCTION zbp_bupa_event_dchck .

_ *"---------------------------------------------------------------------- _

_ *"*"本地接口: _

_ *"---------------------------------------------------------------------- _

_ *参考:BUP_BUPA_EVENT_DCHCK 创建 _

DATA lt_knb1 TYPE TABLE OF knb1 .

_ *获取目前界面数据 _

cvi_bdt_adapter => get_current_bp_cc_data (

EXPORTING

i_table_name = table_name_knb1

IMPORTING

e_data_table = lt_knb1[]

).

CHECK lt_knb1[] IS NOT INITIAL .

READ TABLE lt_knb1 INTO DATA ( ls_knb1 ) INDEX 1 .
DATA ( lv_corporate_type ) = ls_knb1 \- corporate_type .

_ "1.BP界面合作商类型字段为10,20,30时,才能维护合作商,99或为空时不允许维护; _

IF ( lv_corporate_type IS INITIAL OR lv_corporate_type = '99' ) AND ls_knb1 \- maintain_corpo = abap_on .

_ "调用BUS_MESSAGE_STORE 来写入报错信息 _

CALL FUNCTION 'BUS_MESSAGE_STORE'

EXPORTING

arbgb = 'ZBP'

msgty = 'E'

txtnr = 001 .

ELSE .

_ "2.2.BP界面合作商类型有值且不为99或空时,可以维护合作商LIST,合作商类型需要和BP界面的合作商类型一致 _

LOOP AT gt_ztbp001_info_buf[] TRANSPORTING NO FIELDS WHERE corporate_type

NE lv_corporate_type .

_ "调用BUS_MESSAGE_STORE 来写入报错信息 _

CALL FUNCTION 'BUS_MESSAGE_STORE'

EXPORTING

arbgb = 'ZBP'

msgty = 'E'

txtnr = 002 .

EXIT .

ENDLOOP . ENDIF .
ENDFUNCTION .

---

## 2.执行效果

当我们修改LIST内和BP界面合作商不一致时,然后保存数据

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

BP会报错:

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

然后我们修改BP界面合作商类型为99

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

点击保存:

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

如果想看之前相关BP增强的小伙伴可以点击下面链接:

英文

https://www.abaplog.com/Icerik/50/add-new-tab-to-bp

或者我的文章

[ S4 BP增强说明

](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483893&idx=1&sn=8b3661c027b73c84c2ff96eea91cea26&chksm=f98a0054cefd894296bf83deebfe6f380c8b85670ea6efa275f5200f62606260aa01ebed995d&scene=21#wechat_redirect)

[ BP客户增强-详细-干货

](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483897&idx=1&sn=9796dc49916184ac314b5e05b964f952&chksm=f98a0058cefd894eef9c0526559a65f79e83861e14dc90adb2faeb6b8735aaa19d88d55a769a&scene=21#wechat_redirect)

**不念过** **去**

**END**

**不畏将来**

BP 客户增强保存时增加校验事件 DCHCK - 封面图
BP 客户增强保存时增加校验事件 DCHCK - 封面图

**SAP ABAP TAB**

微信号 : TAB_JXZHU

** 回复'ABAP'免费领取学习资料 **

长按二维码关注我们

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「BP客户增强保存时增加校验事件DCHCK.md」整理生成,仅用于内部技术分享与学习交流。