ABAP HR 工作经历 HR_INFOTYPE_OPERATION

ABAP HR 工作经历 bapi & bdc
接口:先存入数据表ZOA_RZJL
在这里插入图片描述再用bapi&bdc写入 HR_INFOTYPE_OPERATION

REPORT ZHR136_01.

TABLES:ZOA_RZJL,PA0023,PA3528.
DATA: CTU    LIKE  APQI-PUTACTIVE VALUE  'X',
      MODE   LIKE  APQI-PUTACTIVE VALUE  'N',
      UPDATE LIKE  APQI-PUTACTIVE VALUE  'L',
      NODATA LIKE  APQI-PUTACTIVE VALUE  '/'.
DATA:OPT LIKE CTU_PARAMS.
*----------------------------------------------------------------------*
*       Batchinputdata of single transaction
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
DATA:   NODATA_CHARACTER VALUE ''.".'/'
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

*INCLUDE BDCRECX1.
DATA:P0023    TYPE P0023,
     WA_P0023 TYPE  STANDARD TABLE OF PA0023 WITH HEADER LINE.
DATA:P3528    TYPE P3528,
     WA_P3528 TYPE  STANDARD TABLE OF PA3528 WITH HEADER LINE.
DATA:GS_TAB TYPE ZOA_RZJL,
     GT_TAB TYPE STANDARD TABLE OF ZOA_RZJL WITH HEADER LINE.
DATA: REC_RETURN TYPE BAPIRET1,
      KEY        TYPE BAPIPAKEY.
START-OF-SELECTION.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_TAB FROM ZOA_RZJL
   WHERE PASS = 'N' AND PERNR NE ''.
SORT GT_TAB ASCENDING BY PERNR BEGDA.
  LOOP AT GT_TAB WHERE PASS = 'N'.
    PERFORM HR_BAPI_BDC.
    IF SY-SUBRC = 0.
      UPDATE ZOA_RZJL SET PASS = 'Y' WHERE SPD = GT_TAB-SPD AND BEGDA = GT_TAB-BEGDA AND ENDDA = GT_TAB-ENDDA.
    ENDIF.
  ENDLOOP.
FORM HR_BAPI_BDC.
  CLEAR :MESSTAB[], NODATA.
  CLEAR: BDCDATA,BDCDATA[].
  CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'  "加锁
    EXPORTING
      NUMBER = GT_TAB-PERNR
    IMPORTING
      RETURN = REC_RETURN.
  CLEAR:P0023.
*P0023-PERNR = '00000011'.
  P0023-BEGDA = GT_TAB-BEGDA.
  P0023-ENDDA = GT_TAB-ENDDA.
  P0023-ARBGB = GT_TAB-ARBGB.
  P0023-BRANC = GT_TAB-BRANC.
  P0023-ORT01 = GT_TAB-ORT01.
  P0023-LAND1 = 'CN'.
  P0023-ZZ_XZZE1 = GT_TAB-ZZ_XZZE.
  P0023-ZZ_LZYY2 = GT_TAB-ZZ_LZYY1.
*P3528-BEGDA = '20190618'.
*P3528-ENDDA = '20191231'.
*  P3528-DEPTN = .
*  P3528-JOBINFO = .
*  P3528-REFER = .
*  P3528-REFCO = .
  CALL FUNCTION 'HR_INFOTYPE_OPERATION'
    EXPORTING
      INFTY         = '0023'"信息类型
      NUMBER        = GT_TAB-PERNR
*     SUBTYPE       = WAP0016-SUBTY
      RECORD        = P0023
      VALIDITYEND   = GT_TAB-ENDDA
      VALIDITYBEGIN = GT_TAB-BEGDA
      OPERATION     = 'INS'
*     DIALOG_MODE   = '1'"对话框出现 2调试模式
*     TCLAS         = 'A'
    IMPORTING
      RETURN        = REC_RETURN.
  IF REC_RETURN-TYPE <> 'E'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = ABAP_TRUE.
  ENDIF.
  CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'  "解锁
    EXPORTING
      NUMBER = GT_TAB-PERNR
    IMPORTING
      RETURN = REC_RETURN.
