zoukankan      html  css  js  c++  java
  • 使用代码删除SAP CRM的附件(attachment)数据

    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 and one returning parameter:

    (1) iv_bor_type type string – the BOR type of your business object
    (2) iv_uuid type raw16 – the guid of your business object instance
    (3) 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.

    Back to my case, since CRMSOCPOST is a new BOR type created in CRM7.0 EHP3, the function module does not recognize 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.

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

  • 相关阅读:
    数据结构3 特殊二叉树
    数据结构2 树与二叉树
    数据结构1 线性结构
    《数据库系统概念》20-恢复系统
    《数据库系统概念》19-并发控制
    数据库系统概念》18-事务
    巨杉内核笔记 | 会话(Session)
    巨杉Tech|SequoiaDB 巨杉数据库高可用容灾测试
    巨杉学习笔记 | SequoiaDB MySQL导入导出工具使用实战
    保险行业持续扩展,巨杉数据库再次中标人保财险
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13444723.html
Copyright © 2011-2022 走看看