我在SAP有将近4个月的学习/工作时间。我一直在做一些报告和增强,但最近我开始处理一个与移动数据输入或RF相关的需求,它基本上包括向dynpro 2502添加EAN和一些其他数据。
我在SAPLLMOB程序中将dynpro 2502复制到SAPLXLRF 9502中,关联用户出口MWMRF502并对其基本功能进行编程,但它并没有像我预期的那样工作,因为这个出口非常有限,它只允许我导入和导出一小组数据,很难完全按照标准执行。
我一直在互联网上搜索,很多人都有自己的实现,而其他人只是简单地改变了标准。我不知道如何实现自己的实现,因为我不了解其中的所有流程,更改标准代码的替代方案对性能和开发时间会更好,但正如我所引用的,我必须更改标准代码,只有在没有其他选择的情况下,我才愿意这样做。
但问题是?改变标准可以吗??SAP实施中的标准代码多久更改一次??什么是更好的选择?
提前谢谢。
你问的问题是正确的,这很好,你不会只是在不考虑你所做事情的后果的情况下继续前进。继续研究!
就更改SAP标准而言,您通常不想复制对象来更改它。对于屏幕,SAP通常会创建一个带有子屏幕的用户出口,该子屏幕可以由客户修改。对于Web Dynpro,您可以使用增强点和/或bADI来扩展功能。
尝试查找以下内容之一:
- 您要更改的区域中的SAP BAdI(事务SE18)
- 允许您更改必要屏幕的用户出口(事务SMOD)
- 功能内的显式增强点
- 功能中的一个隐含增强点
sdn.sap.com上以及sap帮助中有许多关于上述主题的文档。
如果没有可用的,您可能别无选择,只能修改(修复)SAP标准对象。为了能够更改SAP标准,您需要在SAP OSS上注册必须更改的对象,并获得系统允许您进行更改所需的修复密钥。在进行更改时,请始终确保打开SAP Modification Assistant,这将使您在修补或升级系统时的生活更加轻松。
如果可能的话,试着找一位经验丰富的ABAP程序员来帮助你。
另请参阅有关更改SAP标准代码的问题:
编辑:Thomas Weiss在SDN上有一个关于增强和切换框架的有用的博客系列。
始终确保没有其他方法可以实现您需要的功能。如果您确信这一点,那么要么从头开始编写自己的实现,要么简单地更改SAP的代码。只是不要将SAP的程序复制到客户名称空间,因为我可以向您保证,这将变成一场维护噩梦。您必须自己决定更改的规模是否值得花时间构建自己的实施,或者更改SAP。
如果您决定更改SAP代码,请记住,当系统升级时,所有更改都会弹出以供审查,这需要时间来评估和调整以适应新的SAP代码。
您的选择从最理想到最不理想:
- 请查看help.sap.com上的应用程序文档,了解可能的可扩展性方案。SAP有多种方式可供您通过各种事件体系结构定制其应用程序。不幸的是,SAP各部门试图就一个事件架构达成一致,然后坚持下去的任何尝试都失败了。因此,您有用户出口、BTE、FQEVENTS、BADI、显式增强点等等。如果你想知道你需要更改的应用程序使用了什么,RTM
- 使用隐式增强点。增强功能是以SAP没有预料到的方式修改标准软件的好方法,因为它们很容易禁用,而且在升级过程中通常非常稳定(升级后使用事务SPAU_ENH来确认您的增强功能在新版本的程序中仍然有意义)。您将在每个include和每种类型的子例程的开始和结束处找到隐式增强点,这允许您在这些位置注入任意ABAP代码
- 但有时你需要的地方没有隐含的增强点。在这种情况下,你可以将整个程序复制到客户名称空间中并对其进行修改。这让你可以自由地对程序执行任何操作,同时保留原始程序作为可能的后备程序。通常,使用原始程序中尽可能多的组件是一个好主意,方法是通过
PERFORM formname IN PROGRAM originalprogram
从原始程序中包含或调用FORM。此方法的主要问题是,在新版本之后,程序可能不再按预期运行。您必须查看程序的新版本,看看是否有任何更改需要移植到您的版本。SAP标准中没有任何内容可以帮助您完成此维护任务。因此,您有责任保留一份标准程序的所有副本的列表 - 只需直接修改程序即可。但对于那些太复杂而无法复制到客户名称空间中的程序来说,这实际上是最后的选择。问题是,这意味着SAP将不再为您提供该计划的支持。如果你在launchpad.support.sap.com上发布了关于该程序的票证,而他们发现你修改了该程序,他们会认为这是你自己的错,并关闭票证。但幸运的是,当您升级系统时,您有交易SPAU,它将帮助您将更改与修改后的SAP程序的新版本合并