|
<< 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 > ZBADI_SCD_ACCTG > BEFORE_CHECK |
*Parameters
*IMPORTING
*I_REFOBJ Shipment
*I_SCD_ITEM Shipment cost item
*I_VTRLK Delivery header
*I_VTRLP Delivery item
*I_TRTYP Transaction type (create, change, display)
*CHANGING
*C_VFKN Account assignment line for shipment costs
*automatic assignment of internal order in account assignment.
method IF_EX_BADI_SCD_ACCTG~BEFORE_CHECK .
*** Move I/O number from Shipment document to Shipment Cost
select single TEXT1
into C_VFKN-AUFNR from VTTK
where TKNUM = I_SCD_ITEM-VFKP-REBEL.
*** G/L account Setting for Export Shipment
IF I_SCD_ITEM-VFKP-TPLST = 'P010'.
**** Shipping Cost Expense
IF I_SCD_ITEM-VFKP-FKPTY = '0001'
OR I_SCD_ITEM-VFKP-FKPTY = 'ZE02'.
C_VFKN-SAKTO = '0061019920'.
C_VFKN-KOSTL = '0021211199'.
ENDIF.
**** Insurance and Inspection Fee
IF I_SCD_ITEM-VFKP-FKPTY = '0003'
OR I_SCD_ITEM-VFKP-FKPTY = 'ZE03'.
C_VFKN-SAKTO = '0061019941'.
C_VFKN-KOSTL = '0021211199'.
ENDIF.
ENDIF.
*** G/L account Setting for Local Shipment
IF I_SCD_ITEM-VFKP-TPLST ne 'P010'.
data: gw_shipto type likp-kunnr.
data: gw_vbeln type likp-vbeln.
data: gw_vkorg type likp-vkorg.
data: gw_kostl type csks-kostl.
data: gw_lfart type likp-lfart.
data: gw_gsber type t134g-gsber.
** Kondisi untuk Uang Sewa atau Mobil Sendiri
IF I_SCD_ITEM-VFKP-FKPTY = 'Z003' or I_SCD_ITEM-VFKP-FKPTY = 'Z001'.
select single vbeln into gw_vbeln from vttp
where tknum = I_SCD_ITEM-VFKP-REBEL.
select single kunnr into gw_shipto from likp
where vbeln = gw_vbeln.
select single vkorg into gw_vkorg from likp
where vbeln = gw_vbeln.
select single lfart into gw_lfart from likp
where vbeln = gw_vbeln.
select single gsber into gw_gsber from t134g
where werks = I_SCD_ITEM-VFKP-WERKS.
** Get appropriate Cost Center
** Cost center table CSKS.
IF gw_lfart = 'NL'. " untuk pengiriman ke cabang
C_VFKN-SAKTO = '0061010692'.
IF I_SCD_ITEM-VFKP-FKPTY = 'Z003'. "Sewa
if gw_vkorg = 'A202'. "untuk Building Material
** CO Object untuk pengiriman antar cabang mobil sewa.
select single kostl into gw_kostl from csks
where kokrs = 'WSCO'
and gsber = gw_shipto
and kosar = 'V'
and khinr ge '21112000'
and khinr le '21112999'.
if sy-subrc = 0.
C_VFKN-KOSTL = gw_kostl.
Clear C_VFKN-AUFNR.
endif.
else. "untuk consumer goods
** CO Object untuk pengiriman antar cabang mobil sewa.
select single kostl into gw_kostl from csks
where kokrs = 'WSCO'
and gsber = gw_shipto
and kosar = 'V'
and khinr ge '21111000'
and khinr le '21111999'.
if sy-subrc = 0.
C_VFKN-KOSTL = gw_kostl.
Clear C_VFKN-AUFNR.
endif.
endif.
ENDIF.
ELSE. "Pengiriman ke langganan
C_VFKN-SAKTO = '0061010690'.
IF I_SCD_ITEM-VFKP-FKPTY = 'Z003'. "Sewa
if gw_vkorg = 'A202'. "untuk Building Material
** CO Object untuk pengiriman ke langganan mobil sewa.
if gw_gsber ne 'AB01'.
select single kostl into gw_kostl from csks
where kokrs = 'WSCO'
and gsber = gw_gsber
and kosar = 'V'
and khinr ge '21111000'
and khinr le '21111999'.
if sy-subrc = 0.
C_VFKN-KOSTL = gw_kostl.
Clear C_VFKN-AUFNR.
endif.
else.
C_VFKN-KOSTL = '0021112101'.
Clear C_VFKN-AUFNR.
endif.
else. "untuk consumer goods
** CO Object untuk pengiriman ke langganan mobil sewa.
if gw_gsber ne 'AB01'.
select single kostl into gw_kostl from csks
where kokrs = 'WSCO'
and gsber = gw_gsber
and kosar = 'V'
and khinr ge '21111000'
and khinr le '21111999'.
if sy-subrc = 0 and gw_gsber ne 'AB01'.
C_VFKN-KOSTL = gw_kostl.
Clear C_VFKN-AUFNR.
endif.
else.
case I_SCD_ITEM-VFKP-WERKS.
when '2011'.
C_VFKN-KOSTL = '0021111101'.
when '2012'.
C_VFKN-KOSTL = '0021111102'.
when '2013'.
C_VFKN-KOSTL = '0021111103'.
endcase.
Clear C_VFKN-AUFNR.
endif.
endif.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
endmethod.