且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-03-30 06:05:32

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


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

  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() 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 -action = 'CREATE_DOCUMENT'.

   DATA(ls_bo) = VALUE sibflporb( instid = -instidbor

                                  typeid = -typeidbor

                                  catid  = -catidbor ).

   DATA(ls_loios) = VALUE skwf_io( objtype = -objtype class = -class objid = -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.

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