ABAP-VA01保存前增强
需求:VA01、VA02、VA03订单保存时,需要做一个check的增强
方法:注意检查的增强用的是USEREXIT_SAVE_DOCUMENT_PREPARE,而不是USEREXIT_SAVE_DOCUMENT(保存检查不通过会跳号)
INCLUDE程序:MV45AFZZ
要注意的是:无论是在SAVE_DOCUMENT_PREPARE或者SAVE_DOCUMENT时,销售订单都还没有保存到底表中(VA01时),销售订单号码在VBAK结构中取
解决方案:包含文件 MV45AFZA里的USEREXIT_REFRESH_DOCUMENT 这个功能。运行到这个的时候,已经保存在地表里了。不过有好多的操作都会运行到这里,比较刚进行订单就点击了后退,所以还要再特殊处理一下,当用户保存的时候就是在 USEREXIT_SAVE_DOCUMENT 这个增强里,放一个标识到程序的缓存里,当最后运行 USEREXIT_REFRESH_DOCUMENT 这个增强时,再把标识读取出来,查看是否要进行自己的操作,不过这个时候内存的数据都被清空了, 我们可以在VEDA这个结构里拿到凭证号,再从底表里读取出来进行相关的操作。或者直接把订单号放到程序的缓存里和标识放在一起,到时再使用也是可以的。import p_matnr_lc = LLSBL from memory id ‘TPJ1’ 就是用这种方式的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示