Professional Documents
Culture Documents
Sample Code For FCO - COGS - SPLIT - BASIS
Sample Code For FCO - COGS - SPLIT - BASIS
Sample Code For FCO - COGS - SPLIT - BASIS
* -------------------------------------------------------------------------
* Implement check when an own basis should be determined for COGS split !!!
* -------------------------------------------------------------------------
* Get basis only for items with COGS account maintained in COGS split customizing
CHECK lt_cogs_cust_rel IS NOT INITIAL.
* -------------------------------------------------------------------------
* Get basis info !!!
* -------------------------------------------------------------------------
* Determine new basis for COGS split if no split is available and basis BADI is
called
IF cts_split_factor[] IS INITIAL.
* Get relevant CURTPs for document - transaction currency + all CURTP relevant for
material ledger
LOOP AT it_acccr ASSIGNING <ls_acccr>
WHERE posnr = is_current_accit-posnr.
CLEAR: ls_curtp_info, lv_curtp.
IF <ls_acccr>-curtp = '00'.
* Create at least one entry for transaction currency
MOVE-CORRESPONDING <ls_acccr> TO ls_curtp_info.
INSERT ls_curtp_info INTO TABLE lts_curtp_info.
ELSE.
SELECT SINGLE curtp INTO lv_curtp FROM fmlt_curtp_ml
WHERE rbukrs = is_current_accit-bukrs AND
curtp = <ls_acccr>-curtp.
IF lv_curtp IS NOT INITIAL.
* CURTP is relevant for material ledger
MOVE-CORRESPONDING <ls_acccr> TO ls_curtp_info.
INSERT ls_curtp_info INTO TABLE lts_curtp_info.
ENDIF.
ENDIF.
ENDLOOP.
* Get cost estimate keys for all relevant valuation views for current material /
plant
CALL FUNCTION 'FCO_COGS_GET_ACTIVE_VERSION'
EXPORTING
i_material_ext = ls_accit_mat-matnr
i_plant = ls_accit_mat-werks
i_sales_order = is_current_accit-kdauf
i_sales_order_item = is_current_accit-kdpos
i_valuation_type = ls_accit_mat-bwtar
i_special_stock_ind = ls_accit_mat-sobkz
i_valuation_special_stock = ls_accit_mat-kzbws
i_posting_date = is_current_accit-budat
CHANGING
cts_valutyp_pr_cost_key = lts_valutyp_pr_cost_key
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CLEAR: lts_valutyp_pr_cost_key.
ENDIF.
* Manual calculations should not be used for split => delete KKZMA
LOOP AT lts_valutyp_pr_cost_key ASSIGNING <ls_valutyp_pr_cost_key>
WHERE kalnr IS NOT INITIAL.
CLEAR: <ls_valutyp_pr_cost_key>-kkzma.
lb_calculation_found = abap_true.
ENDLOOP.
* -------------------------------------------------------------------------
* Fill split factor / export table !!!
* -------------------------------------------------------------------------
CALL FUNCTION 'FI_CHART_OF_ACCOUNT_DETERMINE'
EXPORTING
i_bukrs = is_current_accit-bukrs
IMPORTING
e_ktopl = lv_ktopl.