Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8372

Re: CRM_COPY_BADI for item categories???

$
0
0

Hi Bala krishna,

 

I have the similar requirement where i have to restrict the items based on channel_type and fullfilment_type zfields values from indirect quote.

 

the logic is below, the problem i am facing is the copy badi is copying all the items instead of restricting them to the condition..

 

condition is channel_type = 2 & fullfilment_type = 2 then it should not allow the items to copy but the order is having all the items copied..

 

 

please help me as i am CLEARINGcs_orderadm_i but items are getting copied to order.

 

DATA: lt_header_guid     TYPE crmt_object_guid_tab,

         ls_header_guid     TYPE crmt_object_guid,

         lv_distributor_no  TYPE crmt_partner_no,

         ls_orderadm_i      TYPE crmt_orderadm_i_badi,

         lv_item_type       TYPE crmt_item_type_db,

         ls_input_fields    TYPE crmt_input_field_names_tab,

         lt_partner_h       TYPE crmt_partner_external_wrkt,

         lw_partner_h       TYPE crmt_partner_external_wrk,

*        lt_product_i       TYPE crmt_product_i_wrkt,

*        lw_product_i       TYPE CRMT_PRODUCT_I_WRK,

         lt_orderadm_h      TYPE crmt_orderadm_h_wrkt,

         lw_orderadm_h      TYPE crmt_orderadm_h_wrk,

         lt_ref_orderadm_i  TYPE crmt_orderadm_i_wrkt,

         lw_ref_orderadm_i  TYPE crmt_orderadm_i_wrk,

         lv_chnl_type       TYPE zadtel0000my,

         lv_ff_type         TYPE zadtel0000cb,

         lv_fct             TYPE crmt_partner_fct,

         w_req_objects      TYPE crmt_object_name,

         t_req_objects      TYPE crmt_object_name_tab.

 

*  CONSTANTS :  c_orderadm_h(10)           TYPE c                          VALUE 'ORDERADM_H' ,

*               c_orderadm_i(10)           TYPE c                          VALUE 'ORDERADM_I' ,

*               c_partner_h(8)             TYPE c                          VALUE 'PARTNER'    .

*              c_part_fun_disti           TYPE crmt_partner_fct           VALUE 'ZR000001'.

 

**Orderadm_h

*  CLEAR  w_req_objects.

*  MOVE   c_orderadm_h TO w_req_objects.

*  INSERT w_req_objects INTO TABLE t_req_objects.

*

**orderadm_i

*  CLEAR  w_req_objects.

*  MOVE   c_orderadm_i TO w_req_objects.

*  INSERT w_req_objects INTO TABLE t_req_objects.

*

**partner_h

*  CLEAR w_req_objects.

*  MOVE   c_partner_h TO w_req_objects.

*  INSERT w_req_objects INTO TABLE t_req_objects.

 

   ls_orderadm_i    = cs_orderadm_i.

   ls_input_fields  = ct_input_field_names.

   ls_header_guid   = is_ref_orderadm_i-header.

 

   APPEND ls_header_guid TO lt_header_guid.

 

 

   CALL FUNCTION 'CRM_ORDER_READ'     "CRM_ORDER_READ fm

     EXPORTING

       it_header_guid       = lt_header_guid

*      it_requested_objects = t_req_objects

*      iv_mode              = 'C'

     IMPORTING

       et_orderadm_h  = lt_orderadm_h

       et_orderadm_i  = lt_ref_orderadm_i

       et_partner     = lt_partner_h

*      et_product_i   = lt_product_i

    EXCEPTIONS

           document_not_found   = 1

           error_occurred       = 2

           document_locked      = 3

           no_change_authority  = 4

           no_display_authority = 5

           no_change_allowed    = 6

           OTHERS               = 7.

 

   IF sy-subrc = 0.

* Get partner for distribution channel

     READ TABLE lt_partner_h INTO lw_partner_h WITH KEY partner_fct = 'ZR000001'.

     IF sy-subrc = 0.

       lv_distributor_no = lw_partner_h-partner_no.

       lv_fct            = lw_partner_h-partner_fct.

     ENDIF.

 

*Get Distribution Channel, fulfillment type and item category

     READ TABLE lt_orderadm_h INTO lw_orderadm_h WITH KEY guid = ls_header_guid.

     IF sy-subrc = 0.

       lv_chnl_type = lw_orderadm_h-zz_chanl_typ.

     ENDIF.

 

     lv_ff_type   = is_ref_orderadm_i-zz_fulfilmnt_typ.

     lv_item_type = is_ref_orderadm_i-itm_type.

 

   ENDIF.

 

*  IF ( lv_item_type = 'ZBAS' ). "or ( lv_item_type is not initial ) .

 

   CASE lv_chnl_type.

     WHEN 03.

*      IF ( lv_fct IS INITIAL ). "AND ( lv_ff_type IS INITIAL ).

       IF ( lv_fct IS INITIAL ).

         CLEAR:cs_orderadm_i.

         REFRESH: ct_input_field_names.

         cs_orderadm_i    = ls_orderadm_i.

         ct_input_field_names  = ls_input_fields.

 

*      ELSEIF ( lv_fct IS NOT INITIAL ). "AND ( lv_ff_type IS INITIAL ).

       ELSEIF ( lv_fct IS NOT INITIAL ).

         CLEAR:cs_orderadm_i.

         REFRESH: ct_input_field_names.

       ENDIF.

 

     WHEN 02.

       IF "( lv_fct IS INITIAL ) AND

           ( lv_ff_type = '01' ).

         CLEAR:cs_orderadm_i.

         REFRESH: ct_input_field_names .

         cs_orderadm_i    = ls_orderadm_i.

         ct_input_field_names  = ls_input_fields.

 

       ELSEIF "( lv_fct IS INITIAL ) AND

         ( lv_ff_type = '02' ).

         CLEAR: cs_orderadm_i.

         REFRESH: ct_input_field_names.

       ENDIF.

 

   ENDCASE.

*  ENDIF.


Viewing all articles
Browse latest Browse all 8372

Trending Articles



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