本教程之前的文章,解答了一位朋友向我发起的关于 ABAP Function Module 输入参数是一个动态内表应该如何处理的知乎咨询之后:
有朋友继续在我的知识星球里提问,说他工作中遇到一个类似需求,只不过和我第 127 篇文章里介绍的场合正好相反。
这位朋友的需求是,设计一个 ABAP Function Module,输入参数是一个固定的字符串,这个字符串的值是 ABAP 数据库表的名称。输出是一个内表,这个内表的内容就是输入参数指定的数据库表的某些行记录,比如用 OPEN SQL 语句即 UP TO 3 ROWS
返回前 3 条记录。
比如输入参数 TADIR,该 Function Module 就从 TADIR 数据库表里读取三条记录,然后填充到函数的输出参数(Exporting)去。
这里的难点是对输出参数的动态处理。因为我们在编写代码时,根本不知道数据库表的名称是什么,所以在函数体内定义用来存储从数据库表里读取出来的数据的内表变量时,这个内表变量的数据类型也没有办法确定。
比如,我们无法用下面这种代码来定义内表变量:
DATA: lt_output TYPE TABLE OF TADIR.
因为这个内表的类型,是跟随 Function Module 输入参数的变化而变化的,在编写代码时根本无法确定下来。
这个需求的具体解法在我的 ABAP 学习教程里。
网友评论