您好,
我想给出一个简单的例子,如何为平面结构的组件使用运行时类型服务(RTTS),新云,并将结构的组件分配给字段符号。如果你通过一个参数将一个结构输入到一个方法中,它的类型是数据,尽管你不知道运行时类型,因此你必须使用字段符号。
让我们从一个简单的例子开始,不要循环所有的结构组件。
这是一个简单测试报告的示例代码,以获得概念:
这个报表基本上只做了以下工作:
1)创建类zcl\u test\u am01的实例
2)给ls\u bseg结构分配一个文本
3)用'SGTXT'设置lv\u comp\u name=>我们想要从中获取值的组件名
4)调用类zcl\u test\u am01的get\u component\u值
5)写gv\u值
这样有趣部分是现在,大数据数据库,淘客公众号系统,该方法得到什么组件组件值:
方法接口:
是结构类型数据结构引用
IV组件名称类型字符串组件名称
值(EV组件值)类型字符串组件值
这个方法也不太多:
1)声明字段符号–不是bseg sgtxt类型!
2)将结构的组件n(动态组件名称)赋值给fieldsymbol(类型数据)
3)检查fieldsymbol是否已赋值如果已赋值ev\U comp\U value获取的值
这个简短的示例基本说明了如何以动态方式获取结构组件。现在,我们在方法中传递了ls\u bseg,并且组件SGTXT存在,因此不需要检查结构组件是否存在。
现在让我们看一下:
我们假设,我们现在没有,什么结构被传递到我们的方法中。因此,我们首先检查结构上存在哪些组件,并检查导入的组件名称是否存在。为此,我们可以使用abap运行时类型服务。这方面的一个很好的文档可以在这里找到——如果它把google移到这个位置的话:"运行时类型服务(RTTS)ABAP"。我们需要检查结构的类型类型(flat=typekind u=typekind\u STRUCT1)。
所以让我们检查一下extende测试报告代码:
只有*第2部分是相关的
再次将ls\u bseg和lv\u comp\u name输入到方法get\u component\u value\u gen中。方法中的代码有一些更改:
以下更改:
使用此语句我们用rtt来描述我们的结构。我们正在检查,结构是扁平的(如果你想要一个更通用的方法,你需要再次以递归的方式调用你的方法,如果它是一个深层结构)。
方法的其余部分保持不变。
使用这种方法,实现方法将非常简单,例如在结构的所有组件上循环,并检查一些条件等等。此外,您还可以重用这样一个通用方法,贵阳大数据,在您的开发中广泛地使用它,大数据分析技术,比如服务/实用程序类。
我希望您喜欢这个文档,其中有一些技巧。感谢您为文档添加书签或评分。我非常感谢您的所有反馈和意见。