最近正在编几张HR的报表,把用到的一些BAPI和FM整理一下
- 读取信息类型
CALL FUNCTION ' HR_READ_INFOTYPE '
EXPORTING
TCLAS = ' A '
PERNR = L_OBJID
INFTY = ' 0001 '
BEGDA = SY - DATUM
ENDDA = SY - DATUM
TABLES
INFTY_TAB = P0001
其中 TCLAS " A = employee, B = applicant
INFTY " infotype
PERNR " employee number
CALL FUNCTION ' RH_READ_INFTY '
* EXPORTING
* AUTHORITY = ' DISP '
* WITH_STRU_AUTH = ' X '
* PLVAR =
* OTYPE =
* OBJID =
* INFTY = ' '
* ISTAT = ' '
* EXTEND = ' X '
* SUBTY = ' '
* BEGDA = ' 19000101 '
* ENDDA = ' 99991231 '
* CONDITION = ' 00000 '
* INFTB = ' 1 '
* SORT = ' X '
* VIA_T777D = ' '
TABLES
INNNN =
* OBJECTS =
* EXCEPTIONS
* ALL_INFTY_WITH_SUBTY = 1
* NOTHING_FOUND = 2
* NO_OBJECTS = 3
* WRONG_CONDITION = 4
* WRONG_PARAMETERS = 5
* OTHERS = 6
其中 OBJID “employee number - 读取RT表
× 读取RGDIR
CALL FUNCTION ' CU_READ_RGDIR '
EXPORTING
PERSNR = L_PERNR
TABLES
IN_RGDIR = TAB_IN_RGDIR
LOOP AT TAB_IN_RGDIR WHERE SRTZA = 'A' AND FPPER = L_FPPER.
L_SEQNR = TAB_IN_RGDIR-SEQNR.
ENDLOOP.
×读PAYROLL表
CALL FUNCTION ' PYXX_READ_PAYROLL_RESULT '
EXPORTING
EMPLOYEENUMBER = L_PERNR2
SEQUENCENUMBER = L_SEQNR
CHECK_READ_AUTHORITY = ' X '
CHANGING
PAYROLL_RESULT = L_PY_RESULT - 和时间有关的FM
×根据当前月的开始日,得到结束日
CALL FUNCTION ' SLS_MISC_GET_LAST_DAY_OF_MONTH '
EXPORTING
DAY_IN = SY - DATUM
IMPORTING
LAST_DAY_OF_MONTH = G_ENDDA
×取得时间文本
CALL FUNCTION ' ZFUN0012 '
EXPORTING
I_DATE = PN - BEGDA
IMPORTING
E_DATE_TEXT = BEGDA_TEXT. - 读取标准工时
CALL FUNCTION ' HR_PERSONAL_WORK_SCHEDULE '
EXPORTING
PERNR = REC_PER - PERNR
BEGDA = PN - BEGDA
ENDDA = PN - ENDDA
TABLES
PERWS = TAB_PERWS - 读取跨月情况下的缺勤时数
CALL FUNCTION ' HR_PERSONAL_WORK_SCHEDULE '
EXPORTING
PERNR = PERNR - PERNR
BEGDA = L_BEGDA
ENDDA = L_ENDDA
TABLES
PERWS = L_TAB_PERWS
LOOP AT L_TAB_PERWS.
P_STDAZ = P_STDAZ + L_TAB_PERWS - STDAZ.
ENDLOOP. - 用ALV方式展现
CALL FUNCTION ' REUSE_ALV_GRID_DISPLAY '
EXPORTING
I_CALLBACK_PROGRAM = SY - REPID
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = L_TAB_FIELDCAT
I_GRID_TITLE = L_TITLE
TABLES
T_OUTTAB = L_TAB_DATA - 等待补充...