Professional Documents
Culture Documents
METHOD if_ex_badi_j1b_extend_taxes~icms_st_recalculate.
DATA: vl_base(12) TYPE p DECIMALS 6,
vl_valor(12) TYPE p DECIMALS 6,
vl_fator TYPE p DECIMALS 2,
vl_st_base TYPE z_tax,
vl_st_amount TYPE z_tax,
vl_st_rate TYPE z_tax,
rl_iva TYPE RANGE OF mwskz, "Inc DM01
rl_iva_difal_st TYPE RANGE OF mwskz, "Inc DM01
wl_valida_st TYPE zzmm_valid_st.
ASSIGN ('(SAPLV61A)KOMP-STEUC') TO FIELD-SYMBOL(<fs_ncm>).
ASSIGN ('(SAPLV61A)KOMK-LIFNR') TO FIELD-SYMBOL(<fs_lifnr>). "Inc DM0
1
ASSIGN ('(SAPLV61A)KOMP-MWSKZ') TO FIELD-SYMBOL(<fs_iva>). "Inc DM0
1
SELECT SINGLE *
FROM zzmm_valid_st
INTO wl_valida_st
WHERE bukrs = is_icms_st_recalculation-komk-bukrs
AND werks = is_icms_st_recalculation-komp-werks.
IF wl_valida_st IS NOT INITIAL.
"Begin of DM01
"Tratamento para Simples Nacional
CLEAR rl_iva.
CALL FUNCTION '/PGTPA/PARAM_BUSCA_VALORES'
EXPORTING
i_modulo = 'MM'
i_param1 = 'SIMPLES_NACIONAL'
i_param2 = 'IVA_DIFAL'
TABLES
t_range = rl_iva
EXCEPTIONS
nao_encontrado = 1
range_nao_informado = 2
OTHERS = 3.
DATA(vl_result) = abap_false.
IF rl_iva IS NOT INITIAL.
IF <fs_lifnr> IS ASSIGNED.
SELECT SINGLE tdt
FROM lfa1
INTO @DATA(vl_tdt)
WHERE lifnr = @<fs_lifnr>.
IF sy-subrc IS INITIAL AND vl_tdt = 'SN'. "Fornecedor Simples N
acional
CLEAR rl_iva_difal_st.
CALL FUNCTION '/PGTPA/PARAM_BUSCA_VALORES'
EXPORTING
i_modulo = 'MM'
i_param1 = 'DIFAL_ST'
i_param2 = 'IVA'
TABLES
t_range = rl_iva_difal_st
EXCEPTIONS
nao_encontrado = 1
range_nao_informado = 2
OTHERS = 3.
IF rl_iva_difal_st IS NOT INITIAL AND
<fs_iva> IS ASSIGNED AND
<fs_iva> IN rl_iva_difal_st[].
vl_result = abap_true. "Fazer novo cálculo
ENDIF.
ENDIF.
ENDIF.
ENDIF.
"End of DM01
IF vl_result = abap_true. "Inc DM01
vl_fator = is_icms_st_recalculation-icms_destination_rate.
vl_base = is_icms_st_recalculation-icms_base - is_icms_st_recal
culation-icms_amount.
vl_valor = is_icms_st_recalculation-icms_base - is_icms_st_recal
culation-icms_amount.
cv_icms_st_base = vl_base + ( vl_valor * vl_fator ).
cv_icms_st_amount = vl_valor * vl_fator.
ELSE.
vl_fator = 1 - is_icms_st_recalculation-icms_destination_rate.
vl_base = is_icms_st_recalculation-icms_base - is_icms_st_recalcu
lation-icms_amount.
vl_base = vl_base / vl_fator.
vl_valor = vl_base * is_icms_st_recalculation-
icms_destination_rate.
vl_valor = vl_valor - is_icms_st_recalculation-icms_amount.
cv_icms_st_base = vl_base.
cv_icms_st_amount = vl_valor.
ENDIF.
IF <fs_ncm> IS NOT INITIAL AND wl_valida_st-ncm = <fs_ncm>.
CLEAR: cv_icms_st_amount,
cv_icms_st_base.
ENDIF.
"Exporta valores para recálculo da MIRO em caso de mudança manual
de valores
"importação realizada no include LJ1BB2FC3 - Enhancement ZENH_CALC
_ICMS_33_2
ASSIGN ('(SAPLV61A)KOMP-EVRTN') TO FIELD-SYMBOL(<fs_ebeln>).
ASSIGN ('(SAPLV61A)KOMP-EVRTP') TO FIELD-SYMBOL(<fs_ebelp>).
IF <fs_ebeln> IS ASSIGNED.
IF <fs_ebelp> IS ASSIGNED.
vl_st_base = is_icms_st_recalculation-icms_base.
vl_st_amount = is_icms_st_recalculation-icms_amount.
vl_st_rate = is_icms_st_recalculation-icms_destination_rate.
CALL FUNCTION 'ZMM_ST_MEMO'
EXPORTING
i_ebeln = <fs_ebeln>
i_ebelp = <fs_ebelp>
i_st_base = vl_st_base
i_st_amount = vl_st_amount
i_st_rate = vl_st_rate.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.