Quantcast
Channel: SCN : Blog List - Customer Relationship Management (SAP CRM)
Viewing all articles
Browse latest Browse all 229

How to delete attachments belonging to a business object via code

$
0
0

For a complete list of my blogs regarding content management in CRM, please seehere.

In the beginning I consider it is very easy to delete attachments via code, just like below.

 

I have defined one method with following two importing parameters:

iv_bor_type type string - the BOR type of your business object

iv_uuid type raw16 - the guid of your business object instance

rv_successful type abap_bool - indicates whether the deletion is successful

 

DATA: ls_bo          TYPE SIBFLPORB,
          lt_loios    TYPE SKWF_IOS,          ls_loios    TYPE SKWF_IO,          ls_error    TYPE SKWF_ERROR,          lt_badios   TYPE SKWF_IOERRS,          lv_del_flag TYPE ABAP_BOOL.    ls_bo-instid = iv_uuid.    ls_bo-typeid = iv_bor_type.    ls_bo-catid  = 'BO'.    rv_successful = abap_false.    CALL METHOD cl_crm_documents=>get_info      EXPORTING        business_object = ls_bo      IMPORTING        loios           = lt_loios.    LOOP AT lt_loios INTO ls_loios.      CALL METHOD cl_crm_documents=>lock        EXPORTING          is_bo    = ls_bo          is_loio  = ls_loios        IMPORTING          es_error = ls_error.      IF ls_error IS NOT INITIAL.         RETURN.      ENDIF.    ENDLOOP.    CALL METHOD cl_crm_documents=>delete      EXPORTING         business_object = ls_bo         ios             = lt_loios      IMPORTING         bad_ios         = lt_badios         error           = ls_error.    IF ls_error IS INITIAL. " deletion failed       rv_successful = abap_true.    ENDIF.

 

Through testing I found it works perfectly well with most of BOR type like product, ibase, BP, and one order.

However, it does not work for my new BOR type CRMSOCPOST in CRM7.0 EHP3 - the relationship between my bo and the attachments is not really deleted until

an explicit call COMMIT WORK is written in the report. However, for any other standard CRM BOR type, the COMMIT WORK is not needed. Why?

 

After some debugging finally I find answer. Have you already observed the comments below? It is written quite clearly: if the business object exists in the database, the COMMIT WORK is not needed.

clipboard1.png

Back to my case, since CRMSOCPOST is a new BOR type created in CRM7.0 EHP3, the function module does not recoginize it, so the code reached line 225, and

then the bo instance is regarded as non-exist in DB. So an explicit COMMIT WORK is always necessary to make deletion work.

clipboard2.png


Viewing all articles
Browse latest Browse all 229

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>