欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何避免SAP订单保存后生成的中间件CSA inbound queue sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

程序员文章站 2022-05-30 07:57:30
...

By default after a service order is saved, there is a distribution lock set, which prevents you from editing this order in status transferring. Click edit button you will meet with error message below until it has successfully been transferred.

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

In blog Regarding Service Order distribution lock and status I introduce the step how to avoid this distribution lock. Nevertheless there is still BDOC and an inbound CSA queue automatically generated. The purpose of CSA queue has already been well explained by Rohit Sharma in this thread:

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

In case you really would like that for a given transaction type, no BDOC and inbound CSA queue should be generated for whatever reasons, you can suppress this behavior by enhancement on function module CRM_ORDER_SAVE_OW.

In this function module, the BDOC and CSA queue will be created by function module CRM_ORDER_UPLOAD_SINGLE only when ALL the THREE condition in IF are fulfilled. The second condition, lv_send_bdoc is controlled by a switch.

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

So the solution would be: Create a new enhancement on function module CRM_ORDER_SAVE_OW:

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

Insert one line below:

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

Suppose you would like that for transaction type ZSRV, no BDOC should be generated, then the source code of run method:

METHOD run.
    DATA lv_process_type    TYPE crmt_process_type.

    LOOP AT it_object_list ASSIGNING FIELD-SYMBOL(<guid>).
      CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'
        EXPORTING
          iv_orderadm_h_guid     = <guid>
        IMPORTING
          ev_process_type        = lv_process_type
        EXCEPTIONS
          admin_header_not_found = 1
          OTHERS                 = 2.

      CHECK lv_process_type = 'ZSRV'.

      CALL FUNCTION 'CRM_ORDER_SET_NO_BDOC_SEND_OW'
        EXPORTING
          iv_guid = <guid>
          iv_flag = 'N'.
    ENDLOOP.

  ENDMETHOD.

Now the lv_send_bdoc will be set as false in the runtime according to the switch you set in enhancement, as a result no BDOC and inbound queue will be created any more.

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

Now after service order is saved you can still continue to edit.

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

Update on 2017-01-23

I am told by my colleague today that there is a better solution to leverage BAdI CRM_DATAEXCHG_BADI:

 

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP 

 

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

如何避免SAP订单保存后生成的中间件CSA inbound queue
            
    
    
        sapSAP云平台SAP Cloud PlatformSAP成都研究院ABAP