SAP工資核算Schema的介紹關於函式

2021-03-04 09:56:57 字數 4707 閱讀 6956

rule和operation

我們的乙個長期客戶曾經建立了乙個儲存介面的資訊叫「薪水rule」!那些有經驗的sap薪水分析者和顧問立刻看成其中的雙層含義和幽默。rule包含sap薪水中大多基本的邏輯。

其中schema是function的集合,rule是operation的集合。乙個operation是乙個非常基本的被用來操作wagetype的邏輯。例如,operationmulti是乘以wagetype中的數字和比率以決定付給員工工資的數目。

operationoutwp獲取乙個員工特定的資料並決定如何去處理它。比如,如果工作合同在資訊型別1中是ua,那麼執行『x』,如果是ub,執行『y』,其他的執行『z』。

可以通過t-code pe04和pdsy檢視operation,也可以通過pe02編輯operation。function對應的abap form是以『fu』開始,operation對應的abap form是以『op』開始。比如,operationmulti,將有abap form 『opmulti』。

同schema一樣,rule儲存在表中,rule被儲存在表t52c5中。

有多年計算機系統工作經驗的sap高階顧問們常在發現工資rule和程式設計大型機組合語言的類似性。然而當operation被正確使用時功能強大,但這沒有什麼好神奇的。

希望我們這個簡短的介紹是有意義的。下一篇sap工資技術文件中我們將更深入**用在sap的工資schema中的公共function。

function最多能有4個引數,sap文件將告訴你每個引數的用法。通過pdsy和pe04能看到每個function和operation。

copy 這與abap和其他程式語言中的『include』相同。當工資執行時,copy是插入包含在引數1中的schema。好的schema配置風格和好的程式設計風格是一樣的-將公共使用的邏輯放在『include』中,這樣能被用於多個地方,同時也增加可讀性。

block 在4.0版中,schema日誌是放在樹狀結構中的。block beg開始乙個節點,block end結束乙個節點。

在beg和end之間是包含在節點中。block beg/end能被多層巢狀。同時,適當的放置block beg/end,使日誌更方便讀。

if/else/endif 對iffunction,有2種方法說明真/假條件。sap有幾個內建的條件可以在引數2(schemau000中的if namc)中使用。你同時也能在引數1中說明乙個定製的rule,並且在rule中執行你任意想要的邏輯。

在rule中,使用operationscond為iffunction設定真/假轉換。

p***x 工資驅動和schema從許多資訊型別中讀取資料並處理資料。一般是以p和四位數字命名的資訊型別來執行。所以,p0014讀取並處理從資訊型別14來的資料,p0168從資訊型別168處理人生保險計畫,p2010從資訊型別2010中讀取附加工資。

許多function,但並非所有的function,允許你用工資rule進一步精練此過程。例如,schemauap0表明p0014被ruleu011處理過。functionp0168是沒有使用rule的function之一(在一些老的版本中有使用),而是在引數中說明operation(見schemaube1)。

有些資訊型別在工資中被使用,但沒有p***function。這些包括資訊型別207,208,209和210,他們都在主稅款functionustax中被讀取並處理。資訊型別0,1,7和8被functionwpbp處理。

pit pit是process input table的首字母簡寫,它也是工資中最常用功能最強大的function之一。當wagetype被p***function讀入工資時,他們被儲存在稱為it(input table)的內部表中。pit通過內部表迴圈,並應用包含在rule中的邏輯。

所以對於it中的每個wagetype,它都將從rule中申請乙個邏輯。

pit的目標是將wagetype從it中移出,移入到rt(result table)中。大多數情況下,被pit呼叫的rule會改變wagetype的一些屬性然後把他們從it中轉移到rt中。wagetype也能留在it中並移到其他表中去。

在說明operation是如何工作的時候我們再解釋這種可能性。s

pit的乙個例子是在schemaual0中-pit x023。當工資驅動到達schema的這點時,pit將遍歷it中的每個wagetype,rulex023告訴它做什麼事是取決於wagetype在過程類20中的值。值為3,4,5,6,9和b使將把wagetype移到rt中,而1,7和8是將wagetype留在it中,值2沒有任何操作,但本質上其實是將wagetype從it中清除。

prt prt是process results table的縮寫。雖然大多數wagetype處理發生在pit,也有幾種情況當你想處理wagetype時已經被轉移到rt中。prt工作原理同pit,通過rt迴圈,同時從rule中申請邏輯。

在schemautx0中,prt被用來處理已經在rt中的稅款wagetype。functionutx0(us 稅款function)直接返回它的wagetype給rt,所以任何乙個在稅款wagetype中的處理都要prtfunction來完成。

actio acti0 function處理工資rule,但是它不通過wagetype表來迴圈,但它在不同的工作地點/基礎工資記錄間迴圈,並挨個處理它們的rule。例如,假設員工在當前帶薪時期有2個資訊型別1個記錄,acti0將有2條記錄要迴圈。

utx0schema是acti0使用ruleuwh1計算帶薪時期工作的小時數的乙個好的例子。

象function一樣,operation的文件也能通過pdsy和pe04找到。operation能被放在2個不同的組-他們分布用來決策和操作wagetype。有些operation剛好適用這2個組。

