在hr開發中,一般都會涉及到一些常用的巨集和函式,繼續學習。
1.macros and function modules
常用的巨集和函式總結
由於hr的資料對時間的特殊性,經常需要對資料對基於時間段的一些處理。sap提供了一些巨集來極大的簡化了問題。一般資料的處理上,常用到的巨集有下面幾個:
(1) 在滿足屏選條件的多個結果中,可以用rp_provide_from_frst來選擇時間最早的一條記錄,語法:
rp_provide_from_frst p0001 space pn-begda pn-endda.
(2) 在滿足屏選條件的多個結果中,可以用rp_provide_from_last來選擇時間最晚的一條記錄,語法:
rp_provide_from_last p0001 space pn-begda pn-endda.
(3) 使用rp-read-t001p來讀取人事範圍和人事子範圍的文字,語法:
rp-read-t001p p0001-werks p0001-btrtl space.
(4) 在滿足屏選條件的多個結果中,可以用rp_read_all_time_ity不通過pn-endda來擷取記錄的時間,語法:
rp_read_all_time_ity pn-begda pn-endda.
比如下圖1所示,
在滿足選擇條件的兩條加班記錄中,如果通過rp_read_all_time_ity,可以讓1.12-1.20的記錄完整而不被擷取。
report可以如下輸出:
andy
2009.1.1 - 2009.1.10 20h
2009.1.12 - 2009.1.20 10h
所有的巨集都儲存在資料庫表trmac中。有興趣可以看一看。
2.查cluster表pcl1或pcl2
除了資訊型別以外的很多資料都儲存在cluster表裡面。每個cluster表裡的每種型別都用兩個字母的縮寫來代
表。比如pcl1表有下面這些型別的資料:
b1 time events/pdc
g1 group incentive wages
l1 individual incentive wages
pc personal calendar
te trip costs/accounting results
tc trip costs/credit card data
tx infotype texts
z1 inte***ce pdc -> cost accounting/materials management
在寫程式取數的時候,直接用巨集就行了,巨集的名字是rp-imp-cn-xy.
n是pcl後面的數字,比如pcl1的話,n=1。
xy就是該型別的兩個字母。
比如借貸物品的資訊型別是40,該資訊裡的注釋說明欄位是儲存在cluster表pcl1裡的tx型別裡的。需要查詢的話可以先取道p0040裡的記錄,然後用巨集rp-imp-c1-tx來取到該記錄的注釋資料。
3.使用function從資料庫中取工資資訊
員工的所有工資資訊可以通過報表:h99_display_payresult來檢視。這個報表第一層的輸出都可以通過函式cu_read_rgdir來查到。使用方法:
[c-sharp]view plain
copy
print?
data: begin of rgdir occurs 100.
include structure pc261.
data: end of rgdir.
data: country like t001p-molga.
get pernr.
call function 'cu_read_rgdir'
exporting
persnr = pernr-pernr
importing
molga = country
tables
in_rgdir = rgdir
exceptions
no_record_found = 1
others = 2.
如果需要查工資報表的第二層的輸出,就需要下面的方法來取數:
工資大致分成兩種,一種是週期性的,比如每個月的工資。另一種是非週期性的,比如某個月獲得特別獎金。都可以使用函式cd_evaluation_periods來查到乙個內錶evpdir,然後使用這個表來做為輸入條件呼叫巨集rp-imp-c2-cn就可以了。
在使用cd_evaluation_periods時:
(1) 如果是週期性的,那麼將bonus_date和pay_type都設為空。
(2)如果是非週期性的,那麼必須輸入bonus_date,並將pay_type設為'a'。
比如檢視某員工2009.1.2的獎金,可以這樣來使用:
[c-sharp]view plain
copy
print?
data: evp1 like table of rgdir with header line.
call function 'cd_evaluation_periods'
exporting
bonus_date = '20090102'
inper_modif = pn-permo
inper = pn-*****
pay_type = 'a'
pay_ident = ' '
tables
rgdir = rgdir
evpdir = evp1.
小結,從hr的基本概念,到使用logic db pnp來查詢hr的資訊型別的資料。最後,學習了用巨集和函式來查詢員工的工資資訊。我想一般的hr開發涉及到的東西差不多就這些了。以後遇到複雜的情況再補充。
HR學習筆記1
sap hr一般會有很多開發。而這個模組資料的特點也讓它的開發和其它模組有些不同。hr的所有資料都是以資訊型別來儲存的,每個資訊型別的資料都和時間段緊密相連。hr開發一般使用sap提供的logic database pnp.用起來也非常簡單。只需要在新建程式時,加上pnp。然後在程式裡加上table...
SAP學習筆記 HR模組學習筆記
什麼都略懂一點,生活會更多彩一些。所以,最近研究了一下sap的hr模組。structure in human resource 首先要搞清楚sap hr的結構 最重要的三個概念分別是企業結構 人員結構 組織結構。enterprise structure,personal structure,orga...
學習筆記2
異常 try catch exception e finally 如果出現異常的 沒有try catch語句,異常會浮現至它所出現的方法上,然後從該方法拋至其呼叫者。異常分為檢查異常和非檢查異常,常見的錯誤例如1 0等為非檢查異常,大部分都是檢查異常。過載,重寫 過載就是同乙個類中方法名相同,但是方...