经典和内核Badis的混乱

2020-09-01 18:55发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 专家们,我已经签入 ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,我已经签入

http://help.sap.com/saphelp_nw04s/helpdata/en/ee /6f3b42ea85b26be10000000a155106/content.htm

上面的链接说明了经典和新巴迪舞曲之间的区别。

但是有很多困惑。

第1点:

对于经典BAdI,将通过调用工厂方法来创建BAdI对象,并通过BAdI接口类型的引用变量对其进行引用。

对于新的BAdI,将通过ABAP语句GET BADI创建BAdI对象,作为BAdI方法调用的句柄,并通过BAdI类型的引用变量进行引用。

BAdI对象是内部BAdI类的实例,否则该类对外部不可见。

当两个badis都被badi的refrence变量刷新时,有什么意义? 请解释。

`点2:

使用传统的BAdI,筛选器值存储在结构中,并通过BAdI方法的调用传递。

b。 使用新的BAdI,当使用GET BADI语句创建BAdI对象时,便会传递用于搜索实现的过滤器的比较值。

无法将工厂方法的调用一对一迁移到ABAP语句中,因为GET BADI还可以返回现有的BAdI对象,而这对于工厂方法是不可能的。

任何一个人都能用一个简单的例子来解释这个问题。

第3点:

。 经典BAdI只能调用一次,并且呼叫位置可以集中记录。

使用新的BAdI,可以进行多个呼叫,并且呼叫位置不会集中记录。

由于上述原因,无法进行自动呼叫迁移。

按中心注册是什么意思?

请帮助专家...

C

W

消息的编辑者:Suhas Saha

4条回答
土豆飞人
2020-09-01 19:59

Dhruvin嗨

1- BADI的引用变量仅引用新的BADI。 BADI的"接口"引用了经典的BADI(可以在se18看到)。 这里的``接口''与OOP概念的接口(f.e.ZIF_EX_BADI1)具有相同的含义。 您可以使用SE24查看经典BADI界面的详细信息。 在OOP中,您不能直接使用接口,因此需要适配器类(例如ZCL_IM_BADI1)。

但是在使用新的BADI时,您不会使用"接口"名称实例化,而是使用GET BADI来实例化BADI的名称。 该语句创建BADI的实例(实际上是BADI的实现类?),程序使用该类来调用相关方法。 因此,您不需要适配器类即可使用新的BADI。 因此,这是性能优势。

2-新的BADI提供了一种方法来分离与您无关的实现:过滤器。

F.e。 您定义的BADI方法会根据国家/地区代码而有所不同。如果为BADI创建国家/地区过滤器,则无需将所有实现分发到所有国家/地区。 使用相关国家/地区代码过滤器来创建不同的实现,并在每个国家/地区仅部署一个实现。 您的代码之所以有效,是因为您可以在程序中使用带有国家/地区过滤器的GET BADI语句。(假设您的程序知道运行在哪个国家/地区)

使用经典的BADI,您应该为此方法添加一个参数,并开发其中的所有实现,然后将此大实现部署到所有国家/地区。

3-应该使用增强点来定义新的BADI。我不确定,但是不能在不同的地方使用一个增强点。我认为新的BADI也要集中注册。我很困惑。.

我经验不足,但是新的BADI带来了概念上的变化。对于开发人员来说,变化不多。

希望它会有所帮助。

一周热门 更多>