【ABAP】HR开发的几个函数

 HR_INFOTYPE_OPERATION: 锁定人员编号

*锁定人员编号 
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE' 
  EXPORTING 
    number = pernr-pernr 
*   IMPORTING 
*   RETURN = 
  .

BAPI_EMPLOYEE_DEQUEUE: 解锁人员编号

*解除锁定 
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE' 
  EXPORTING 
    number = pernr-pernr 
* IMPORTING 
*   RETURN = 
  .

 HR_INFOTYPE_OPERATION: 保存、修改、删除、锁定infotype记录

*新建信息类型   保存、修改、删除、锁定 
CALL FUNCTION 'HR_INFOTYPE_OPERATION' 
  EXPORTING 
    infty         = '0001' 
    number        = p0001-pernr 
*   SUBTYPE       = ' ' 
*   OBJECTID      = 
    lockindicator = p0001-sprps 
    validityend   = p0001-endda 
    validitybegin = p0001-begda 
    recordnumber  = p0001-seqnr 
    record        = p0001 
    operation     = 'INS' "INS,MOD,DEL,插入,修改,保存 
*   TCLAS         = 'A' 
    dialog_mode   = '1' 
*   NOCOMMIT      = 
*   VIEW_IDENTIFIER        = 
*   SECONDARY_RECORD       = 
  IMPORTING 
    return        = zreturn 
    key           = zpakey. 
COMMIT WORK.

 HR_READ_INFOTYPE: 读取Infotype里面的数据

读取该人员编号下的某种信息类型(如:人力资源主记录:信息类型0001)的数据

传入pernr 人员编号

infty 信息类型;

传出 subrc 返回码

infty_tab(表) 查询到的数据

DATA: 
  lv_pernr TYPE pernr-pernr, "人员编号 
  lv_infty TYPE prelp-infty, "信息类型 
  lv_subrc TYPE sysubrc 
  . 
DATA lt_0001 TYPE TABLE OF p0001. 

lv_pernr = '00000042'. 
lv_infty = '0001'. 

CALL FUNCTION 'HR_READ_INFOTYPE' 
  EXPORTING 
*   TCLAS     = 'A' 
    pernr     = lv_pernr 
    infty     = lv_infty 
*   BEGDA     = '18000101' 
*   ENDDA     = '99991231' 
*   SPRPS     = '*' 
*   BYPASS_BUFFER         = ' ' 
*   LEGACY_MODE           = ' ' 
  IMPORTING 
    subrc     = lv_subrc 
  TABLES 
    infty_tab = lt_0001 
* EXCEPTIONS 
*   INFTY_NOT_FOUND       = 1 
*   INVALID_INPUT         = 2 
*   OTHERS    = 3 
  . 
IF sy-subrc <> 0. 
* Implement suitable error handling here 
ENDIF.

RH_STRUC_GET:

注意:

参数act_objid不可以直接赋值=‘10’,通过定义参数lv_objid(NUMC8类型)

评估路径 act_wegid可查透明表T778A

常用评估路径:

O-O 高级别的组织单位
O-O-OR 较高级合法结构
O-O-P 组织单位的内部人员(直接组织分配)
O-O-S 组织结构中组织单位之下的所有职位
O-O-S-BU PMG: 财政状况的组织结构
O-O-S-P 依据组织结构的人员分配
O-O-VACS 评估外部发布 O B750 S (从 O 到 O 到空缺职位)
O-O_DOWN 组织结构(向低级排序)
  CALL FUNCTION 'RH_STRUC_GET' 
    EXPORTING 
      act_otype = lv_otype_o "O 对象类型 
      act_objid = lv_orgeh " 对象标识 
      act_wegid = 'O-O_DOWN' 
      act_plvar = lv_plvar "01 计划版本 
      act_begda = sy-datum 
      act_endda = sy-datum 
    TABLES 
      result_objec = lt_objec 
    EXCEPTIONS 
      no_plvar_found = 1 
      no_entry_found = 2 
      OTHERS = 3.

4.6 获取人员工资项

使用到了3个FM:

1) CU_READ_RGDIR薪资报表中用于获取期间

2) PYXX_READ_PAYROLL_RESULT根据索引号得到工资数据

3) CU_READ_RGDIR 获取索引

2、3一般搭配使用

函数PYXX_READ_PAYROLL_RESULT的PAYROLL_RESULT参数是动态类型的,

根据国家地区不同,参考不同的类型:

clusterid = 'RG'(英国)时,payroll_result参数的类型为PAYGB_RESULT

clusterid = 'CN'(中国)时payroll_result参数的类型为PAYCN_RESULT

......

CALL FUNCTION 'CU_READ_RGDIR'

EXPORTING

persnr = pernr

* BUFFER =

* NO_AUTHORITY_CHECK = ' '

* IMPORTING

* MOLGA =

TABLES

in_rgdir = gt_rgdir

EXCEPTIONS

no_record_found = 1

others = 2

.

CALL FUNCTION 'CD_READ_LAST'

EXPORTING

begin_date = pn-begda

end_date = pn-endda

IMPORTING

out_seqnr = gv_nr

TABLES

rgdir = gt_rgdir

EXCEPTIONS

no_record_found = 1

others = 2.

IF sy-subrc = 0.

CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'

EXPORTING

* CLUSTERID = 'CN'

employeenumber = pernr

sequencenumber = gv_nr

* READ_ONLY_BUFFER = ' '

* READ_ONLY_INTERNATIONAL = ' '

* ARC_GROUP = ' '

* CHECK_READ_AUTHORITY = 'X'

* FILTER_CUMULATIONS = 'X'

* CLIENT =

* IMPORTING

* VERSION_NUMBER_PAYVN =

* VERSION_NUMBER_PCL2 =

CHANGING

payroll_result = gs_payresult

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

.

ENDIF.

给TA打赏
共{{data.count}}人
人已打赏
ABAPSAP

【ABAP】修改采购申请BAPI-BAPI_PR_CHANGE

2021-6-23 19:39:55

ABAPSAP

【ABAP】native sql

2021-6-28 16:13:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索