You are on page 1of 73

MM

Projeto

EF_Demandas R2P –
REVISÃO J1BTAX –
CALCULO DIFAL
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 2
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

SPECIFICATION
General Information
Specification Code
Specification Description EF_Demandas R2P – Revisão J1BTAX – Cálculo DIFAL
Creation Date
Process MM – Criação/Modificação de Documentos de Compras
Process Responsible
Functional Responsible MM Team
Technical Responsible ABAP Team
Priority Média
Complexity Média

Effort Estimation
Activity Time Estimation (hours)
Functional Specification
Technical Documentation
ABAP Development
Testing Components
User Manual
Total excluding Functional
Specification

Development Approval
User: Signature: Date:

Manager: Signature: Date:

Modification Log
Date Change Version Requested By Modified By Time Estimation
(hs)

EF_Demandas R2P last updated: 2


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 3
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Operational Considerations
Transaction Code
Program Type
Program Name
Process Type
Frequency
Estimate Volume

Functional Specification

1. Objetivo

 Adequar o cálculo do DIFAL (Diferencial de Alíquota) devido a mudanças na legislação


foi criada uma nova forma de realizar o cálculo.

2. Process Flow

 N/A

3. Detalhamento da Especificação Funcional - Detailed functional


Requirements

 3.1 – Adequação dos Pedidos de Compras e Registro de Fatura para a nova


forma de calcular o DIFAL (Diferencial de Alíquota).

 Devido a mudanças como o convênio 52/2017 – revogado e com nova redação no


Convênio 142/2018 - de forma simples e com base dupla, além de operações que
ocorrem em alguns Estados como: SP, RS, PR, PA, MT, MS, MG, GO, ES, RO e BA,
houve uma nova forma de ser realizado o cálculo também do DIFAL (Diferencial de
Alíquota).

 A SAP para atender esse item Legal disponibilizou métodos técnicos que foram
entregues pelas notas SAP:

EF_Demandas R2P last updated: 3


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 4
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

 2394557 – DIFAL: BAdI for Recalculation of Base Value in Incoming Process for
Consumption Goods or Assets
2408576 – DIFAL: BAdI for Recalculation – TAXBRA Calculation Procedure
2408577 – DIFAL: BAdI for Recalculation – TAXBRJ Calculation Procedure
2414116 – DIFAL: ICMS DIFAL Tax Rate Is Being Calculated Wrongly

 Foram criados os seguintes objetos:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

 A nota 2394557 entrega somente a estrutura da


BAdI BADI_J1B_DIFAL_RECALCULATION que pode ser usada tanto para TAXBRA como
TAXBRJ.
 O método na qual os clientes devem fazer seus desenvolvimentos em projeto é o
‘RECALCULATE‘ que tem como parâmetros IS_DIFAL_RECALCULATION como entrada e
CV_DIFAL_VALUE, CV_DESTINATION_BASE_VALUE e CV_DIFAL_RATE que podem ser
alterados.
 A nota 2408576 ajusta a classe CL_TAX_CALC_BR_MM método
CALCULATE_ICMS_COMP para chamar, caso implementado, a BAdI da nota 2394557.
A nota 2408577 ajusta o código do módulo de função J_1BCALCULATE_TAXES para
chamar, caso implementado, a BAdI da nota 2394557.

 Sofrerão impactos todos os fluxos SAP que envolvem esquema de cálculo de MM –


TAXBRA Pedidos e Faturas por exemplo.

 As condições dentro do esquema que serão afetadas serão BX30, BX31 e BX32 essas
são condições que estão ligadas diretamente com o DIFAL (Base, Valor ..etc. ), essas
por sim desdobram os valores para as condições de impostos usadas pelo modelo
standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P, YCOP,ICOT, IC1X).

 Será criada uma transação Z onde serão carregados parâmetros usados para o cálculo
do novo modelo de DIFAL, essa transação deverá ser de uso do time fiscal LDC.

EF_Demandas R2P last updated: 4


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 5
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

CONSTRUÇÃO

 Deverão ser criadas tabelas de parâmetros por ambiente e acessadas por transação Z
que deverão ser ajustados os perfis de acesso para inserir esses novos acessos ao time
de recebimento fiscal/ tributário, onde todas deverão ter log de registros
(usuário/data/hora):

A – Cadastro de NBM:
(Z_NBM)

Anexo - Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);


NCM/SH – Tipo CHAR Tamanho 16 (referência – J_1BTXIP1-STEUC);

B - Cadastro da Carga Tributária:


(Z_CARGA_TRIBUT)

EF_Demandas R2P last updated: 5


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 6
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Anexo - Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);

UF – Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);

Carga Tributária - Tipo DEC Tamanho 6 (referência J_1BTXC1-BASE);

Válido de – Tipo CHAR 8 (referência J_1BTXIC3-VALIDFROM);


Válido até – Tipo CHAR 8 (referência J_1BTXIC3-VALIDFROM).

Para essa tabela deverá existir a verificação de sobre gravação de registros, não
permitindo assim também a exclusão e sim a alteração e inclusão

C – Parâmetros de Exceções de Cálculo:

(Z_EXCEC_CALC)

Centro – Tipo CHAR Tamanho 4 (referência T001W-WERKS);


Cat Classificação Contábil – Tipo CHAR Tamanho 1 (referência EKPO-KNTTP);

Lógica de Exceções:

Sempre que o parâmetro (cat classificação contábil = F), checar TVARVs:

ZMM_LDC_R2P_DIFAL_TIPORDEM = ZENT e ZMM_LDC_R2P_DIFAL_RGORDEM = 6

Se identificado os valores não promover o cálculo.

EF_Demandas R2P last updated: 6


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 7
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

D – Sequência de Acesso de Cálculo:


(Z_SEQ_ACESSO_CALC)

UF – Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);


SEQ ACESSO - Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);
FÓRMULA – Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);

E – Cálculo Frete DIFAL:


(Z_CALC_FRETE)

EF_Demandas R2P last updated: 7


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 8
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

UF – Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);


CAT NOTA FISCAL - Tipo CHAR Tamanho 2 (referência J_1BNFDOC-NFTYPE);
FÓRMULA – Tipo CHAR Tamanho 3 (referência J_1BTREGV-REGIO);
DT CRIAÇÃO - Tipo CHAR 8 (referência J_1BTXIC3-VALIDFROM);
DT MODIFICAÇÃO - Tipo CHAR 12 (referência J_1BNFDOC-CRENAM);
MODIFICADO POR - Tipo CHAR 8 (referência J_1BTXIC3-VALIDFROM);
HORA - Tipo TIMS Tamanho 6 (referência J_1BNFDOC-CRETIM);

VARREDURA NA SEQUÊNCIA DE ACESSO:

Apesar de existir uma ordem na sequência de acesso, ou seja, como o sistema começa
a fazer a leitura para cálculo, ele sempre lerá todas e se encontrado o mesmo registro
em mais de um anexo, e fará o cálculo pelo primeiro registro encontrado, porém no
momento da Fatura (MIRO) e MIGO para situações onde hajam registro de remessa
com registro de nota fiscal e IVA (exemplo Entrega Futura) ao gravar o registro será
gerada uma mensagem de informação (Warning – NCM encontrado em mais de
um anexo).

CONTROLE DA SOLUÇÃO:

A solução deverá ser executada sempre sobre parâmetros de controle pela TVARVC
(ZMM_LDC_R2P_DIFAL_BUKRS: 1001,1034, 1037) – verificação na empresa e
(ZMM_LDC_R2P_TIPDOC: ZNB, ZS, NB) – verificação do tipo de pedido de compra.

Este parâmetro estando vazio “em branco” os cálculos não devem acontecer, apenas o
modelo atual (standard) deve acontecer.

VERIFICAÇÃO DOS PARÂMETROS PARA CONTROLE DA SOLUÇÃO:

PEDIDO:
EKKO – BUKRS – EMPRESA;

FATURA:
RBKP – BUKRS - EMPRESA;

EF_Demandas R2P last updated: 8


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 9
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

SEQUÊNCIA DE EVENTOS A SEREM VERIFICADOS:

01 – A compra acontecendo em um dos Centros e com a Classificação Contábil


que está na tabela de Exceção (Z_EXCEC_CALC), se SIM verifica se o NCM do (s)
material (s) estão na tabela de NCM (Z_NBM), se SIM realiza o acionamento da
fórmula de cálculo, não estando cadastrado deixar a execução standard SAP ser
executada;
02 – A compra acontecendo em uma UF cadastrada na tabela de carga tributária
(Z_CARGA_TRIBUT), porém não sendo um dos CENTROS que estão cadastrados
na tabela de exceção (Z_EXCEC_CALC), verifica se o NCM do (s) material (s)
estão na tabela de NCM (Z_NBM), se SIM realiza o acionamento da fórmula de
cálculo, não estando cadastrado deixar a execução standard SAP ser executada;
03 – A compra acontecendo em uma UF que não está cadastrada na tabela de
carga tributária (Z_CARGA_TRIBUT), e não sendo um dos CENTROS cadastrados
na tabela de exceção (Z_EXCEC_CALC), então deixar a execução standard SAP
ser executada;

