SAP HR中通过员工号获得payroll result
文章目录
前言
我们在PC_PAYRESULT中可以看到相关payroll,其中我们要注意到几个业务的点。
历经期结束,所在期间结束,序列。
历经期结束,所在期间结束,这个两个字段数据如果不同,有可能该人员岗位变更,sap系统自动重算了上个月的薪资数据,这种数据可能是我们不需要的所以在代码上可以去掉。
序列的字段 是下面有相关的函数要使用到,其中每一列的详细数据是根据簇表存储的,要根据序列去查询。
一、簇表
双击一行数据
我们可以看到该行数据所存储的簇表列,例如TCRT,双击该行
我们可以看到所有的工资项数据
二、函数
1.CU_READ_RGDIR
获取序列号
代码如下(示例):
REFRESH lt_rgdir.
CALL FUNCTION 'CD_READ_RGDIR'
EXPORTING
persnr = lv_pernr
TABLES
in_rgdir = lt_rgdir
EXCEPTIONS
no_record_found = 1
OTHERS = 2.
此时应删LT_RGDIR 中无用的数据行
2.PYXX_GET_RELID_FROM_PERNR
CALL FUNCTION 'PYXX_GET_RELID_FROM_PERNR'
EXPORTING
employee = lv_pernr
IMPORTING
relid = lv_relid
molga = lv_molga
EXCEPTIONS
error_reading_infotype_0001 = 1
error_reading_molga = 2
error_reading_relid = 3
OTHERS = 4.
2.PYXX_READ_PAYROLL_RESULT
代码如下(示例):
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = lv_relid
employeenumber = lv_pernr
sequencenumber = lv_seqnr
CHANGING
payroll_result = ls_payroll
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
这里就获取到了簇表数据