1. 程式人生 > >HR開發(個人總結 有點亂哦)

HR開發(個人總結 有點亂哦)

業務需求:

完成一張員工績效考評的明細表,其樣子大致為:

成本中心 成本中心名稱 部門名稱 崗位描述 員工子組 員工編號 姓名 入職日期 異動本崗位日期 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 合計
C007101410 八角北里店 服務檯員工 6652 XX 19981101 20130101 92 93 93 90 99 99 102 90 85 87 93 75 1098
C007101410 八角北里店 長病人員 6655 XX 19981101 90 91 93 78 352

涉及關鍵技術:

1、動態表的建立

2、HR相關開發技術

3、邏輯資料庫技術

首先從第二點 HR相關開發技術講解:

(HR報告類)新建程式的時候:新增邏輯資料庫 且在程式中引用相關的結構【TABLES PERNR 】,會出現自動的查詢介面。下面兩個圖中自動展示。此可以成為HR  報告類技術,也是邏輯資料庫的一大優勢。



2. 怎麼獲取動態列和動態表格

a.獲取列數

通過期間之間的差值,可以獲取期間的數量,結合其他的固定列可以算出列數。涉及函式FIMA_DAYS_AND_MONTHS_AND_YEARS

程式碼如下:

CALL FUNCTION 

'FIMA_DAYS_AND_MONTHS_AND_YEARS'
  EXPORTING
    I_DATE_FROM          PN-BEGPS
*   I_KEY_DAY_FROM       = I_KEY_DAY_FROM
    I_DATE_TO            PN-ENDPS
*   I_KEY_DAY_TO         = I_KEY_DAY_TO
*   I_FLG_SEPARATE       = ' '
 IMPORTING
*   E_DAYS               = E_DAYS
   E_MONTHS             G_NUMB
*   E_YEARS              = E_YEARS

B:建立動態內表

大致步驟:1.首先建立一個儲存表列資訊的內表,暫定為A內表,之後給內表賦值。

2、通過內表,創建出一個以此內表的行資料為列資訊的內表,定義為B內表, 那麼此時動態內表已經建立完整

具體程式碼如下:

FORM SUB_DY_TABLE .
DATAI_FIELDCAT LIKE TABLE OF LVC_S_FCAT,   "表字段表
      W_FIELDCAT LIKE LINE OF I_FIELDCAT.    "表字段工作區   此為 建立A內表和對應的工作區 
DATA NUM1  TYPE VALUE  0,
       NUM2  TYPE VALUE  0.
DEFINE  MARCO_ADDDYitab.
  W_FIELDCAT-FIELDNAME &1.
  W_FIELDCAT-DATATYPE  &2.
  W_FIELDCAT-INTLEN    &3.
  W_FIELDCAT-DECIMALS  &4.
  W_FIELDCAT-JUST      &5.
  APPEND W_FIELDCAT TO  I_FIELDCAT.
END-OF-DEFINITION .

MARCO_ADDDYitab :   "  給A內表賦值,作為B內表的列
           'KOSTL' 'CHAR' '10' '' 'L',         "成本中心
           'KTEXT' 'CHAR' '20' '' 'L',         "成本中心描述
           'STEXT' 'CHAR' '40' '' 'L',         "組織單位描述
"           'ORGID' 'NUMC' '8' '' 'L',          "單位
"           'PLANS' 'NUMC' '8' '' 'L',          "崗位
           'PLSTX' 'CHAR' '25' '' 'L',         "崗位描述
           'PTEXT' 'CHAR' '20' '' 'L',          "子組描述
           'PERNR' 'NUMC' '8' '' 'L',          "員工編號
           'ENAME' 'CHAR' '40' '' 'L',         "員工姓名
           'LZRQ' 'DATS' '8' '' 'L',           "入職日期
           'DAYPS' 'DATS' '8' '' 'L'.           "異動日期
