Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

need alternate FM for HR_INFOTYPE_OPERATION

vallamuthu_madheswaran2
Active Contributor
0 Kudos

Hi Friends,

I am trying to create employee data using the FM HR_INFOTYPE_OPERATION. But it's "Not Released" fm. I need alternate FM for HR_INFOTYPE_OPERATION.

Thanks in Advance,

Thanks with Regards,

Vallamuthu M.

1 ACCEPTED SOLUTION

edwinguedez
Explorer
0 Kudos

What about an OOP approach with IF_HRPA_PLAIN_INFOTYPE_ACCESS:

Example

    constants GC_OBJPS_ALL type OBJPS value '*'.

    constants GC_INFTY_NO  type INFTY value '9001'. "#EC NOTEXT

    constants GC_SUBTY_NO  type SUBTY value '0001'. "#EC NOTEXT

    " * Get infotype access

    DATA li_iread TYPE REF TO if_hrpa_plain_infotype_access.

    cl_hrpa_masterdata_factory=>get_plain_infotype_access(

      IMPORTING plain_infotype_access = li_iread

    ).

    " * Message handler

    DATA lo_mhand TYPE REF TO if_hrpa_message_handler.

    DATA lo_mlist TYPE REF TO cl_hrpa_message_list.

    " *

    FREE lo_mlist.

    CREATE OBJECT lo_mlist.

    lo_mhand = lo_mlist.

    " * Read record

    DATA ls_p9001 TYPE p9001.

    " *

    li_iread->read_single(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                pernr           = lv_pernr

                infty           = gc_infty_no

                subty           = gc_subty_no

                objps           = lc_objps_all

                sprps           = if_hrpa_read_infotype=>unlocked

                begda           = lv_begda

                endda           = lv_endda

                mode            = if_hrpa_read_infotype=>last_intersecting_record

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      IMPORTING pnnnn           = ls_p9001

    ).

    " * Insert record

    li_iread->insert(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      CHANGING  pnnnn           = ls_p9001

    ).

    " * Modify record

    DATA ls_pskey TYPE pskey.

    MOVE-CORRESPONDING ls_p9013 TO ls_pskey.

    li_iread->modify(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                old_pskey       = ls_pskey

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      CHANGING  pnnnn           = ls_p9001

    ).

    " * Commit changes

    li_iread->if_hrpa_buffer_control~flush( no_commit = abap_false ).

    " * Message table

    DATA lt_mlist TYPE hrpad_message_tab.

    lo_mlist->get_message_list(

      IMPORTING messages = lt_mlist

    ).

Or try other OOP way in /thread/3832149 see Enric Castella Gonzalez Answer (Not tested by me)

Let me know if work for your case

--

Regards

Edwin Guedez

2 REPLIES 2

Shubham1
Employee
Employee
0 Kudos

Hello

Can you explore HRMD_A07.

Regards

Shubham

edwinguedez
Explorer
0 Kudos

What about an OOP approach with IF_HRPA_PLAIN_INFOTYPE_ACCESS:

Example

    constants GC_OBJPS_ALL type OBJPS value '*'.

    constants GC_INFTY_NO  type INFTY value '9001'. "#EC NOTEXT

    constants GC_SUBTY_NO  type SUBTY value '0001'. "#EC NOTEXT

    " * Get infotype access

    DATA li_iread TYPE REF TO if_hrpa_plain_infotype_access.

    cl_hrpa_masterdata_factory=>get_plain_infotype_access(

      IMPORTING plain_infotype_access = li_iread

    ).

    " * Message handler

    DATA lo_mhand TYPE REF TO if_hrpa_message_handler.

    DATA lo_mlist TYPE REF TO cl_hrpa_message_list.

    " *

    FREE lo_mlist.

    CREATE OBJECT lo_mlist.

    lo_mhand = lo_mlist.

    " * Read record

    DATA ls_p9001 TYPE p9001.

    " *

    li_iread->read_single(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                pernr           = lv_pernr

                infty           = gc_infty_no

                subty           = gc_subty_no

                objps           = lc_objps_all

                sprps           = if_hrpa_read_infotype=>unlocked

                begda           = lv_begda

                endda           = lv_endda

                mode            = if_hrpa_read_infotype=>last_intersecting_record

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      IMPORTING pnnnn           = ls_p9001

    ).

    " * Insert record

    li_iread->insert(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      CHANGING  pnnnn           = ls_p9001

    ).

    " * Modify record

    DATA ls_pskey TYPE pskey.

    MOVE-CORRESPONDING ls_p9013 TO ls_pskey.

    li_iread->modify(

      EXPORTING tclas           = cl_hrpa_tclas=>tclas_employee

                old_pskey       = ls_pskey

                no_auth_check   = if_hrpa_boole_d=>true

                message_handler = lo_mhand

      CHANGING  pnnnn           = ls_p9001

    ).

    " * Commit changes

    li_iread->if_hrpa_buffer_control~flush( no_commit = abap_false ).

    " * Message table

    DATA lt_mlist TYPE hrpad_message_tab.

    lo_mlist->get_message_list(

      IMPORTING messages = lt_mlist

    ).

Or try other OOP way in /thread/3832149 see Enric Castella Gonzalez Answer (Not tested by me)

Let me know if work for your case

--

Regards

Edwin Guedez