Skip to Content

Cálculo ICMS ST com MVA (margem valor agregado) para Consumo

Boa tarde,

Alguém já precisou configurar um cenário para calcular ICMS ST com MVA?

Estamos na base S/4Hana e apenas dá certo o cálculo quando o material e o código de imposto são de industrialização. Para consumo não funciona o cálculo.

Se alguém já passou por isso ou souber de alguma nota SAP, por gentileza, agradeço se puder compartilhar a solução.

Att,

Madi

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

6 Answers

  • Jun 04 at 09:38 PM

    Olá Madi,

    Para os cenário de compras existe no código um check para saber se o material é de consumo ou industrialização.

    Se for consumo ele não vai calcular o surcharge (MVA).

    Veja o código abaixo:

    Class: CL_TAX_CALC_BR

    Method: CALCULATE_SUBTRIB

    * Apply surcharge only if usage is not consumption. "2443042
    lv_base_sur = lv_base.
    IF ms_tax_control-usage <> mc_consum.
    * SubTrib surcharge rate
    lv_base_sur = lv_base_sur * ( 1 + ms_tax_data-subtribsurcharge ).
    ENDIF.

    ...

    SubTrib value is difference between the two ICMS amounts
    ev_amount = lv_val_sub - lv_val_icms.

    ...

    Existe algumas BADIS que foram entregues devidos a alguns requerimentos específicos de alguns estados.

    https://blogs.sap.com/2017/01/13/calculo-do-difal-para-operacoes-interestaduais-de-usoconsumo-e-ativos-imobilizados/

    Talvez vocês consigam implementar alguma lógica dentro de alguma dessas BADIs para atender o requerimento da empresa de vocês.

    Abs,

    Patricia

    Add comment
    10|10000 characters needed characters exceeded

  • Jul 25, 2017 at 12:26 PM

    Olá Madi,

    Além de verificar se há o flag no campo "Calc.Subst.Tribut" , deve verificar se para o Código de imposto esta marcado como "Consumo". Se estiver, não faz o cálculo de ICMS ST.

    Veja anexo um caso em nossa empresa que mesmo com flag de calculo de substituição, porem esta como consumo, não ocorre o cálculo de ST.

    codigo-imposto.jpg

    Rodrigo

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jul 24, 2017 at 09:30 PM

    Madi,

    Você menciona que para IVA de Industrialização funciona.

    Verifique (se já não o fez) se código de imposto de Consumo está com o flag no campo 'Calc.Subst.Tribut.'?

    []'s

    Silvano Furlan

    Add comment
    10|10000 characters needed characters exceeded

  • Jul 26, 2017 at 11:05 AM

    Rodrigo / Silvano,

    Muito obrigada pelas informações. O meu cenário seria de compra para consumo, deixei de mencionar isso.

    No código de imposto MM estão flegadas as condições que calculam ICMS-ST (seriam ICM2 e ICS2), porém quando crio o pedido de compra a base de cálculo ST continua errada, ou seja, considera a mesma base de cálculo do ICMS.

    Att,

    Madi

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Aug 02, 2017 at 01:21 PM

    Madi,

    Não encontrei nenhum solução standard, para esse situação.

    Para atender esse requerimento implementei a BADI J_1BTAX_ST_MAX_PRICE abaixo:

    DATA: subtribsurcharge(12) TYPE p DECIMALS 6,
    subtribbase1(12) TYPE p DECIMALS 6,
    subtribbase2(12) TYPE p DECIMALS 6.

    DATA: t_xkomv TYPE STANDARD TABLE OF komv_index,
    wa_xkomv TYPE komv_index.

    FIELD-SYMBOLS: <t_komv> TYPE ANY TABLE.

    ASSIGN ('(SAPLV61A)XKOMV[]') TO <t_komv>.
    IF <t_komv> IS ASSIGNED.
    t_xkomv[] = <t_komv>.

    "Busca valor de subtribsurcharge (kschl = 'BST0')
    READ TABLE t_xkomv INTO wa_xkomv WITH KEY kschl = 'BST0'.
    IF ( sy-subrc = 0 ) AND ( wa_xkomv-kbetr > 0 ).
    subtribsurcharge = wa_xkomv-kbetr / 1000.
    ENDIF.

    "Busca valor de SUBTRIBBASE1 (kschl = 'BST6')
    READ TABLE t_xkomv INTO wa_xkomv WITH KEY kschl = 'BST6'.
    IF ( sy-subrc = 0 ) AND ( wa_xkomv-kbetr > 0 ).
    subtribbase1 = wa_xkomv-kbetr / 1000.
    ENDIF.

    "Busca valor de SUBTRIBBASE2 (kschl = 'BST7')
    READ TABLE t_xkomv INTO wa_xkomv WITH KEY kschl = 'BST7'.
    IF ( sy-subrc = 0 ) AND ( wa_xkomv-kbetr > 0 ).
    subtribbase2 = wa_xkomv-kbetr / 1000.
    ENDIF.

    "SubTrib surcharge rate
    cv_subtrib_base = cv_subtrib_base * ( 1 + subtribsurcharge ).

    "Base reductions
    cv_subtrib_base = cv_subtrib_base *
    ( 1 - subtribbase1 ) *
    ( 1 - subtribbase2 ).

    ENDIF.

    Att. Rodrigo Melo

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    May 21 at 03:05 PM

    Bom dia Rodrigo e Madi,

    Vcs conseguiram atender a solução com a ativação desta BAdi?

    At.

    Ernani

    Add comment
    10|10000 characters needed characters exceeded