HR 更新信息类型的函数

FUNCTION zhrf_0531_create.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IS_INPUT) TYPE  P0531
*"     VALUE(IV_ACTIO) TYPE  PSPAR-ACTIO
*"  EXPORTING
*"     VALUE(ES_MESSAGE) TYPE  BAPIRETURN1
*"----------------------------------------------------------------------
  "----------------------------------------------------------------------
  "*"本地接口:
  "  IMPORTING
  "     VALUE(IS_INPUT) TYPE  P0531
  "     VALUE(IV_ACTIO) TYPE  PSPAR-ACTIO
  "  EXPORTING
  "     VALUE(ES_MESSAGE)
  "     VALUE(ES_MSGTY)
  "----------------------------------------------------------------------

  /afl/log_init.

  DATA:lv_operation TYPE pspar-actio.
  DATA:ls_0531 TYPE p0531.
  DATA:ls_return TYPE bapireturn1.
  DATA:lv_date TYPE sy-datum.

  lv_operation = iv_actio.
  ls_0531 = is_input.

  CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
    EXPORTING
      number = ls_0531-pernr
    IMPORTING
      return = ls_return.

  IF ls_return-type EQ 'E'.
    es_message-type = 'E'.
    es_message-message = ls_return-message.
  ELSE.

    CALL FUNCTION 'HR_PSBUFFER_INITIALIZE'.

    CALL FUNCTION 'HR_INFOTYPE_OPERATION'
      EXPORTING
        infty         = ls_0531-infty
        number        = ls_0531-pernr
*       subtype       =
*       OBJECTID      =
*       LOCKINDICATOR =
        validityend   = ls_0531-endda
        validitybegin = ls_0531-begda
*       RECORDNUMBER  =
        record        = ls_0531
        operation     = lv_operation
        tclas         = 'A'
        dialog_mode   = '0'
*       NOCOMMIT      =
*       VIEW_IDENTIFIER        = '28'
*       SECONDARY_RECORD       =
      IMPORTING
        return        = ls_return
      " KEY           =
      .
    IF ls_return-type EQ 'E'.
      es_message-type = 'E'.
      es_message-message = ls_return-message.
    ELSE.
      COMMIT WORK AND WAIT.

      "改变原来那一条的纳税入职日期和结束日期
      lv_date = ls_0531-begda - 1.
      SELECT SINGLE * FROM pa0531 WHERE pernr EQ @ls_0531-pernr AND endda EQ @lv_date INTO @DATA(ls_mod).
      IF sy-subrc EQ 0.
        ls_mod-txerd = ls_mod-begda.
        ls_mod-txtmd = ls_mod-endda.
        CLEAR ls_0531.
        MOVE-CORRESPONDING ls_mod TO ls_0531.
        ls_0531-infty = '0531'.
        CALL FUNCTION 'HR_INFOTYPE_OPERATION'
          EXPORTING
            infty         = ls_0531-infty
            number        = ls_0531-pernr
*           subtype       =
*           OBJECTID      =
*           LOCKINDICATOR =
            validityend   = ls_0531-endda
            validitybegin = ls_0531-begda
*           RECORDNUMBER  =
            record        = ls_0531
            operation     = 'MOD'
            tclas         = 'A'
            dialog_mode   = '0'
*           NOCOMMIT      =
*           VIEW_IDENTIFIER        = '28'
*           SECONDARY_RECORD       =
          IMPORTING
            return        = ls_return
          " KEY           =
          .
        IF ls_return-type EQ 'E'.
          es_message-type = 'E'.
          es_message-message = ls_return-message.
        ELSE.

          CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
            EXPORTING
              number = ls_0531-pernr
            IMPORTING
              return = ls_return.

          IF ls_return-type EQ 'E'.
            es_message-type = 'E'.
            es_message-message = ls_return-message.
          ELSE.
            es_message-type = 'S'.
            es_message-message = ls_return-message.
          ENDIF.
        ENDIF.
      ELSE.
        CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
          EXPORTING
            number = ls_0531-pernr
          IMPORTING
            return = ls_return.

        IF ls_return-type EQ 'E'.
          es_message-type = 'E'.
          es_message-message = ls_return-message.
        ELSE.
          es_message-type = 'S'.
          es_message-message = ls_return-message.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  /afl/save 'HR' '0531' lv_operation.
ENDFUNCTION.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值