SAP Transportation Management Message Handling

Believe or not, there is a fine graded Message Handling concept in SAP TM. Messages sent through BOPF – FBI- FPM Environment may have certain visibility settings. This is a control demand based on user experitse or area. Key users may want different level of message detailization than other users for example. You can setup the minimum severity, level of detail or problem class to display, such as to display errors only or even warnings raised by validations. You can activate to save an application log, which can become handy during troubleshooting.

TM Message Settings

You can control for which user (dedicated/all), or which user group using a PFCG role the settings apply. You can combine them also.

I have to emphasize here something gracefully. If you raise a warning message in BOPF using the below standard method, nothing will be displayed for the end user in case no customizing have been made so far.
Reason: only errors are shown by default.
This is a standard behaviour and a recommendation, you can follow in your custom developments.

/scmtms/cl_common_helper=>msg_helper_add_symsg(
  EXPORTING
    iv_key = /scmtms/if_tor_c=>sc_bo_key
    iv_node_key = /scmtms/if_tor_c=>sc_node-root
  CHANGING
   co_message = eo_message 
).

However customers or even developers are not aware of this, and raise messages using the standard BOPF way or using other standard TM message helpers, and it will totally ignore this setup. The standard is doing the control using this method for example. This can be sometimes an unwanted effect, and customers want to abbreviate using their own message handling concept, and show every message coming from custom developments. So You can overcome this creating a custom message helper, just look at the point SAP is doing the filtering in this method some stack levels below. You can apply a hard switch to use or not the custiomizing and create your own message helper class, and use it easy as the standard. In case the customer decides and introduces usage of customizing, your only thing is to change the constant without the need to touch any other custom coding, where messages are raised.

  IF co_custom_message_handling = abap_true.
    lv_relevant = abap_true.
  ELSE.
    /scmtms/cl_msg_config=>apply_usr_config_sys(
      EXPORTING
        iv_msgtype   = is_msg-msgty
        iv_detlevel  = iv_detlevel
        iv_probclass = iv_probclass
        iv_msgkind   = /scmtms/cl_msg_config=>gc_msg_kind_sys
      IMPORTING
        ev_msg_count = lv_msg_count
        ev_msg_send  = lv_relevant ).
  ENDIF.