網上關於Sap簇表的內容很多,但是我覺得都不太准確,有些還是錯誤的。所以寫下這篇內容供大家參考。
首先需要搞清定義,簇表是和透明表一個級別的定義,但是簇表沒有實體表,就只是一個結構。表簇是另一個概念,它在數據庫中有對應的實體表。多個簇表可以對應一個表簇(BSEG,BSEC對應RFLBG)。
以下內容就以BSEG為例。BSEG是一個經常實用的簇表,它在數據庫中沒有對應的實體表,它的數據來源於表簇RFBLG (這里注意區分簇表和表簇)。
RFBLG是一個表簇,它在數據庫中有實體表。
由於關鍵字的定義,同一個憑證所有行的數據存到RFBLG中的一行中。
RFBLG和BSEG格式互相轉換,是由sap引擎自動完成的。任何對BSEG的增刪改查都會轉為對RFBLG的增刪改查,這個操作對程序員和數據庫是隱藏的,它是由sap引擎完成的。如果查詢BSEG某些字段(非RFBLG索引字段),數據庫不會對這個字段進行篩選,篩選是由sap引擎完成的。這是造成查詢bseg速度慢的原因。如下面的測試案例,生成的sql語句中沒有buzei,altkt字段。


RFBLG和BSAS、BSIS、BSAK、BSIK、BSAD、BSID這6張表,在物理上,它們沒有任何關系,它們是不同的實體表。系統生成憑證時,是分別寫入RFBLG和其他6張表的。實際中會發現有的數據在其他6張表中都不存在,有的列在其他6張表中也不存在。