CLEAR NUM1,NUM2 .
DO G_NUMB  TIMES.
  NUM2 NUM1 + PN-BEGDA+4(2.
  IF NUM1  0.
    G_WA_PERD-YEAR PN-BEGDA+0(4).
    G_WA_PERD-MONTH PN-BEGDA+4(2).
    APPEND G_WA_PERD TO G_IT_PERD.
  ELSEIF NUM1 <> AND NUM2 <= 12  .
     G_WA_PERD-YEAR PN-BEGDA+0(4).
     G_WA_PERD-MONTH PN-BEGDA+4(2+ NUM1 .
         APPEND G_WA_PERD TO G_IT_PERD.
   ELSE .
      G_WA_PERD-YEAR PN-BEGDA+0(41.
     G_WA_PERD-MONTH PN-BEGDA+4(2+ NUM1 12 .
         APPEND G_WA_PERD TO G_IT_PERD.
  ENDIF.
  CONCATENATE   C_NAME   G_WA_PERD-YEAR  G_WA_PERD-MONTH INTO T_NAME.
MARCO_ADDDYitab T_NAME  'CURR' '13' '2' 'L'.
NUM1 NUM1 + 1.
ENDDO.

MARCO_ADDDYitab :'SUM'  'CURR' '13' '2' 'L',
                'PJZ' 'CURR' '13' '2' 'L'.
***建立動態表
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE  “函式,建立內表 不過此處得到的為一個引用物件,我們必須給這個引用

物件進行解除(就是把它的資料地址分配給另外的數)  才能夠應用
    EXPORTING
      IT_FIELDCATALOG I_FIELDCAT
    IMPORTING
      EP_TABLE        EP_TABLE.
ASSIGN EP_TABLE->TO <T_DYNTABLE>.  ”解除資料物件,到指標<T_DYNTABLE>中,此時<T_DYNTABLE>就是代表一個內表,且為動態的內表
CREATE DATA  W_TABLE   LIKE LINE OF  <T_DYNTABLE>.
ASSIGN W_TABLE->TO <FS_DYNTABLE>.
兩個指標的定義
FIELD-SYMBOLS<T_DYNTABLE> TYPE STANDARD TABLE,"Dynamic internal table name
 ”              <FS_DYNTABLE> TYPE ANY,

ENDFORM.                    " SUB_DY_TABLE

3.獲取動態表頭

這個簡單:就是通過最先求得的列數,給fieldcat進行新增行

DATAG_IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
      G_WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV ,

FORM SUB_DY_FIELD .
DEFINE MARCO_ADDFIELD .
  G_WA_FIELDCAT-FIELDNAME  &1.
  G_WA_FIELDCAT-TABNAME    &2.
  G_WA_FIELDCAT-SELTEXT_M  &3.
  APPEND G_WA_FIELDCAT TO G_IT_FIELDCAT.
END-OF-DEFINITION .

MARCO_ADDFIELD :  'KOSTL'  '<T_DYNTABLE>' TEXT-001 ,
                   'KTEXT'  '<T_DYNTABLE>' TEXT-002 ,
                    'STEXT'  '<T_DYNTABLE>' TEXT-003 ,
                     'PLSTX'  '<T_DYNTABLE>' TEXT-004 ,
                      'PTEXT'  '<T_DYNTABLE>' TEXT-005 ,
                       'PERNR'  '<T_DYNTABLE>' TEXT-006 ,
                        'ENAME'  '<T_DYNTABLE>' TEXT-007 ,
                        'LZRQ'  '<T_DYNTABLE>' TEXT-008
      "                  ,'DAYPS'  '<T_DYNTABLE>' TEXT-009
                        .

  SORT G_IT_PERD BY YEAR MONTH ASCENDING.
  LOOP AT G_IT_PERD INTO G_WA_PERD.
    CONCATENATE G_WA_PERD-YEAR '年' G_WA_PERD-MONTH '月' INTO T_STRING.
    CONCATENATE C_NAME G_WA_PERD-YEAR G_WA_PERD-MONTH INTO T_NAME.
MARCO_ADDFIELD T_NAME  '<T_DYNTABLE>' T_STRING.
  ENDLOOP.
  MARCO_ADDFIELD :  'SUM'  '<T_DYNTABLE>' TEXT-011 ,
                   'PJZ'  '<T_DYNTABLE>' TEXT-012 .
ENDFORM

3:邏輯資料庫技術

START-OF-SELECTION .之後跟GET. 即:迴圈技術

START-OF-SELECTION .

  RP-SET-NAME-FORMAT.
PERFORM  SUB_SUMCOUNT.  "計算期間的個人
PERFORM  SUB_DY_table.  "建立動態內表
PERFORM  SUB_DY_FIELD.  "建立動態列
get  pernr .
PERFORM  GETDATA.

4.下面進行的是 賦值

此處用到的技術是 給 <FS_DYNTABLE>(動態表的工作區) 進行分解到 <I_FIELD>,對分解的部分 <I_FIELD>進行賦值,做到最工作區的賦值

相關程式碼如下:

LOOP AT G_IT_PERD INTO G_WA_PERD.

    CONCATENATE C_NAME G_WA_PERD-YEAR G_WA_PERD-MONTH INTO T_NAME.

    ASSIGN COMPONENT T_NAME OF STRUCTURE <FS_DYNTABLE> TO <I_FIELD>.  "將<FS_DYNTABLE> 的 t_name 元件分配給 <I_FIELD>

CONCATENATE G_WA_PERD-YEAR G_WA_PERD-MONTH INTO L_BEG.
*      CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
*        EXPORTING
*          DAY_IN            = L_BEG
*        IMPORTING
*          LAST_DAY_OF_MONTH = L_END
*        EXCEPTIONS
*          DAY_IN_NOT_VALID  = 1
*          OTHERS            = 2.
SORT P9011 DESCENDING .
READ TABLE P9011 WITH KEY  BEGDA+0(6L_BEG   .
IF sy-SUBRC .
<I_FIELD> P9011-ZZHR_MKHF.
wa_jixiao-col1 P9011-ZZHR_MKHF.
APPEND wa_jixiao  to i_jixiao .
ENDIF.
  ENDLOOP.

5.當然還有HR中怎麼取數

此處涉及技術: infotype   PXXXX表 等問題,相關具體文件 看看 我上傳的(HR學習資料),大致的程式碼如下:

"員工姓名
  SORT  P0001  DESCENDING  .
  SORT  p0000  DESCENDING .
  clear P0001 .
  CLEAR p0000.

 " RP_PROVIDE_FROM_last p0000 space pn-begda pn-endda .


  LOOP AT  p0000 where  massn 'ZD'.
    exit .
  ENDLOOP.

  IF  p0000-begda is INITIAL.

 LOOP AT  P0001 WHERE  begda <= pn-endda and endda >= pn-endda  .
  G_WA_OUTTAB-ENAME P0001-ENAME.
  G_WA_OUTTAB-KOSTL P0001-KOSTL.  "成本中心
  G_WA_OUTTAB-ORGEH P0001-ORGEH.   "組織單位
  G_WA_OUTTAB-PLANS P0001-PLANS.   "崗位
  G_WA_OUTTAB-PERSK P0001-PERSK.  "員工子組
  G_WA_OUTTAB-PERNR  P0001-PERNR .  "員工編號
  G_WA_OUTTAB-DAYPS  P0001-BEGDA.
 EXIT .

ENDLOOP.

ELSE.

LOOP AT  P0001 WHERE  BEGDA P0000-BEGDA AND ENDDA p0000-endDA  .

  G_WA_OUTTAB-ENAME P0001-ENAME.
  G_WA_OUTTAB-KOSTL P0001-KOSTL.  "成本中心
  G_WA_OUTTAB-ORGEH P0001-ORGEH.   "組織單位
  G_WA_OUTTAB-PLANS P0001-PLANS.   "崗位
  G_WA_OUTTAB-PERSK P0001-PERSK.  "員工子組
  G_WA_OUTTAB-PERNR  P0001-PERNR .  "員工編號
  G_WA_OUTTAB-DAYPS  P0001-BEGDA.
 EXIT .
ENDLOOP.

  ENDIF.

***資訊型別0001組織分配****"
"  RP_PROVIDE_FROM_LAST P0001 SPACE PN-BEGDA PN-BEGDA .
"  IF PNP-SW-FOUND = '1' .
***員工子組描述***
  IF g_wa_outtab-PERSK IS NOT INITIAL.
    SELECT SINGLE PTEXT INTO g_wa_outtab-PTEXT FROM T503T
                                       WHERE SPRSL SY-LANGU
                                        AND  PERSK g_wa_outtab-PERSK .
  ENDIF.
***員工組織***
    IF g_wa_outtab-orgeh IS NOT INITIAL.
      SELECT SINGLE orgtx INTO g_wa_outtab-STEXT
        FROM t527x  WHERE orgeh g_wa_outtab-orgeh
         AND  sprsl sy-langu
          AND begda < pn-BEGDA
         AND endda >  pn-BEGDA.
    ENDIF.
***員工崗位***
    IF g_wa_outtab-plans IS NOT INITIAL.
      SELECT SINGLE plstx INTO g_wa_outtab-plstx
        FROM t528t  WHERE plans g_wa_outtab-plans
         AND otype  'S'
         AND sprsl sy-langu
                  AND begda <=  pn-BEGDA
         AND endda >= pn-BEGDA.

    ENDIF.
***成本中心***
    IF g_wa_outtab-kostl IS NOT INITIAL.
      SELECT SINGLE ktext INTO  g_wa_outtab-ktext FROM cskt
                                WHERE spras sy-langu
                                AND kokrs 'COWM'
                                AND kostl g_wa_outtab-kostl.
    ENDIF.

"  ENDIF.

***資訊型別0041
***入司時間***
  PROVIDE dar01 dat01 FROM p0041 BETWEEN pn-begda and pn-endda
                                       WHERE p0041-dar01  =  'Z1'.
    g_wa_outtab-LZRQ p0041-dat01.
  ENDPROVIDE.

相關推薦

HR開發個人總結 有點

業務需求: 完成一張員工績效考評的明細表,其樣子大致為: 成本中心 成本中心名稱 部門名稱 崗位描述 員工子組 員工編號 姓名 入職日期 異動本崗位日期 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份 XXXX年XX月份

演算法複習個人整理簡

pca: z = wT*x; x*xT*w = r * w; kpca: fi(x) * fi(x)T *w = r*w svd: Ax = rx -> A W = W *S -> A = W * S * W-1 -> A = W*S*WT =>

iOS 崩潰日誌分析個人總結,最實用

要分析奔潰日誌需要三個檔案:crash日誌,symbolicatecrash分析工具,.dSYM符號集 0. 在桌面建立一個crash資料夾 1. 需要Xcode自帶的崩潰分析工具symbolicatecrash,這個檔案的位置參考:/Applications/Xcode.

軟體開發面試個人總結有工作經驗

應該如何自我介紹? 各位面試官好,我叫某某某,2015.7畢業於某某某大學某某某專業。2014年就職於某某某公司,擔任軟體開發,主要負責銀行前端交易和報文的轉化轉發,參與過烏商行的交易前端和中間業務翻寫,後期主要負責攀枝花商業銀行的前端維護和優化。我平時比較喜

Git基礎命令使用個人總結

down class 一次 onf set .net remote odin -a 個人在開發中整理常用的git命令,相信很多人會需要到的。 全局配置信息: git config --global user.name "Your name"

scrapy詳細資料流走向個人總結

  直接從資料流的角度來說比較容易理解: ·1、Spider建立一個初識url請求,把這個請求通過Engine轉給Scheduler排程模組。然後Scheduler向Engine提供一個請求(這個請求是一個真實的url請求) 疑問點一:為什麼Engine把請求發給Scheduler模組,然

scrapy詳細數據流走向個人總結

emp 這不 inf 處理 download 需要 pipe ddl gin 直接從數據流的角度來說比較容易理解: ·1、Spider創建一個初識url請求,把這個請求通過Engine轉給Scheduler調度模塊。然後Scheduler向Engine提供一個請求(這

java初級面試題個人總結

java基礎 1、String、StringBuffer以及StringBuild的區別? 答:這三個類之間的區別主要是在兩個方面,即執行速度和執行緒安全這兩方面     執行速度:StringBuilder > StringBuffer > String

阿里架構設計之初體驗,送給準備進階架構的朋友個人總結

1 基本概念和目的 架構設計的目的是為了解決系統複雜度帶來的問題,並不是要面面俱到,不需要每個架構都具備高效能、高可用、高擴充套件等特點,而是要識別出實際業務實際情況的複雜點,然後有有針對性地解決問題,即:有的放矢,而不是貪大求全。 在實際情況中,不一定每個系統都要做架

一個Activity多個Handler時,Message是如何傳遞的個人總結

作者:海岸線-haianxian  來源:CSDN  原文:https://blog.csdn.net/u010680097/article/details/52142396  版權宣告:本文為博主原創文章,轉載請附上博文連結!   上面是作者的原文

Doxygen使用教程個人總結

簡介Doxygen 一.什麼是Doxygen? Doxygen 是一個程式的檔案產生工具,可將程式中的特定批註轉換成為說明檔案。通常我們在寫程式時,或多或少都會寫上批註,但是對於其它人而言,要直接探索程式裡的批註,與打撈鐵達尼號同樣的辛苦。大部分有用的批註都是屬於針對函式

關於虛擬機器VMware 中橋接模式與nat模式的區別個人總結

一、橋接模式 1.本人通過網上的的查詢得到的答案是,橋接模式使用的是區域網模式,關聯的同時不會對主機網路產生很大的影響,但是我在配置的時候遇到的問題就是在不同的環境下,每次的ip地址都不一樣,導致每次都需要重新配置,橋接模式試用與在固定的網路下面使用,本人也通過配置靜態ip

Swift學習總結個人總結,以方便理解為主

swift總結 一、註冊cell 1.用nib, 向 tableview 註冊 cell 全域性變數 let cellIdentifier = "myCell" myTableView!.registerNib(UINib(nibName: "MyCell", bundle

關於移動端頁面開發微信內建瀏覽器總結

上個禮拜,剛入職就接到一個移動端的活動頁面專案,重點還是要相容微信瀏覽器,相容主流機型。在這之前,我所做的都是PC端的,想來兩者差別不大,實際動手時遇到的坑還是蠻多的。時間過去的有點久,我也不能把每個坑都列出來,只能寫些印象深刻的。   1、關於頁面背景    

軟體測試需要具備的知識體系個人總結

一、軟體的生命週期(SDLC,Systems Development Life Cycle,SDLC) 軟體計劃與可行性研究(問題定義、可行性研究);需求分析;軟體設計(概要設計、詳細設計);編碼;軟體測試;執行與維護 生存週期劃分          各階段的

sql語句合集大全個人總結

--查詢emp表 select * from emp; --查詢emp表的sal select a.SAL from emp a; --查詢emp表的ename select a.ename from

Delete出錯分析總結個人總結很到位 0x0000007ff64426f87e(ucrtbased.dll)處處於dataa.exe中引發的異常:

近日在除錯C++程式中new class 後delete 出現如下錯誤: * 0x0000007ff64426f87e(ucrtbased.dll)處(處於dataa.exe中)引發的異常:0xC0000005:讀取位置(0xffffffffffffff

關於activity工作流常用操作個人總結

1、部署流程定義 repositoryService.createDeployment().addClasspathResource(path+filename).deploy(); 2、刪除流程定義 ProcessDefinitionQuery quer

redis常用指令個人總結

Redis常用命令集 1)連線操作命令 quit:關閉連線(connection)auth:簡單密碼認證help cmd: 檢視cmd幫助,例如:help quit 2)持久化 save:將資料同步儲存到磁碟bgsave:將資料非同步儲存到磁碟lastsave:返回上次

select-2 外掛使用個人總結簡易使用

首先看看index頁面,可通用 {extend name="layout" /} {block name="plugins-css"} <link href="__LIBS__/jquery-nestable/jquery.nestable.css" r