如何基于TYPE REF TO DATA参数声明完全类型的字段符号?

2020-08-14 07:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)亲爱的人们,这使我发疯,有人可以...

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

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


亲爱的人们,这使我发疯,有人可以启发我。

我有此代码

定义

类方法:validate_data导入t_data类型对数据的引用。

实施

 METHOD验证。
   类型:type_ztabname ztabname的类型表。
   FIELD-SYMBOLS: TYPE type_ztabname。
   ASSIGN t_data-> *至。
 *然后它使用 -fieldname,因为字段符号已完全键入
 *验证
 ENDMETHOD。

这是一类具有很多方法的类(就像他们要验证的每个表一样)

与从Asbtract类继承后,我想对其进行更改并使其更好地为每个表创建子类,在Asbtract类中,我将表名传递给构造函数,并且在每种方法中,我都可以处理数据而不必再次重复表

问题在于,如果不在同一范围内定义类型,则无法找到在方法中具有完全类型的方法。 我知道表名(我将其传递给构造函数),我不想在每个方法中都用相同的表名来声明类型。 但是我也需要进行完全键入。 我无法更改所有-字段名。

 FIELD-SYMBOLS: TYPE(我-> table_type)。  " me-> table_type ='ZTABNAME'

有没有办法做到这一点?

谢谢

4条回答
jovirus
2020-08-14 07:51
这是我对您的设计难题的理解:
  • 您只有一个 validate 例程,可以动态处理不同类型的数据 。
  • 您想要将其更改为许多数据类型(类),每种数据类型都覆盖方法 validate ,即同一方法的许多实现。

我不同意此转换会使它变得更好。这取决于上下文。 实际上,第一个解决方案是规范的ABAP。

第二种解决方案在函数式语言(如javascript)中更容易,您可以将 first class function 传递给 validate 方法。 在ABAP OO中,我建议使用接口(策略模式)而不是建议的子类(模板模式)。 它将变得很冗长,因为您需要进行客观化(为 创建一个类)并至少使用工厂方法 注入对象)而不是使用动态数据引用。

我的2美分

JNN

一周热门 更多>