SAP HCM BADI
From SapWiki
ejemplo de BADI HRPAD00INFTY método IN_UPDATE (Tarea actualiz./Actualiz.infotipo)
- enviar datos a sistema externo al crear, modificar o borrar registros de IT2001 y IT2002
METHOD if_ex_hrpad00infty~in_update.
DATA: lt_p0001 TYPE TABLE OF p0001,
ls_p0001 TYPE p0001.
DATA: lt_oper TYPE TABLE OF psoper,
ls_oper TYPE psoper,
ls_prel TYPE prelp,
ls_prel_old TYPE prelp.
DATA: ls_t503 TYPE t503,
ls_t001p TYPE t001p.
DATA l_f(1).
CHECK ipspar-infty = '2001' OR ipspar-infty = '2002'.
CLEAR: ls_oper.
LOOP AT new_image INTO ls_oper WHERE infty = '2001' or infty = '2002'.
APPEND ls_oper TO lt_oper.
ENDLOOP.
sort lt_oper by opera. "primero borrar 'D' => después insertar 'I'
CLEAR: ls_oper.
LOOP AT old_image INTO ls_oper WHERE infty = '2001' or infty = '2002'.
MOVE-CORRESPONDING ls_oper TO ls_prel_old.
EXIT.
ENDLOOP.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
pernr = ipspar-pernr
infty = '0001'
TABLES
infty_tab = lt_p0001
EXCEPTIONS
infty_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT lt_p0001 INTO ls_p0001 WHERE begda <= ipspar-endda AND
endda >= ipspar-begda.
ENDLOOP.
SELECT SINGLE * INTO ls_t503 FROM t503
WHERE persg = ls_p0001-persg
AND persk = ls_p0001-persk.
SELECT SINGLE * INTO ls_t001p FROM t001p
WHERE werks = ls_p0001-werks
AND btrtl = ls_p0001-btrtl.
LOOP AT lt_oper INTO ls_oper.
MOVE-CORRESPONDING ls_oper TO ls_prel.
CALL FUNCTION 'Z_HCM_ENVIA_DATA'
EXPORTING
tclas = ipspar-tclas
innnn = ls_prel
i001p = ls_t001p
i_opera = ls_oper-opera
EXCEPTIONS
error_occured = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDMETHOD.