SAPHR模塊報表開發_第1頁
SAPHR模塊報表開發_第2頁
SAPHR模塊報表開發_第3頁
SAPHR模塊報表開發_第4頁
SAPHR模塊報表開發_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、SAP HR模塊報表開發目錄1. 概述32. HR開發介紹32.1 邏輯數據庫介紹32.2 HR相關邏輯數據庫42.2.1 PNP42.2.2 PCH52.3 邏輯數據庫的選擇屏幕62.3.1 PNP的選擇屏幕62.3.2 PCH的選擇屏幕103. HR報表開發123.1 HR相關數據庫表123.2 常用函數和宏123.2.1 宏RP_PROVIDE_FROM_FRST和RP_PROVIDE_FROM_LAST133.2.2 函數 RH_STRUC_GET133.2.3 函數HR_READ_FOREIGN_OBJECT_TEXT153.2.4 函數PYXX_READ_PAYROLL_RESUL

2、T154. 其他174.1 PNP和PCH里的變量174.2 時間交叉174.3 權限檢查181. 概述本文介紹了SAP HR模塊報表開發的相關經驗,結合本人參與項目所做的開發工作,匯總整理了一些在HR開發中需要注意的地方,并介紹了有用的小技巧。相信本文對初級從事HR開發工作的相關人員有一定幫助。因為筆者相關經驗也在積累過程中,也許本文中會出現一些錯誤,還望見諒指正。2. HR開發介紹HR 報表開發主要涉及到邏輯數據庫的應用,相關的開發工作也主要圍繞著邏輯數據庫進行。2.1 邏輯數據庫介紹邏輯數據庫則提供另一種選擇數據的方式,可以代替SQL語句在數據庫中提取數據,供程序操作。因而,可以認為邏輯

3、數據庫是一種報表設計程序中的輔助工具,而不能將其誤解為一種可進行數據存儲的數據庫。SAP中提供多種類型的邏輯數據庫,開發人員也可自行定義數據源。 Transaction Code: SE36或SLDB 2.2 HR相關邏輯數據庫HR報表開發主要是對邏輯數據庫 PNP( PNPCE)和PCH的應用。其中PNPCE是PNP的加強。但是本文所舉例子,皆是PNP的應用,如果將來有機會應用到PNPCE邏輯數據庫,會再進行補充。程序中使用邏輯數據庫非常方便,只要在程序屬性里選擇關聯到就可以實現,直接在程序里就可以使用。2.2.1 PNPPNP邏輯數據庫主要針對人事信息的查詢。PNP查詢到的信息是以人為單位

4、的,每次查詢到一個人相關信息。如果報表的信息是關于個人人事信息的內容,首先考慮PNP邏輯數據庫。邏輯數據使用,首先要在程序里定義 TABLES: PERNR。PERNR是一個結構,每次程序返回一個PERNR的結點,代表員工號為pernr-pernr的這個人,并附帶這個人的相關數據。如果想讓每次返回的人員附帶信息類型數據,需要在程序里定義INFOTYPES: nnnn,nnnn代表信息類型編號(包括自定義增強的信息類型)。如果聲明了信息類型,則在返回個人信息的時候,也順帶返回這個人的一個Pnnnn的結構,對應相應個信息類型。Pnnnn的內容根據屏幕選擇字段內容確定(PNPCE邏輯數據庫返回的內容

5、與PNP有所不同)。程序里想使用邏輯數據,在主程序里調用GET PERNR。GET pernr類似于一個循環,每次返回一個pernr結點,就是一個人,我們可以對這個人的信息進行處理。當把所有的人都處理完了,那我們所得到的就是需要的數據了。所以使用PNP邏輯數據庫,最少得有三行:TABLES: PERNRINFOTYPES: nnnn GET PERNR. IDES系統里有例程: ZPSOL0102.2.2 PCHPCH邏輯數據庫主要是對應于組織管理(OM)。相對于PNP邏輯數據庫,PCH每次返回的結點是OBJEC類型,代表一個對象。這些對象包括在PP01可以維護的對象(例如: O,S,等等),

6、隨其一同返回的也是OM的信息類型(例如1000,1001等)。PCH查找結點,除了標準的選擇條件之外,還可以應用評估路徑,這樣大大增強了PCH的可用性。同PNP邏輯數據庫一樣,PCH也許要在程序里聲明TABLES: OJBEC才可以使用,返回的也是objec結構。使用方法基本同PNP邏輯數據庫類似。所以也必須要添加三行:TABLES: OJBECINFOTYPES: nnnn GET OBJEC. IDES系統里有例程: ZHSOL0102.3 邏輯數據庫的選擇屏幕2.3.1 PNP的選擇屏幕默認的PNP選擇屏幕如下:屏幕主要分為兩個部分,期間選擇和條件選擇,最上面一排按鈕還可以進行進一步選擇

