abap系统消息处理与自定义消息处理

来源:互联网 发布:java pow方法 编辑:程序博客网 时间:2024/05/01 03:05

CLASS cl_message_mm DEFINITION LOAD.

DATA: gl_handle TYPE REF TO cl_handle_mm,
      gl_dummy(72),
      gl_message_handler TYPE REF TO cl_message_handler_mm,
      gl_subrc           TYPE sy-subrc,
      gl_tabix           TYPE sy-tabix,
      gl_objdesc         TYPE mepo_objdesc.

************************************************************************
*                                                                      *
* Current business Object                                              *
*                                                                      *
************************************************************************
DEFINE mmpur_business_obj.
  gl_subrc = sy-subrc.
  gl_tabix = sy-tabix.
  call method cl_message_mm=>set_current_business_obj
                              exporting im_business_obj = &1.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_business_obj_id.
  gl_subrc = sy-subrc.
  gl_tabix = sy-tabix.
  call method cl_handle_manager_mm=>get
                                  exporting im_id = &1
                                  importing ex_handle = gl_handle.

  call method cl_message_mm=>set_current_business_obj
                              exporting im_business_obj = gl_handle.
  call method cl_message_mm=>set_current_context
                                    exporting im_context = 5.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_obj_from_id.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_handle_manager_mm=>get
                                  exporting im_id = &1
                                  importing ex_handle = &2.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

* Definitions via varkey (non object Case)
DEFINE mmpur_business_obj_hd.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  clear gl_objdesc.
  gl_objdesc-objtyp = cl_po_header_handle_mm=>c_objtyp.
  gl_objdesc-varkey+0(10) = &1.
  call method cl_message_mm=>set_current_business_obj
                      exporting im_business_obj_var = gl_objdesc.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_business_obj_it.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  clear gl_objdesc.
  gl_objdesc-objtyp = cl_po_item_handle_mm=>c_objtyp.
  gl_objdesc-varkey+0(10) = &1.
  gl_objdesc-varkey+10(5) = &2.
  call method cl_message_mm=>set_current_business_obj
                      exporting im_business_obj_var = gl_objdesc.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_business_obj_sc.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  clear gl_objdesc.
  gl_objdesc-objtyp = cl_po_schedule_handle_mm=>c_objtyp.
  gl_objdesc-varkey+0(10) = &1.
  gl_objdesc-varkey+10(5) = &2.
  gl_objdesc-varkey+15(4) = &3.
  call method cl_message_mm=>set_current_business_obj
                      exporting im_business_obj_var = gl_objdesc.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_business_obj_ac.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  clear gl_objdesc.
  gl_objdesc-objtyp = cl_po_accounting_handle_mm=>c_objtyp.
  gl_objdesc-varkey+0(10) = &1.
  gl_objdesc-varkey+10(5) = &2.
  gl_objdesc-varkey+15(2) = &3.
  call method cl_message_mm=>set_current_business_obj
                      exporting im_business_obj_var = gl_objdesc.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.


************************************************************************
*                                                                      *
* meta fields                                                          *
*                                                                      *
************************************************************************
DEFINE mmpur_metafield.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_contextfield_mm=>set_current_field
                                  exporting im_field = &1.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.
*
DEFINE mmpur_metafield_add.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_contextfield_mm=>add_to_current_fields
                                    exporting im_field = &1.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.
*-----------------------------------------------------------------------
*
* Context
*
*-----------------------------------------------------------------------
DEFINE mmpur_context.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_message_mm=>set_current_context
                                    exporting im_context = &1.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.
************************************************************************
*                                                                      *
* Events                                                               *
*                                                                      *
************************************************************************
DEFINE mmpur_message_config.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_message_mm=>configure exporting im_msgty = &1
                                                 im_dialog = &2
                                                 im_collect = &3
                                       exceptions failure = 01.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.


* simple replacement of the ABAP message statement

DEFINE mmpur_message.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.

  message id &2 type &1 number &3 with &4 &5 &6 &7 into gl_dummy.

  call method cl_message_mm=>create exporting im_msgid = &2
                                              im_msgty = &1
                                              im_msgno = &3
                                              im_msgv1 = sy-msgv1
                                              im_msgv2 = sy-msgv2
                                              im_msgv3 = sy-msgv3
                                              im_msgv4 = sy-msgv4
                                    exceptions failure = 01
                                               dialog  = 02.
  if sy-subrc = 1 or sy-subrc = 2.

    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  endif.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

* configurable message ( T160M )

DEFINE mmpur_message_enaco.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.

  message id &2 type 'W' number &3 with &4 &5 &6 &7 into gl_dummy.

  call method cl_message_mm=>create exporting im_msgid = &2
                                              im_msgty = &1
                                              im_msgno = &3
                                              im_msgv1 = sy-msgv1
                                              im_msgv2 = sy-msgv2
                                              im_msgv3 = sy-msgv3
                                              im_msgv4 = sy-msgv4
                                              im_custom = 1
                                    exceptions failure = 01
                                               dialog  = 02.
  if sy-subrc = 1 or sy-subrc = 2.

    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  endif.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_message_enaco_forced.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  message id &2 type 'W' number &3 with &4 &5 &6 &7 into gl_dummy.
  clear sy-msgty.
  call method cl_message_mm=>create exporting im_msgid = &2
                                              im_msgty = &1
                                              im_msgno = &3
                                              im_msgv1 = sy-msgv1
                                              im_msgv2 = sy-msgv2
                                              im_msgv3 = sy-msgv3
                                              im_msgv4 = sy-msgv4
                                              im_custom = 1
                                     im_force_collect  = mmpur_yes
                                    exceptions failure = 01
                                               dialog  = 02.
  if sy-subrc = 1 or sy-subrc = 2.

    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  endif.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

 

* specialized version of mmpur_message: useful for soft
* error messages

DEFINE mmpur_message_forced.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  message id &2 type &1 number &3 with &4 &5 &6 &7 into gl_dummy.

  call method cl_message_mm=>create exporting im_msgid  = &2
                                              im_msgty  = &1
                                              im_msgno  = &3
                                              im_msgv1  = sy-msgv1
                                              im_msgv2  = sy-msgv2
                                              im_msgv3  = sy-msgv3
                                              im_msgv4  = sy-msgv4
                                      im_force_collect  = mmpur_yes
                                    exceptions failure  = 01
                                               dialog   = 02.
  if sy-subrc = 1 or sy-subrc = 2.

    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  endif.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_remove_messages_by_id.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_handle_manager_mm=>get
                                  exporting im_id = &1
                                  importing ex_handle = gl_handle.

  call method cl_message_handler_mm=>get_handler importing
                            ex_handler = gl_message_handler.

  call method gl_message_handler->remove_by_bo exporting
                               im_business_obj = gl_handle
                               im_context      = 5.
  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

DEFINE mmpur_remove_msg_by_context.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  call method cl_handle_manager_mm=>get
                       exporting im_id = &1
                       importing ex_handle = gl_handle.
  call method cl_message_handler_mm=>get_handler
                       importing ex_handler = gl_message_handler.
  call method gl_message_handler->remove_by_bo
                  exporting im_business_obj = gl_handle
                            im_context      = &2.

  sy-subrc = gl_subrc.
  sy-tabix = gl_tabix.
END-OF-DEFINITION.

 

 

*-------如何使用

if it_ekpo-NETWR > 100000000.
  mmpur_message 'W' 'ZEMM' '045' '100,000,000' '' '' ''.
endif .

 

*---包含程序

 include MM_MESSAGES_MAC .

原创粉丝点击