文章目錄
- 前言
- 一、組織模塊相關表
- 二、創建相關函數和使用
- 1.RH_READ_INFTY
- 2.RH_INSERT_INFTY_EXP
- 注意點
- 前面有個坑,在這里埋一下
前言
第一次上HR模塊的項目,發現HR得表都很有意思,基本上靠一個模板創出來得表,剛剛接觸到這個模塊懂得還不是很多,還請多指教
一、組織模塊相關表
組織模塊得表以HRP開頭,這里記錄了組織相關信息得抬頭,其具體得行項目信息以HRT開頭為命名,在開發時創建相關的結構命名以P開頭,這倒是跟正常的PA30的信息類型一致。
二、創建相關函數和使用
盲猜和HR_INFOTYPE_OPERATION一樣底層使用的BDC錄屏
1.RH_READ_INFTY
看函數名,就可以發現這個讀取信息類型的函數,之所以先使用這個函數后面會說到
CALL FUNCTION
'RH_READ_INFTY'EXPORTINGPLVAR
= LV_PLVAROTYPE
= LV_OTYPEOBJID
= LS_BZMB
-ORGEHINFTY
= '9510'ISTAT
= LV_ISTATBEGDA
= SY
-DATUMENDDA
= SY
-DATUMTABLESINNNN
= LT_P9510
* OBJECTS
=EXCEPTIONSALL_INFTY_WITH_SUBTY
= 1NOTHING_FOUND
= 2NO_OBJECTS
= 3WRONG_CONDITION
= 4WRONG_PARAMETERS
= 5OTHERS
= 6.
2.RH_INSERT_INFTY_EXP
把函數名中的’INSERT’換成*號搜索一下,估計能查到相關的函數,大家自己試一下
CALL FUNCTION
'RH_INSERT_INFTY_EXP'EXPORTINGFCODE
= 'INSE'VTASK
= 'S'ORDER_FLG
= ''COMMIT_FLG
= 'X'TABLESINNNN
= LT_WPLOG_INSTNNNN
= LT_PT9510EXCEPTIONSNO_AUTHORIZATION
= 1ERROR_DURING_INSERT
= 2CORR_EXIT
= 3BEGDA_GREATER_ENDDA
= 4NO_INNNN_TNNNN
= 5ADDITIONAL_INNNN_TNNNN
= 6OTHERS
= 7.
注意點
我們用P****結構時,通常會使用一個類的方法,轉換成函數提供的結構
CALL METHOD CL_HR_PNNNN_TYPE_CAST
=>PNNNN_TO_WPLOGEXPORTINGPNNNN
= LS_P9510IMPORTINGWPLOG
= LS_WPLOG
.
前面有個坑,在這里埋一下
之前說到為什么要先read信息類型呢,而不是直接創建,這里我是觀察組織結構信息類型表得出的結論。當然像HRP1001這種標準的可能不會出現這種情況,根據自己實際情況使用。
首先
9開頭的表,有標準表一樣的關鍵字外,最后面還掛了一個TABNR字段,這是關聯他的T表(明細表),列如HRP9510對應的T表就是HRT9510
其次
T表,我關注了兩個字段,其中TABNR是與P表做關聯的,
那TABSEQNR字段,是作為序列號,這個字段是關鍵
如果我們不對這個字段進行賦值,INSTER函數會將T表進行覆蓋而達不到我們想要的結果。
下面是我寫的一段參考PEFROM,多多指點
FORM FRM_INS_INFTY TABLES PT_BZBM STRUCTURE ZTHRBG020USING PV_GUIDCHANGING PV_BZZQE_MESSAGE TYPE ZSHR_MESSAGE
.DATA
:LT_P9510 TYPE TABLE OF P9510
,LS_P9510 TYPE P9510
.DATA
:LT_WPLOG_INS TYPE STANDARD TABLE OF WPLOG
.DATA
:LS_WPLOG TYPE WPLOG
.DATA
:LT_PT9510 TYPE TABLE OF HRT9510
,LS_PT9510 TYPE HRT9510
.CONSTANTS
:LV_PLVAR TYPE PLOG
-PLVAR VALUE
'01',LV_ISTAT TYPE PLOG
-ISTAT VALUE
'1',LV_ENDDA TYPE PLOG
-ENDDA VALUE
'99991231',LV_OTYPE TYPE PLOG
-OTYPE VALUE
'O',LV_TABNR TYPE HRTABNR VALUE
'1',LV_LANGU TYPE SY
-LANGU VALUE
'1',LV_INFTY TYPE P9510
-INFTY VALUE
'9510'.DATA
: LV_BEGDA TYPE SY
-DATUM
.DATA
: LT_MESG TYPE TSMESG
.DATA
:LT_ZTHRBG020 TYPE TABLE OF ZTHRBG020
,LS_ZTHRBG020 TYPE ZTHRBG020
.DATA
:IDENT LIKE SY
-UZEIT
.LV_BEGDA
= SY
-DATUM
.SORT PT_BZBM BY ZGS ORGEH ZHR_BZLX ZHR_GWCJ
.LOOP AT PT_BZBM INTO
DATA(LS_BZMB
).CLEAR
:LS_P9510
.MOVE
-CORRESPONDING LS_BZMB TO LS_ZTHRBG020
.LS_ZTHRBG020
-GUID
= PV_GUID
.CALL FUNCTION
'MESSAGES_INITIALIZE' "消息初始化EXPORTINGI_IDENTIFICATION
= IDENTIMPORTINGE_IDENTIFICATION
= IDENTEXCEPTIONSOTHERS
= 0.CALL FUNCTION
'MESSAGES_ACTIVE' "激活消息EXCEPTIONSOTHERS
= 1."查詢CALL FUNCTION
'RH_READ_INFTY'EXPORTINGPLVAR
= LV_PLVAROTYPE
= LV_OTYPEOBJID
= LS_BZMB
-ORGEHINFTY
= '9510'ISTAT
= LV_ISTATBEGDA
= SY
-DATUMENDDA
= SY
-DATUMTABLESINNNN
= LT_P9510
* OBJECTS
=EXCEPTIONSALL_INFTY_WITH_SUBTY
= 1NOTHING_FOUND
= 2NO_OBJECTS
= 3WRONG_CONDITION
= 4WRONG_PARAMETERS
= 5OTHERS
= 6.IF SY
-SUBRC
<> 0.
* Implement suitable error handling hereENDIF
.READ TABLE LT_P9510 INTO
DATA(IS_P9510
) INDEX
1.IF SY
-SUBRC
= 0.LS_P9510
-PLVAR
= IS_P9510
-PLVAR
.LS_P9510
-OTYPE
= IS_P9510
-OTYPE
.LS_P9510
-OBJID
= IS_P9510
-OBJID
.LS_P9510
-ISTAT
= IS_P9510
-ISTAT
.LS_P9510
-BEGDA
= IS_P9510
-BEGDA
.LS_P9510
-ENDDA
= IS_P9510
-ENDDA
.LS_P9510
-INFTY
= IS_P9510
-INFTY
.LS_P9510
-ZHR_BZZQ
= IS_P9510
-ZHR_BZZQ
.LS_P9510
-TABNR
= IS_P9510
-TABNR
.LS_P9510
-AEDTM
= SY
-DATUM
.LS_P9510
-UNAME
= SY
-UNAME
.CLEAR
:LS_WPLOG
,LT_WPLOG_INS
.CALL METHOD CL_HR_PNNNN_TYPE_CAST
=>PNNNN_TO_WPLOGEXPORTINGPNNNN
= LS_P9510IMPORTINGWPLOG
= LS_WPLOG
.APPEND LS_WPLOG TO LT_WPLOG_INS
.CLEAR
:LS_PT9510
,LT_PT9510
.SELECT
* FROM HRT9510 INTO CORRESPONDING FIELDS OF TABLE LT_PT9510 WHERE TABNR
= LS_P9510
-TABNR
."查看崗位層級的行號SORT LT_PT9510 DESCENDING BY TABNR
.READ TABLE LT_PT9510 ASSIGNING FIELD
-SYMBOL(<FS_PT9510
>) WITH KEY ZHR_GWCJ
= LS_BZMB
-ZHR_GWCJ
.IF SY
-SUBRC
= 0.<FS_PT9510
>-ZHR_GWCJ
= LS_BZMB
-ZHR_GWCJ
.<FS_PT9510
>-ZHR_BZZS
= LS_BZMB
-ZSQBZS
.<FS_PT9510
>-ZHR_ZBZS01
= LS_BZMB
-ZBZS01
.<FS_PT9510
>-ZHR_ZBZS02
= LS_BZMB
-ZBZS02
.<FS_PT9510
>-ZHR_ZBZS03
= LS_BZMB
-ZBZS03
.<FS_PT9510
>-ZHR_ZBZS04
= LS_BZMB
-ZBZS04
.<FS_PT9510
>-ZHR_ZBZS05
= LS_BZMB
-ZBZS05
.<FS_PT9510
>-ZHR_ZBZS06
= LS_BZMB
-ZBZS06
.<FS_PT9510
>-ZHR_ZBZS07
= LS_BZMB
-ZBZS07
.<FS_PT9510
>-ZHR_ZBZS08
= LS_BZMB
-ZBZS08
.<FS_PT9510
>-ZHR_ZBZS09
= LS_BZMB
-ZBZS09
.<FS_PT9510
>-ZHR_ZBZS10
= LS_BZMB
-ZBZS10
.<FS_PT9510
>-ZHR_ZBZS11
= LS_BZMB
-ZBZS11
.<FS_PT9510
>-ZHR_ZBZS12
= LS_BZMB
-ZBZS12
.ELSE
.READ TABLE LT_PT9510 INTO
DATA(IS_PT9510
) INDEX
1.IF SY
-SUBRC
= 0.LS_PT9510
-TABNR
= LS_P9510
-TABNR
.LS_PT9510
-TABSEQNR
= IS_PT9510
-TABSEQNR
+ 1.LS_PT9510
-ZHR_GWCJ
= LS_BZMB
-ZHR_GWCJ
.LS_PT9510
-ZHR_BZZS
= LS_BZMB
-ZSQBZS
.LS_PT9510
-ZHR_ZBZS01
= LS_BZMB
-ZBZS01
.LS_PT9510
-ZHR_ZBZS02
= LS_BZMB
-ZBZS02
.LS_PT9510
-ZHR_ZBZS03
= LS_BZMB
-ZBZS03
.LS_PT9510
-ZHR_ZBZS04
= LS_BZMB
-ZBZS04
.LS_PT9510
-ZHR_ZBZS05
= LS_BZMB
-ZBZS05
.LS_PT9510
-ZHR_ZBZS06
= LS_BZMB
-ZBZS06
.LS_PT9510
-ZHR_ZBZS07
= LS_BZMB
-ZBZS07
.LS_PT9510
-ZHR_ZBZS08
= LS_BZMB
-ZBZS08
.LS_PT9510
-ZHR_ZBZS09
= LS_BZMB
-ZBZS09
.LS_PT9510
-ZHR_ZBZS10
= LS_BZMB
-ZBZS10
.LS_PT9510
-ZHR_ZBZS11
= LS_BZMB
-ZBZS11
.LS_PT9510
-ZHR_ZBZS12
= LS_BZMB
-ZBZS12
.APPEND LS_PT9510 TO LT_PT9510
.ENDIF
.ENDIF
.CALL FUNCTION
'RH_INSERT_INFTY_EXP'EXPORTINGFCODE
= 'INSE'VTASK
= 'S'ORDER_FLG
= ''COMMIT_FLG
= 'X'TABLESINNNN
= LT_WPLOG_INSTNNNN
= LT_PT9510EXCEPTIONSNO_AUTHORIZATION
= 1ERROR_DURING_INSERT
= 2CORR_EXIT
= 3BEGDA_GREATER_ENDDA
= 4NO_INNNN_TNNNN
= 5ADDITIONAL_INNNN_TNNNN
= 6OTHERS
= 7.ELSE
.LS_P9510
-PLVAR
= LV_PLVAR
.LS_P9510
-OTYPE
= LV_OTYPE
.LS_P9510
-OBJID
= LS_BZMB
-ORGEH
.LS_P9510
-ISTAT
= LV_ISTAT
.LS_P9510
-BEGDA
= LV_BEGDA
.LS_P9510
-ENDDA
= LV_ENDDA
.LS_P9510
-INFTY
= LV_INFTY
.LS_P9510
-ZHR_BZZQ
= PV_BZZQ
.LS_P9510
-AEDTM
= SY
-DATUM
.LS_P9510
-UNAME
= SY
-UNAME
.CLEAR
:LS_WPLOG
,LT_WPLOG_INS
.CALL METHOD CL_HR_PNNNN_TYPE_CAST
=>PNNNN_TO_WPLOGEXPORTINGPNNNN
= LS_P9510IMPORTINGWPLOG
= LS_WPLOG
.LS_PT9510
-TABSEQNR
= LS_PT9510
-TABSEQNR
+ 1.LS_PT9510
-ZHR_GWCJ
= LS_BZMB
-ZHR_GWCJ
.LS_PT9510
-ZHR_BZZS
= LS_BZMB
-ZSQBZS
.LS_PT9510
-ZHR_ZBZS01
= LS_BZMB
-ZBZS01
.LS_PT9510
-ZHR_ZBZS02
= LS_BZMB
-ZBZS02
.LS_PT9510
-ZHR_ZBZS03
= LS_BZMB
-ZBZS03
.LS_PT9510
-ZHR_ZBZS04
= LS_BZMB
-ZBZS04
.LS_PT9510
-ZHR_ZBZS05
= LS_BZMB
-ZBZS05
.LS_PT9510
-ZHR_ZBZS06
= LS_BZMB
-ZBZS06
.LS_PT9510
-ZHR_ZBZS07
= LS_BZMB
-ZBZS07
.LS_PT9510
-ZHR_ZBZS08
= LS_BZMB
-ZBZS08
.LS_PT9510
-ZHR_ZBZS09
= LS_BZMB
-ZBZS09
.LS_PT9510
-ZHR_ZBZS10
= LS_BZMB
-ZBZS10
.LS_PT9510
-ZHR_ZBZS11
= LS_BZMB
-ZBZS11
.LS_PT9510
-ZHR_ZBZS12
= LS_BZMB
-ZBZS12
.APPEND LS_PT9510 TO LT_PT9510
.AT END OF ORGEH
.APPEND LS_WPLOG TO LT_WPLOG_INS
.CALL FUNCTION
'RH_INSERT_INFTY_EXP'EXPORTINGFCODE
= 'INSE'VTASK
= 'S'ORDER_FLG
= ''COMMIT_FLG
= 'X'TABLESINNNN
= LT_WPLOG_INSTNNNN
= LT_PT9510EXCEPTIONSNO_AUTHORIZATION
= 1ERROR_DURING_INSERT
= 2CORR_EXIT
= 3BEGDA_GREATER_ENDDA
= 4NO_INNNN_TNNNN
= 5ADDITIONAL_INNNN_TNNNN
= 6OTHERS
= 7.CLEAR
:LS_PT9510
,LT_PT9510
.ENDAT
.ENDIF
.IF SY
-SUBRC
= 0.COMMIT WORK AND WAIT
.LS_ZTHRBG020
-MSGTY
= 'S'.LS_ZTHRBG020
-MSGTX
= '更新成功'.E_MESSAGE
-MSGTY
= 'S'.E_MESSAGE
-MSGTX
= '更新成功'.ELSE
.CALL FUNCTION
'BAPI_TRANSACTION_ROLLBACK'.CALL FUNCTION
'MESSAGES_GIVE' "獲取消息TABLEST_MESG
= LT_MESG
.READ TABLE LT_MESG INTO
DATA(LS_MESG
) WITH KEY MSGTY
= 'E'.IF SY
-SUBRC
= 0.LS_ZTHRBG020
-MSGTY
= LS_MESG
-MSGTY
.LS_ZTHRBG020
-MSGTX
= LS_MESG
-TEXT
.E_MESSAGE
-MSGTY
= LS_MESG
-MSGTY
.E_MESSAGE
-MSGTX
= LS_MESG
-TEXT
.ELSE
.LS_ZTHRBG020
-MSGTY
= 'E'.LS_ZTHRBG020
-MSGTX
= '更新失敗'.E_MESSAGE
-MSGTY
= 'E'.E_MESSAGE
-MSGTX
= '更新失敗'.ENDIF
.ENDIF
.APPEND LS_ZTHRBG020 TO LT_ZTHRBG020
.CLEAR
:LS_BZMB
,LS_ZTHRBG020
.ENDLOOP
.MODIFY ZTHRBG020 FROM TABLE LT_ZTHRBG020
.IF SY
-SUBRC
= 0.COMMIT WORK AND WAIT
.ELSE
.ROLLBACK WORK
.ENDIF
.ENDFORM
.
總結
以上是生活随笔為你收集整理的HR模块-组织信息类型创建-PP01的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。