在ABAP编程中,有时候需要利用Native SQL操作数据库表(自定义和非业务数据的表,业务数据表我的建议还是应该通过SAP提供的类、函数,BAPI等技术操作)。下面的例子是通过游标操作Oracle的系统表的代码,供大家参考。
* Read information about partitions of a table
FORM get_partition_info
USING
i_tablnm TYPE rsd_tablnm
CHANGING
e_ts_part_info TYPE rsdu_ts_part_info。
DATA:
l_s_part_info TYPE rsdu_s_part_info。
* this works only for Oracle
CHECK sy-dbsys = 'ORACLE'。
EXEC SQL。
open csr for
select partition_name, high_value
from user_tab_partitions
where table_name = :i_tablnm
ENDEXEC。
DO。
EXEC SQL。
fetch next csr into :l_s_part_info-partition_name,
:l_s_part_info-high_value
ENDEXEC。
IF sy-subrc 0。
EXIT。
ENDIF。
* Special treatment of upper limit (highvalue) in Oracle
IF l_s_part_info-high_value EQ 'MAXVALUE'。
l_s_part_info-high_value = rsdu_c_max_value。
ENDIF。
INSERT l_s_part_info INTO TABLE e_ts_part_info。
ENDDO。
EXEC SQL。
close csr
ENDEXEC。
ENDFORM。 " GET_PARTITION_INFO。