Skip to Content

Scenario

There could be few scenarios where you want to trigger the HCM P&F based process  from a background job or an ABAP report. You may want to perform a mass processing using some kind of simple background job. Keeping that in mind, I am writing this blog which would trigger the process using a simple ABAP report(this report can be enhanced for multiple processing).

Solution –

Create a Report with the below selection criteria –

PARAMETERS : p_pernr type pernr_d,
                        p_email
type pa0105USRID_LONG.

Instantiate the Process Execute Object instance(of type IF_HRASR00_PROCESS_EXECUTE) and retrieve the basic attributes(Special Data, Additional Data, UI Attributes, Input helps) of your process(say ZTEST2)  –

TRY.
  g_process
= ‘ZTEST2’.

* Move the selected Personnel Number to the Object Key
 
MOVE P_PERNR TO object_key.
* Instantiate the Process Execute
  lo_process_execute ?= cl_hrasr00_process_execute
=>get_instance( iv_process = g_process ).
* Get the Attributes of the process
  lo_process_execute
->initialize_form(
   
EXPORTING
      iv_process            
= g_process
      iv_object_key         
= object_key
      iv_initiator_role     
= ‘HRASRD’
   
IMPORTING
      et_form_field_values  
= gt_special_data
      et_input_help_values  
= gt_additional_data
      et_messages           
= gt_messages
      et_field_ui_attributes
= gt_ui_attributes
      ev_is_ok              
= gv_is_ok
      et_input_help_extended
= gt_input_helps_extended ).
CATCH cx_hrasr00_process_execute INTO lx_proc_exec.
   lv_msg_text
= lx_proc_exec->if_message~get_text( ).
  
write lv_msg_text.
  
EXIT.
ENDTRY.

Update the “SPECIAL_DATA” Internal table with the parameter value and perform the check –

TRY.

*  Update the selected email ID
 
read table gt_special_data ASSIGNING <special_data> with key FIELDNAME = ‘I0105_USRID_LONG’.
 
IF SYSUBRC = 0.
   
move p_email to <special_data>FIELDVALUE.
 
ENDIF.
  lo_process_execute
->check_form_data(
   
EXPORTING
      iv_process            
g_process
      iv_object_key         
object_key
   
CHANGING
      ct_form_field_values  
= gt_special_data
      ct_input_help_values  
= gt_additional_data
      ct_message_list       
= gt_messages
      ct_field_ui_attributes
= gt_ui_attributes
      ct_input_help_extended
= gt_input_helps_extended  ).
CATCH cx_hrasr00_process_execute INTO lx_proc_exec.
   lv_msg_text
= lx_proc_exec->if_message~get_text( ).
  
write : lv_msg_text.
  
EXIT.
ENDTRY.

Finally trigger the process –

TRY.
lo_process_execute
->submit_form_data(
  
EXPORTING
     iv_process            
= g_process
     iv_object_key         
= object_key
  
IMPORTING
     ev_process_ref_number 
= g_procref
  
CHANGING
     ct_form_field_values  
= gt_special_data
     ct_input_help_values  
= gt_additional_data
     ct_message_list       
= gt_messages
     ct_field_ui_attributes
= gt_ui_attributes ).
CATCH cx_hrasr00_process_execute INTO lx_proc_exec.
   lv_msg_text
= lx_proc_exec->if_message~get_text( ).
  
WRITE : lv_msg_text.
  
EXIT.
ENDTRY.

To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

  1. Sumit Kumar Kundu

    Thanks Kuncham ! Once again this was a marvel.

    By the way, just wanted to add here that if the data is not complete, i.e., mandatory fields missing etc. , while submitting the form, one can use ‘save_draft_form’ method of cl_hrasr00_process_execute.

    This way one can create a draft workitem in user’s UWL through workflow WS33700033. User can then populate the necessary data from opening the draft form and submit it.

    (0) 
    1. Former Member Post author

      Thanks for the feedback Sumit.

      Yes, It makes sense to create a “Draft” work item in case of any issues !

      Regards

      Kuncham

      (0) 

Leave a Reply