
METHOD if_ex_rpm_proj_cust_fields~cust_proj_prepare_to_save.
DATA: lv_nr TYPE nrnr,
lv_obj TYPE nrobj,
lv_prefix TYPE char3.
DATA lt_projects TYPE rpm_tt_guid_project_defs.
DATA lv_ui_change_mode TYPE boole_d.
DATA or_item TYPE REF TO cl_rpm_project.
DATA ls_attributes TYPE rpm_ts_project_int.
* During SAVE when PPM object is being created
IF is_attributes-external_id NE is_attributes_old-external_id AND
is_attributes_old-external_id IS INITIAL.
DATA(lr_manager) = cl_rpm_obj_manager=>get_instance( iv_langu = sy-langu ).
CALL METHOD lr_manager->load_projects
EXPORTING
iv_guid = is_attributes-guid
IMPORTING
et_projects = lt_projects
ev_load_change_mode = lv_ui_change_mode.
TRY.
DATA(ls_project) = lt_projects[ 1 ].
or_item = ls_project-reference.
CATCH cx_sy_itab_line_not_found.
ENDTRY.
IF or_item IS BOUND.
* Check your Item and Initiatives Item_Type as per system configuration
CASE ls_attributes-rpm_project-item_type.
WHEN ''. "Initiatives
* lv_nr = .
* lv_obj = .
* lv_prefix = .
WHEN ''. "Portfolio Item
* lv_nr = .
* lv_obj = .
* lv_prefix = .
WHEN OTHERS.
ENDCASE.
IF NOT lv_prefix IS INITIAL.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = lv_nr
object = lv_obj
ignore_buffer = 'X'
IMPORTING
number = lv_extid
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ls_attributes-external_id = |{ lv_prefix }| && |{ '.' }| && |{ lv_extid }|.
TRY.
CALL METHOD or_item->set_attributes
EXPORTING
is_attributes = ls_attributes.
CATCH cx_rpm_object_update_error .
CATCH cx_rpm_configuration_error .
ENDTRY.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.