7、。同時,我們還可以自定義我們的選擇屏幕。標準選擇屏雖然功能完備,但界面繁瑣,很多時候客戶并不接受,所以我們大多都使用自定義的選擇屏幕。注意: 在下面選擇窗口中的組織結構選擇,只能找尋這個組織部門下面的人員,如果還有子部門,邏輯數據庫并不能返回子部門的人員。如果想要返回子部門的人員,可以在上排按鈕中選擇組織結構,這里邊選擇的部門,會搜尋到下級子部門。使用自定義選擇屏幕,可在程序屬性里選擇。當我們關聯到PNP邏輯數據庫,再進屬性界面,會多出個按鈕HR報告類,這就是我們可以自定義選擇界面的地方。在HR報告類中,可以創建、選擇系統提供的和我們自定義的選擇屏幕。選擇屏幕也可以在IMG里定義。我們可以再報

8、表類別中創建我們自定義的報表選擇條件,這樣基本上能滿足客戶的需要。例如:注意: 報表類是必須選擇現有的字段,如果標準里沒有需要的選擇條件,我們可以在程序里自定義屏幕選擇,但自定義的選擇條件并不會影響PNP邏輯數據庫的選擇,需要我們自己處理。標準的屏幕選擇定義在程序: DBPNPSEL。如果我們需要在程序的初始屏幕賦值或做一下定制化的內容,可參考程序DBPNPSEL里的定義。其中最常見的客戶要求可能就是時間期間選擇。客戶通常希望能按自己的要求來自動選擇期間,我們可以用程序變式的方式來實現,但有時候,客戶的要求我們也可以再程序初始化的實現,尤其是一些按鈕的選擇,讓他們出現在默認狀態也是客戶經常提出

9、的。例如,客戶想把期間選擇默認為當前月,其實很簡單,在初始化的時候加入代碼:  PNPTIMED = 'M'.   "當前月這些變量的聲明都可以再DBPNPSEL里找到,我們只要仔細研究這些聲明,很多事情我們都可以再初始化的時候做。2.3.2 PCH的選擇屏幕PCH選擇屏幕沒有報告類可以配置,因為他的默認選擇屏幕相對比較簡單。這個界面只有期間選擇和對象選擇,所以沒有報告類可供我們自由配置。這些在大多時候很難滿足我們的業務需要,但我們最長用到的評估路徑選擇也是可以很容易加入進去。在代碼中除了聲明 TA

10、BLE ojbec之外,我們只要在聲明 TABLE gdstr,就可以出現評估路徑的選擇界面這樣的界面基本上就能滿足我們大部分的需要了,如果還有不夠的,那我們可以還可以再程序里自己定義屏幕選擇條件。同樣,我們自己定義的屏幕選擇條件是不影響邏輯數據庫的返回值,所以要我們根據選擇條件自己再進行后續處理。大部分時候,對象類型,評估路徑等內容我們都會根據程序確定好,做成默認輸入,或者干脆隱藏起來,但如果要影響PCH邏輯數據庫的返回值,objec和gdstr是必須要聲明的。程序DBPCHSEL聲明了PCH選擇屏幕的選擇字段,我們可以仿照PNP的處理方法對初始屏幕進行定義。3. HR報表開發3.1 HR相

11、關數據庫表HR報表開發很肯定會涉及到數據庫表,因為SAP的數據都存放在表里。PNP邏輯數據最常用的就是PAnnnn的表,人事數據的信息類型數據都存放在這些表中,PNP其實就是從這些表中抓取的數據,所以如果我們需要一些數據,可以直接手動從這些表中抓取。邏輯數據庫返回的結構Pnnnn其實就是表PAnnnn的子結構,所以想詳細了解Pnnnn的結構,只需要仔細研究PAnnnn的定義即可。PCH邏輯數據庫對應的是表HRPnnnn,一般我們常碰到就是HPR1000、HRP1001,這兩個表分別是對象定義和對象關系。一個對象的自身描述都是定義在HRP1000里包括起始時間、名稱等,而兩個對象的關系則定義在H

12、RP1001,如果想關聯兩個對象,那HRP1001表就是最好的查找對象。當然還有很多我們常碰到的表,通過F1幫助,我們大多都能找到他們。3.2 常用函數和宏HR常用邏輯數據庫,尤其是PNP邏輯數據庫提供很多常用的宏和函數供我們使用。3.2.1 宏RP_PROVIDE_FROM_FRST和RP_PROVIDE_FROM_LAST宏RP_PROVIDE_FROM_FRST和RP_PROVIDE_FROM_LAST是一對相對應的宏,也是我們PNP邏輯數據庫里最常用的一組宏。這對宏的作用就是在返回個人信息的結構Pnnnn里提取時間最早和時間最晚的記錄。具體用法:RP_PROVIDE_FROM_FRST

