ABAP INDX-like类型

发布时间:2022-06-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ABAP INDX-like类型脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
类INDX表结构
当存储数据簇在数据库表和共享内存的应用buffers(参见:ABAP数据簇),必须指定数据表为如下的结构:
  • 第一个字段必须MANDT,键
  • 第二个字段必须RELID,键,char2,存储行区
  • 之后,任意名字段字,键,char1, 它将id中指定的标识符存储在关键字段的长度中  
  • 下个字段必须是SRTF2,键,INT4,包含了簇中数据的行数,系统自动填充。
  • 然后任意多个自由定义的字段,这些会被From wa指定值,附加到wa用IMPORT语句导出。
  • 最后两个字段必须是CLUSTR和LCLUSTID,INT2和LRAW类型,CLUSTR包含数簇的长度,CLUSTD包含实际的数据簇。
  • 在SRTF2和CLUSTR中间被定义的字段可用来存储数据簇状态信息,比如data,user,或者language
例:
系统表 INDX:
 

ABAP INDX-like类型

INDX-Like Database Table
 

ABAP INDX-like类型

 

 

 
       类INDX表是关系型数据表,在ABAP数据字典中定义,这意味着原则上来说,(Open)SQL语句也可以用来访问类INDX数据库表。
为了在类INDX数据库表高效的使用SQL语句,你必须视这些数据库表为特殊的结构。
  • 出于读或者写的原因访问字段CLUSTR和CLUSTD不是一个好的主意,这些字段以内部的格式包含在数据簇中,他们只能够使用EXPORT TO DATABASE和IMPORT FROM DATABASE语句来正确的使用。
  • 永远不要使用SQL语句INSERT在类INDX数据库表。
  • 在紧急情况,OPEN SQL语句可以用来管理操作类INDX数据库表。
例:
     对于特定的数据簇使用SELECT,类INDX表可以被系统的查询;同时,在自定义的列可以作为查询条件。下面的例子从数据库表的一个存储区域删除了所有的特定用户的数据簇,每次,数据簇的所有行被删除。
DATA indx_wa TYPE demo_indx_table.
 
SELECT SINGLE * FROM demo_indx_table
INTO indx_wa
WHERE relid = ... AND
srtf2 = 0 AND
userid = sy-uname.
DELETE FROM DATABASE demo_indx_table(...) ID indx_wa-id.

例:

下面的例子展示了,如何使用UPDATE修改数据库表DEMO_INDX_TABLE中的数据簇的标识和区域,使用特定的数据簇语句解决这个问题相当的消耗时间。

 

UPDATE demo_indx_table
SET relid = new_relid
id = new_id
WHERE relid = old_relid AND
id = old_id.

 

 
 

脚本宝典总结

以上是脚本宝典为你收集整理的ABAP INDX-like类型全部内容,希望文章能够帮你解决ABAP INDX-like类型所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:数据库