Query 操作手冊 (新增邏輯資料庫)
基本概念
QUERY是SAP的一項簡單報表工具,它可為沒有程式設計基礎的使用者用來生成簡單的報表。它有圖形化的介面,你可在上面託託拽拽,然後就可以見到你要的報表,可是這只是簡單的應用,其實每個工具功能都是比較完善的,QUERY也不例外。
1. 生成使用者組
SAP選單→工具→ABAP工作臺→實用程式→SAP查詢→使用者組
T-Code:SQ03
2。建立Functional area(功能區)
SAP選單→工具→ABAP工作臺→實用程式→SAP查詢→資訊集
T-Code:SQ02
3。建立SAP Query
SAP選單→工具→ABAP工作臺→實用程式→SAP查詢→查詢
T-Code:SQ01
2. 這些元件之間的關係有:
1。Query的管理包括建立Functional area(功能區)和User Group(使用者組),並將功能區分配到相應的使用者組中去。
2。Functional area(功能區)中定義query中需引用的表和欄位。
3。只有當一個使用者屬於至少一個使用者組才可以建立、執行Queries。一個使用者可以屬於幾個使用者組。使用者組中的使用者享有相同的權力。
4。當Functional area(功能區)分配給了某使用者組,該使用者組的成員即可以訪問此功能區。5。一個Functional area(功能區)可以分配給多個使用者組;多個Functional area(功能區)可以分配給一個使用者組。
6。Queries通常為特定的使用者組和特定的功能區而建立。這個使用者組的使用者可以訪問所有分配給這個使用者組的Queries。
3. 還有一點值得注意,在QUERY的管理時,有這樣的概念: 標準區(Standard Area): 建立在標準區的查詢往往用以滿足特定使用者的特定需求,因此屬於Client獨立(client-specific)的查詢。這些查詢不會連線到SAP工作臺組織器(Workbench Organizer)上。 全域性區域(Global Area): 建立在全域性區域的查詢是為整個系統開發的,因此屬於Client交叉(cross-client)的查詢。這些查詢會在SAP
這裡提到的標準區的INFOSET,就是指QUICKVIWER中的一個數據源InfoSet(資訊集),而全域性區域的InfoSet是不支援QUICKVIWER的。
操作步驟
1.建立使用者組
截此為止,SQ03的工作已完成。
下一步: SQ02
這裡有幾個選項,我們常用的一般是前3項。
在這裡我們想做一個基於航班及其計劃的報表(可能要很多報表,而不是一個),
我們需要建立這樣一個資訊集,能夠包含所出報表的各種資訊,而這些資訊可能來自多個表格。
基礎表格連線方式:
在“使用基礎表進行表連線”輸入一個表格SPFLI(航班及計劃涉及到2個表,SPFLI和SFLIGHT ),涉及到的其它表格,我們在進入後續介面能夠加進去。新增新表後,系統會自動判斷表之間的聯絡,用線聯絡起來,當然,如果有些聯絡不正確,我們可以右鍵刪除。
如果要新增連線(也就是2個表的關聯欄位),則可以拖動一個表的欄位到另外一個表的欄位上,中間的連線線就自動出現了。
出現如下視窗選項1:系統將把所有表的欄位放到資訊集裡
選項2:系統將把表的關鍵欄位放到資訊集裡
選項3:自定義欄位
我們選擇建立空欄位組
在螢幕左側出現的是表,右側是欄位組,我們根據需要建立自己的欄位組,可以刪除也可以改名,右鍵功能即可操作。我們將建立一個欄位組名為“航班”
在做Query時,我們很容易遇到新增報表顯示列的情況,無論是文字還是數字。就這個例子來講,我們將新增一個“剩餘座位”欄位,單擊“附加”按鈕
在這個螢幕裡,有幾個選項,對於應用顧問來講,我們通常選擇附加欄位。
因為如果附加表格會用到相對比較多的程式碼,對於不熟悉ABAP語言的人並不合適。
然後儲存程式碼
並檢查。
然後按後退按鈕,根據提示儲存並生成功能區。
然後單擊 角色/使用者組分配
選擇開始建立的使用者組,然後儲存
然後進入SQ01建立查詢
會出現如下螢幕
選擇您配置的資訊集。
如果介面中沒有出現您剛做過的資訊集,那需要用SQ03進入,填入資訊集對應的使用者組,然後回到SQ01中建立查詢,這個螢幕裡就會出現您剛做過的資訊集了。或者通過
來實現顯示有權的查詢。
然後單擊“基本清單”
在左側,有欄位清單和選擇欄位2列,眾所周知,報表是要有選擇條件和輸出列的,
選擇條件就是選擇欄位,輸出列就是欄位清單。這裡單擊區分先後順序,先單擊的出現在前面,後單擊的出現在後面。你可以自己做一下測試。
操作後,可以儲存。
然後退出程式返回SQ01介面,按F8執行此報表。
截此為止,最簡單的Query就做完了。
ALV 輸出是我們最常用的方式,它不僅靈活而且擁有儲存變式、小計、彙總等多種功能,例如我們對同一航線承運人ID、起飛機場、目的機場進行座位小計,效果如下
當然我們可以針對這種格式儲存為變式,下次進來時直接用這種方式
下次進來後,可以選擇曾經儲存的格式,也可以設為預設格式。這種小計及合計功能,我們也可以在製作Query時來實現。如下圖
使用邏輯資料庫
簡單的講,邏輯資料庫就是系統在特定的業務裡,自動關聯一些表,我們可以直接使用其中的各種子段而無需考慮其邏輯關聯關係。在SQ02新建的介面裡,我們選擇PNPCE這個邏輯數庫,它代表HR主資料,如果HR主資料裡包含表格PA0001,PA0002,PA0014,……這些表,我們完全可以不用自己關聯這些表格,直接使用PNPCE即可。在F4選單中,我們可以去選擇系統內所有的邏輯資料庫,用事物程式碼SLDB去檢視邏輯資料庫的幫助。如果這個邏輯資料庫有選擇螢幕版本,則在F4選單中就會有選項,例如PNP就會有 000 和900 兩個螢幕
我們選擇PNPCE
PNPCE包括的資訊型別如上,我們可以選擇我們需要的型別,例如組織分配和個人資料。
進入維護介面後,就和表關聯一樣了,可以參考blog上半部分。
在這裡,我們可能經常遇到下面的錯誤:
一個窗口裡有很多紅色標記的欄位,那代表相應的結構裡欄位的描述為空,我們可以用EN 登陸,來做這個查詢,然後再返回中文使用。上圖的這種情況就可能會出現錯誤,進入EN,這裡就會有描述。(注:這種情況,我做了幾次測試,第一次做時肯定會出現錯誤,但是用EN登陸做了之後,別的結構如有空項,也不再報錯了)
對於熟悉ABAP語言的應用顧問,也可以建立自定義的選擇螢幕元素,在SQ02->屬性介面裡,有個選擇項,這裡可以建立自定義的選擇。然後在程式碼部分寫檢查程式碼。
特別註釋:ALV的格式管理功能,是我們在使用Query時最常用的,使用者可以自定義自己的報表樣式,也可以設定全域性變式及預設設定。