【轉】採購訂單行項目檢查增強

採購訂單行項目檢查增強

使用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.

 

 

 

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