点击此处---> 群内免费提供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'
有没有办法做到这一点?
谢谢
首先,对不起,但是您的没有完全输入!
完全输入的表类型(即非通用)必须具有表类别和键。 示例:
对于完全键入的类型,可以创建键入数据的引用:
使用起来更容易:
感谢您的反馈!
请使用COMMENT按钮发表评论,提问,添加详细信息,回复OP评论等,答案仅是提出解决方案 ,在答案区域的右侧删除SAP文本。
您好, Sandra Rossi 。 是的,您是对的,没有完全输入
类型:type_ztabname带有空键的ztabname类型标准表。
我要问的是是否有一种方法可以替换 带有变量内容的粗体部分,但是现在我意识到这只是愚蠢的,因为即使有可能,编译器也要等到运行时才能知道结构,因此不可能使用 -fieldname或ref_line-> fieldname。
我只是精疲力尽,我很糟糕。 nvm
我不同意此转换会使它变得更好。这取决于上下文。 实际上,第一个解决方案是规范的ABAP。
第二种解决方案在函数式语言(如javascript)中更容易,您可以将 first class function 传递给 validate 方法。 在ABAP OO中,我建议使用接口(策略模式)而不是建议的子类(模板模式)。 它将变得很冗长,因为您需要进行客观化(为创建一个类) 并至少使用工厂方法 注入对象)而不是使用动态数据引用。
我的2美分
JNN
一周热门 更多>