-
Notifications
You must be signed in to change notification settings - Fork 0
/
SalesChannelCheck
150 lines (128 loc) · 4.75 KB
/
SalesChannelCheck
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
TRY .
DATA(lv_user) = sy-uname.
DATA(lv_channel) = zcl_zzobjective_help=>get_channel( iv_user = lv_user )."получаем канал сбыта
IF lv_channel IS NOT INITIAL AND lr_activityh IS BOUND.
lr_activityh->set_property_as_string( iv_attr_name = 'OBJECTIVE' iv_value = CONV string( lv_channel ) ).
ENDIF.
CATCH cx_root INTO DATA(lr_error).
ENDTRY.
class ZCL_ZZOBJECTIVE_HELP definition
public
final
create public .
public section.
class-methods GET_CHANNEL
importing
!IV_USER type SY-UNAME
returning
value(RV_CHANEL) type CRMT_OBJECTIVE .
protected section.
private section.
ENDCLASS.
CLASS ZCL_ZZOBJECTIVE_HELP IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_ZZOBJECTIVE_HELP=>GET_CHANNEL
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_USER TYPE SY-UNAME
* | [<-()] RV_CHANEL TYPE CRMT_OBJECTIVE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD get_channel.
DATA: lv_partner_guid TYPE bu_partner_guid,
lv_partner_guid2 TYPE bu_partner_guid,
lt_return TYPE bapiret2_t,
lt_assignments TYPE crmt_ppm_om_user_assignmnts_ta,
lt_assignments_full TYPE crmt_ppm_om_user_assignmnts_ta,
lt_orgunits TYPE crmt_ppm_om_objektid_ta,
lv_virtuser TYPE sobjid,
lv_unit_text TYPE stext.
DATA: lt_values TYPE hrtb_attvalrt,
lt_attributes TYPE hrtb_attrib,
lv_chanel TYPE crmt_objective.
DATA(lv_user) = iv_user."sy-uname.
**получить дп сотрудника
CALL FUNCTION 'BP_CENTRALPERSON_GET'
EXPORTING
iv_username = lv_user
IMPORTING
ev_bu_partner_guid = lv_partner_guid2
EXCEPTIONS
no_central_person = 1
no_business_partner = 2
no_id = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
* получаем орг структуру куда привязан пользователь
CLEAR: lt_return.
CALL METHOD cl_crm_ppm_um_toolkit=>get_assignments_of_user
EXPORTING
iv_user = lv_user
iv_read_root_org = 'X'
IMPORTING
et_assignments = lt_assignments
et_messages = lt_return
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
*получение атрибутов орг структуры
LOOP AT lt_assignments INTO DATA(ls_assignments) .
CLEAR: lt_return, lt_values.
cl_crm_orgman_interface=>read_attributes_for_maint(
EXPORTING
scenario = 'SALE' " Scenario
otype = 'O' " Object Type
objid = ls_assignments-orgunit " Object ID
attributes = lt_attributes
IMPORTING
values = lt_values " Table: Attributes of an Object (Inherited)
EXCEPTIONS
internal_error = 1
invalid_object = 2
invalid_scenario = 3
invalid_attribute = 4
no_authority = 5
OTHERS = 6
).
IF sy-subrc <> 0.
ENDIF.
READ TABLE lt_values ASSIGNING FIELD-SYMBOL(<fs_attr>) WITH KEY attrib = 'D_CHANNEL' inherit = 'X'.
IF sy-subrc EQ 0.
SELECT objective FROM ztc_slschannel
INTO @lv_chanel WHERE
objid = @ls_assignments-orgunit .
ENDSELECT.
ELSE.
CLEAR: lt_values, lv_chanel.
cl_crm_orgman_interface=>read_attributes_for_maint(
EXPORTING
scenario = 'SALE' " Scenario
otype = 'O' " Object Type
objid = ls_assignments-root_orgunit " Object ID
attributes = lt_attributes
IMPORTING
values = lt_values " Table: Attributes of an Object (Inherited)
EXCEPTIONS
internal_error = 1
invalid_object = 2
invalid_scenario = 3
invalid_attribute = 4
no_authority = 5
OTHERS = 6
).
IF sy-subrc <> 0.
ENDIF.
READ TABLE lt_values INTO DATA(ls_attr) WITH KEY attrib = 'D_CHANNEL' inherit = 'X'.
IF sy-subrc EQ 0.
SELECT objective FROM ztc_slschannel
INTO @lv_chanel WHERE
objid = @ls_assignments-orgunit.
ENDSELECT.
ENDIF.
ENDIF.
ENDLOOP.
rv_chanel = lv_chanel.
ENDMETHOD.
ENDCLASS.