Select 动态指定数据库表?可能吗?
我正在编写一个BSP,根据用户输入,我需要从不同的DB表中选择数据。这些表格有不同的包装。是否可以根据路径指定要使用的表,如下所示:Select 动态指定数据库表?可能吗?,select,dynamic,abap,opensql,Select,Dynamic,Abap,Opensql,我正在编写一个BSP,根据用户输入,我需要从不同的DB表中选择数据。这些表格有不同的包装。是否可以根据路径指定要使用的表,如下所示: data: path1 type string value 'package1/DbTableName', path2 type string value 'package2/OtherDbTableName', table_to_use type string. if some condition table_to_use = path
data: path1 type string value 'package1/DbTableName',
path2 type string value 'package2/OtherDbTableName',
table_to_use type string.
if some condition
table_to_use = path1.
elseif some condition
table_to_use = path2.
endif.
select *
from table_to_use
...
endselect
我是ABAP&Open SQL的新手,我知道这可能是一个简单/愚蠢的问题:)任何帮助都将不胜感激 您可以定义要在变量中使用的表的名称,然后在请求的FROM close中使用该变量:
data tableName type tabname.
if <some condition>.
tableName='PA0001'.
else.
tableName='PA0002'.
endif.
select * from (tableName) where ...
数据表名类型tabname。
如果。
tableName='PA0001'。
其他的
tableName='PA0002'。
恩迪夫。
从(表名)中选择*,其中。。。
此方法有一些限制,因为稳定值不能包含RAWSTRING、STRING或SSTRING类型的字段
至于桌子在不同的包装中,我认为这无关紧要
关于,您可以定义要在变量中使用的表的名称,然后在请求的FROM close中使用该变量:
data tableName type tabname.
if <some condition>.
tableName='PA0001'.
else.
tableName='PA0002'.
endif.
select * from (tableName) where ...
数据表名类型tabname。
如果。
tableName='PA0001'。
其他的
tableName='PA0002'。
恩迪夫。
从(表名)中选择*,其中。。。
此方法有一些限制,因为稳定值不能包含RAWSTRING、STRING或SSTRING类型的字段
至于桌子在不同的包装中,我认为这无关紧要
关于,是的,包分配通常没有什么区别。如果在系统中打开了包检查(通常不打开)-这可能很重要,这取决于包的设置方式以及包提供的对象。@Esti:谢谢提供有关包检查的信息。我从未见过它被使用,甚至不知道它的存在。是的,包分配通常没有什么区别。如果在系统中打开了包检查(通常不打开)-这可能很重要,这取决于包的设置方式以及包提供的对象。@Esti:谢谢提供有关包检查的信息。我从未见过它被使用过,甚至不知道它的存在。