Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 04/12/2007 00:00:00
Data/Hora Última Alteração: 09/03/2010 11:22:00
Descrição da Nota: ABERTURA DE EXIT PARA CÁLCULO DE ICMS
Sintoma
Abertura de exit para cálculo de icms na Nota Fiscal.
Solução
criada exit dnf016
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 05383 Data: 04/12/2007 Hora: 17:33:28
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 05383
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00024
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
ABERTURA DE EXIT PARA CÁLCULO DE ICMS
----------------------------------------------------------------------------------------------------
Palavras Chave:
EXIT - /PWS/ZYGLT100 - NOTA FISCAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI016X01
REPS /PWS/MZYCI023F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
EXPORTING
input = itab_ekpo-meins
language = sy-langu
IMPORTING
output = v_mseh3
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
ENDFORM.
FORM verifica_montante.
* >> Início da inclusão: FORM VERIFICA_MONTANTE
v_exit = '16_verifica_montante'.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF016'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF016' BINARY SEARCH.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ELSE.
* << Fim da inclusão
IF /pws/zycbt007-waersb IS INITIAL.
SELECT SINGLE *
FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie041-bukrs.
ENDIF.
CLEAR: v_montante1, v_ipi, v_icms.
LOOP AT itab_zycit036
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
...
...
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).
ELSE.
v_basred = itab_zycit003-basred.
ENDIF.
IF v_basred IS INITIAL.
v_basred = 100.
* >> Início da inclusão: FORM VERIFICA_MONTANTE
ENDIF.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM transfere_pedidos.
LOOP AT itab_zycit042.
itab_ebeln-sign = 'I'.
itab_ebeln-option = 'EQ'.
itab_ebeln-low = itab_zycit042-ebeln.
APPEND itab_ebeln.
itab_ebelp-sign = 'I'.
itab_ebelp-option = 'EQ'.
...
...
it_zycee007-netoth = v_despesas + v_outras + v_ipi +
v_vldp_044 .
it_zycee007-netpr = itab_zycit044-netpr.
v_total = ( ( it_zycee007-netpr * itab_zycit044-qtd_item ) +
it_zycee007-netfre + it_zycee007-netins +
it_zycee007-netoth ).
IF itab_zycit100-icms_dif = 'X'.
itab_zycit003-basred = '100'.
v_basred = itab_zycit003-basred.
ENDIF.
* >> Início da inclusão: FORM VALORES_R
v_exit = '16_valores_r'.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF016'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF016' BINARY SEARCH.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ELSE.
* << Fim da inclusão
CLEAR v_advicms.
IF NOT itab_zycit003-advalicms IS INITIAL.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT itab_zycit003-basred IS INITIAL OR
NOT itab_zycit003-basred EQ '100'.
v_advicms = ( ( itab_zycit003-advalicms / 100 ) *
( itab_zycit003-basred / 100 ) ) .
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).
ELSE.
v_basred = itab_zycit003-basred.
* >> Início da inclusão: FORM VALORES_R
ENDIF.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM efetua_cancelamento_g.
DATA v_subrc LIKE sy-subrc.
CLEAR v_apaga.
GET CURSOR FIELD v_campo VALUE v_valor.
IF v_campo EQ '/PWS/ZYCIE042-DOCNUM' AND v_valor > 0.
READ TABLE itab_zycit041 WITH KEY docnum = v_valor.
IF itab_zycit041-statusp_mr1m = 'C' AND
v_modalidade NE '99'.
...
...
vigen_fim >= p_data AND
land1 = t001-land1.
IF sy-subrc EQ 0.
p_taxa = /pws/zycit174-txconver.
ELSE.
p_taxa = '1'.
ENDIF.
ENDIF.
ENDFORM.
FORM atualiza_icms_unitario.
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
v_exit = '16_atualiza_icms'.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'DNF016'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY
zexit = 'DNF016' BINARY SEARCH.
IF NOT itab_zyglt100-zexit_ativa IS INITIAL.
PERFORM (itab_zyglt100-formulario) IN PROGRAM
(itab_zyglt100-programa) IF FOUND.
ELSE.
* << Fim da inclusão
SELECT SINGLE * FROM /pws/zycit100
WHERE nrseq = itab_zycit042-nrseq
AND ebeln = itab_zycit042-ebeln
AND ebelp = itab_zycit042-ebelp.
IF sy-subrc EQ 0.
SELECT * UP TO 1 ROWS FROM /pws/zycit085
WHERE nrseqdi = /pws/zycit100-nrseqdi.
ENDSELECT.
ENDIF.
IF /pws/zycit001-tpdecl IS INITIAL.
...
...
AND /pws/zycit100-codregtri EQ '4'.
IF NOT /pws/zycit062-tred IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr + ( (
/pws/zycit100-vlicms / itab_zycit042-qtd_iten )
* 100 ) / v_basred.
ELSE.
itab_zycit042-netpr = itab_zycit042-netpr +
( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).
ENDIF.
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
ENDIF.
* << Fim da inclusão
ENDFORM.
FORM bi_fb08.
CHECK NOT /pws/zycie041a-belnr_f_02_c IS INITIAL.
PERFORM clear_date_batch.
it_zycbe033-tcode = 'FB08'.
it_zycbe033-tabela = text-014.
it_zycbe033-cpochv = /pws/zycie041a-nfglobal.
it_zycbe033-belnr = /pws/zycie041a-belnr_f_02_c.
it_zycbe033-bukrs = /pws/zycie041a-bukrs.
it_zycbe033-bldat = sy-datum.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016X01
...
lifn2 TYPE ekpa-lifn2.
DATA: END OF itab_ekpa.
data: v_vlii type /pws/zycit100-vlii ,
v_vlipi type /pws/zycit100-vlipi ,
v_vlpis type /pws/zycit100-vlpis ,
v_vlcofins type /pws/zycit100-vlcofins.
DATA: v_val_icms LIKE /pws/zycee007-netpr,
v_base_ps LIKE /pws/zycee007-base ,
v_fundap.
data v_advicms type p decimals 3.
* >> Início da inclusão:
data v_exit(40).
* << Fim da inclusão
DATA: END OF COMMON PART a.