SAP Debug 有关MIRO的增强
最近在做一个运维的项目,客户的系统是2015年上的R3系统,系统做了许多的增强和开发,感觉系统比较乱。前一段时间配置了公司间采购业务,在测试时发现运费的发票做不了校验,系统提示如下图:
对于此问题的分析:
其实错误提示很明确,一个就是在1000控制范围下没有2050成本中心,这肯定是没有的,因为2050成本中心在2000控制范围下了。第二个就是公司代码2000没有分配到1000控制范围下,但是为什么要把2000公司代码分配到1000控制范围下呢,2000公司代码也有相应的控制范围啊。为什么不去取2000公司代码的控制范围呢。
根据上述情况,查了所有可能在发票校验和控制范围相关的地方全部查了,没有查到问题。问公司的人也什么都不知道,因为采购订单运费这块做了增强,最开始怀疑是因为运费做了增强导致的,查了一天仍然没有查到问题。在MIGO的时候的数据都是正常的,就是在MIRO的时候出现错误提示。怀疑是不是在发票校验的时候也做了增强。
每次在输入完Amount,按回车键后,CO Area就会获取错误的控制范围,就在这里作为突破点,/H进Debug模式,在这里介绍一下进Debug模式的方法:
在事务码栏输入/h按回车键,下面状态栏就会有提示:
DeBug模式开启。这时做任何操作,都会进入到后台的代码层。
因为在前台的结构当中CO Area的技术名称为DRSEG-KOKRS,而这个字段的值变为1000就是错的,所以通过Watchpoint在Variable当中输入DRSEG-KOKRS当这个字段的值等于1000的时候,程序停止,如果不知道在哪里打断点是非常麻烦的事了,所以使用这种方法还是比较好用的。
需要注意的是,设置好变量和值以后进行检查,然后执行。直接按F8运行就可以了。程序在下面这块停止了,发现确实在这个位置DRSEG-KOKRS的值变成了1000。
这段代码的意思是把YDRSEG表的值赋给DRSEG表,也就是前台的表。那么YDRSEG的值是从哪里来的呢?用上面同样的方法看看YDRSEG-KOKRS的值是从哪里来的:
程序在下面这段代码的位置停止了,在MIRO增强的时候,直接赋值了固定值。
至此找到上面MIRO时候的报错原因。
2023年1月5日晚22:16
文章来自于网络,如果侵犯了您的权益,请联系站长删除!