加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

(2023-09-04 15:57:34)
标签:

增强

sap

liumeng

fico

abap

分类: 增强
SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

在SAP/ERP项目的实施中销售管理模块(SD)的创建和修改销售订单必定会有输入字段校验检查的需求,来防止业务人员录入错误或少录入数据,SAP这方面的配置功能也非常强大,通常情况下不需要写开发代码,业务顾问通过配置不完整日志就可以非常容易实现大部分需求,但是在实际项目中还是会遇到一些特殊的需求,不能通过配置实现,需要进行增强开发。

下面通过一个项目案例来介绍下如何通过增强实现销售订单创建和修改的字段输入的合规性检查。

业务需求如下:

某公司销售模块的业务要求:销售组织为S010在创建ZPE类型的销售订单时候,如果销售订单行项目类型为Z001时,要求检查销售订单行项目的订单号必须输入(如下图说明)。

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

类似上面这样的复杂的业务需求,就很难通过不完全日志的配置来实现,只能通过增强开发实现。

下面详细介绍下实施步骤:

增强点:USEREXIT_SAVE_DOCUMENT_PREPARE,此增强用户出口主要用来对销售订单保存前的各字段的约束条件的检查。实施方法:使用隐式增强方法,隐式增强点位如下:SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

备注:SD方面的增强很多是USEREXIT这类用户出口,属于一代增强点,需要开发KEY直接在空的子程序中添加代码,这相当于修改了标准源码,升级会被覆盖,四代增强出现后目前一般建议不要直接去修改程序,而是在这子程序里实施隐式增强。

详细具体实施步骤:

上面找到隐方增强点后,继续按如下步骤操作:

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查
SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查

上图点击确认后,这个增强需求的实施步骤就全部完成了。

增强代码如下:


 IF VBAK-VKORG 'S010' AND VBAK-AUART 'ZPE'.   LOOP AT XVBAP.   IF XVBAP-PSTYV =  'Z001'  .        IF XVBAP-AUFNR IS INITIAL AND XVBAP-UPDKZ  <> 'D'.       MESSAGE '订单号必须输入!' TYPE 'E' DISPLAY LIKE 'E'.          ENDIF.           ENDIF.  ENDLOOP.ENDIF.

备注:XVBAP-UPDKZ  = 'D'  表示删除行,XVBAP-UPDKZ   =' I '表示插入行。VA01/VA02创建SO时候,当行项目维护多条数据后,删除其中的一条或者多条,被删除的行项目依在内表XVBAP中,如果没有增加这XVBAP-UPDKZ<>'D'的条件,会发现一个现象:未删除的行项目满足字段必输的条件了,系统依然给出提示:“订单号必须输入!”

实际实施效果如下图:

SAPERP系统SD模块常用增强之一:VA01VA02创建或修改SO的输入检查
当上面VA01创建订单时候,如果满足销售组织S010,订单类型:ZPE,类别:Z001 时候,SO保存时候,系统报错提示。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有