Identificação de CENTRO, CLASSIFICAÇÃO CONTÁBIL E NCM:

PEDIDO – TRANSAÇÕES - ME21N, ME22N, ME23N:

EKPO – WERKS – CENTRO;


EKKO – BSART – TIPO DE DOCUMENTO;

EKPO – KNTTP – CAT CLASSIFICAÇÃO CONTÁBIL;

Verificar de o valor do F, então checar:

EKKN-EBELN = EKPO-EBELN;
EKKN-EBELP = EKPO-EBELP;

Recuperar o campo EKKN-AUFNR se iniciar com “6” então não permitir o cálculo
do DIFAL.
EKPO – J_1BNBM – NCM.

EF_Demandas R2P last updated: 9


Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 10
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

FATURA – TRANSAÇÕES – MIRO, MIR4, MR8M:/

RSEG – EBELN – PEDIDO DE COMPRAS;


RSEG – EBELP – ITEM DO PEDIDO;

Com os dados acima, fazer a busca com referência do pedido:


EKPO – WERKS – CENTRO;
EKKO-BSART – TIPO DE DOCUMENTO
EKPO – KNTTP – CAT CLASSIFICAÇÃO CONTÁBIL;
EKPO – J_1BNBM – NCM.

CONSTRUÇÃO DAS FÓRMULAS:

000 – CONVENIO 52.91 Base Simples e Base Dupla Exceção:

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

A compra acontecendo em um dos Centros (EKPO-WERKS = Z_EXCEC_CALC-CENTRO)


E EKPO-KNTTP = Z_EXEC_CALC-CAT CLASSIFICAÇAO CONTABIL) e EKPO-J_1BNBM =
Z_NBM-NBM) ainda que tenham valores preenchidos nas condições BX30, BX31 e BX32
Deve ser zerado que devem refletir nas demais condições de impostos (ICOP, ICOX,
ZCOP, ZCOX, ZC1P, YCOP, ICOT, IC1X).

EF_Demandas R2P 1
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 11
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

001 – CONVENIO 52.91 I E II SIMPLES:

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

A compra acontecendo em uma UF cadastrada na tabela de carga tributária (T001W-


REGIO = Z_CARGA_TRIBUT-UF), porém não sendo um dos CENTROS que estão
Cadastrados na tabela de exceção (T001W-WERKS <> Z_EXCEC_CALC-CENTRO),
Verifica se o NCM do (s) material (s) estão na tabela de NCM (EKPO-J_1BNBM = Z_NBM-
NBM), se SIM realiza o cálculo abaixo, se NÃO, executa o cálculo standard SAP.

Cálculo:

Valor de Operação (A):


Exemplo: R$ 1000,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-
KWERT (BXPA) + KOMV-KWERT (BX41)

Alíquota Interestadual (B):


Exemplo: 12%
KOMV-KBERT (BICO)

Alíquota Estadual (C):


Exemplo: 18%
J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,
GROUP = 68, VALUE = EKPO-MWSKZ, VALEU1 = EKPO-MATNR, EXECUTAR E
VERIFICAR SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

EF_Demandas R2P 1
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 12
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 70, VALUE = EKKO-LIFNR, VALEU1 = EKPO-MATNR, EXECUTAR E VERIFICAR
SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR
O VALOR DO RATE.
J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,
GROUP = 71, VALUE = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 77, VALUE = EKKO-LIFNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 80, VALUE = EKPO-MWSKZ, EXECUTAR E VERIFICAR SE É VÁLIDO
J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO
RATE.

J_1BTXIC2 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


MATNR = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3 –
VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO,


RECUPERAR VALOR DO RATE

Redução de Base de Cálculo de Origem (D):


Exemplo: R$ 733,30
Valor de Operação (A) * (valor encontrado na busca Z_CARGA_TRIBUT/KOMV-KBERT-
BICO) (B).

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (origem) – LFA1-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
LFA1-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

ICMS Operação Interestadual (E):

EF_Demandas R2P 1
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 13
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Exemplo: R$ 88,00
Valor de Redução de Base de Cálculo de Origem (D) * Alíquota Interestadual
(KOMV-KBERT (BICO) (B) /100.

Valor de Base de Cálculo do Destino (F):


Exemplo: R$ 1000,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-
KWERT (BXPA) + KOMV-KWERT (BX41) (A).

Redução de Base de Cálculo do Destino (G):


Exemplo: R$ 488,90
Valor de Operação (A) * (valor encontrado na busca Z_CARGA_TRIBUT/ (C)
.

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (destino) – T001W-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
T001W-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

Alíquota Interna (H):


Exemplo: 18%
= (C).

ICMS Operação Interna (I):


Exemplo: R$ 88,00
Resultado Redução de Base de Cálculo do Destino (G) * Alíquota Interna (H) %

ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (J):


Exemplo: R$ 0,00
Resultado ICMS Operação Interestadual (E) - ICMS Operação Interna (I)
Esse valor informar na condição BX31;

Observações:

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

EF_Demandas R2P 1
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 14
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

002 – CLASSICO (INTRA-INTER):

Nesse modelo será tratado de forma standard SAP, ou seja, como é feito atualmente a
diferença entre Alíquota interna de ICMS contra Alíquota Interestadual.

003 – Base Dupla:

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor, etc.), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP, ICOT, IC1X).

Cálculo:

Valor de Operação (A):


Exemplo: R$ 1000,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-KWERT
(BXPA) + KOMV-KWERT (BX41)

Alíquota Interestadual (B):


Exemplo: 12%
KOMV-KBERT (BICO)

Alíquota Estadual (C):


Exemplo: 18%

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 68, VALUE = EKPO-MWSKZ, VALEU1 = EKPO-MATNR, EXECUTAR E
VERIFICAR SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


EF_Demandas R2P 1
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 15
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

GROUP = 70, VALUE = EKKO-LIFNR, VALEU1 = EKPO-MATNR, EXECUTAR E VERIFICAR


SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR
O VALOR DO RATE.
J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,
GROUP = 71, VALUE = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 77, VALUE = EKKO-LIFNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 80, VALUE = EKPO-MWSKZ, EXECUTAR E VERIFICAR SE É VÁLIDO
J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO
RATE.

J_1BTXIC2 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


MATNR = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3 –
VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO,


RECUPERAR VALOR DO RATE

ICMS Operação Interestadual (D):


Exemplo: R$ 120,00
Valor de Condição BX13 (KOMV-KWERT – BX13).

Valor do Custo da Operação Líquido (E):


Exemplo: R$ 880,00
Valor de Condição BASB (KOMV-KWERT – BASB).

Alíquota Interna “por dentro” (F):


Exemplo: 0,82
100 – (C) /100.

Base de Cálculo de ICMS Operação Interna (G):


Exemplo: 1073,17
Valor de Condição BASB (KOMV-KWERT – BASB) (E) / 100 – (J_1BTXIC1 - LAND = BR,

EF_Demandas R2P 1
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 16
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO, RECUPERAR VALOR DO RATE)


(E) /100.

Alíquota Interna do ICMS (H):


Exemplo: 18%
J = (C).

ICMS Operação Interna ICMS (I):


Exemplo: R$ 193,17
Valor de Condição BASB (KOMV-KWERT – BASB) (E) / 100 – (C)
/100 %.

Valor do Diferencial de Alíquota (J):


Exemplo: R$ 73,17
Resultado ICMS Operação Interna (I) – ICMS Operação Interestadual (D).

Esse valor informar na condição BX31;

Observações:

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

003X – Base Dupla Anexo X do RICMS-MT:

Será tratada da mesma forma que a Base Dupla, porém por se tratar de uma operação
específica do Mato Grosso, então na tabela Z_SEQ_ACESSO_CALC, estará com essa
código e descrição, e também na tabela Z_CARGA_TRIBUT o campo Alíquota estará
vazio sendo um indicador para esse Estado que será feito o cálculo com a Base Dupla.

004 – CONVENIO 52.91 I E II POR DENTRO COM CARGA TRIBUTÁRIA:

EF_Demandas R2P 1
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 17
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

Cálculo:

Valor de Operação (A):


Exemplo: R$ 1000,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-
KWERT (BXPA) + KOMV-KWERT (BX41)

Alíquota Interestadual (B):