13、 Pnnnn subtype BEGDA ENDDARP_PROVIDE_FROM_LAST Pnnnn subtype BEGDA ENDDA其中Pnnnn就是要處理的信息類型,subtype處填寫子信息類型,如果沒有字信息類型,此處傳入 SPACE,后面兩個是參數時間,即開始時間和結束時間。這個宏處理過后,會將開始時間和結束時間之間的,時間最早(晚)的一條數據,放入Pnnnn表頭(工作區)。PNP還有許多有用的宏,可以幫助我們快速處理數據,具體宏的定義,可參見程序DBPNPMAC。3.2.2 函數 RH_STRUC_GET個人感覺,這個函數是最好用最常用的一個函數之一,無論是PNP和PCH

14、,這個函數在程序里都是最好補充。這個函數是根據評估路徑返回一個objec結構的內表,這就相當于在程序里又調用了一次PCH邏輯數據庫的感覺。因為我們每次只能選擇一個邏輯數據庫,所以在PNP里或是在PCH里,想再次通過評估路徑來查找一些信息,這個函數都提供了很方便的功能。只要給一個入口,然后再loop返回的內表,相當于在成立內嵌了一個小的PCH邏輯應用,十分好用。例如:CALL FUNCTION 'RH_STRUC_GET'    EXPORTING      a

15、ct_otype      = 'O'      act_objid      = t_itab-objid      act_wegid      = 'PERS-O'     

16、0;act_plvar      = '01'      act_begda      = pchoend    " 期末      act_endda      = pchoend 

17、   TABLES      result_objec   = tab_org1    EXCEPTIONS      no_plvar_found = 1      no_entry_found = 2     

18、60;OTHERS         = 3.有了評估路徑,無論是從O,S,P,我們都可以通過函數找到我們需要的結點。PNP里是以P 為主,如果我們想得到相關O、S的信息;或是在PCH里進行二次的查找,這個函數都是十分管用的。3.2.3 函數HR_READ_FOREIGN_OBJECT_TEXT在SAP系統中,大部分對象存在的方式的都是以ID的方式記錄在數據庫表中,HR模塊也不例外,但是HR報表中,絕大部分的可以都希望顯示名稱,這時函數HR_READ_FOREIGN_OBJECT_TEXT就非常有

19、用。當然你也可以把它寫到公共子例程里隨時調用,我就是這么使用的。這個函數是返回對象的名稱文本,例如:  CALL FUNCTION 'HR_READ_FOREIGN_OBJECT_TEXT'      EXPORTING        otype             &

20、#160;           = 'O'        objid                         = &

21、#160;g_orgeh        begda                         = pn-endda        endda   

22、;                      = pn-endda       IMPORTING*           SHORT_TEXT    

23、                =        object_text                   = l_dw_text  &#

24、160;    EXCEPTIONS         nothing_found                 = 1         wrong_objecttype  

25、60;           = 2         missing_costcenter_data       = 3         missing_object_id    &

26、#160;        = 4         OTHERS                        = 53.2.4 函數PYXX_READ_PAYROLL_R

27、ESULT這個函數主要是獲取員工工資,大部分時間要和函數CU_READ_RGDIR配合使用,這里不再贅述,由于用法比較簡單可自行揣摩。值得注意的地方就是函數CU_READ_RGDIR函數返回結果中表項srtza的篩選和PYXX_READ_PAYROLL_RESULT返回表工資是放在payroll_result-inter-rt內表中舉例:CALL FUNCTION 'CU_READ_RGDIR'    EXPORTING      persnr &#

28、160;                 = ipernr*     BUFFER                   =*    

29、0;NO_AUTHORITY_CHECK       = ' '*     IMPORTING*     MOLGA                    =   

30、 TABLES      in_rgdir                 = prgdir  "pc261結果表 EXCEPTIONS   no_record_found         

31、 = 1   OTHERS                   = 2.  loop at prgdir where FPPER = iperiod and SRTZA = 'A' and PA

32、YTY = ' '.    pseqnr = prgdir-SEQNR.  endloop.  CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'          EXPORTING*        

33、60;clusterid                          =            employeenumber       

34、60;             = ipernr            sequencenumber                    

35、 = pseqnr*         READ_ONLY_BUFFER                   = ' '*         READ_ONLY_INTERNAT

36、IONAL            = ' '*         ARC_GROUP                      

37、0;   = ' '            check_read_authority               = 'X'*         FI

38、LTER_CUMULATIONS                 = 'X'*         CLIENT                 &

39、#160;           =*       IMPORTING*         VERSION_NUMBER_PAYVN               =* 

40、60;       VERSION_NUMBER_PCL2                =          CHANGING            

41、;payroll_result                     = tpayresult         EXCEPTIONS            illega

42、l_isocode_or_clusterid       = 1            error_generating_import            = 2         

43、;   import_mismatch_error              = 3            subpool_dir_full             &#

44、160;     = 4            no_read_authority                  = 5         

45、;   no_record_found                    = 6            versions_do_not_match              = 7            error_reading_archive              = 8       &#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論