写点什么

C4C 和 CRM 里获取当前登录用户分配的 Organization Unit

用户头像
Jerry Wang
关注
发布于: 2021 年 05 月 24 日
C4C和CRM里获取当前登录用户分配的Organization Unit

C4C

如何查看某个用户分配的组织单元 ID:



在 Employee 的 Organization Data 区域内看到分配的组织名称,如下图红色下划线所示:



现在的需求就是使用 ABSL 获取当前登录用户分配的 Organization Unit 信息,例如用 WANGJERRY37 登录,则取出下图显示的 Department name PMLS:




具体实现:新建一个 custom BO,使用字段 DepartmentName 存储这个待取的值:



然后创建 AfterLoading script file,使用如下代码:



import ABSL;import AP.PC.IdentityManagement.Global;import AP.FO.BusinessPartner.Global;
var queryByIdentityUUID = Identity.QueryByElements;var queryByIdentityUUIDParameter = queryByIdentityUUID.CreateSelectionParams();var queryByEmployeeBPUUID = Employee.QueryByIdentification;var queryByEmployeeBPUUIDParameter = queryByEmployeeBPUUID.CreateSelectionParams();

if ( this.DepartmentName.IsInitial()){
var id = Context.GetCurrentIdentityUUID().content; queryByIdentityUUIDParameter.Add( queryByIdentityUUID.UUID.content, "I", "EQ", id.ToString() ); var result = queryByIdentityUUID.Execute(queryByIdentityUUIDParameter); var first = result.GetFirst(); // points to identity instance var person = first.Person; var bpUUId = person.UUID.content; queryByEmployeeBPUUIDParameter.Add( queryByEmployeeBPUUID.UUID.content, "I", "EQ", bpUUId.ToString()); var employeeQueryResult = queryByEmployeeBPUUID.Execute(queryByEmployeeBPUUIDParameter); var EmployeeQueryResultCurrent = employeeQueryResult.GetFirst(); var assignedOrg = EmployeeQueryResultCurrent.OrganisationalUnitAssignment.GetFirst(); var org = assignedOrg.ToRoot; // readOnly in AfterLoading event this.DepartmentName = org.NameAndAddress.AddressSnapshot.NameSuitableForLogonLanguage.GetFirst().Name.SecondLineName;}
复制代码

CRM

假设 Jerry Wang 分配的 Organization Unit ID 为 50000732,使用下列 report 打印出这个 ID:




PARAMETERS: id TYPE but000-partner OBLIGATORY DEFAULT '4031140'.DATA: lo_core TYPE REF TO cl_crm_bol_core, lo_collection TYPE REF TO if_bol_entity_col, lo_root_entity TYPE REF TO cl_crm_bol_entity, lv_query_name TYPE crmt_ext_obj_name, lt_selection_parameter TYPE genilt_selection_parameter_tab, ls_selection_parameter TYPE genilt_selection_parameter, ls_query_parameters TYPE genilt_query_parameters, lv_size TYPE i.START-OF-SELECTION. ls_selection_parameter-attr_name = 'PARTNER'. ls_selection_parameter-option = 'EQ'. ls_selection_parameter-sign = 'I'. ls_selection_parameter-low = id. APPEND ls_selection_parameter TO lt_selection_parameter. ls_query_parameters-max_hits = 1. lo_core = cl_crm_bol_core=>get_instance( ). lo_core->load_component_set( 'PROD_ALL' ). lv_query_name = 'BuilEmpAdvancedSearch'. lo_collection = lo_core->dquery( iv_query_name = lv_query_name it_selection_parameters = lt_selection_parameter is_query_parameters = ls_query_parameters ). DATA(lo_result) = lo_collection->get_first( ). ASSERT lo_result IS NOT INITIAL. WRITE: / 'Org unit id: ', lo_result->get_property_as_string( 'ORGEH' ) COLOR COL_NEGATIVE.
复制代码



最终调用的是这个 function module:



要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙":



发布于: 2021 年 05 月 24 日阅读数: 6
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
C4C和CRM里获取当前登录用户分配的Organization Unit