1, SAP query介紹
QUERY是SAP提供的方便無編程基礎用戶的報表工具,使用圖形化的界面,讓用戶托托拽拽就能輕松完成報表編寫。
我們可以將Query理解成QuickView的高級版本,它在QuickView的基礎上增加的功能有:
a、能夠實現統計、排序等計算功能
b、提供標准的圖形形式顯示列表。
c、用戶之間能夠共享。
d、作為SAP傳輸系統的一個部分,能夠在系統之間傳輸。
Query的操作簡單,包括建立用戶組、建立信息集和建立查詢報表,分別對應Tcode
:SQ01/SQ02/SQ03,下面以資產全息查詢報表的建立介紹Query操作的完整理步驟。
2, 建立Query用戶組(Tcode:SQ03)
如上圖,你可能為各個模塊建立查詢報表,這些報表和SAP Tcode一樣需要進行權限控制。
[1].走菜單環境->查詢區域可選擇查詢的工作區,標准區域表示特定client(譯成客戶真是有才),全局區域則表示該用戶組是跨client端的,大家知道同一SAP Server可允許多個client存在,象標准的ABAP程序就是跨client的,SAP已經為各模塊預制了很多跨Client的查詢,資產查詢比較多,此處選擇特定client, 特定client查詢不會連接到SAP工作台組織器(Workbench Organizer),可使用程序RSAQR3TR進行傳輸。
[2].傳輸用戶組,調用程序RSAQR3TR,也可以直接使用SE38執行RSAQR3TR傳輸,稍后詳細介紹如何傳輸。
[3].建立用戶組名為ZFICO。
[4].將用戶組分配到SAP用戶,比如將需要使用查詢的財務關鍵用戶和最終用戶的SAP用戶帳號分配到該用戶組。
3, 建立信息集(Tcode:SQ02)
信息集是數據集的特定視圖,數據集主要來自多表連接或邏輯數據庫,建立信息集如下圖
[1].假設建立信息集ZFIAM001,建立信息集時,用戶可自由選擇基於表還是基於邏輯數據庫,本例使用到資產相關表格ANLA,ANLB,ANLC,ANLU,ALNZ共5個表。
[2][3].按“角色/用戶組分配”按鈕將信息集分配到用戶組ZFICO,你可將一個信息集分配給多個用戶組,比如投資項目管理組用戶也希望看到該資產查詢。
到此,信息集->Query用戶組->SAP用戶就關聯起來了。
介紹一下信息集的詳細建立步驟,分abc三個步驟:
3.1, 添加信息集Table
新建信息集ZFIAM001的數據源選擇“使用基礎表進行表連接”,輸入表ANLC,進入后到下圖:
[1][2].按此圖標添加表,新增表ANLA,ANLB,ANLU,ANLZ,系統自動形成表間的連接,注意添加表不能添加象BSEG一樣的簇表。
*從數據存儲角度,SAP table分透明表(Transparent Table),簇表(Cluster table)和池表/共享表(Pooler table).
[3].你還可以使用別名表,當一個查詢重復用到同一個表時,可使用別名表。
表表之間的連接分兩種:內部連接和左外連接,熟悉數據庫的一定對此非常了解,將各表的連
接條件接下來,點擊”信息集合”按鈕正式建立信息集,如下圖,進入步驟b。
3.2, 建立信息集
[1].按此按鈕正式生成一個信息集。
[2].按“附加”按鈕可增加附加Table和字段,有人問,在此附加Table和上一步的添加信息集表有什么不同呢?在添加信息集表時實際上各表是存在關聯關系的,如果需要從某個不大能相互關聯的表中取得一個字段,例如,需要取資產購置的供應商名稱,那么可以將供應商表LFA1作為附加表,通過資產主數據表ANLA-LIFNR查找LFA1-NAME1,當然,也可直接使用附加字段,然后通過代碼獲取供應商名稱。
[3].在Query中允許增加ABAP代碼,當存在附加表和附加字段時尤其重要。
[4].假設新增了以下幾個字段,其中包括本年已提折舊,年初累計折舊和當前累計折舊(當前累計折舊=本年已提折舊+年初累計折舊);本年已提減值,年初累計減值和當前累計減值(當前累計減值=本年已提減值 + 年初累計減值)等。
[5].信息集的字段組和每個字段組的數據字段,在建立信息集時系統會提示如下圖的三個選擇,選擇包括所有表字段,則信息集將包含所有的表的所有字段,實際上,查詢並不涉及所有表的所有字段,因此,通常人們會選擇”創建空字段組”,系統默認為每個表建立一個默認不包括任何表字段的空字段組,然后,由創建者自行添加各表所需字段。
*有的人還可能喜歡將所有的默認空字段組刪除,另外只建立一個空字段組包括所有的查詢所需字段,如果設計表較多,本人不大推崇此法。
依次將各表所需字段添加到對應字段組,並將附加字段全部填加到附加字段組。
[6].按“連接”可回到步驟a去修改表連接或新增表。
3.3, 為附加字段添加代碼
如下圖,除了自定義代碼,你還可在“選擇”屏自定義選屏字段。
自定義代碼如下表,注意“代碼部分”選擇的是”5 記錄處理“,在這里編寫代碼可以使用
信息集中的任何表來編寫邏輯:
1
2
3
4
5
6
7
8
9
10
11
|
ZCDL
= ANLA-GDLGRP(2). "資產大類
ZCEL
= ANLA-GDLGRP(4). "資產小類
IF ANLB-AFABE <> '04'. "04表示稅務折舊
BNZJ = ANLC-NAFAG + ANLC-SAFAG.
NCZJ = ANLC-KNAFA + ANLC-KSAFA .
ZCLJZJ = NCZJ + BNZJ .
BNJZ = ANLC-AAFAG .
NCJZ = ANLC-KAAFA .
ZCLJJZ = BNJZ + NCJZ .
ENDIF.
ZCYZ
= ANLC-KANSW + ANLC-ANSWL .
|
編寫代碼完畢后,就可以生成信息集了。
3.4, 一點FICO模塊知識
注意下列表ANLC的以下幾個字段:
*ANLC-NAFAG:記帳在當前年的正常折舊(本年計提累計數)
*ANLC-SAFAG:在當前財會年度中的記帳的特別折舊(本年計提累計數)
*ANLC-AAFAG:有關年的計划外折舊記帳(本年計提累計數)
*ANLC-KNAFA:累計正常折舊(年初累計數)
*ANLC-KSAFA:累計特殊折舊(年初累計數)
*ANLC-KAAFA:累積計划外折舊(年初累計數)
SAP的折舊包括普通的正常折舊和兩種手工折舊:特殊折舊和計划外折舊, ANLC類似資產的價值匯總表,類似FI模塊的GLT0, 在設計上,SAP將資產的各種價值分成了年初(累計)數和本年累計數,因此有下列公式:
當前累計折舊=本年已提折舊+年初累計折舊(包括正常折舊和特殊折舊)
當前累計減值=本年已提減值 + 年初累計減值(指計划外折舊部分)
采用資產重估實現減值的企業,則當前累計折舊包括正常折舊、特殊折舊和計划外折舊三部
分,資產減值對應到其它值字段。
特別需要指出的是: 假設使用計划外折舊做資產減值,如果發生過減值,則Tcode:ABST2 FI-AA財務資產模塊將出現差異,也就說,財務角度的累計折舊值(類似總帳)和資產模塊的累計折舊(類似明細帳)必定對不上,因為ABST2默認AA的累計折舊包括正常折舊、特殊折舊和計划外折舊3 部分,如果沒有其它情況,FI-AA的差異恰好就是減值部分。
認識資產價值瀏覽器(Tcode:AW01N),如下圖:
[1].資產瀏覽器中,將資產價值分為計划價值和實際過帳值,計划價瀏覽時的會計年度可選擇上線初年度直到資產折舊完畢的年度; 這樣可以預測出未來的折舊值,實務中很有意義,比如與投資管理模塊和獲利分析模塊(計划版本)結合,可以預測出未來會計年度的折舊費用,從而計算出RoI。
而實際過帳值只能選上線初年度直到本年度,這個非常好理解,假設是2008年12期,過帳值是不能顯示2009年度的價值,直到你做了資產年結(Tcode:AJRW/AJAB),資產年度的一大作用就是,將上年的價值作為下年的年初值,這點類似F.16/F.07年結,只不過是,每個資產在一會計年度的每個折舊范圍只在ANLC中保留一條記錄,並不是按期間保留的。
[2].資產的各種價值:APC原值,三種折舊值,增記,價值調整和帳面凈值,后面還有預付定金和資產殘值。固定資產通常有以下三種計價方法:
(i) 原始價值
(ii)重置價值(重新評估,可增值或減值,評估減值和計提減值應有區別)
(iii)凈值或折余價值
國內資產負債表上有以下公式:
固定資產凈值(折余價值)=固定資產原始價值或重置價值- 累計折舊
固定資產凈額=固定資產原價-累計折舊-固定資產減值准備
顯然,SAP將資產價值管理區分的更細,注意一下,“會計年度開始”列表示上年累計
也即本年年初數,“更改”列表示本年累計數。常規折舊行的“更改“數為9167.43元(2008年全年的計划正常折舊額,對應字段ANLC- NAFAP)。
再看實際過帳屏,常規折舊行的“更改“實際數為1527.90元(2008年1-2月實際正常折舊過帳金額, 對應字段ANLC-NAFAG),這是2008當年的折舊實際過帳值,正好是1-2月的折舊,如下圖。
SE16查看表結果如下,可以發現一項資產在每個會計年度每個折舊范圍有一條記錄。
關於資產價值表ANLC字段多多,讀者可以仔細去研究一番,現在舉一個業務實例來說明如何處理ANLC的相關價值字段。
業務背景:
2006年月,資產模塊“固定資產減值准備”195,431,100元導入到單項資產上時方向錯誤,應為負數但錯誤地導入為正數!?導致FI與AA數據不符(Tcode:ABST2檢查)。
原因分析:
資產期初數據導入大家都喜歡使用兩個Tcode:AS91/OASV,此處就不細講,下圖是AS91輸入接管價值的畫面。
[1].累計購置價值即資產的原值。
[2].3個累計折舊實際上表示年初數(或上線初的,如果是年中上線)累計折舊。
[3].已記一般折舊表示本年度已提折舊。
從上圖中,可以看到初始凈值為8680,怎么計算出來的呢?AW01N看一下該資產的價值,如下圖。
現在可能你有一個問題,為什么在接管價值中3個折舊都是輸入正值,為了只有累計折舊反而成了負數呢?為了解答這個問題,首先看一下關於折舊方式的配置,如下圖:(Tcode:OABN/OABS/OABU)。
現在可以發現,
對於普通折舊,是“僅允許負值和零值”的,系統默認的,也就是說,正常的折舊只能是負值,這里的負值是相對於資產的整體價值而言,正常的累計折舊只能減少資產價值(所以叫負值似乎很怪異),實務中也非常好理解,而且正常的折舊(Tcode:AFAB)也絕對不允許沖銷,所以最后一定這樣設置,設置了“僅允許負值和零值”,在接管價值中無論如何輸入(實際上只能輸入一正值,這樣引起了混淆),在AW01N資產價值中它又只能是作為負數,沖減資產價值。
對於特殊折舊,是“允許的所有值”,輸入正數后,因為允許所有值,則反映在資產價值上它就真的作為正值去增加資產價值,如果輸入負數,則反映在資產價值上減少資產價值。
對於計划外折舊,如果設置的是“允許的所有值”,它輸入正值,則反映在資產價值上就真的是正值,增加了資產價值,如果設置的是“僅允許負值和零值”,則反映在資產價值上一定是減少資產價值。
現在根本原因找到,也就是說,使用計划外折舊做資產減值,並且計划外折舊折舊范圍過帳選擇的是“允許的所有值”,輸入正值后才造成本來該減值的東西變成增加資產價值。
普通折舊可設置“僅允許負值和零值”,特殊折舊是用來調整折舊的,所以它必須允許所有值,對於計划外折舊,我們知道新准則規定:固定資產減值不允許轉回,設置“僅允許負值和零值”不正好防止計提資產減值准備計提反了嗎?理論上是,我於是如此這般設置了,不久,有家企業打電話過來,他家很多資產計提了減值准備,但審計說不合理,現在要沖銷,哈哈,因為設置了“僅允許負值和零值”,沖銷不可以做,自找麻煩,哎,還是允許所有值好!
也就是說,OABN/OABS/OABU都是針對折舊對資產總價值的遞增(僅允許正值,折舊只能遞增資產價值,如在建工程轉暫估資產,等在建工程完畢后發現暫估資產高估,則使用特殊折舊來減少折舊,也就是資產價值增加)/遞減(僅允許負值,折舊只能遞減資產價值,比如已折舊的暫估資產低估,在建工程完畢后再轉資則需要補提折舊,,也就是資產價值減少)的。
處理方案:
I. 修改計划外折舊,設置的是“允許的所有值”,
II. 如果必要,修改ANLC表從2006到當年的2008的計划外折舊(減值)字段,資產年結已將資產減值作為年初數分別帶到2007和2008。
如何設置報表按月查詢折舊?
單個資產涉及的主要表格分兩類:一是資產主數據,一是資產業務數據。
單個資產主數據相關表格(主數據):
ANEA:比例值的資產行項目
ANLA:資產主記錄段
ANLB:折舊期限
ANLC:資產值字段
ANLH:主資產號
ANLZ:時間相關資產分配
資產憑證/會計憑證(業務數據):
ANEK:憑證抬頭資產過帳
ANEP:資產行項目
BKPF:會計憑證抬頭
BSEG:會計憑證行項目
思路:ANLC再加ANEK/ANEP, ANEK/ANEP紀錄了資產每個月的折舊情況。
4, 建立查詢(Tcode:SQ03)
建立查詢首先按下圖[1]選擇一用戶組,然后按[2]創建,選擇該用戶組下的信息集
ZFIAM001(注意用戶組下可針對各模塊建立多個信息集),建立查詢也叫ZFIAM001(可以針對一個信息集根據不同需求建立多個查詢)。
一直按到選擇字段屏幕,表示將該查詢將從信息集中選擇這些字段內容,如上圖,然后再按
,進入下圖。
[1].選擇字段前面打勾,表示查詢將使用這些字段做屏幕選擇,並且給這些屏幕選擇字段設置排序位置,如業務范圍為1,則表示為選擇屏幕的第一個選屏條件字段。
[2].接下來選擇“基本清單“標志,為查詢選擇顯示的字段,見下圖。
基本清單實際上設置查詢結果的顯示格式。
[1].選種表示查詢結果將顯示這些字段內容。
[2].到此,可以選擇測試按鈕測試sap query了,測試出現的選擇屏幕如下圖,注意業務范圍正是第1個選擇字段。如果各步驟正確,運行就能得到正確的查詢結果!
5, 為查詢建立Tcode(Tcode:SE93)
首先,走菜單查詢->其他功能->生成程序,然后顯示報表名稱。
SE93,建立Tcode:ZFIAM001,開始對象如下圖選擇.
進入下圖:
[1].輸入查詢ZFIAM001對應的自動程序名稱。
[2].輸入開發類,為該Tcode產生一個傳輸請求,可以傳輸到生產系統。
[3].測試一下,結果和直接使用sq01運行查詢ZFIAM001一樣。
6, 關於SAP query的幾個總結
A.sq03建立用戶組,一個用戶組query可包含多個sap登錄用戶,一個sap用戶也可被分配到多個Sap query用戶組。
B.sq02建立query信息集,一個信息集可以分配給多個用戶組或角色,一個信息集通常是從多個相互連接的表或邏輯數據庫中取數,信息集從這些關聯表中獲取字段或自定義附加字段。
C.sq03建立查詢,一個信息集可根據需要建立多個查詢,查詢的字段從信息集獲取。
想象一下,信息集涉及10個數據庫表,每個表250個字段,信息集從各表中共選擇出250個常用字段,而查詢1只用到其中25個字段,查詢2…,查詢n全部用到信息集的250字段。
以上。