Olá Pessoal,
Tinhamos na versão 2.0 o seguinte tratamento para os campos : vBSTRet e VICMSRet:
- Configuramos 2 condition types (por Material) ZBR3 e ZBR4 na pricing de vendas, uma para armazenar a base de ICMS retida e outra para armazenar o valor de ICMS retido e cada uma delas populava as tags vBSTRet e VICMSRet
- Construimos uma logica para prencher os valores das condições nos campos
correspondentes
Mas com a NFe 3.10, nossa lógica parou de funcionar. A BADI captura os valores corretos, mas o GRC os valores mudam e pelos valores notei que ele está lendo o valor de base do tax type ICM3 o campo vBSTRet está com valor do Other Bases =Total Nota
fiscal e vBSTRet está com o valor do campo tax rate do ICM3 da NF, valor = 0,00
Peço por favor compartilhar como vocês estõa tratando estas tags nos seus ambientes para atender a NFe 3.10 .
Segue nosso trecho do programa :
IF sy-subrc EQ0.
SELECT SINGLE *
FROM kna1
INTO wa_kna1
WHERE kunnr = in_doc-parid.
IF sy-subrc EQ0.
ASSIGN ('(SAPMV60A)XVBRK[]')TO <t_vbrk>.
IF NOT <t_vbrk> IS
ASSIGNED.
ASSIGN ('(SAPLV60A)XVBRK[]')TO <t_vbrk>.
ENDIF.
IF <t_vbrk> IS
ASSIGNED.
t_vbrk[] = <t_vbrk>[].
READ TABLE t_vbrk INTO wa_vbrk WITH
KEY vbeln = in_lin-refkey.
ELSE.
SELECT SINGLE *
FROM vbrk
INTO wa_vbrk
WHERE vbeln = in_lin-refkey.
ENDIF.
SELECT SINGLE *
FROM a818
INTO wa_a818
WHERE kschl = 'ZBR3'
AND vkorg = wa_vbrk-vkorg
AND vtweg = wa_vbrk-vtweg
AND regio = wa_kna1-regio
AND matnr = in_lin-matnr
AND datbi >= sy-datum
AND datab <= sy-datum.
IF sy-subrc =0.
CLEAR wa_konp.
SELECT SINGLE *
FROM konp
INTO wa_konp
WHERE knumh = wa_a818-knumh.
IF sy-subrc =0.
lv_kwert_bc = wa_konp-kbetr * in_lin-menge.
ENDIF.
SELECT SINGLE *
FROM a818
INTO wa_a818
WHERE kschl = 'ZBR4'
AND vkorg = wa_vbrk-vkorg
AND vtweg = wa_vbrk-vtweg
AND regio = wa_kna1-regio
AND matnr = in_lin-matnr
AND datbi >= sy-datum
AND datab <= sy-datum.
IF sy-subrc =0.
CLEAR wa_konp.
SELECT SINGLE *
FROM konp
INTO wa_konp
WHERE knumh = wa_a818-knumh.
IF sy-subrc =0.
lv_kwert_vst = wa_konp-kbetr * in_lin-menge.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT lv_kwert_vst IS INITIAL
AND
NOT lv_kwert_bc IS INITIAL.
lv_bcst = lv_kwert_bc.
lv_vst = lv_kwert_vst.
out_item-l1_60_vbcst =out_item-vbcstret= lv_bcst.
out_item-l1_60_vicmsst =out_item-vicmsstret= lv_vst.