CHECK_ITEM

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > English > ABAP Tutorial > ABAP Workbench Tools > Enhancement > Business Add-Ins (BADI) > Business Add-Ins (BADI) Examples > ZMB_IM_MB_MIGO_BADI >

CHECK_ITEM

METHOD if_ex_mb_migo_badi~check_item .
 
DATA: go_item TYPE goitem,
       lv_matnr_mvgr2 TYPE mvke-mvgr2,
       lv_ummat_mvgr2 TYPE mvke-mvgr2,
       lv_matnr(50),
       lv_ummat(50).
 
CLEAR: go_item, lv_matnr_mvgr2, lv_ummat_mvgr2,
        lv_matnr, lv_ummat.
 
IMPORT item TO go_item FROM MEMORY ID 'ITEM'.
 
* Insert by Bintang (3 October 2006)
 
if sy-tcode = 'MIGO'.
data: lv_KOSTV like GO_ITEM-KOSTL.
if go_item-bwart = '201' or go_item-bwart = '551' or go_item-bwart =
'555'.
   AUTHORITY-CHECK OBJECT 'K_CSKS'
            ID 'KOKRS' DUMMY
            ID 'KOSTL' FIELD go_item-KOSTL
            ID 'ACTVT' DUMMY.
 
  IF SY-SUBRC IS NOT INITIAL.
    MESSAGE E398(00) WITH 'You are not authorized for cost center '
     go_item-kostl.
  ENDIF.
elseif go_item-bwart = '261' or go_item-bwart = '531' or go_item-bwart
 = '955'.
  select SINGLE KOSTV into lv_KOSTV
  from coas
  where
   aufnr = go_item-aufnr.
 
   AUTHORITY-CHECK OBJECT 'K_CSKS'
            ID 'KOKRS' DUMMY
            ID 'KOSTL' FIELD lv_KOSTV
            ID 'ACTVT' DUMMY.
 
  IF SY-SUBRC IS NOT INITIAL.
    MESSAGE E398(00) WITH 'You are not authorized for cost center '
     lv_KOSTV ' and IO no.' go_item-aufnr.
  endif.
endif.
ENDIF.
 
* end insert
 
  IF go_item-bwart = '309'.
  IF go_item-matnr IS NOT INITIAL AND go_item-ummat IS NOT INITIAL.
 
*      Select MatGroup2 unk Matnr
    SELECT SINGLE mvgr2 INTO lv_matnr_mvgr2
    FROM mvke
    WHERE matnr EQ go_item-matnr.
 
*      Select MatGroup2 unk Ummat
    SELECT SINGLE mvgr2 INTO lv_ummat_mvgr2
    FROM mvke
    WHERE matnr EQ go_item-ummat.
 
*      Cek apakah MatGroup2 Matnr dan Ummat sama
    if lv_matnr_mvgr2 is initial.
      WRITE go_item-matnr NO-ZERO TO lv_matnr.
      CONDENSE lv_matnr.
 
*      Jika tidak sama keluarin Messege Error
      CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
        EXPORTING
           i_msgid  = '00'
           i_msgty  = 'E'
           i_msgno  = '398'
           i_msgv1  = 'Material group2 for'
           i_msgv2  = lv_matnr
           i_msgv3  = 'is still blank'
*            i_msgv4  = lv_ummat
           i_lineno = go_item-zeile.
    endif.
 
    if lv_ummat_mvgr2 is initial.
      WRITE go_item-ummat NO-ZERO TO lv_matnr.
      CONDENSE lv_matnr.
 
*      Jika tidak sama keluarin Messege Error
      CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
        EXPORTING
           i_msgid  = '00'
           i_msgty  = 'E'
           i_msgno  = '398'
           i_msgv1  = 'Material group2 for'
           i_msgv2  = lv_matnr
           i_msgv3  = 'is still blank'
*            i_msgv4  = lv_ummat
           i_lineno = go_item-zeile.
    endif.
 
    IF lv_matnr_mvgr2 NE lv_ummat_mvgr2.
 
      WRITE go_item-matnr NO-ZERO TO lv_matnr.
      CONDENSE lv_matnr.
 
      WRITE go_item-ummat NO-ZERO TO lv_ummat.
      CONDENSE lv_ummat.
 
*      Jika tidak sama keluarin Messege Error
      CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
        EXPORTING
           i_msgid  = '00'
           i_msgty  = 'E'
           i_msgno  = '398'
           i_msgv1  = 'Material group2'
           i_msgv2  = lv_matnr
           i_msgv3  = 'must same with material group2'
           i_msgv4  = lv_ummat
           i_lineno = go_item-zeile.
 
      MESSAGE 'Correct the data first' TYPE 'E'.
    ENDIF.
  ENDIF.
ENDIF.
 
*  Digunakan di cmod > EXIT_SAPMM07M_001 > ZXMBCU02
*  untuk mendapatkan Nilai GODYNPRO-ACTION dan GODYNPRO-REFDOC
 BREAK ABAP08.
FREE MEMORY ID 'M_ZXMBCU02'.
*--------------------------------------------------------------------*
 
ENDMETHOD.