Sap CRM : WebUi specfic Messages handling
We often come across the requirement when we need to suppress the specific messages on web ui which we not find in the message container CL_CRM_GENIL_MESS_CONT_MANAGER .This Messages we will get from the reference of class cl_bsp_wd_message_service.
1. The messages which are added to the global message container can be deleted by resetting the class :
DATA: lr_core TYPE REF TO cl_crm_bol_core,
lr_msg TYPE REF TO cl_crm_genil_mess_cont_manager.
lr_core = cl_crm_bol_core=>get_instance( ).
*Create a instance of message container
lr_msg = lr_core->get_message_cont_manager( ).
*Reset the container to delete the messages
lr_msg->reset( ).
2. But when we want to delete any specific messages type from web ui using the
reference of class cl_bsp_wd_message_service.
Read all the messages that are added by reference of class cl_bsp_wd_message_service by below code snippet:
DATA: lr_msg_srv TYPE REF TO cl_bsp_wd_message_service ,
lv_ref_kind TYPE crmt_object_kind,
lv_msgidno TYPE symsgno,
lt_idno TYPE bal_r_idno,
ls_idno TYPE bal_s_idno,
lv_activity_guid TYPE crmt_object_guid,
lr_messages TYPE REF TO bsp_wd_message_tab,
lr_entity TYPE REF TO if_bol_bo_property_access,
lv_guid TYPE REF TO data.
lt_message TYPE crmt_orgman_symsgno_tab,
lr_mess_obj TYPE REF TO cl_crm_message_obj_bt.
FIELD-SYMBOLS :
<lt_message> TYPE bsp_wd_message_tab,
<ls_message> TYPE bsp_wd_message.
FIELD-SYMBOLS:
<l_guid> TYPE crmt_object_guid.
CONSTANTS:
lc_msgid TYPE symsgid VALUE ‘R11’.
lr_msg_srv = me->view_manager->get_message_service( ).
CALL METHOD lr_msg_srv->get_messages
EXPORTING
iv_msg_type = ‘W’
RECEIVING
rv_result = lr_messages.
*We got all the required messages in lr_messages
ASSIGN lr_messages->* TO <lt_message>.
*Then call the below function module to delete the specific messages
lv_msgidno = ‘185’.
INSERT lv_msgidno INTO TABLE lt_message.
LOOP AT lt_message INTO lv_msgidno.
CLEAR ls_idno.
ls_idno–sign= ‘I’.
ls_idno–option = ‘EQ’.
ls_idno–low–msgid = lc_msgid.
ls_idno–low–msgno = lv_msgidno.
APPEND ls_idno TO lt_idno.
ENDLOOP.
* The below FM ‘CRM_MESSAGES_DELETE’ is used the delete the specific messages from the web ui
CALL FUNCTION ‘CRM_MESSAGES_DELETE’
EXPORTING
* it_r_msgid = ‘R11’
it_r_msgidno = lt_idno
iv_ref_object = lv_activity_guid
iv_ref_kind = lv_ref_kind
EXCEPTIONS
appl_log_error = 1
OTHERS = 2.
IF sy–subrc
<> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
In the above function module we have to pass the specific
message id number in the required passing parametr also order_guid and ref_kind
in order to delete the specif messages.
Hope it will be going to help for those who gets confuse while handling the messages on webUi .
Happy Learning
Cheers !!
Vicky
Nice post.
Thanks for share.
Regards, Argel.
Hello Argel,
Thanks for your feedback !!
Regards,
Vicky.
Works like a Charm 🙂
Thanks for the Post, Prashant.
Regards,
Mark.
Thanks Mark