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