2007 Mar 16 12:28 PM
i need some documents on BADI...pld help me..
2007 Mar 16 12:45 PM
Hi,
Tcode for Business ADDIN's is SE18 and SE19 (implimentation)
Go through the links:
http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cf7940e11d295df0000e82de14a/frameset.htm
and
http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cf7940e11d295df0000e82de14a/frameset.htm
One example:
BAdI Name: ZMB_DOCUMENT_BADI (Implementation name) Controlling the Unlimited GR in PO from MIGO
Definition Name: MB_DOCUMENT_BADI
Interface Name : IF_EX_MB_DOCUMENT_BADI
Implementing Class: ZCL_IM_MB_DOCUMENT_BADI
Method : MB_DOCUMENT_BEFORE_UPDATE
************************************************************************
method IF_EX_MB_DOCUMENT_BADI~MB_DOCUMENT_BEFORE_UPDATE .
DATA : return TYPE STANDARD TABLE OF bapiret2 INITIAL SIZE 0 ,
poitem TYPE STANDARD TABLE OF bapimepoitem INITIAL SIZE 0,
poitemx TYPE STANDARD TABLE OF bapimepoitemx INITIAL SIZE 0,
i_ekbe TYPE STANDARD TABLE OF ekbe INITIAL SIZE 0.
DATA : xmkpf1 TYPE mkpf,
xmseg1 TYPE mseg,
w_ekbe TYPE ekbe,
w_ekpo TYPE ekpo,
poitem1 TYPE bapimepoitem,
gv_qty TYPE menge13,
poitemx1 TYPE bapimepoitemx.
*BEFORE
LOOP AT xmseg INTO xmseg1.
IF xmseg1-bwart EQ '103' AND xmseg1-grund EQ '0001'.
poitem1-po_item = xmseg1-ebelp.
poitem1-unlimited_dlv = 'X'.
APPEND poitem1 TO poitem.
poitemx1-po_item = xmseg1-ebelp.
poitemx1-unlimited_dlv = 'X'.
APPEND poitemx1 TO poitemx.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = xmseg1-ebeln
TABLES
return = return
poitem = poitem
poitemx = poitemx.
ELSEIF xmseg1-bwart EQ '104' AND xmseg1-grund EQ '0001'.
*
COMMIT WORK .
WAIT UP TO 3 SECONDS.
poitem1-po_item = xmseg1-ebelp.
poitem1-unlimited_dlv = space.
APPEND poitem1 TO poitem.
poitemx1-po_item = xmseg1-ebelp.
poitemx1-unlimited_dlv = 'X'.
APPEND poitemx1 TO poitemx.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = xmseg1-ebeln
TABLES
return = return
poitem = poitem
poitemx = poitemx.
read TABLE return with key type = 'S'
ID = '06'
NUMBER = '023' TRANSPORTING NO FIELDS.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ELSEIF xmseg1-bwart EQ '105'.
SELECT * INTO TABLE i_ekbe FROM ekbe WHERE ebeln = xmseg1-ebeln AND
ebelp = xmseg1-ebelp AND
bwart = '105' OR bwart = '106'.
LOOP AT i_ekbe INTO w_ekbe.
IF w_ekbe-bwart EQ '105'.
gv_qty = gv_qty + w_ekbe-menge.
ELSE.
gv_qty = gv_qty - w_ekbe-menge.
ENDIF.
ENDLOOP.
*
SELECT single * INTO w_ekpo FROM ekpo WHERE ebeln = xmseg1-ebeln AND
ebelp = xmseg1-ebelp.
gv_qty = w_ekpo-menge - gv_qty.
IF xmseg1-menge > gv_qty.
MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '012' raising .
MESSAGE ID 'ZM_MSG' TYPE 'E' NUMBER '000' WITH 'You already reached the PO quantity'
raising exception error_message.
ENDIF.
ENDIF.
ENDLOOP.
endmethod.
reward if useful.
regards,
Anji