Exemplo: 12%
KOMV-KBERT (BICO)

Alíquota Estadual (C):


Exemplo: 18%
J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO,
RECUPERAR VALOR DO RATE

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 68, VALUE = EKPO-MWSKZ, VALEU1 = EKPO-MATNR, EXECUTAR E
VERIFICAR SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 70, VALUE = EKKO-LIFNR, VALEU1 = EKPO-MATNR, EXECUTAR E VERIFICAR
SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR
O VALOR DO RATE.
EF_Demandas R2P 1
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 18
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 71, VALUE = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 77, VALUE = EKKO-LIFNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 80, VALUE = EKPO-MWSKZ, EXECUTAR E VERIFICAR SE É VÁLIDO
J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO
RATE.

J_1BTXIC2 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


MATNR = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3 –
VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

Redução de Base de Cálculo de Origem (D):


Exemplo: R$ 428,30
Valor de Operação (A) * (valor encontrado na busca Z_CARGA_TRIBUT/KOMV-KBERT-
BICO) (B).

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (origem) – LFA1-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
LFA1-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

ICMS Operação Interestadual (E):


Exemplo: R$ 51,40
Valor de Redução de Base de Cálculo de Origem (D) * Alíquota Interestadual
(KOMV-KBERT (BICO) (B) /100.

Valor de Operação 1 (F):


Exemplo: R$ 948,60
Valor de Operação (A) – ICMS Operação Interestadual (E).

EF_Demandas R2P 1
last updated:
8
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 19
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Incluir ICMS da Carga Tributária “por dentro” (G):


Exemplo: R$ 1040,14
Valor de Operação 1 (F) /100 – (valor encontrado na busca Z_CARGA_TRIBUT/ (C)

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (destino) – T001W-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
T001W-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA) /100

Redução de Base de Cálculo do Destino (H):


Exemplo: R$ 508,52
Valor de com ICMS da Carga Tributária “por dentro” (G) * (valor encontrado na busca
Z_CARGA_TRIBUT/ (C). J

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (destino) – T001W-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
T001W-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

Alíquota Interna (I):


Exemplo: 18%
= (C).

ICMS Operação Interna (J):


Exemplo: R$ 91,53
Resultado Redução de Base de Cálculo do Destino (H) * Alíquota Interna (I) %

ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (L):


Exemplo: R$ 40,14
Resultado ICMS Operação Interestadual (E) - ICMS Operação Interna (J)
Esse valor informar na condição BX31;

EF_Demandas R2P 1
last updated:
9
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 20
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Observações:

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

005 –BASE DUPLA POR DENTRO (RONDONIA):

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

Cálculo:

Valor de Operação (A):


Exemplo: R$ 1000,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-
KWERT (BXPA) + KOMV-KWERT (BX41)

Alíquota Interestadual (B):


Exemplo: 7%
KOMV-KBERT (BICO)

Alíquota Estadual (C):


Exemplo: 17,5%
J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO,
RECUPERAR VALOR DO RATE

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 68, VALUE = EKPO-MWSKZ, VALEU1 = EKPO-MATNR, EXECUTAR E
EF_Demandas R2P 2
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 21
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

VERIFICAR SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO


RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 70, VALUE = EKKO-LIFNR, VALEU1 = EKPO-MATNR, EXECUTAR E VERIFICAR
SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR
O VALOR DO RATE.
J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,
GROUP = 71, VALUE = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 77, VALUE = EKKO-LIFNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 80, VALUE = EKPO-MWSKZ, EXECUTAR E VERIFICAR SE É VÁLIDO
J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO
RATE.

J_1BTXIC2 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


MATNR = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3 –
VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

Diferença entre Alíquotas (D):


Exemplo: 10,5%
(C) – (B).

Carga Tributária (E):


Exemplo: 0,895

100 – (D%)

BC Diferencial de Alíquota (F):


Exemplo: R$ 1117,32
Valor de Operação (A) / Carga Tributária (E).

Valor Diferencial de Alíquota (G):


Exemplo: R$ 117,32
BC Diferencial de Alíquota (F) * Diferença entre Alíquotas (D)%.

EF_Demandas R2P 2
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 22
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Esse valor informar na condição BX31;

Observações:

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

006 – CONVENIO 52.91 I E II POR DENTRO COM CARGA TRIBUTÁRIA E ICMS:

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

Cálculo:

Valor de Operação (A):


Exemplo: R$ 2889,00
KOMV-KWERT (BASB) + KOMV-KWERT (BX16) + KOMV-KWERT (BX23) + KOMV-
KWERT (BXPA) + KOMV-KWERT (BX41)

Alíquota Interestadual (B):


Exemplo: 12%
KOMV-KBERT (BICO)

Alíquota Estadual (C):


Exemplo: 17%
J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO, SHIPTO = T001W-REGIO,
RECUPERAR VALOR DO RATE
EF_Demandas R2P 2
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 23
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 68, VALUE = EKPO-MWSKZ, VALEU1 = EKPO-MATNR, EXECUTAR E
VERIFICAR SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 70, VALUE = EKKO-LIFNR, VALEU1 = EKPO-MATNR, EXECUTAR E VERIFICAR
SE É VÁLIDO J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR
O VALOR DO RATE.
J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,
GROUP = 71, VALUE = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 77, VALUE = EKKO-LIFNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3
– VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO RATE.

J_1BTXIC3 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


GROUP = 80, VALUE = EKPO-MWSKZ, EXECUTAR E VERIFICAR SE É VÁLIDO
J_1BTXIC3 – VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO RECUPERAR O VALOR DO
RATE.

J_1BTXIC2 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO = T001W-REGIO,


MATNR = EKPO-MATNR, EXECUTAR E VERIFICAR SE É VÁLIDO J_1BTXIC3 –
VALIDFROM, J_1BTXIC3-VALIDTO, SE VÁLIDO
RECUPERAR O VALOR DO RATE.

Redução de Base de Cálculo de Origem (D):


Exemplo: R$ 1237,36
Valor de Operação (A) * (valor encontrado na busca Z_CARGA_TRIBUT/KOMV-KBERT-
BICO) (B).

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (origem) – LFA1-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
LFA1-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

EF_Demandas R2P 2
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 24
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

ICMS Operação Interestadual (E):


Exemplo: R$ 148,48
Valor de Redução de Base de Cálculo de Origem (D) * Alíquota Interestadual
(KOMV-KBERT (BICO) (B) /100.

Valor de Operação 1 (F):


Exemplo: R$ 2740,52
Valor de Operação (A) – ICMS Operação Interestadual (E).

Incluir ICMS da Carga Tributária “por dentro”:


Exemplo: R$ 3301,83
Valor de Operação 1 (F) /100 – (valor encontrado (A)

Redução de Base de Cálculo do Destino (H):


Exemplo: R$ 1709,03
Valor de com ICMS da Carga Tributária “por dentro” (G) * (valor encontrado na busca
Z_CARGA_TRIBUT/ (C). J

Acessar a tabela Z_CARGA_TRIBUT da seguinte forma:

EKPO-J_1BNBM = Z_NBM-NCM e recuperar o valor do campo Z_NBM-ANEXO;


Recuperar o valor de campo UF (destino) – T001W-REGIO;
Então:
Z_NBM-ANEXO = Z_CARGA_TRIBUT-ANEXO;
T001W-REGIO = ZCARGA_TRIBUT-UF;
Recuperar o valor do campo Z_CARGA_TRIBUT-ALÍQUOTA.

Alíquota Interna (I):


Exemplo: 17%
= (C).

ICMS Operação Interna (J):


Exemplo: R$ 290,53
Resultado Redução de Base de Cálculo do Destino (H) * Alíquota Interna (I) %

ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (L):


Exemplo: R$ 142,05
Resultado ICMS Operação Interestadual (E) - ICMS Operação Interna (J)
Esse valor informar na condição BX31;

Observações:
EF_Demandas R2P 2
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 25
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

FRETE CUSTO COMPLEMENTAR

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor ..etc. ), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP,ICOT, IC1X).

Para o lançamento do frete na condição de custo complementar deverá ser


verificado a categoria de nota fiscal no momento de MIRO (estrutura INVFO-
J1BNFTYPE) e centro (identificado pelo pedido referenciado na RSEG – EBELN –
PEDIDO DE COMPRAS;

Com essas informações acessar a tabela Z_CALC_FRETE

Identificado o centro e categoria de nota realizar os cálculos:

Fórmula 002 é o modelo standard de cálculo para a condição de frete;

Fórmula 003 acontecerá da seguinte forma:

Verificações:
– Valor do Frete – Estrutura INVFO-WBBTR
- Emissor de Fatura – Estrutura INVFO-LIFRE;

003 – Base Dupla:

EF_Demandas R2P 2
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 26
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Abaixo os métodos técnicos que serão utilizados para recalcular o DIFAL:

New enhancement spot –> ES_J1B_DIFAL_RECALCULATION


New BAdI –> BADI_J1B_DIFAL_RECALCULATION
New class –> CL_J_1B_DIFAL_RECALCULATION
New interface –> IF_EX_BADI_J1B_DIFAL_RECALC

BX30, BX31 e BX32 essas são condições que estão ligadas diretamente com o DIFAL
(Base, Valor, etc.), essas por sim desdobram os valores para as condições de impostos
usadas pelo modelo standard de processamento SAP (ICOP, ICOX, ZCOP, ZCOX, ZC1P,
YCOP, ICOT, IC1X).

Cálculo:

Valor de Operação = Estrutura INVFO-WBBTR


Exemplo R$ 100,00

Alíquota Estadual (C):


Exemplo: 18%

J_1BTXIC1 - LAND = BR, SHIPFROM = T001W-REGIO, SHIPTO =


T001W-REGIO,
RECUPERAR VALOR DO RATEF

ICMS Operação Interestadual (D):


Exemplo: R$ 12,00
J_1BTXIC1 - LAND = BR, SHIPFROM = LFA1-REGIO = (INVFO-LIFRE), SHIPTO =
T001W-REGIO,
RECUPERAR VALOR DO RATEF

Valor do Custo da Operação Líquido


Exemplo: R$ 88,00
Valor de Operação – ICMS Operação Interestadual

Alíquota Interna “por dentro”


Exemplo: 0,82
100 – (Aliquota Estadual /100.

Base de Cálculo de ICMS Operação Interna


Exemplo: 107,32
EF_Demandas R2P 2
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 27
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Valor do custo da operação liquido / Aliquota interna

Alíquota Interna do ICMS


Exemplo: 18%

ICMS Operação Interna ICMS


Exemplo: R$ 19,32
Base de Cálculo de ICMS Operação interna * Aliquota Interna de ICMS

Valor do Diferencial de Alíquota


Exemplo: R$ 7,32
Resultado ICMS Operação Interna ICMS – ICMS Operação Interestadual

Esse valor informar na condição BX31;

Observações:

Se o valor acima for igual a 0 (zero) ou negativo, então não preencher o valor da
condição BX32, apagar o valor da BX31 e apagar o valor da BX30.

CONTABILIZAÇÃO:

Não está sendo prevista nenhum tipo de adaptação para contabilização ou manutenção
no que já existe.

4. Pre-Requirements
N/A

5. Translation Table
N/A

Portuguese Field English Field Spanish Field

EF_Demandas R2P 2
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 28
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

6. Segurança e Autorizações - Security and Authorizations


 N/A

7. Erros Potenciais - Potential Errors


 N/A

8. Tratamento de Erro e Log de Processamento - Error Treatment and


Processing LOG
 N/A

9. Script de Teste - Test Scripts

ID Condição Resultado esperado

10. Quality Assurance

Responsible:
Date:
Approved by

Technical Specification

1. Objective
 Adequar o cálculo do DIFAL (Diferencial de Alíquota) devido a mudanças na legislação
foi criada uma nova forma de realizar o cálculo.

2. Restriction
N/A.

EF_Demandas R2P 2
last updated:
8
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 29
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

3. Observations
N/A.

4. Generated Objects
Tables : ZBRMMT005 – cadastro NBM

ZBRMMT006 - Cadastro carga tributaria

ZBRMMT007 - Parâmetros de Exceções de Cálculo

ZBRMMT009 - Sequência de Acesso de Cálculo

EF_Demandas R2P 2
last updated:
9
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 30
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

ZBRMMT012 - Calculo frete difal

Grupo de Função: ZBRMMG054

Função : ZBRMMF063

Class builder : ZCL_J_1B_DIFAL_RECALCULATION

Transaction :

EF_Demandas R2P 3
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 31
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

5. Class Parameters

5.1 Input Parameters

Output Parameters

5.2

Tables
N/A.

6. Transparent Tables

Tables Description
EF_Demandas R2P 3
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 32
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

7. Internal Tables

Table Name Table Description


Field Size Type or Data Element

8. Used Objects

Tables :
Grupo de Função:
Função :
Programa :
Transaction :

9. Processing Logic

EF_Demandas R2P 3
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 33
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Método IF_EX_BADI_J1B_DIFAL_RECALC~RECALCULATE.

Tipos : ty_komv tipo tabela padrão de komv_index."komv.


Variáveis: lo_tvarv tipo REF para ztl_bck005l_tvarv,
IT_empresas tipo tabela de ZBRMME002,
it_bsart tipo tabela de ZBRMME002,
it_tpordem tipo tabela de ZBRMME002,
it_rgordem tipo tabela de ZBRMME002,
wa_tpordem tipo ZBRMME002,
wa_rgordem tipo ZBRMME002,
wa_bsart tipo ZBRMME002,
WA_empresas tipo ZBRMME002,
wa_aufnr tipo ekkn-aufnr,
wa_aufk tipo aufk,
V_VALOR tipo EKPO-NETPR,

EF_Demandas R2P 3
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 34
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

V_DESTINATION_BASE_VALUE tipo EKPO-NETPR,


V_DIFAL_RATE tipo eKPO-NETPR,
WA_EKKO tipo EKKO,
wa_ekpo tipo ekpo,
it_zbrmmt005 tipo tabela de zbrmmt005,
it_zbrmmt005a tipo tabela de zbrmmt005,
wa_zbrmmt005 tipo zbrmmt005,
wa_zbrmmt006 tipo zbrmmt006,
wa_zbrmmt009 tipo zbrmmt009,
vl_lines tipo i,
VL_SHIP_FROM tipo LFA1-REGIO,
wa_zbrmmt007 tipo zbrmmt007,
wa_zbrmmt012 tipo zbrmmt012.
Constantes:
c_nome tipo char30 com o valor "LDC_R2P_DIFAL_BUKRS",
C_BSart tipo char30 com o valor "LDC_R2P_DIFAL_TIPDOC",
c_tpordem tipo char30 com o valor "LDC_R2P_DIFAL_TPORDEM",
c_RGORDEM tipo char30 com o valor "LDC_R2P_DIFAL_RGORDEM",
c_miro tipo string com o valor "MIRO",
c_f tipo c com o valor "F",
c_mt tipo string com o valor "MT",
c_modulo tipo string com o valor "ZMM".

Símbolos de campo: <ITEM> tipo mereq_item,


<fs_ekko> tipo ekko,
<fs_komv> tipo ty_komv,
<fs_komP> tipo KOMP,
<fs_ekpo> tipo ekpo,
<fs_rbkpv> tipo mrm_rbkpv.
VL_SHIP_FROM igual a IS_DIFAL_RECALCULATION-shIp_from.
Limpar wa_zbrmmt012.

Se lo_tvarv IS não BOUND.


Criar objeto lo_tvarv
Exportando

EF_Demandas R2P 3
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 35
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

ip_name igual a c_modulo.

Chamar Método lo_tvarv->get_const_range


Exportando
ip_name igual a c_nome
Importando
tp_range igual a IT_empresas.

Chamar Método lo_tvarv->get_const_range


Exportando
ip_name igual a c_BSART
Importando
tp_range igual a IT_BSART.

Chamar Método lo_tvarv->get_const_range


Exportando
ip_name igual a c_tpordem
Importando
tp_range igual a IT_tpordem.

Chamar Método lo_tvarv->get_const_range


Exportando
ip_name igual a c_rgordem
Importando
tp_range igual a IT_rgordem.

Ordenar: it_empresas, IT_BSART, it_rgordem, it_tpordem.


Fim do Se.

Atribuir ("(SAPLMR1M)RBKPV") para <fs_rbkpv>.


Se sy-subrc IS não INITIAL.
Desatribuir <fs_rbkpv>.
Senão.
Limpar wa_zbrmmt012.
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt012

EF_Demandas R2P 3
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 36
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

da tabela zbrmmt012
onde regio igual a IS_DIFAL_RECALCULATION-shIp_to
e NFTYPE igual a <fs_rbkpv>-j_1bNFTYPE.
Se sy-subrc igual a 0.
Selecionar o(s) campo(s) (apenas o 1º registro) regio gravando em VL_shIp_from
da tabela LFA1
onde LIFNR igual a <fs_rbkpv>-LIFNR.
Fim do Se.
Fim do Se.
Checar se wa_zbrmmt012-zformula é diferente de "002".
Atribuir ("(SAPLV61A)xkomv[]") para <fs_komv>.
Atribuir ("(SAPLV61A)komp") para <fs_komP>.

Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_ekpo


da tabela ekpo
onde ebeln igual a <fs_komP>-evrtn
e ebelp igual a <fs_komP>-evrtp.

Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_ekko


da tabela ekko
onde ebeln igual a <fs_komP>-evrtn.
Se sy-subrc igual a 0.
Ler a tabela it_BSARt gravando em wa_bsart com chave low igual a wa_ekko-bsart com busca
binária.
Se sy-subrc igual a 0.
Ler a tabela it_empresas gravando em wa_empresaS com chave LOW igual a wa_ekpo-bukrs
com busca binária.
Se sY-subrc igual a 0.
* Verificar de o valor do F pedido, então checar:
Se wa_ekpo-bstyp igual a c_f.

Limpar wa_aufnr.
Selecionar o(s) campo(s) aufnr apenas o 1º registro gravando em wa_aufnr
da tabela ekkn
onde ebeln igual a <fs_komP>-evrtn
e ebelp igual a <fs_komP>-evrtp.

EF_Demandas R2P 3
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 37
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Fim da seleção.
Se não wa_aufnr é inicial (=0).
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_aufk
da tabela aufk
onde aufnr igual a wa_aufnr.
Fim do Se.
************************************************
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt007
da tabela zbrmmt007
onde werks igual a wa_ekpo-werks
e knttp igual a wa_ekpo-knttp.
Se sy-subrc igual a 0.
Se wa_ekpo-knttp é diferente de "N".
Ler a tabela it_tpordem gravando em wa_tpordem com chave LOW igual a wa_aufk-
AUART com busca binária.
Se sy-subrc igual a 0.
Deslocar wa_aufnr à esquerda excluindo iniciais "0".
Ler a tabela it_rgordem gravando em wa_rgordem com chave low igual a wa_aufnr(1)
com busca binária.
Se sy-subrc igual a 0.
Limpar: CV_DIFAL_VALUE,
CV_DESTINATION_BASE_VALUE,
CV_DIFAL_RATE.
Senão.

Selecionar o(s) campo(s) * gravando em tabela it_ZBRMMT005


da tabela ZBRMMT005
onde steuc igual a wa_ekpo-J_1BNBM.
Se SY-SUBRC igual a 0.
it_ZBRMMT005a(conteúdo) igual a it_ZBRMMT005(conteúdo).
Excluir it_zbrmmt005a onde zanexo igual a "X".
Descrever tabela it_zbrmmt005a nº de linhas em vl_lines.
Se vl_lines é maior que 1 e sy-tcode igual a c_miro.
Chamar função "C14Z_MESSAGES_SHOW_AS_POPUP"
Exportando
I_MSGID igual a "ZMM"

EF_Demandas R2P 3
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 38
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

I_MSGTY igual a "W"


I_MSGNO igual a "006"
I_MSGV1 igual a TEXT-001.
Fim do Se.

Ler a tabela it_zbrmmt005 gravando em wa_zbrmmt005 índice 1.


Se wa_zbrmmt005-ZANEXO é diferente de "X".
* vERIFICA CARGA TRIBUTARIA

Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006


da tabela zbrmmt006
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim do Se.
Se IS_DIFAL_RECALCULATION-shIp_TO é diferente de c_mt.
Limpar WA_ZBRMMT005-ZANEXO.
Fim do Se.

Se wa_zbrmmt006 é inicial (=0).


Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a wa_zbrmmt006-REGIO.
Fim da seleção.
Senão.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Fim do Se.

Se wa_zbrmmt009-zformula é diferente de "002" e


wa_zbrmmt012-zformula é diferente de "002".

EF_Demandas R2P 3
last updated:
8
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 39
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.

Fim do Se.

Senão.

Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009


da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Se sy-subrc igual a 0.

EF_Demandas R2P 3
last updated:
9
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 40
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se wa_zbrmmt009-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.
Fim do Se.

Fim do Se.

Fim do Se.
Senão.

EF_Demandas R2P 4
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 41
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Selecionar o(s) campo(s) * gravando em tabela it_ZBRMMT005


da tabela ZBRMMT005
onde steuc igual a wa_ekpo-J_1BNBM.
Se SY-SUBRC igual a 0.
it_ZBRMMT005a(conteúdo) igual a it_ZBRMMT005(conteúdo).
Excluir it_zbrmmt005a onde zanexo igual a "X".
Descrever tabela it_zbrmmt005a nº de linhas em vl_lines.
Se vl_lines é maior que 1 e sy-tcode igual a c_miro.
Chamar função "C14Z_MESSAGES_SHOW_AS_POPUP"
Exportando
I_MSGID igual a "ZMM"
I_MSGTY igual a "W"
I_MSGNO igual a "006"
I_MSGV1 igual a TEXT-001.
Fim do Se.

Ler a tabela it_zbrmmt005 gravando em wa_zbrmmt005 índice 1.


Se wa_zbrmmt005-ZANEXO é diferente de "X".
* vERIFICA CARGA TRIBUTARIA
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim do Se.

Se IS_DIFAL_RECALCULATION-shIp_TO é diferente de c_mt.


Limpar WA_ZBRMMT005-ZANEXO.
Fim do Se.
Se WA_zbrmmt006 é inicial (=0).
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009

EF_Demandas R2P 4
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 42
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

da tabela zbrmmt009
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a wa_zbrmmt006-REGIO.
Fim da seleção.
Fim do Se.
Se wa_zbrmmt009-zformula é diferente de "002" e
wa_zbrmmt012-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.

Fim do Se.

EF_Demandas R2P 4
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 43
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Senão.

Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009


da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Se sy-subrc igual a 0.
Se wa_zbrmmt009-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here

EF_Demandas R2P 4
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 44
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Fim do Se.
Fim do Se.
Fim do Se.

Fim do Se.

Fim do Se.
Senão.
Limpar: CV_DIFAL_VALUE,
CV_DESTINATION_BASE_VALUE,
CV_DIFAL_RATE.
Fim do Se.

Senão.
Selecionar o(s) campo(s) * gravando em tabela it_ZBRMMT005
da tabela ZBRMMT005
onde steuc igual a wa_ekpo-J_1BNBM.
Se SY-SUBRC igual a 0.

it_ZBRMMT005a(conteúdo) igual a it_ZBRMMT005(conteúdo).


Excluir it_zbrmmt005a onde zanexo igual a "X".
Descrever tabela it_zbrmmt005a nº de linhas em vl_lines.
Se vl_lines é maior que 1 e sy-tcode igual a c_miro.
Chamar função "C14Z_MESSAGES_SHOW_AS_POPUP"
Exportando
I_MSGID igual a "ZMM"
I_MSGTY igual a "W"
I_MSGNO igual a "006"
I_MSGV1 igual a TEXT-001.
Fim do Se.

Ler a tabela it_zbrmmt005 gravando em wa_zbrmmt005 índice 1.


Se wa_zbrmmt005-ZANEXO é diferente de "X".

EF_Demandas R2P 4
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 45
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

* vERIFICA CARGA TRIBUTARIA


Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.

Se SY-SUBRC igual a 0.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a wa_zbrmmt006-REGIO.
Fim da seleção.
Se wa_zbrmmt009-zformula é diferente de "002" e
wa_zbrmmt012-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
.

EF_Demandas R2P 4
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 46
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.

Fim do Se.
Fim do Se.
Senão.

Se IS_DIFAL_RECALCULATION-shIp_TO é diferente de c_mt.


Limpar WA_ZBRMMT005-ZANEXO.
Fim do Se.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_to.
Fim da seleção.
Se ( não wa_zbrmmt009-zformula é inicial (=0) e wa_zbrmmt009-zformula é diferente
de "002" ) or
( não wa_zbrmmt012-zformula é inicial (=0) e wa_zbrmmt012-zformula é diferente de
"002" ).

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =

EF_Demandas R2P 4
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 47
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.

Fim do Se.

Fim do Se.

Senão.
Se não wa_zbrmmt012-zformula é inicial (=0) e wa_zbrmmt012-zformula é diferente de
"002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE

EF_Demandas R2P 4
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 48
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Senão se wa_zbrmmt012-zformula é inicial (=0).

Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009


da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.

Se sy-subrc igual a 0.
Se wa_zbrmmt009-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE

EF_Demandas R2P 4
last updated:
8
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 49
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE


XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.
Fim do Se.

Fim do Se.
Fim do Se.

Fim do Se.

Senão.

* verifica se esta na tabela de exceções


Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt007
da tabela zbrmmt007
onde werks igual a wa_ekpo-werks
e knttp igual a wa_ekpo-knttp.
Se sy-subrc igual a 0 e wa_ekpo-bstyp é diferente de "F".
Limpar: CV_DIFAL_VALUE,
CV_DESTINATION_BASE_VALUE,
CV_DIFAL_RATE.

Senão.
* nao esta na tabela de exceções
Limpar wa_ZBRMMT005.

EF_Demandas R2P 4
last updated:
9
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 50
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Selecionar o(s) campo(s) * gravando em tabela it_ZBRMMT005


da tabela ZBRMMT005
onde steuc igual a wa_ekpo-J_1BNBM.
Se SY-SUBRC igual a 0.
it_ZBRMMT005a(conteúdo) igual a it_ZBRMMT005(conteúdo).
Excluir it_zbrmmt005a onde zanexo igual a "X".
Descrever tabela it_zbrmmt005a nº de linhas em vl_lines.
Se vl_lines é maior que 1 e sy-tcode igual a c_miro.
Chamar função "C14Z_MESSAGES_SHOW_AS_POPUP"
Exportando
I_MSGID igual a "ZMM"
I_MSGTY igual a "W"
I_MSGNO igual a "006"
I_MSGV1 igual a TEXT-001.
Fim do Se.

Ler a tabela it_zbrmmt005 gravando em wa_zbrmmt005 índice 1.


Se wa_zbrmmt005-ZANEXO é diferente de "X".
* vERIFICA CARGA TRIBUTARIA
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.

Se SY-SUBRC igual a 0.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde ZANEXO igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a wa_zbrmmt006-REGIO.
Fim da seleção.
Se sy-subrc igual a 0.
Se wa_zbrmmt009-zformula é diferente de "002".
Chamar função "ZBRMMF063"
Exportando
XK_EKKO igual a wa_ekko

EF_Demandas R2P 5
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 51
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

XK_EKPO igual a wa_ekpo


XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.

Fim do Se.
Fim do Se.
Senão.

Se IS_DIFAL_RECALCULATION-shIp_TO é diferente de c_mt.


Limpar WA_ZBRMMT005-ZANEXO.
Fim do Se.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde Zanexo igual a WA_ZBRMMT005-ZANEXO
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Se sy-subrc igual a 0.

EF_Demandas R2P 5
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 52
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se wa_zbrmmt009-zformula é diferente de "002".

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.
Fim do Se.
Fim do Se.
Se wa_zbrmmt005-zanexo igual a "X".
Chamar função "ZBRMMF063"
Exportando
XK_EKKO igual a wa_ekko

EF_Demandas R2P 5
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 53
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

XK_EKPO igual a wa_ekpo


XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.

* nao esta na tabela 005

Senão.
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde Zanexo igual a " "
e REGIO igual a IS_DIFAL_RECALCULATION-shIp_TO.
Fim da seleção.
Se sy-subrc igual a 0.
Se wa_zbrmmt009-zformula é diferente de "002".

EF_Demandas R2P 5
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 54
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Chamar função "ZBRMMF063"


Exportando
XK_EKKO igual a wa_ekko
XK_EKPO igual a wa_ekpo
XK_KOMV igual a <fs_komv>
xk_from igual a VL_shIp_from
xk_to igual a IS_DIFAL_RECALCULATION-shIp_to

xk_zbrmmt005 igual a wa_zbrmmt005


xk_zbrmmt012 igual a wa_zbrmmt012

xk_base igual a IS_DIFAL_RECALCULATION-inter_base_value


xk_taxes igual a IS_DIFAL_RECALCULATION-inter_tax_value
* IMPORTING
* WA_ZBRMMT095 =
mudando
XK_VALOR igual a CV_DIFAL_VALUE
XK_BASE_DEST igual a CV_DESTINATION_BASE_VALUE
XK_DIFAL_RATE igual a CV_DIFAL_RATE
* EXCEPTIONS
* NOT_FOUND =1
* OTHERS =2
.
Se SY-SUBRC é diferente de 0.
* Implement suitable error handling here
Fim do Se.
Fim do Se.
Fim do Se.

Fim do Se.
Fim do Se.
Fim do Se.
Fim do Se.
Fim do Se.

EF_Demandas R2P 5
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 55
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Fim do Se.
Fim do método.
Função ZBRMMF063
*----------------------------------------------------------------------*
* Histórico das modificações *
*----------------------------------------------------------------------*
função ZBRMMF063.
*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" REFERENCE(XK_EKKO) TYPE EKKO
*" REFERENCE(XK_EKPO) TYPE EKPO
*" REFERENCE(XK_KOMV) TYPE TAX_XKOMV_TAB
*" REFERENCE(XK_FROM) TYPE CHAR03
*" REFERENCE(XK_TO) TYPE CHAR03
*" REFERENCE(XK_ZBRMMT005) TYPE ZBRMMT005
*" REFERENCE(XK_ZBRMMT012) TYPE ZBRMMT012
*" REFERENCE(XK_BASE) TYPE CL_J_1B_DIFAL_RECALCULATION=>MTY_TAX
*" REFERENCE(XK_TAXES) TYPE CL_J_1B_DIFAL_RECALCULATION=>MTY_TAX
*" CHANGING
*" VALUE(XK_VALOR) TYPE CL_J_1B_DIFAL_RECALCULATION=>MTY_TAX
*" VALUE(XK_BASE_DEST) TYPE CL_J_1B_DIFAL_RECALCULATION=>MTY_TAX
*" VALUE(XK_DIFAL_RATE) TYPE CL_J_1B_DIFAL_RECALCULATION=>MTY_TAX
*" EXCEPTIONS
*" NOT_FOUND
*"----------------------------------------------------------------------
Tipos : ty_komv tipo tabela padrão de komv_index."komv.
Variáveis: wa_to tipo string,
wa_zbrmmt006 tipo zbrmmt006,
wa_zbrmmt009 tipo zbrmmt009,
IT_j_1btxic1 tipo tabela de j_1btxic1,
WA_j_1btxic1 tipo j_1btxic1,
IT_j_1btxic2 tipo tabela de j_1btxic2,
WA_j_1btxic2 tipo j_1btxic2,
IT_j_1btxic3 tipo tabela de j_1btxic3,

EF_Demandas R2P 5
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 56
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

WA_j_1btxic3 tipo j_1btxic3,


WA_EKKO tipo EKKO,
wa_ekpo tipo ekpo,
it_komv tipo ty_komv,
WA_KOMV tipo KOMV_INDEX,
vl_reducbase tipo KOMV_INDEX-KWERT,
vl_icminter tipo KOMV_INDEX-KWERT,
vl_custliq tipo KOMV_INDEX-KWERT,
vl_aliqint tipo KOMV_INDEX-KWERT,
vl_operinticm tipo KOMV_INDEX-KWERT,
vl_basecalcicm tipo KOMV_INDEX-KWERT,
Vl_aliqinter tipo komv_index-kbetR,
VL_OPERACAO tipo KOMV_INDEX-KWERT,
vl_oper1 tipo KOMV_INDEX-KWERT,
vl_dentro tipo KOMV_INDEX-KWERT,
vl_icmcarga tipo KOMV_INDEX-KWERT,
vl_reducbasedest tipo KOMV_INDEX-KWERT,
vl_aliq_estadual tipo j_1btxic1-rate,
vl_icmopint tipo KOMV_INDEX-KWERT,
vl_difaliq tipo KOMV_INDEX-Kkurs,
vl_cargatrib tipo KOMV_INDEX-Kkurs,
vl_bcdifaliq tipo KOMV_INDEX-KSTBS,
vl_result tipo KOMV_INDEX-KWERT, "bx31
vl_BASE_DEST tipo KOMV_INDEX-KWERT, "bx30
vl_DIFAL_RATE tipo KOMV_INDEX-KWERT. "bx32
Variáveis:
ls_difal_recalc tipo cl_j_1b_difal_recalculation=>mty_difal_recalc_import,
lv_is_cte tipo abap_bool.
Constantes: c_basb tipo string com o valor "BASB",
c_bX16 tipo string com o valor "BX16",
c_bX23 tipo string com o valor "BX23",
c_bX41 tipo string com o valor "BX41",
c_bXPA tipo string com o valor "BXPA",
c_bico tipo string com o valor "BIC0",
c_bx13 tipo string com o valor "BX13",

EF_Demandas R2P 5
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 57
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

C_68 tipo STRING com o valor "68",


C_70 tipo STRING com o valor "70",
C_71 tipo STRING com o valor "71",
C_77 tipo STRING com o valor "77",
C_80 tipo STRING com o valor "80",
c_miro tipo string com o valor "MIRO",
c_br tipo strinG com o valor "BR".
wa_ekko igual a xk_ekko.
wa_ekpo igual a xk_ekpo.
it_komv(conteúdo) igual a xk_komv(conteúdo).
Ordenar it_komv por kschl.
Excluir it_komv onde kschl é inicial (=0).
Limpar VL_OPERACAO.
* seleciona Cálculo de imposto: regulamentos gerais ICMS
* obs
Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009
da tabela zbrmmt009
onde REGIO igual a XK_TO
e zanexo igual a XK_ZBRMMT005-zanexo.
Fim da seleção.
*obs fim
Selecionar o(s) campo(s) *
gravando na tabela IT_j_1btxic1
da tabela j_1btxic1
onde land1 igual a c_BR
e shipto igual a XK_TO.

Selecionar o(s) campo(s) *


gravando na tabela IT_j_1btxic2
da tabela j_1btxic2
onde land1 igual a c_BR
e shipfrom igual a XK_to
e shipto igual a XK_TO
e matnr igual a wa_ekpo-matnr.

EF_Demandas R2P 5
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 58
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Selecionar o(s) campo(s) *


gravando na tabela IT_j_1btxic3
da tabela j_1btxic3
onde land1 igual a c_BR
e shipfrom igual a XK_to
e shipto igual a XK_TO
e ( GRUOP igual a 68 ou GRUOP igual a 70 ou GRUOP igual a 71 ou GRUOP igual a 77 ou
GRUOP igual a 80 )
* AND VALIDFROM < SY-DATUM
e VALIDTO é maior que SY-DATUM .
Ordenar: IT_j_1btxic1,
IT_j_1btxic2,
IT_j_1btxic3.
.
* AND value = lc_value.
Limpar WA_KOMV.
Ler a tabela it_komv gravando em WA_KOMV
com chave KSCHL igual a C_BASB com busca binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.
Limpar WA_KOMV.
Se WA_ZBRMMT009-ZFORMULA igual a "001" or
WA_ZBRMMT009-ZFORMULA igual a "003" or
WA_ZBRMMT009-ZFORMULA igual a "004".
Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bx13 com busca
binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.
Senão.
Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bx16 com busca
binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.
Fim do Se.

Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bx23 com busca
binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.

EF_Demandas R2P 5
last updated:
8
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 59
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bx41 com busca
binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.

Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bxpa com busca
binária.
VL_OPERACAO igual a vl_operacao + WA_komv-kwert.

*aliquota interestadual(b)
Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bico com busca
binária.
* if wa_komv-kawrt > 0.
* Vl_aliqinter = WA_KOMV-KBETR / wa_komv-kawrt.
* else.
Vl_aliqinter igual a WA_KOMV-KBETR.
* endif.

* Alíquota Estadual (c)


Ler a tabela IT_j_1btxic3 gravando em wa_j_1btxic3 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
GRUOP igual a C_68
com o valor igual a WA_EKPO-MWSKZ
VALUE2 igual a WA_EKPO-MATNR
com busca binária.
Se SY-SUBRC igual a 0.
vl_aliq_estadual igual a wa_j_1btxic3-rate.
Senão.
Ler a tabela IT_j_1btxic3 gravando em wa_j_1btxic3 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
GRUOP igual a C_70
com o valor igual a WA_EKKO-LIFNR
VALUE2 igual a WA_EKPO-MATNR
com busca binária.
Se sy-subrc igual a 0.
EF_Demandas R2P 5
last updated:
9
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 60
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

vl_aliq_estadual igual a wa_j_1btxic3-rate.

Senão.
Ler a tabela IT_j_1btxic3 gravando em wa_j_1btxic3 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
GRUOP igual a C_71
com o valor igual a WA_EKPO-MATNR
com busca binária.
Se sy-subrc igual a 0.
vl_aliq_estadual igual a wa_j_1btxic3-rate.

Senão.
Ler a tabela IT_j_1btxic3 gravando em wa_j_1btxic3 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
GRUOP igual a C_77
com o valor igual a WA_EKKO-LIFNR
com busca binária.
Se sy-subrc igual a 0.
vl_aliq_estadual igual a wa_j_1btxic3-rate.

Senão.
Ler a tabela IT_j_1btxic3 gravando em wa_j_1btxic3 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
GRUOP igual a C_80
com o valor igual a WA_EKPO-MWSKZ
com busca binária.
Se sy-subrc igual a 0.
vl_aliq_estadual igual a wa_j_1btxic3-rate.

Senão.
Ler a tabela IT_j_1btxic2 gravando em wa_j_1btxic2 com chave land1 igual a c_BR
shipfrom igual a XK_to

EF_Demandas R2P 6
last updated:
0
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 61
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

shipto igual a XK_TO


matnr igual a WA_EKPO-matnr
com busca binária.
Se sy-subrc igual a 0.
vl_aliq_estadual igual a wa_j_1btxic2-rate.
Senão.
Ler a tabela IT_j_1btxic1 gravando em wa_j_1btxic1 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
com busca binária.
Se xk_zbrmmt012-zformula é inicial (=0).
vl_aliq_estadual igual a wa_j_1btxic1-rate.
Senão.
vl_aliq_estadual igual a wa_j_1btxic1-rate_f.
Fim do Se.
Fim do Se.

Fim do Se.
Fim do Se.
Fim do Se.
Fim do Se.
Fim do Se.
***********************************************************************************
* verificar a formula
Se XK_ZBRMMT005-ZANEXO é diferente de "X".
Se sy-tcode igual a c_miro e não XK_ZBRMMT012-ZFORMULA é inicial (=0).
wa_zbrmmt009-zformula igual a XK_ZBRMMT012-ZFORMULA.
Senão.

Selecionar o(s) campo(s) * apenas o 1º registro gravando em wa_zbrmmt009


da tabela zbrmmt009
onde REGIO igual a XK_TO
e zanexo igual a XK_ZBRMMT005-zanexo.
Fim da seleção.
Fim do Se.

EF_Demandas R2P 6
last updated:
1
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 62
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Senão.
WA_ZBRMMT009-ZFORMULA igual a "003X".
Fim do Se.
Se sy-subrc igual a 0.
Caso wa_zbrmmt009-zformula.
Quando "001".
* Redução de Base de Cálculo de Origem(d)
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo
e REGIO igual a XK_from.
Se sy-subrc igual a 00.
vl_aliqinter igual a Vl_aliqinter / 10.
vl_reducbase igual a XK_BASE_DEST * ( wa_zbrmmt006-base / Vl_aliqinter ).
* vl_reducbase = vl_operacao * ( wa_zbrmmt006-base / ( Vl_aliqinter / 100 ).
Fim do Se.
* ICMS Operação Interestadual (E):

vl_icminter igual a vl_reducbase * Vl_aliqinter / 100.


* Valor de Base de Cálculo do Destino (F):
VL_OPERACAO igual a XK_BASE_DEST.
* VL_OPERACAO = VL_OPERACAO .

* Redução de Base de Cálculo do Destino (G):


Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo
e REGIO igual a XK_to.

vl_reducbasedest igual a vl_operacao * ( wa_zbrmmt006-base / vl_aliq_estadual ).


* Alíquota Interna (H):
Ler a tabela IT_j_1btxic1 gravando em wa_j_1btxic1 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO
com busca binária.

EF_Demandas R2P 6
last updated:
2
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 63
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se xk_zbrmmt012-zformula é inicial (=0).


vl_icmopint igual a vl_reducbasedest * wa_j_1btxic1-RATE / 100.
Senão.
vl_icmopint igual a vl_reducbasedest * wa_j_1btxic1-RATE_f / 100.
Fim do Se.

*ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (J):


vl_result igual a vl_icminter - vl_icmopint.
Se vl_result é menor ou igual que 0.
XK_VALOR igual a 0. "BX31
XK_DIFAL_RATE igual a 0. "BX32"
XK_BASE_DEST igual a 0. "BX30
Senão.
xk_valor igual a vl_result. "BX31

Fim do Se.
Quando "003" ou "003X".
*ICMS Operação Interestadual (D)
* fazer alteração conforme planilha

Ler a tabela it_komv gravando em wa_KOMV com chave KSCHL igual a C_Bx13 com busca
binária.
vl_icminter igual a wa_komv-kwert.
*Valor do Custo da Operação Líquido (E):
* read table it_komv into wa_KOMV WITH KEY KSCHL = C_Basb binary search.
* vl_custliq = wa_komv-kwert.
vl_custliq igual a xk_base - xk_taxes.
* vl_custliq = VL_OPERACAO - VL_ICMINTER.
*Alíquota Interna "por dentro" (F):

vl_aliqint igual a ( 100 - vl_aliq_estadual ) / 100.


*Base de Cálculo de ICMS Operação Interna (G):
Ler a tabela IT_j_1btxic1 gravando em wa_j_1btxic1 com chave land1 igual a c_BR
shipfrom igual a XK_to
shipto igual a XK_TO

EF_Demandas R2P 6
last updated:
3
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 64
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

com busca binária.


Se xk_zbrmmt012-zformula é inicial (=0).
vl_basecalcicm igual a vl_custliq / ( ( 100 - wa_j_1btxic1-rate ) / 100 ).
Senão.
vl_basecalcicm igual a vl_custliq / ( ( 100 - wa_j_1btxic1-rate_f ) / 100 ).
Fim do Se.
*Alíquota Interna do ICMS (H):
vl_aliqint igual a vl_aliq_estadual.
* ICMS Operação Interna ICMS (I):
vl_operinticm igual a vl_basecalcicm * ( vl_aliqint / 100 ).
* vl_operinticm = ( vl_custliq / 100 ) - ( vl_aliq_estadual / 100 ).
* Valor do Diferencial de Alíquota (J):
* VL_RESULT = VL_BASECALCICM - VL_OPERACAO.
VL_RESULT igual a VL_BASECALCICM - XK_BASE_DEST.
* vl_result = vl_operinticm - vl_icminter.
Se vl_result é menor ou igual que 0.
XK_VALOR igual a 0. "BX31
XK_DIFAL_RATE igual a 0. "BX32"
XK_BASE_DEST igual a 0. "BX30
Senão.
xk_valor igual a vl_result. "BX31
* xk_DIFAL_RATE = vl_result.
Fim do Se.

Quando "004".
* Redução de Base de Cálculo de Origem (D):
vl_operacao igual a XK_BASE_DEST.

Vl_aliqinter igual a Vl_aliqinter / 10.


* concatenate XK_to "I" into wa_to.
* condense wa_to.
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo
e regio igual a xk_to.

EF_Demandas R2P 6
last updated:
4
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 65
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Se sy-subrc igual a 00.


vl_reducbase igual a vl_operacao * ( wa_zbrmmt006-base / Vl_aliqinter ).
Fim do Se.
* ICMS Operação Interestadual (E):

vl_icminter igual a vl_reducbase * Vl_aliqinter / 100.


* Valor de Operação 1
vl_oper1 igual a vl_operacao - vl_icminter.
* Incluir ICMS da Carga Tributária "por dentro" (G):

* concatenate XK_FROM "I" into wa_from.


* condense wa_from.
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo
e REGIO igual a xk_from.
vl_icmcarga igual a vl_oper1 / ( 1 - ( wa_zbrmmt006-base / 100 ) ).
*Redução de Base de Cálculo do Destino (H):
vl_reducbasedest igual a vl_icmcarga * ( wa_zbrmmt006-base / vl_aliq_estadual ).
* Alíquota Interna (I):
vl_aliq_estadual igual a vl_aliq_estadual.
*ICMS Operação Interna (J):

vl_icmopint igual a vl_reducbasedest * vl_aliq_estadual / 100.


*ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (L):
vl_result igual a vl_icmopint - vl_icminter.
Se vl_result é menor ou igual que 0.
XK_VALOR igual a 0. "BX31
XK_DIFAL_RATE igual a 0. "BX32"
XK_BASE_DEST igual a 0. "BX30
Senão.
xk_valor igual a vl_result. "BX31
* xk_DIFAL_RATE = vl_result.
Fim do Se.

EF_Demandas R2P 6
last updated:
5
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 66
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

Quando "005".
* Diferença entre Alíquotas (D):
vl_difaliq igual a vl_aliq_estadual - ( Vl_aliqinter / 10 ).
* vl_difaliq = vl_aliq_estadual - vl_operacao.
*Carga Tributária (E):
vl_cargatrib igual a 100 - vl_difaliq.
vl_cargatrib igual a vl_cargatrib / 100.
* BC Diferencial de Alíquota (F):
vl_operacao igual a XK_BASE_DEST.
Se não vl_cargatrib é inicial (=0).
vl_bcdifaliq igual a vl_operacao / vl_cargatrib .
Senão.
vl_bcdifaliq igual a vl_operacao .
Fim do Se.
* Valor Diferencial de Alíquota (G):
vl_result igual a vl_bcdifaliq * ( vl_difaliq / 100 ).
Se vl_result é menor ou igual que 0.
XK_VALOR igual a 0. "BX31
XK_DIFAL_RATE igual a 0. "BX32"
XK_BASE_DEST igual a 0. "BX30

Senão.
xk_valor igual a vl_result.
* xk_DIFAL_RATE = vl_result.
Fim do Se.
Quando "006".
* Redução de Base de Cálculo de Origem (D):
vl_operacao igual a XK_BASE_DEST.

Vl_aliqinter igual a Vl_aliqinter / 10.


* concatenate XK_to "I" into wa_to.
* condense wa_to.
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo

EF_Demandas R2P 6
last updated:
6
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 67
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

e REGIO igual a xk_from.


Se sy-subrc igual a 00.
vl_reducbase igual a vl_operacao * ( wa_zbrmmt006-base / Vl_aliqinter ).
Fim do Se.
* ICMS Operação Interestadual (E):

vl_icminter igual a vl_reducbase * Vl_aliqinter / 100.


* Valor de Operação 1
vl_oper1 igual a vl_operacao - vl_icminter.
* Incluir ICMS da Carga Tributária "por dentro" (G):
vl_dentro igual a vl_oper1 / ( ( 100 - VL_ALIQ_ESTADUAL ) / 100 ).
* concatenate XK_FROM "I" into wa_from.
* condense wa_from.
Selecionar o(s) campo(s) (apenas o 1º registro) * gravando em wa_zbrmmt006
da tabela zbrmmt006
onde zanexo igual a XK_ZBRMMT005-zanexo
e REGIO igual a xk_to.
* vl_icmcarga = vldentro * ( wa_zbrmmt006-base / vl_aliq_estadual ).

* vl_icmcarga = vl_oper1 / ( 1 - ( wa_zbrmmt006-base / 100 ) ).


*Redução de Base de Cálculo do Destino (H):
* vl_reducbasedest = vl_icmcarga * ( wa_zbrmmt006-base / vl_aliq_estadual ).

vl_reducbasedest igual a vl_dentro * ( wa_zbrmmt006-base / vl_aliq_estadual ).

* Alíquota Interna (I):


vl_aliq_estadual igual a vl_aliq_estadual.
*ICMS Operação Interna (J):

vl_icmopint igual a vl_reducbasedest * vl_aliq_estadual / 100.


*ICMS Operação Interna - ICMS Operação Interestadual (DIFAL) (L):
vl_result igual a vl_icmopint - vl_icminter.
Se vl_result é menor ou igual que 0.
XK_VALOR igual a 0. "BX31
XK_DIFAL_RATE igual a 0. "BX32"

EF_Demandas R2P 6
last updated:
7
Module: Project: MM_Projeto R2P Date: 09/10/2020
MM
Autor: EF_MM Projeto R2P – Revisão Page: 68
Alexandre J1BTAX – Cálculo DIFAL
Rodrigues

XK_BASE_DEST igual a 0. "BX30


Senão.
xk_valor igual a vl_result. "BX31
* xk_DIFAL_RATE = vl_result.
Fim do Se.
Fim do caso.
Fim do Se.

ENDFUNCTION.

10. Output Layout

Functional Sign-off Developer Sign-off

EF_Demandas R2P 6
last updated:
8
Module: Project: PROJECT SYNERGY Date: 12/03/2012
MM/SD
Autor: 021_ET_BR_MM_Stock Transfer Page: 69
Raquel Nieman

Request Check

Created Object Type Object Reque Dependi Description Transport Transport Transport Transport
By: st ng: to QAS Date to PRD Date

EF_Demandas R2P 6
last updated:
9
Module: Project: R2P Date: 14/09/2020
MM
Autor: Bloqueio de Documentos de Compras Page: 71
Alexandre Para Fornecedores Não Habilitados
Rodrigues

Functional Sign-off Developer Sign-off

last updated: outubro 10, 7


Demandas R2P 2023 1
Module: Project: R2P Date: 14/09/2020
ABAP
Autor: Bloqueio de Documentos de Compras para Fornecedores Page: 72
Sueli Nakahara Não Habilitados

Request Check

Created Object Type Object Reque Dependi Description Transport Transport Transport Transport
By: st ng: to QAS Date to PRD Date

last updated: outubro 10, 7


Demandas R2P 2023 2
Module: Project: R2P Date: 14/09/2020
MM
Autor: Bloqueio de Documentos de Compras Page: 73
Para Fornecedores Não Habilitados

Attachment

1. Item

N/A.

2. Field Exit Utilization Log

Data Created Used Program Screen Description


Elements Function Transaction

N/A.

Quality Assurance
Responsible:
Date: 10/11/2014
Approved by SAPCC

last updated: outubro 10, 7


Demandas R2P 2023 3

You might also like