日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP簇表BSEG取数优化的方法

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP簇表BSEG取数优化的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
BSEG于一般的透明表不同,它是一個簇表。對于一個簇表來說,除了主鍵項目外,其他項目都被編輯到一個長文本項目中,一起存儲在表簇RFBLG中的vardata項目中,這就決定了作為簇表的BSEG無法再建立鍵值以外的索引(INDEX),所以一般我們對于透明表來說當主鍵項目不全或完全沒有時,追加索引的作法對于BSEG表來說就不好用了。而BSEG簇表又是SAP系統中FI 會計模塊中最常被使用的數據表,所以運用好對BSEG表的訪問技術對于FI會計模塊的擴展開發(ADDON)至關重要。

對於簇表來說,在數據庫中沒有與之同名的實體物理表相對應,所以雖然其可在ABAP中使用,但還是有一些限制的:
  • 不能使用Select distinct語法
    BSEG中的字段存儲在VARDATA中,所以不能使用distinct語句對單個項目去除重復。
  • 不能使用Native SQL
    在數據庫中沒有與之同名的實體物理表相對應,所以不能使用Native SQL 對BSEG操作。
  • 不能使用Order by 語法
    BSEG中的字段存儲在VARDATA中,所以不能使用Order by語句對單個項目排序。
  • 不能再追加創建索引
    BSEG中的字段存儲在VARDATA中,所以不能再追加創建索引。

除此之外,對BSEG的訪問要使用主鍵項目,如果沒有主鍵項目雖然語法調試能夠通過,但是程序執行起來,耗時長,效率低,而且隨著業務量的增加執行時間問題會越發嚴重,甚至導致程序不能正常執行結束。
那么如果當鍵值不足時怎么辦呢?回答,使用二次索引透明表,具體方法如下描述。比如,和銷售憑證有關的業務,根據銷售憑證編號和明細編號,選取相關會計憑證明細信息。
  • SELECT * FROM bseg
  • ??WHERE vbel2 = 'XXXXXXXXXX'     " 銷售憑證編號
  • ? ? AND posn2 = 'YYYYYY'.? ?? ?? ???" 銷售憑證明細編號
  • 復制代碼 在這個例子中,對BSEG的檢索條件中因為沒有主鍵項目,所以執行起來,程序很慢。變通的方法:
    1)、首先根據銷售憑證編號和明細編號,從BSID中檢索出未清帳明細行項目
  • SELECT BURKS? ?? ?? ?? ? " 公司代碼
  • ? ?? ? BELNR? ?? ?? ?? ? " 財務憑證編號
  • ? ?? ? GJAHR? ?? ?? ?? ? " 會計年度
  • ? ?? ? BUZEL? ?? ?? ?? ? " 會計憑證中的行項目
  • ??FROM BSID
  • ??INTO TABLE TAB_KEY? ???" 存放主鍵項目的內部表
  • ??WHERE VBEL2 = 'XXXXXXXXXX' " 銷售憑證編號
  • ? ? AND POSN2 = 'YYYYYY'.? ? " 銷售憑證明細編號
  • 復制代碼
    2)、再根據銷售憑證編號和明細編號,從BSAD中檢索出已清帳明細行項目
  • SELECT BURKS? ?? ?? ?? ? " 公司代碼
  • ? ?? ? BELNR? ?? ?? ?? ? " 財務憑證編號
  • ? ?? ? GJAHR? ?? ?? ?? ? " 會計年度
  • ? ?? ? BUZEL? ?? ?? ?? ? " 會計憑證中的行項目
  • ??FROM BSAD
  • ??APPEND TABLE TAB_KEY? ?" 存放主鍵項目的內部表
  • ??WHERE VBEL2 = 'XXXXXXXXXX' " 銷售憑證編號
  • ? ? AND POSN2 = 'YYYYYY'.? ? " 銷售憑證明細編號
  • 復制代碼
    3)、然后再根據上面檢索出的主鍵列表,從BSEG中檢索出相應的明細行項目
  • SELECT bschl
  • ? ?? ? koart
  • ? ?? ? umskz
  • ? ?? ? shkzg "借方/貸方
  • ? ?? ? hkont
  • ? ?? ? gsber
  • ? ?? ? dmbtr
  • ? ?? ? wrbtr
  • ? ?? ? zuonr
  • ? ?? ? sgtxt
  • ? ?? ? zfbdt
  • ? ?? ? zterm
  • ? ?? ? zlsch
  • ? ?? ? zlspr
  • ? ?? ? hbkid
  • ? ?? ? bvtyp
  • ??FROM bseg
  • ??INTO TABLE tab_bseg? ?? ?? ?" 存放檢索結果的內部表
  • ??FOR ALL ENTRIES IN tab_key??" 存放主鍵項目的內部表
  • ??WHERE bukrs = tab_key-bukrs " 公司代碼
  • ? ? AND gjahr = tab_key-gjahr " 財務憑證編號
  • ? ? AND belnr = tab_key-belnr " 會計年度
  • ? ? AND buzei = tab_key-buzei." 會計憑證中的行項目
  • 復制代碼
    4)、對透明表BSID和BSAD追加以VBEL2(銷售憑證編號)和POSN2(銷售憑證明細編號)為鍵值的索引(對于透明表可追加索引)
    這樣一來,1)和2)步驟地操作有索引,3)步驟的操作有全主鍵項目,檢索速度應該有保證。采購方面的業務、物料方面的業務等都可如法炮制。

    最后需要說明一點,不是所有的SAP系統都可以使用這種方法,能否使用取決于R/3系統的設計和配置。所以在試圖使用該方法時應充分調查相關透明表與BSEG中的紀錄是否相符,別速度提高了,結果處理對象范圍減小了或增大了,那就與初衷背道而馳了,效率的提升一定要在確保業務數據正確的基礎上再加以考慮。

    SAP R/3系統中也有幾個專門用來讀取BSEG表信息的函數,可適當參考使用,它們是:READ_BSEG、GET_ALL_BSEG。
    另外最有效率的方法是改善你的應用和需求,要使需求合理規范,這才能使效率達到最高化。

    總結

    以上是生活随笔為你收集整理的SAP簇表BSEG取数优化的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。