Wednesday, December 17, 2025

DeCouple Framework - ABAP HR - OOPS - Employee Delete/Insert

 Report to Insert and Delete HR employee Data using OOPS

REPORT ztest_das8.
PARAMETERSp_ee_old TYPE persno OBLIGATORY,
            p_stras  TYPE stras OBLIGATORY.
DATAlt_errors               TYPE hrpad_message_tab,
      wa_error                LIKE LINE OF lt_errors,
      ls_pskey                TYPE pskey,
      lo_hrpa_infotype_access TYPE REF TO if_hrpa_plain_infotype_access,
      lr_infty_operations     TYPE REF TO cl_hrpad00_infty_operations,
      lx_exc_infty_ops        TYPE REF TO cx_hrpad00_infty_ops,
      ls_message_itf          LIKE LINE OF lx_exc_infty_ops->message_tab_itf,
      lt_text_tab             TYPE hrpad_text_tab,
      ls_p0006_new            TYPE p0006.
TRY.
    cl_hrpad00_infty_operations=>get_instance(
      IMPORTING
        eo_infty_operations lr_infty_operations ).
  CATCH cx_root.                                        "#EC NO_HANDLER
ENDTRY.
SELECT SINGLE FROM pa0006 INTO @DATA(ls_p0006_oldWHERE pernr @p_ee_old.
IF sy-subrc IS INITIAL.
  ls_pskey-pernr ls_p0006_old-pernr.
  ls_pskey-infty '0006'.
  ls_pskey-subty '1'.
  ls_pskey-objps ls_p0006_old-objps.
  ls_pskey-sprps ls_p0006_old-sprps.
  ls_pskey-endda ls_p0006_old-endda.
  ls_pskey-begda ls_p0006_old-begda.
  ls_pskey-seqnr ls_p0006_old-seqnr.
* Infotype Operation
  TRY.
* Enqueue - Lock employee
      TRY.
          lr_infty_operations->if_hrpad00_infty_operations~enqueue_pernr(
             EXPORTING iv_pernr ls_p0006_old-pernr ).
*        CATCH cx_hrpad00_infty_ops.
* Delete - Address (Old and Existing)
          lr_infty_operations->delete(
            EXPORTING
              is_pskey             ls_pskey
              iv_no_auth_check     abap_true ).
          lr_infty_operations->commit).

          TRY.
* Fill the data for Address
              MOVE-CORRESPONDING ls_p0006_old TO ls_p0006_new.
              ls_p0006_new-grpvl '10'.
              ls_p0006_new-stras p_stras.

* Insert - Address (New)
              lr_infty_operations->insert(
                CHANGING
                  cs_pnnnn         ls_p0006_new
*                 cs_pref          =
                  ct_text_tab      lt_text_tab )
                  .
*  CATCH cx_hrpad00_infty_ops.
          ENDTRY.
* Commit
          lr_infty_operations->commit).
* Catch Exception
        CATCH cx_hrpad00_infty_ops INTO lx_exc_infty_ops.

      ENDTRY.
* Dequeue
      TRY.
          lr_infty_operations->if_hrpad00_infty_operations~dequeue_pernr(
         EXPORTING iv_pernr ls_p0006_new-pernr ).
*        CATCH cx_hrpad00_infty_ops.
      ENDTRY.
  ENDTRY.


ENDIF.
cl_hrpa_masterdata_factory=>get_plain_infotype_accessIMPORTING plain_infotype_access lo_hrpa_infotype_access ).
lo_hrpa_infotype_access->if_hrpa_buffer_control~flushno_commit abap_false ).
COMMIT WORK.