You are on page 1of 4

a) IF_CRM_ACE_OBJECTS_BY_FILTER~CHECK_OBJECTS_BY_FILTER

b) IF_CRM_ACE_OBJECTS_BY_FILTER~GET_OBJECTS_BY_FILTER
c) IF_CRM_ACE_ACTORS_FROM_USER~GET_ACTORS_FROM_USER
d) IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECTS
e) IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECT

a) IF_CRM_ACE_OBJECTS_BY_FILTER~CHECK_OBJECTS_BY_FILTER

METHOD IF_CRM_ACE_OBJECTS_BY_FILTER~CHECK_OBJECTS_BY_FILTER.

DATA: ls_object_guid TYPE crms_ace_object_guid,


lt_partnerroles TYPE TABLE OF bapibus1006_roles,
lv_process_type TYPE crmt_process_type,
lt_return TYPE TABLE OF bapiret2,
guid_ref TYPE crmt_object_guid.

LOOP AT im_object_guid_table INTO ls_object_guid.

MOVE ls_object_guid-object_guid TO guid_ref.

CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'


EXPORTING
iv_orderadm_h_guid = guid_ref
IMPORTING
ev_process_type = lv_process_type
* es_orderadm_h_wrk = ls_oper_inc_attr
EXCEPTIONS
admin_header_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.

CHECK lv_process_type = 'ZLED'.

APPEND ls_object_guid TO ex_object_guid_table.

ENDLOOP.

ENDMETHOD.

b) IF_CRM_ACE_OBJECTS_BY_FILTER~GET_OBJECTS_BY_FILTER

METHOD IF_CRM_ACE_OBJECTS_BY_FILTER~GET_OBJECTS_BY_FILTER.
*

CALL FUNCTION 'CRM_ACE_GET_ORDER_OBJECTS_CHM'


EXPORTING
IV_LEAD_REQUEST = 'X'
IMPORTING
ex_object_guid_table = ex_object_guid_table.

ENDMETHOD.
c) IF_CRM_ACE_ACTORS_FROM_USER~GET_ACTORS_FROM_USER

METHOD IF_CRM_ACE_ACTORS_FROM_USER~GET_ACTORS_FROM_USER.

CALL FUNCTION 'CRM_ACE_EMP_FROM_USER'


EXPORTING
im_usr_name = im_usr_name
IMPORTING
ex_actor_id_table = ex_actor_id_table.

ENDMETHOD.

d) IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECTS

METHOD IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECTS.

DATA:
lt_objects TYPE crmt_inherit_guid_struc_tab,
lt_partners TYPE crmt_partner_external_wrkt,
ls_object_actor TYPE crms_ace_object_actors,
ls_actor TYPE crms_ace_actor_id,
lt_actor TYPE crmt_ace_actor_id,
ls_failed_object TYPE crms_ace_object_guid.

FIELD-SYMBOLS:
<fs_partner> TYPE crmt_partner_external_wrk,
<fs_partner_pft> TYPE crmt_partner_pft,
<fs_object> TYPE crmt_inherit_guid_struc.

FIELD-SYMBOLS <ls_ace_object_guid> TYPE crms_ace_object_guid.

CONSTANTS : abap_false TYPE c VALUE ' '.

lt_objects[] = it_object_guids[].

CALL FUNCTION 'CRM_PARTNER_READ_MULTI_OB'


EXPORTING
it_ref_objects = lt_objects
IMPORTING
et_external_wrk = lt_partners.

LOOP AT lt_objects ASSIGNING <fs_object>.


CLEAR lt_actor[].
READ TABLE lt_partners
WITH KEY ref_guid = <fs_object>-guid
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
LOOP AT lt_partners FROM sy-tabix
ASSIGNING <fs_partner>
WHERE ref_guid = <fs_object>-guid
AND ref_handle = space
AND ref_kind = 'A'.
* AND partner_pft IN rt_partner_pft.
.
IF <fs_partner>-ref_guid NE <fs_object>-guid.
EXIT.
ENDIF.
ls_actor-actor_id = <fs_partner>-bp_partner_guid.
APPEND ls_actor TO lt_actor.
ENDLOOP.
IF sy-subrc EQ 0.
CLEAR ls_object_actor.
ls_object_actor-object_guid = <fs_object>-guid.
ls_object_actor-actors = lt_actor.
APPEND ls_object_actor TO et_actor_ids.
ELSE.
CLEAR ls_failed_object.
ls_failed_object-object_guid = <fs_object>-guid.
APPEND ls_failed_object TO ET_FAILED_OBJECTS.
ENDIF.
ENDIF.
ENDLOOP.

*
*- Delete all duplicate entries (which occur when one user has more than one
relation to an activity)
SORT et_actor_ids.
DELETE ADJACENT DUPLICATES FROM et_actor_ids.

ENDMETHOD.

e) IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECT

METHOD IF_CRM_ACE_ACTORS_FROM_OBJECT~GET_ACTORS_FROM_OBJECT.

DATA:
lt_objects TYPE crmt_inherit_guid_struc_tab,
lt_partners TYPE crmt_partner_external_wrkt,
ls_object_actor TYPE crms_ace_object_actors,
ls_actor TYPE crms_ace_actor_id,
lt_actor TYPE crmt_ace_actor_id,
ls_ref_object TYPE crmt_inherit_guid_struc,
ls_actor2 TYPE crms_ace_object_actors,
actor_ids TYPE crmt_ace_object_actors,
ls_failed_object TYPE crms_ace_object_guid.

FIELD-SYMBOLS:
<fs_partner> TYPE crmt_partner_external_wrk,
<fs_partner_pft> TYPE crmt_partner_pft,
<fs_object> TYPE crmt_inherit_guid_struc.

MOVE im_object_guid TO ls_ref_object-guid.


INSERT ls_ref_object INTO TABLE lt_objects.

CALL FUNCTION 'CRM_PARTNER_READ_MULTI_OB'


EXPORTING
it_ref_objects = lt_objects
IMPORTING
et_external_wrk = lt_partners.

LOOP AT lt_objects ASSIGNING <fs_object>.


CLEAR lt_actor[].
READ TABLE lt_partners
WITH KEY ref_guid = <fs_object>-guid
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
LOOP AT lt_partners FROM sy-tabix
ASSIGNING <fs_partner>
WHERE ref_guid = <fs_object>-guid
AND ref_handle = space
AND ref_kind = 'A'.
* AND partner_pft IN rt_partner_pft.
.
IF <fs_partner>-ref_guid NE <fs_object>-guid.
EXIT.
ENDIF.
ls_actor-actor_id = <fs_partner>-bp_partner_guid.
APPEND ls_actor TO lt_actor.
ENDLOOP.
* IF sy-subrc EQ 0.
CLEAR ls_object_actor.
ls_object_actor-object_guid = <fs_object>-guid.
ls_object_actor-actors = lt_actor.
APPEND ls_object_actor TO actor_ids.
* ELSE.
* CLEAR ls_failed_object.
* ls_failed_object-object_guid = <fs_object>-guid.
* APPEND ls_failed_object TO failed_objects.
* ENDIF.
ENDIF.
ENDLOOP.

READ TABLE actor_ids


INDEX 1
INTO ls_actor2
TRANSPORTING actors.
IF sy-subrc EQ 0.
ex_actor_id_table = ls_actor2-actors.
ENDIF.

ENDMETHOD.

You might also like