首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何阻止指定类型的SAP CRM附件被上传到服务器

如何阻止指定类型的SAP CRM附件被上传到服务器

作者头像
Jerry Wang
发布2020-08-02 16:19:07
7250
发布2020-08-02 16:19:07
举报

Requirement: end user could not be allowed to upload attachment whose size is greater than a given limit for example 400KB. Solution: (1) Create a BAdI implementation via SPRO->Customer Relationship Management->Basic Functions->Content Management->Business Add-Ins-> Confirmation of Changed Documents

(2) copy the following source code to BAdI Implementation. For code detail please refer to comment for each line.

  METHOD if_ex_crm_documents~carry_out_action.
    CONSTANTS: cv_max_size TYPE int4 VALUE 409600. "400KB
    DATA: lt_loios  TYPE skwf_ios,
               ls_error  TYPE skwf_error,
               lv_size   TYPE sdok_fsize,
               lt_badios TYPE skwf_ioerrs.
    READ TABLE changed_documents ASSIGNING FIELD-SYMBOL(<first_line>) INDEX 1.
    CHECK sy-subrc = 0.
    " The badi implementation will be called whenever there is change on attachment ( create, update and delete), since it is necessary to filter out the change       
    "  mode
    CHECK <first_line>-action = 'CREATE_DOCUMENT'.
    DATA(ls_bo) = VALUE sibflporb( instid = <first_line>-instidbor
                                   typeid = <first_line>-typeidbor
                                   catid  = <first_line>-catidbor ).
    DATA(ls_loios) = VALUE skwf_io( objtype = <first_line>-objtype class = <first_line>-class objid = <first_line>-objid ).
    APPEND ls_loios TO lt_loios.
    CALL METHOD cl_crm_documents=>get_file_info
      EXPORTING
        loio      = ls_loios
      IMPORTING
        file_size = lv_size.
    CHECK lv_size >= cv_max_size.
    " Since this BAdI implementation could only be called after the attachment is created, so technically speaking we could not prevent the attachment creation indeed, but could only delete the attachment after its creation
    CALL METHOD cl_crm_documents=>delete
      EXPORTING
        business_object = ls_bo
        ios             = lt_loios
      IMPORTING
        bad_ios         = lt_badios
        error           = ls_error.
    COMMIT WORK AND WAIT.
    " raise an error message to prompt user to upload the attachment with smaller size
    lo_service->add_message( EXPORTING iv_msg_type = 'E' iv_msg_id = 'ZCM_JERRY_TEST' iv_msg_number = '000' ).
  ENDMETHOD.

Activate the BAdI implementation:

Now if an attachment is uploaded which exceeds 400KB, the end user will see an error message in UI.

f

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档