一个事务代码实现直接修改正式机代码

日常开发中,请求管理不善的话,当传输到正式机后,不可避免的会出现一些数据丢失或者内部错误,这时候除了部分是系统本身支持修复外(比如SE37修复函数组),直接定位到有问题的代码进行修改或补充也是一个选择。

但是我们直接代码的话会有MESSAGE报错,不允许更改,下面我来说说实现方法。

之前在网络上看到过两种方式,一种是通过DEBUG形式更改函数组STRD中的两个检查函数,修改其中的系统变量SY-SUBRC = 0来跳过检查,这种方式实现比较好,但是老是跳出来MESSAGE也很麻烦,所以作为一个懒人,还是选择搞一个开关方法实现MESSAGE的开闭;还有一种方式是通过直接修改SOURCE的文本,这种修改更暴力,比较容易出错而且没办法体现在ABAP编辑器中,所以还是选择了前一种方式。

大概的思路是这样:

  1. SE24写一个代码修复类ZCL_REPAIR_OPEN,提供一个静态属性CODE来输出开关状态,另提供一个静态方法OPEN,传递CODE = X给到SAP内存ZREPAIRE,一个静态方法CLOSE,传递CODE = ''同样给SAP内存ZREPAIRE。
  2. SE93定义两个事务代码,分别调用类ZCL_REPAIR_OPEN的OPEN方法和CLOSE方法。
  3. 在STRD函数组TRINT_CORR_CHECK和TRINT_CORR_INSERT函数中,获取SAP内存ZREPAIRE的字段CODE值,通过值来判断执行的事务代码是开还是闭,如果是开则SY-SUBRC EQ 0跳过检查,否则不做处理。
  4. 需要临时修复代码的时候,就执行事务代码ZOEPN,用完后记得执行ZCLOSE关闭修复功能,不过不关也没事,SAP内存存在于会话中,下一次登录会自动失效。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iabap

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值