*
  WAIT UP TO 5 SECONDS.
  PERFORM BDC_DYNPRO      USING 'SAPMP50A' '1100'.
  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM BDC_FIELD       USING 'RP50G-PERNR'
                                GT_TAB-PERNR.
  PERFORM BDC_FIELD       USING 'RP50G-TIMR6'
                                'X'.
  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                'RP50G-CHOIC'.
  PERFORM BDC_FIELD       USING 'RP50G-CHOIC'
                                '0023'.
  PERFORM BDC_DYNPRO      USING 'SAPMP50A' '1100'.
  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                'RP50G-PERNR'.
  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                '=MOD'.
  PERFORM BDC_FIELD       USING 'RP50G-PERNR'
                                GT_TAB-PERNR.
  PERFORM BDC_FIELD       USING 'RP50G-TIMR6'
                                'X'.
  PERFORM BDC_FIELD       USING 'RP50G-CHOIC'
                                 '0023'.
  PERFORM BDC_DYNPRO      USING 'MP002300' '2028'.
  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                '=UPD'.
  PERFORM BDC_FIELD       USING 'P0023-BEGDA'
                                GT_TAB-BEGDA.
  PERFORM BDC_FIELD       USING 'P0023-ENDDA'
                                GT_TAB-ENDDA.
  PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                'P3528-REFCO'.
*    PERFORM BDC_FIELD       USING 'P0023-ARBGB'
*                                  RECORD-ARBGB_006.
*    PERFORM BDC_FIELD       USING 'P0023-BRANC'
*                                  RECORD-BRANC_007.
  PERFORM BDC_FIELD       USING 'P3528-DEPTN'
                                GT_TAB-DEPTN.
  PERFORM BDC_FIELD       USING 'P3528-JOBINFO'
                                GT_TAB-JOBINFO.
*    PERFORM BDC_FIELD       USING 'P0023-LAND1'
*                                  RECORD-LAND1_010.
*    PERFORM BDC_FIELD       USING 'P0023-ORT01'
*                                  RECORD-ORT01_011.
  PERFORM BDC_FIELD       USING 'P3528-REFER'
                                GT_TAB-REFER.
  PERFORM BDC_FIELD       USING 'P3528-REFCO'
                                GT_TAB-REFCO.
  PERFORM BDC_DYNPRO      USING 'MP002300' '2028'.
  PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                '/E'.
  OPT-DISMODE = 'N'.
  OPT-UPDMODE = 'S'.
  OPT-DEFSIZE = 'X'.
  OPT-NOBINPT = 'X'.
*PERFORM BDC_TRANSACTION USING 'PA30'.
  CALL TRANSACTION 'PA30' USING BDCDATA
*                            MODE ctumode
*                          UPDATE cupdate
                          OPTIONS FROM OPT
                          MESSAGES INTO MESSTAB.
ENDFORM.
*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  = PROGRAM.
  BDCDATA-DYNPRO   = DYNPRO.
  BDCDATA-DYNBEGIN = 'X'.
  APPEND BDCDATA.
ENDFORM.
*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION TABLES P_MESSTAB
                     USING  P_TCODE
                            P_CTU
                            P_MODE
                            P_UPDATE.
  DATA: L_SUBRC LIKE SY-SUBRC.
  IF P_CTU <> 'X'.
    CALL FUNCTION 'BDC_INSERT'
      EXPORTING
        TCODE     = P_TCODE
      TABLES
        DYNPROTAB = BDCDATA
      EXCEPTIONS
        OTHERS    = 1.
  ELSE.
    CALL TRANSACTION P_TCODE USING BDCDATA
                     MODE   P_MODE
                     UPDATE P_UPDATE
                     MESSAGES INTO P_MESSTAB.
  ENDIF.
  L_SUBRC = SY-SUBRC.
  REFRESH BDCDATA.
  SY-SUBRC = L_SUBRC.
ENDFORM.
FORM BDC_FIELD USING FNAM FVAL.
  IF FVAL <> NODATA_CHARACTER.
    CLEAR BDCDATA.
    BDCDATA-FNAM = FNAM.
    BDCDATA-FVAL = FVAL.
    APPEND BDCDATA.
  ENDIF.
ENDFORM.
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值