更多内容请关注公众号:SAP Technical
迎秋风,做一场红尘梦;望寒月,化轻烟筑家国。顾盼间乾坤倒转,一霎时沧海桑田,侠肝义胆儒生梦,铁骨柔情武侠情,儿女情长今犹在,江湖侠骨已无多。再见,江湖。
武侠中最常提到的就是练就一身武功之前要打通任督二脉。任督二脉之所以重要是因为:任脉主血,为阴脉之海;督脉主气,为阳脉之海。也就是说,任督两脉分别对十二经脉中的手足六阴经与六阳经脉起着主导作用,任督二脉气机充盈的话,可以灌溉十二经脉。大家可以把任督二脉想象长江和黄河,十二经脉就是连接着长江黄河的十二条支流。长江和黄河里面的水量是否丰沛,直接决定着他们的支流是否通畅。故曰:任督通则百脉皆通。所以要练就一身绝世武功,首先要打通任督二脉。而在项目上,特别是SAP S/4 HANA项目,要想顺利实施完成,关键就要解决一些阻碍项目进行的问题,清楚路线上的障碍,打通任督二脉,完成项目上线。所以我们今天依旧讨论技术。
写在前面
在之前我写了不少关于SAP S/4 HANA出现问题的文章,可助你打通任督二脉,比如你可能会遇到这样的:《S/4 HANA ML error分析》、《S/4 HANA的移动平均价》等是关于SAP S/4 HANA问题分析的,可以直接点击链接查看。还有几篇关于ECC和S4之间变化的分析文章,比如:《进一步了解S/4 HANA系统》、《S/4 HANA系统表对比Ⅰ》、《S/4 HANA系统表对比Ⅱ》等文章是阐述SAP S/4 HANA系统中数据结构等内容的变化,(注:最后一篇系统表对比里的招聘信息已经失效),我这里就不把每一篇添加到本文的链接中了。因为今天的主题依然是SAP S/4 HANA问题分析,所以把上面的文章链接放在了前面,如果你对其他更多技巧性的文章也感兴趣,可以翻阅历史文章阅读。
在SAP S/4 HANA系统迁移或者实施的过程中,顾问会遇到很多问题,而且会有一些类似的问题出现,比如我们今天要分析的一个问题,在很多配置或者标准程序中会出现SYSTEM_ABAP_ACCESS_DENIED这个错误。比如你在运行程序、函数、标准事务代码的时候就会出现,因为有很多ECC系统里的功能将来是要被弃用的。下面我们重点分析一下这个问题。
错误重现
首先看一下这个dump错误出现的截图,如下图所示:
错误描述为:Access to development object prevented by system configuration。有很多种情况出现上述的这个问题,比如我使用系统的/SCWM/EGR、MMSC、MCGD、MSK4、VMG1等等,甚至是程序或者标准函数也会出现错误,很多时候都会碰到这个问题。下面我们来解决这个dump的问题。我们这里说的前提条件都是在SAP S/4 HANA系统上。
原因&建议
在一些以前发布的文章中我也提到过,在S/4 HANA系统中,有一些功能将不再可用,SAP在每个版本中逐渐淡化或者启用一些功能,可能在以后更新的版本中就不再支持一些ECC原有的功能了。所以出现了prevented,你可以理解为不再兼容。
考虑到一些客户是实施的迁移或升级,而不是新实施S/4 HANA,因此SAP给出了一系列的向下兼容措施,以保证迁移或升级可以顺利进行,所以我们会看到一些功能临时被禁用或者给出其替代方案,在这些暂时不能使用的功能中,SAP会给出暂时启用类似原来系统中的功能,如果顾问在实施过程中,出现不确定是否可以暂时启用的时候,可以发送message给SAP的development support,确保没有问题之后再使用。
问题解决
针对上面的这个问题,很多标准程序都会出现,所以要打通任督二脉,任督通则百脉皆通。下面就给出解决这个问题的方案。
1、我们需要一个具有S_ADMI_FCD权限的系统用户(后面会给出解释)。看一下这个authorization object。
2、执行程序:ABLM_MODIFY_ITEMS,没错,这是一个可执行程序。如下图所示:
3、同样的,我还是先看看这个程序做了些什么事情,如下图所示:
从上述程序内容中可以看到,为什么我说在第一步骤中需要添加S_ADMI_FCD权限的系统用户了,please extend your authorization by S_ADMI_FCD,明确说明了要加这个权限。还有就是各位可以到系统里看一下ablm_blacklist这是view。
4、执行程序后,填入参数,如下图所示:
我这里把参数解释一下。点开Type的F4,可以看到有几种参数可供选择(TRAN,FUNC,PROG,METH,FORM),然后分析一下这几个参数构成error的内容会是怎么样的。
对于TRAN和PROG类型,你需要在name中输入之前出现dump的事务代码名称,或者会出现类似这样的error:error:Type: "P" Object : "xxxxx" Procedure : " " Class : " "."。
对于FUNC和METH类型,同样会看到和上面差不多的error内容,这里就需要把Procedure填入到name中了。
上面的这几种类型可以归纳为:
Transactions(TRAN)--> Type 'T'
Function Modules(FUNC)--> Type 'C'
Reports (PROG)--> Type 'P'
Class Methods (METH)--> Type 'M'
Form Routines (FORM)--> Type 'F'
这样看就比较清晰了,按照我上面列出的这些type,就可以很容易知道怎么选择参数了。
5、我这里第一次执行的时候,在选择画面先勾选Testmode,填写对应参数,然后执行。查看执行结果,如下图所示:
从上面的结果就可以清晰看到Blacklist Entry以及内部和外部使用的当前状态。
6、我现在返回到选择屏幕的画面,然后勾选Allow entry for internal usage这个复选框,取消勾选Testmode这个复选框。如下图所示:
7、然后再次执行这个程序,可能需要点时间,最多也就是几十秒,执行之后,我们来看一下执行的结果,当然我这里已经做了尝试,确定没有问题,如下图所示:
当你在屏幕上看到Modification is effective,说明你已经成功了,我们理解为,修改是有效的。执行完以上所有步骤后,还有最后一步。
8、再次执行前面出现dump的事务代码或者程序或者函数等等,看看是否还会出现dump,相信这时候你已经成功执行过去并且没有出现错误画面了。那么这就是最后一个步骤,完成后这个问题就解决了。因为这个问题在S/4 HANA系统中出现的比较多,基本都会碰到,利用这个功能就可以解决这一系列的错误,打通任督二脉还是有必要的。
再见,江湖。
网友评论