Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Supplier list: Deactivate item

Hi all,

This is the scenario:

In an empty row, if I uncheck the field "Supplier is active", write the Supplier ID and push Enter then the standard code somewhere set the field "Supplier is active"  again to 'X'. This is the standard behavior.

I have a requirement in which when a new item is added the field "Supplier is active" must be disabled and unchecked. ( We have a custom report to activate or deactivate the items, this report can be executed only by some users depending on the user roles ) 

I've changed the visualization of the field by customizing, but I can't uncheck the field.

I've debugged the standard code but I couldn't find the place where the field is being changed.

The badi BBP_DOC_CHANGE_BADI is not used for object BUS2206.

I'm trying to modify the field adding an enhancement spot at the beginning of the method /SAPSRM/IF_CLL_MAPPER~UPDATE of class /SAPSRM/CL_CH_WD_DOTM_ASL_SOS. But all the attempts I've tried don't work.

Do you know how to do it? Or a workaround to do that?

Thanks in advance.

P.S. This is part of the code I've tried in method

DATA:

         ls_zz_item   TYPE /sapsrm/s_cll_asl_sos_list,

         lt_zz_item   TYPE /sapsrm/if_ch_wd_set_facade=>gt_guid_element,

         lt_items     TYPE bbpt_guid,

         lo_zz_item   TYPE REF TO /sapsrm/if_ch_wd_set_element..

   DATA: lt_messages     TYPE bbpt_pd_messages,

         lv_activity TYPE j_vorgang.

   FIELD-SYMBOLS <ls_zz_item> TYPE /sapsrm/if_ch_wd_set_facade=>gs_guid_element.

* Select current lines

   SELECT guid

    INTO TABLE lt_items

    FROM crmd_orderadm_i

    WHERE header EQ MV_BO_GUID

    ORDER BY guid.

   lt_zz_item = mon_cll_set_facade->get_data_elements( ).

   LOOP AT lt_zz_item ASSIGNING <ls_zz_item>.

     lo_zz_item = <ls_zz_item>-set_element.

     lo_zz_item->get_static_attributes( IMPORTING rv_attributes = ls_zz_item ).

     CHECK ls_zz_item-SH_PARTNER_ID IS NOT INITIAL.

* Check if is a new line or already exists:

     READ TABLE lt_items

      TRANSPORTING NO FIELDS

      WITH KEY guid = ls_zz_item-guid

      BINARY SEARCH.

     IF sy-subrc NE 0.

*    1st Attempt

*      ls_zz_item-itm_released = space.

*      CALL METHOD lo_zz_item->set_static_attributes

*        EXPORTING

*          iv_static_attributes = ls_zz_item.

*      CALL METHOD lo_zz_item->set_changed_by_client

*        EXPORTING

*          flag   = ABAP_TRUE.

*    2nd Attempt  "DUMP !!!

*        TRY.

*          mo_pdo->delete_item( EXPORTING item_guid = ls_zz_item-guid

*                               CHANGING  co_message_handler = mo_pdo_message_consumer ).

*        CATCH /sapsrm/cx_pdo_abort.

*

*        ENDTRY.

*    3rd Attempt

       lv_activity  =  /sapsrm/if_pdo_activities_c=>gc_pdo_item_deactivate.

*     Update the status of the item as inactive

       CALL FUNCTION 'BBP_PROCDOC_STATUS_CHANGE'

         EXPORTING

           iv_item_guid  = ls_zz_item-guid

           i_activity    = lv_activity

           i_object_type = /sapsrm/if_pdo_obj_types_c=>gc_pdo_asl

           i_save_db     = abap_false

           i_test_run    = abap_false

         TABLES

           e_messages    = lt_messages[].

*    4th Attempt- 1st part

*      ls_del_item-guid = ls_zz_item-guid.

*      APPEND ls_del_item TO lt_del_items.

     ENDIF.

   ENDLOOP.

*    4. Attempt 2nd part  "DUMP !!!

*  IF lt_del_items[] IS NOT INITIAL.

*    mo_parent_bo_mapper->delete_item( it_item_guid = lt_del_items ).

*  ENDIF.

Tags:

Helpful Answer

by
Not what you were looking for? View more on this topic or Ask a question