HR常用增强

博客详细介绍了在SAP的人力资源管理模块中,如何对OM模块的HRBAS00INFTY进行增强,包括PPOME拖动的校验与日志更新,实岗与标岗的同步,以及使用Z表存储长文本。此外,还讨论了结构化授权增强,以及PA模块中关于成本分配、合同信息、兼岗信息、税务信息和合同管理的场景,涉及到后台处理、权限控制和数据同步等问题。
摘要由CSDN通过智能技术生成


最近在做了好多HR的增强整理下,希望能坚持下来持续更新记录

OM模块HRBAS00INFTY

场景1 PPOME拖动人、岗是做校验、更新日志用于跑job程序更新履历信息

1、在AFTER_INPUT里做校验部分情况不允许拖动

    CHECK sy-tcode = 'PPOME' .
    DATA(ls_new) = new_innnn.
    DATA(ls_old) = old_innnn.
    IF ls_new-endda = '99991231'.
      lv_datum = ls_new-begda.
      IF  ls_new-otype = 'P' AND ls_new-varyf(1) = 'S'  AND ls_new-infty = '1001'.
        IF ls_old-objid = ls_new-objid AND ls_old-otype = ls_new-otype.
          "  人员拖动
          IF ls_new-otype = 'P' AND ls_new-infty = '1001'.
            lv_pernr = ls_new-objid.
            SELECT * INTO TABLE @DATA(lt_1001)
              FROM hrp1001
              WHERE objid = @lv_pernr
                AND otype = 'P'
                AND rsign = 'B'
                AND relat = '008'
                AND begda LE @ls_new-begda
                AND endda GE @ls_new-begda.
            IF  lines( lt_1001 ) > 1.
              MESSAGE e002(zhr_message) WITH lv_pernr '存在兼岗信息不允许拖动'.
            ENDIF.
          ENDIF.
        ENDIF.
      ELSE.
      ENDIF.
    ENDIF.

2、在IN_UPDATE中记录日志表核心代码如下

    CHECK sy-tcode = 'PPOME' AND sy-ucomm  = 'SAVE'.
    LOOP AT new_image INTO DATA(ls_new) WHERE endda = '99991231'.

      CLEAR: lv_flag, lv_msg, lv_pernr.
      CLEAR: lt_objec_old[], lt_objec_new[].
      CLEAR: ls_yd , lt_yd[].

      lv_datum = ls_new-begda.

      IF ( ( ls_new-otype = 'P' AND ls_new-varyf(1) = 'S' )  OR ( ls_new-otype = 'S'  AND ls_new-varyf(1) = 'O' ) )  AND ls_new-infty = '1001'.
      ELSE.
        CONTINUE.
      ENDIF.

      READ TABLE old_image INTO DATA(ls_old) WITH KEY objid = ls_new-objid otype = ls_new-otype.
      IF sy-subrc = 0.
        "  人员拖动
        IF ls_new-otype = 'P' AND ls_new-infty = '1001'.
        ENDIF.
        "  岗位拖动
        IF ls_new-otype = 'S' AND ls_new-infty = '1001'.
        ENDIF.
    IF lt_zsy_d_hr0098c IS NOT INITIAL.
      MODIFY zsy_d_hr0098c FROM TABLE lt_zsy_d_hr0098c.
      CLEAR: lt_zsy_d_hr0098c.
    ENDIF.
  ENDMETHOD.

场景2 实岗挂标岗是自动根据标岗岗位说明书更新实岗岗位说明书

尝试了很多方法都没能完美的实现,最开始在程序中直接用RH_PNNNN_MAINTAIN进行更新,发现实岗岗位说明书更新了,但是标岗没挂上。后来封装函数用starting new task 的方式,发现创建的时候会有问题。最后用仿照标准写写buffer的方式,目前测试还行基本没问题
1、在AFTER_INPUT把要更新的实岗岗位说明书的信息写入buffer中

        CALL FUNCTION 'RHOM_WRITE_INFTY_BUFFERED'
          EXPORTING
            fcode             = lv_fcode
            plvar             = lv_plvar
            otype             = lv_otype
            objid             = lv_objid
            infty             = lv_infty
            istat             = lv_istat
            begda             = lv_begda
            endda             = lv_endda
*           NEW_LANGU         =
*           UPDATE_DB         =
*           WORST_MSGTY       =
          TABLES
            innnn_exp         = lt_record
          EXCEPTIONS
            no_active_plvar   = 1
            write_error       = 2
            infty_not_allowed = 3
            OTHERS            = 4.

场景3 用Z表模仿1002为信息类型存放长文本

1、长文本屏幕处理逻辑完全复制1002的屏幕及逻辑

"PBO部分主要调整代码
  CLEAR: gs_dyntab_1col,
         gt_dyntab_1col[].
  LOOP AT dyn_tab ASSIGNING <gs_dyn_tab>.

    gs_dyntab_1col-vdata = <gs_dyn_tab>-vdata.
    APPEND gs_dyntab_1col TO gt_dyntab_1col.

  ENDLOOP.
  IF gv_key = p9903-
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值