【转】采购订单行项目检查增强

采购订单行项目检查增强

使用BADI“ME_PROCESS_PO_CUST”的方法CHECK中增强,增加对采购订单行项目的校验,若发现错误,将这些错误消息按照行项目归集显示。

完整示例代码:

METHOD IF_EX_ME_PROCESS_PO_CUST~CHECK .
  INCLUDE MM_MESSAGES_MAC.
  DATA:LT_PO_ITEM TYPE PURCHASE_ORDER_ITEMS,
       LS_PO_ITEM LIKE LINE OF LT_PO_ITEM,
       LV_MESSAGE TYPE CHAR255,
       LS_ITEM    TYPE MEPOITEM.

  LT_PO_ITEM = IM_HEADER->GET_ITEMS( ).

  LOOP AT LT_PO_ITEM INTO LS_PO_ITEM.
    LS_ITEM = LS_PO_ITEM-ITEM->GET_DATA( ).
* ....
    IF LS_ITEM-MATNR IS INITIAL.
      MMPUR_BUSINESS_OBJ_ID LS_ITEM-ID. "确定错误消息显示到哪个行项目上
      MMPUR_MESSAGE_FORCED  'E' 'ZMM001' '001' LV_MESSAGE '' '' ''. "收集错误消息
      CALL METHOD LS_PO_ITEM-ITEM->INVALIDATE( ). "将发生错误的行设置为无效行
      CH_FAILED = 'X'.
    ENDIF.

  ENDLOOP.
ENDMETHOD.                    "IF_EX_ME_PROCESS_PO_CUST~CHECK

 

其中宏mmpur_business_obj_id就是用来确定错误消息显示到哪个行项目上的。

宏(Macros)是一段独立的代码,能实现数据的运算与输出,功能与子程序类似,主要应用于同一程序中某些重复的运算,以简化代码。与子程序不同的是,宏通过&N(N为索引)接收传入的参数,不需要定义接收参数的类型及格式。宏只能被本程序中定义于宏后面的语名所调用,宏一般定义于程序最开始。

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_message_forced.
  set extended check off.
  gl_tabix = sy-tabix.
  gl_subrc = sy-subrc.
  message id &2 type &1 number &3 with &4 &5 &6 &7 into gl_dummy. "#EC MG_PAR_CNT

  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 = cl_mmpur_constants=>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.
  set extended check on.
END-OF-DEFINITION.

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章