`
JerryWang_SAP
  • 浏览: 1042310 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

动态隐藏某些特殊类型的SAP CRM附件

阅读更多

Requirement

Only simple text file as attachment could be visible for some users but should be completely hidden for other users without enough authorizations. The requirement could be fulfilled via BAdI:

 

 

Check a BAdI implementation on BAdI definition CRM_DOC_AHTORITY and copy the source code from last part of this wiki to the implementation class. The reason why using OPEN SQL to get the file type instead of using utility methodCL_CRM_DOCUMENTS=>GET_FILE_INFO or function module SKWF_PHIOS_FILE_PROPERTIES_GET is to avoid the recursive authorization call as listed below:

 

 

Source code of BAdI implementation

CLASS zcl_im_cl_att_auth_impl DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_ex_crm_doc_authority .
CLASS-METHODS class_constructor .
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS cv_doc_lo TYPE string VALUE 'BDS_LOC22'. "#EC NOTEXT
CONSTANTS cv_doc_ph TYPE string VALUE 'BDS_POC22'. "#EC NOTEXT
CLASS-DATA sv_file_tab TYPE sdok_fltab .
CLASS-METHODS check_internal
CHANGING
!ios_auth TYPE skwf_ios
!ios_not_auth TYPE skwf_ioerrs .
CLASS-METHODS get_file_type
IMPORTING
!is_io TYPE skwf_io
RETURNING
VALUE(rv_type) TYPE w3conttype .
ENDCLASS.

CLASS ZCL_IM_CL_ATT_AUTH_IMPL IMPLEMENTATION.

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Private Method ZCL_IM_CL_ATT_AUTH_IMPL=>CHECK_INTERNAL
* +-------------------------------------------------------------------------------------------------+
* | [<-->] IOS_AUTH TYPE SKWF_IOS
* | [<-->] IOS_NOT_AUTH TYPE SKWF_IOERRS
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD check_internal.
CHECK sy-uname = 'WANGJER'.
DATA: lv_type TYPE w3conttype.
LOOP AT ios_auth ASSIGNING FIELD-SYMBOL(<io_auth>) WHERE class = cv_doc_lo.
lv_type = get_file_type( <io_auth> ).
IF lv_type <> 'text/plain'.
APPEND INITIAL LINE TO ios_not_auth ASSIGNING FIELD-SYMBOL(<auth_error>).
MOVE-CORRESPONDING <io_auth> TO <auth_error>.
<auth_error>-id = 'ZCM_JERRY_TEST'.
<auth_error>-type = 'W'.
<auth_error>-no = '001'.
<auth_error>-v1 = lv_type.
DELETE ios_auth WHERE objid = <io_auth>-objid.
ENDIF.
ENDLOOP.
ENDMETHOD.

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_IM_CL_ATT_AUTH_IMPL=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD class_constructor.
DATA: ls_type TYPE sdokphcl,
ls_table TYPE sdokphtab.
SELECT SINGLE * INTO ls_type FROM sdokphcl WHERE ph_class = cv_doc_ph.
CHECK sy-subrc = 0.
SELECT SINGLE * INTO ls_table FROM sdokphtab WHERE headertab = ls_type-headertab.
CHECK sy-subrc = 0.
sv_file_tab = ls_table-filetab.
ENDMETHOD.

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Private Method ZCL_IM_CL_ATT_AUTH_IMPL=>GET_FILE_TYPE
* +-------------------------------------------------------------------------------------------------+
* | [--->] IS_IO TYPE SKWF_IO
* | [<-()] RV_TYPE TYPE W3CONTTYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD get_file_type.
DATA: lt_object TYPE STANDARD TABLE OF sdokobject.
DATA: lt_p TYPE STANDARD TABLE OF sdoklogphy.
APPEND INITIAL LINE TO lt_object ASSIGNING FIELD-SYMBOL(<line>).
<line> = VALUE #( class = cv_doc_lo objid = is_io-objid ).
CALL FUNCTION 'SDOK_LOIOS_PHIOS_GET'
TABLES
object_list = lt_object
physical_objects = lt_p.
READ TABLE lt_p ASSIGNING FIELD-SYMBOL(<p>) INDEX 1.
CHECK sy-subrc = 0.
SELECT SINGLE mimetype FROM (sv_file_tab) INTO rv_type WHERE phio_id = <p>-objid_ph.
ENDMETHOD.

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_IM_CL_ATT_AUTH_IMPL=>IF_EX_CRM_DOC_AUTHORITY~AUTHORITY_CHECK
* +-------------------------------------------------------------------------------------------------+
* | [--->] ACTIVITY TYPE SKWF_ACTVT
* | [--->] PARENT_FOLDER TYPE SKWF_IO(optional)
* | [--->] APPLICATION TYPE SKWF_APPL(optional)
* | [--->] CURRENT_BUSINESS_OBJECT TYPE SIBFLPORB(optional)
* | [--->] IOS TYPE SKWF_IOS
* | [<-->] IOS_AUTH TYPE SKWF_IOS
* | [<-->] IOS_NOT_AUTH TYPE SKWF_IOERRS
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_ex_crm_doc_authority~authority_check.
check_internal( CHANGING ios_auth = ios_auth ios_not_auth = ios_not_auth ).
ENDMETHOD.

* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_IM_CL_ATT_AUTH_IMPL=>IF_EX_CRM_DOC_AUTHORITY~AUTHORITY_CHECK_SEARCH_RESULT
* +-------------------------------------------------------------------------------------------------+
* | [--->] CURRENT_BUSINESS_OBJECT TYPE SIBFLPORB(optional)
* | [--->] IOS_WITH_LINKED_BOS TYPE CRM_KW_BOS
* | [<-->] IOS_AUTH TYPE SKWF_IOS
* | [<-->] IOS_NOT_AUTH TYPE SKWF_IOERRS
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_ex_crm_doc_authority~authority_check_search_result.
check_internal( CHANGING ios_auth = ios_auth ios_not_auth = ios_not_auth ).
ENDMETHOD.
ENDCLASS.

Disadvantage of this solution

(1) the enhancement will be triggered whenever there is the function module SKWF_AUTH_OBJECTS_CHECK called. In Content management the check logic is done frequently.

 

 

(2) in the enhancement execution context there is no enough information to do filter logic for performance improvement.

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

0
0
分享到:
评论

相关推荐

    SAP CRM同步问题记录

    在SAP CRM(客户关系管理)系统中,同步问题往往是由于不同组件间的通信故障或配置错误导致的。本文将深入探讨两个具体的问题及其解决方案,帮助用户理解和处理SAP CRM中的同步异常。 首先,我们遇到的第一个问题是...

    SAP CRM 7.0 PA-CR100

    标题与描述中的"SAP CRM 7.0 PA-CR100"指向的是SAP公司的一款企业级软件——客户关系管理(Customer Relationship Management)系统的一个特定版本与课程代码。SAP CRM是SAP Business Suite的一部分,它帮助企业优化...

    sap crm 一点通

    尽管SAP CRM 和 ECC 在某些功能上有重叠,例如CRM 的 SALES 功能类似于ECC 的 SD(Sales and Distribution),以及CRM 的 SERVICES 与ECC 的 CS(Customer Service)相似,但两者的设计理念和技术实现方式存在明显...

    SAP CRM系统介绍

    SAP CRM系统介绍SAP CRM系统介绍SAP CRM系统介绍SAP CRM系统介绍SAP CRM系统介绍

    SAP CRM Tables 1

    在压缩包中的"CRM tables.xls"文件,很可能是博主整理的一个Excel表格,里面详细列出了SAP CRM系统中的各种表格,包括它们的名称、描述、关键字段和可能的数据类型。这样的资源对于那些需要快速查找特定表格信息的人...

    sap CRM 2007 IDES.rar

    【SAP CRM 2007 IDES】是一款专门针对SAP客户关系管理(CRM)2007版本的集成开发和教育环境(IDES)。IDES全称为Integrated Development and Education System,它为开发者和学习者提供了完整的SAP CRM系统,以便...

    SAP CRM 2007 IDES

    SAP CRM 2007 IDES

    SAP CRM行业解决方案.pdf

    SAP CRM行业解决方案 SAP CRM行业解决方案是一个基于客户关系管理(Customer Relationship Management,CRM)的解决方案,旨在帮助企业更好地管理客户关系、提高销售业绩和客户满意度。该解决方案提供了一整套的...

    SAP CRM解决方案

    CRM原厂解决方案 SAP标准CRM业务模式介绍,CRM产品

    SAP CRM管理方案介绍

    ### SAP CRM管理方案介绍 #### 一、总体方案概述 SAP CRM(Customer Relationship Management)是一种全面的企业级解决方案,旨在帮助企业管理与客户的交互过程。它不仅涵盖了传统的市场营销、销售和服务等核心...

    SAP-CRM-系统用户界面操作指导手册

    ### SAP CRM 系统用户界面操作指导手册知识点详解 #### 一、引言 SAP CRM(Customer Relationship Management)作为一款先进的客户关系管理系统,在帮助企业更好地管理客户信息、提高销售效率及客户服务方面扮演着...

    SAP CRM会员管理

    SAP公司全套CRM解决方案覆盖了销售、市场营销、售后服务、客户分析、客服中心、电子商务、社交CRM及移动手机等各个方面。客户可按当前业务所需选择的相关功能,应用程序可在6-8周内迅速部署并投入使用。新的SAP CRM...

    SAP CR100 文档,用于SAP CRM培训

    SAP CR100 用于SAP CRM培训。

    SAP_CRM中文自学笔记

    SAP CRM是德国SAP公司提供的一个全方位客户关系管理解决方案,广泛应用于市场营销、销售和服务等领域,支持企业通过多种交互渠道与客户进行沟通。CRM系统能够处理从客户数据的收集、管理到客户交互过程中的订单处理...

    sap crm 实施方法

    sap crm 实施方法。最全面地SAPCRM实施方法。提供下载。

    sap crm install

    在IT领域,SAP CRM(客户关系管理)是一款先进的企业级解决方案,用于管理与客户相关的所有业务流程。本文将深入探讨SAP CRM的安装过程,根据提供的标题和描述,我们将详细解析这一关键任务。 首先,SAP CRM的安装...

    SAP CRM 常用表.pdf

    在SAP CRM系统中,数据通常被组织成表的形式,这些表可以分为两类:主数据表(Master Data Tables)和事务数据表(Transaction Data Tables)。这些表是组织和管理SAP CRM系统中各种信息的基础。 主数据表涉及的是...

    SAP CRM课程中文自学笔记

    SAP CRM(客户关系管理)是SAP商务套件中的一个重要组成部分,用于帮助企业提升对客户的管理水平,优化客户交互,增强客户满意度和忠诚度。SAP CRM课程中文自学笔记为初学者提供了一条学习SAP CRM的系统路径。通过这...

    SAP_CRM简介

    SAP CRM,全称为SAP客户关系管理,是一款全面、以客户为中心的电子商务解决方案,旨在帮助企业管理和优化与客户的互动,特别是在销售、市场营销和服务环节。它包含三个主要组件:可操作的CRM、可分析的CRM和可协作的...

Global site tag (gtag.js) - Google Analytics