操作wagetype

在rule中使用wagetype就好像在abap中使用內錶。function通過把錶的每一行一次性都放在『頭』空間來迴圈呼叫rule(pit,prt,p0014或其他)。在頭空間使用wagetype,完成以後在把它加回表中。

multi, divid 這些operation讓你將wagetype中的兩個字段相乘並將結果儲存在第三個欄位中。能使用的字段是amt,rte和num。multi rna將用乙個數乘以比率並將結果儲存在amount欄位。

divid ana將用乙個數除amount欄位並將結果儲存回amount欄位。

num, rte and amt 這些是非常基本的也很強大的operation,它們能操作他們各自欄位的內容。很大情況會用到這些operation,f1幫助文件是很有用的。基本情況下,設定值num=1 或者amt=2.

50,但這不是乙個好的實踐方法。而使用常數-在表t511k中建立名叫znum的常數,並使num=kznum(把number欄位的值賦給常數znum)。因為常數是根據日期有效的,而rule不是,這樣當數值需要改變時使你更靈活地改變。

你可以設定wagetype的頭的字段等於另外乙個wagetype中對應的字段-amt=e9***是使amount等於rtwagetype9***中的amount欄位。當且僅當it中的9***小於amount域的值時,amt<9*** 將amount域設定為it中的9***(取兩個值中的較小者)

最後,你可以使用值上的演算法。rte*100是rate欄位的內容乘以100並把結果儲存會rate欄位。amt*kznum是amount欄位被常數znum中的值相乘,znum中的值可以是任意數。

addwt 至此,我們已經使用multi,divid,amt,rte和num設定我們的wagetype的值。addwt將頭中的wagetype轉不改變值或改變值後移到其他的表。addwte*是不改變wagetype的數值加到rt中。

addwte9***將它重新命名為9***然後轉移到rt中。用f1幫助文件將告訴你所有這些你能轉移到的表。

elimi and reset 裂片是用於將wagetype連線到工資中其他表的屬性。有時你在做某個rule時不得不移除某個裂片-這就是elimi做的(eliminate 裂片)。在刪除乙個wagetype的裂片後,你可以使用reset重新儲存他們。

一般來說,你應該避免刪除裂片-因為這可能導致比率和報表出錯。所以使用和測試時要小心。

fillf 這個簡單的operation能重置wagetype域的值。例如,fillf a是在rule第一次被呼叫時將amount重置回原來的值。

這裡你將把把所有這些operation集合在一起在基本工資的基礎上計算固定比例的扣除數(有幾種方法計算,這裡僅介紹一種)。假設基礎工資在it值,比率作為乙個完整的數儲存在常數znum中,你制定了乙個rule包含了wagetype****和基礎工資,在這個例子中用『obas』。扣除的部分將是4***。

所以,在這個schema中我們將在rulez001中執行乙個pit:pit z001。在rule中:

wagetype****:addwt *(如果它不是obas,我們就不改變它)。

rule型別obas:addwt*, num=kznum,multi ana, amt/-100, addwt 4***(將obas傳到輸出表,這樣我們就不會丟失它了,設定number域等於常數znum,用amount乘以number,因為我們將百分比作為乙個完整的數儲存並且我們希望這個扣除數是負數,所以用-100除amount,並把結果作為wagetype4***儲存。

決策很多次我們只需在某種條件存在時執行某個動作-比如,我們只想為某種員工計算扣除數4***。在這種情況下,我們必須選擇什麼時候執行這個動作。

decisions將結果放入稱為變數的鍵中-這就象乙個帶有萬用字元的描述。如果我們把公司**放在乙個變數鍵只,那麼含有1234的行將為公司1234執行,含有2***的行將為任何以2打頭的公司執行,而****將為所有任意匹配的公司執行。

關於軟體兼職人員的工資核算方案建議

1 具備相關專案工作經驗 2 具備良好的團隊合作精神,盡量配合我司在職人員完成開發任務 3 具備良好的職業道德,禁止洩漏雙方合作的技術方案 技術文件 源 等 4 優先考慮我司舊員工。勞動合同的期限由合作雙方協商確定,但建議最短期限不少於3個月。在勞動合同有效期內,兼職人員必須配合我司在職人員完成開發...

工業企業如何進行工資的核算

工資是企業支付給勞動者的勞動報酬。包括基本工資 獎金 津貼及補貼。通過 應付工資 賬戶進行核算,應付工資是為企業計算及發放工資而設定的會計賬戶,集中反映企業應付職工的工資總額。工資總額指企業在一定時期內支付給本單位職工的勞動報酬總額。包括 計時工資 計件工資 經常性獎金 工資性津貼和補貼 加班加點工...

第十二章工資及福利費的核算

第一節工資的核算 一 工資總額的組成 由下列六個部分組成 1.計時工資 計時工資是按照出勤來計算的工資。2.計件工資 按生產產品的件數來計算的工資。3.獎金 在工資總額中包含的獎金,不包括兩種 合理化建議獎 創造發明獎。津貼和補貼 加班加點工資 特殊情況下支付的工資 如工傷 產假等 二 工資核算的原...