Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 02/04/2014 09:56:55
Data/Hora Última Alteração: 02/04/2014 09:56:55
Descrição da Nota: UNIFICAR A AUTOMATIZAÇÃO DO TIPO DE NOTA NO EMBARQUE E NOTA FISCAL
Sintoma
UNIFICAR A AUTOMATIZAÇÃO DO TIPO DE NOTA NO EMBARQUE E NOTA FISCAL.
Solução
FAZER UMA ROTINA ÚNICA PARA OS DOIS PROGRAMA: EMBARQUE E NOTA FISCAL.
9.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 13840 Data: 28/03/2014 Hora: 10:17:05
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 13840
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 9.0
Pacote : 00007
Agrupamento : 00170
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
13381 - 00001 - 9.0 - 00006 - AUTOMATIZAÇÃO DO TIPO DE NOTA NO EMBARQUE E NA NOTA GLOBAL
----------------------------------------------------------------------------------------------------
UNIFICAR A AUTOMATIZAÇÃO DO TIPO DE NOTA NO EMBARQUE E NOTA FISCAL
----------------------------------------------------------------------------------------------------
Palavras Chave:
EMBARQUE - NOTA FISCAL - TIPO DE NOTA FISCAL - TPNF
/PWS/ZYCIT537 - DETERM. AUTOMÁTICA DO TIPO DE NF AMPLIADA
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUGR /PWS/ZYCIGF13
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI001F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUGR /PWS/ZYCIGF13
* CRIAR O GRUPO DE FUNÇÃO: /PWS/ZYCIGF13
TEXTO BREVE: CI - Determina tipo de nota fiscal
C.DESENVOLVIMENTO: /PWS/ZYCI
* CRIAR O SEGUINTE MÓDULO DE FUNÇÃO: /PWS/ZYCI_TP_NF
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: /PWS/ZYCIGF13
TEXTO BREVE: Determina o tipo da nota fiscal - tpnf
TIPO DE EXECUÇÃO:
(X) - MÓDULO DE FUNÇÃO NORMAL
(X) - INÍCIO IMEDIATO
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA
I_EBELN TYPE /PWS/ZYCIT003-EBELN
I_EBELP TYPE /PWS/ZYCIT003-EBELP
I_NRSEQ TYPE /PWS/ZYCIT003-NRSEQ
I_NRSEQLI TYPE /PWS/ZYCIT003-NRSEQLI
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA
E_TPNF TYPE /PWS/ZYCIT003-TPNF
* TEXTO FONTE / CÓDIGO FONTE:
FUNCTION /pws/zyci_tp_nf.
*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" REFERENCE(I_EBELN) TYPE /PWS/ZYCIT003-EBELN
*" REFERENCE(I_EBELP) TYPE /PWS/ZYCIT003-EBELP
*" REFERENCE(I_NRSEQ) TYPE /PWS/ZYCIT003-NRSEQ
*" REFERENCE(I_NRSEQLI) TYPE /PWS/ZYCIT003-NRSEQLI
*" EXPORTING
*" REFERENCE(E_TPNF) TYPE /PWS/ZYCIT003-TPNF
*"----------------------------------------------------------------------
* Task 71389 e 85456
* NOVA BUSCA DO TIPO DE NOTA - AUTOMATIZAÇÃO DO TIPO DE NOTA
* Ficou definido que: se a tabela /pws/zycit537 tiver pelo menos um
* registro, significa que o cliente deseja que o programa faça a busca
* do tipo da nota fiscal pela lógica nova. Se o cliente deseja usar a
* lógica antiga, isto é, pela tabela /pws/zycit012, ele não deve
* parametrizar nenhum registro na tabela nova - /pws/zycit537
*"----------------------------------------------------------------------
TABLES: ekpo,
mbew,
/pws/zycit001,
/pws/zycit263,
/pws/zycit537,
/pws/zycit085,
/pws/zycit006,
/pws/zycit078,
/pws/zycit100.
DATA: v_tpnf_ipi TYPE c,
v_tpnf_icms TYPE c,
v_tpnf_pis TYPE c,
v_tpnf_cof TYPE c,
v_tpnf_cambial TYPE c,
v_tpnf_drawback TYPE c,
v_tpnf_fundap TYPE c.
DATA: v_anln1 LIKE ekkn-anln1,
v_kostl LIKE anlz-kostl.
*----------------------------------------------------------------------*
CLEAR: ekpo, mbew, /pws/zycit001, /pws/zycit085, /pws/zycit263,
/pws/zycit006, /pws/zycit078, /pws/zycit537, /pws/zycit100.
CLEAR: v_tpnf_pis, v_tpnf_cof, v_tpnf_ipi, v_tpnf_icms, v_tpnf_fundap,
v_tpnf_cambial, v_tpnf_drawback, v_anln1, v_kostl, e_tpnf.
* Utilização do material
SELECT SINGLE * FROM ekpo
WHERE ebeln = i_ebeln
AND ebelp = i_ebelp.
IF sy-subrc = 0.
SELECT SINGLE * FROM mbew
WHERE matnr = ekpo-matnr
AND bwkey = ekpo-werks.
ENDIF.
* Busca dados do Embarque - Regime
SELECT SINGLE * FROM /pws/zycit001
WHERE nrseq EQ i_nrseq.
*----------------------------------------------------------------------*
* Busca Dados da DI
SELECT SINGLE * FROM /pws/zycit100
WHERE nrseq = i_nrseq
AND ebeln = i_ebeln
AND ebelp = i_ebelp.
IF sy-subrc = 0.
SELECT SINGLE * FROM /pws/zycit085
WHERE nrseqdi = /pws/zycit100-nrseqdi.
* PIS
IF /pws/zycit100-codregtripiscofi = '2' OR
/pws/zycit100-codregtripiscofi = '3' OR
/pws/zycit100-codregtripiscofi = '5' OR
/pws/zycit100-codregtripiscofi = '6' .
v_tpnf_pis = 2.
ELSE.
IF /pws/zycit100-vlpis > 0.
v_tpnf_pis = 1.
ELSE.
v_tpnf_pis = 2.
ENDIF.
ENDIF.
* COFINS
IF /pws/zycit100-codregtripiscofi = '2' OR
/pws/zycit100-codregtripiscofi = '3' OR
/pws/zycit100-codregtripiscofi = '5' OR
/pws/zycit100-codregtripiscofi = '6' .
v_tpnf_cof = 2.
ELSE.
IF /pws/zycit100-vlcofins > 0.
v_tpnf_cof = 1.
ELSE.
v_tpnf_cof = 2.
ENDIF.
ENDIF.
* IPI
IF /pws/zycit100-codregtriipi = '1' OR
/pws/zycit100-codregtriipi = '5' .
v_tpnf_ipi = 2.
ELSE.
IF /pws/zycit100-vlipi > 0.
v_tpnf_ipi = 1.
ELSE.
v_tpnf_ipi = 2.
ENDIF.
ENDIF.
* ICMS
IF NOT /pws/zycit100-icms_dif IS INITIAL.
v_tpnf_icms = 3. "Diferido
ELSE.
IF /pws/zycit100-codregtriicms = '2' OR
/pws/zycit100-codregtriicms = '3' OR
/pws/zycit100-codregtriicms = '5' OR
/pws/zycit100-codregtriicms = '6' .
v_tpnf_icms = 2.
ELSE.
IF /pws/zycit100-vlicms > 0.
v_tpnf_icms = 1.
ELSE.
v_tpnf_icms = 2.
ENDIF.
ENDIF.
ENDIF.
* FUNDAP
IF NOT /pws/zycit085-opfundap IS INITIAL.
v_tpnf_fundap = 1.
ELSE.
v_tpnf_fundap = 2.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
* Dados Cobertura Cambial
SELECT SINGLE *
FROM /pws/zycit263
WHERE nrseq = i_nrseq
AND ebeln = i_ebeln
AND ebelp = i_ebelp
AND eliminado NE 'X'.
IF sy-subrc = 0.
SELECT SINGLE *
FROM /pws/zycit006
WHERE nrseq_pgfat = /pws/zycit263-nrseq_pgfat.
IF sy-subrc = 0.
CASE /pws/zycit006-frpagto.
WHEN 'A'.
* Sem Cobertura
v_tpnf_cambial = '2'.
WHEN OTHERS.
* Com Cobertura
v_tpnf_cambial = '1'.
ENDCASE.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
* Tipo Drawback
SELECT SINGLE * FROM /pws/zycit078
WHERE nrseqli = i_nrseqli.
IF sy-subrc EQ 0.
IF /pws/zycit078-modalidade IS INITIAL.
v_tpnf_drawback = ' '.
ELSEIF /pws/zycit078-modalidade EQ 'S'.
v_tpnf_drawback = '1'.
ELSEIF /pws/zycit078-modalidade EQ 'I'.
v_tpnf_drawback = '2'.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
IF mbew-mtuse EQ 3.
SELECT SINGLE anln1
FROM ekkn
INTO v_anln1
WHERE ebeln = i_ebeln
AND ebelp = i_ebelp.
IF NOT v_anln1 IS INITIAL.
SELECT SINGLE kostl
INTO v_kostl
FROM anlz
WHERE anln1 = v_anln1.
ENDIF.
IF v_kostl+2(1) EQ 'P'.
* Acessa Parametro TPNF
SELECT SINGLE *
FROM /pws/zycit537
WHERE j_1bmatuse = mbew-mtuse AND
ipi = v_tpnf_ipi AND
pis = v_tpnf_pis AND
cofins = v_tpnf_cof AND
icms = v_tpnf_icms AND
cobercamb = v_tpnf_cambial AND
drawback = v_tpnf_drawback AND
fundap = v_tpnf_fundap AND
credito = 'N'.
IF sy-subrc = 0.
e_tpnf = /pws/zycit537-tpnf.
ENDIF.
ELSE.
* Acessa Parametro TPNF
SELECT SINGLE *
FROM /pws/zycit537
WHERE j_1bmatuse = mbew-mtuse AND
ipi = v_tpnf_ipi AND
pis = v_tpnf_pis AND
cofins = v_tpnf_cof AND
icms = v_tpnf_icms AND
cobercamb = v_tpnf_cambial AND
drawback = v_tpnf_drawback AND
fundap = v_tpnf_fundap AND
regime = /pws/zycit001-regime.
IF sy-subrc = 0.
e_tpnf = /pws/zycit537-tpnf.
ENDIF.
ENDIF.
ELSE.
* Acessa Parametro TPNF
SELECT SINGLE *
FROM /pws/zycit537
WHERE j_1bmatuse = mbew-mtuse AND
ipi = v_tpnf_ipi AND
pis = v_tpnf_pis AND
cofins = v_tpnf_cof AND
icms = v_tpnf_icms AND
cobercamb = v_tpnf_cambial AND
drawback = v_tpnf_drawback AND
fundap = v_tpnf_fundap AND
regime = /pws/zycit001-regime.
IF sy-subrc = 0.
e_tpnf = /pws/zycit537-tpnf.
ENDIF.
ENDIF.
ENDFUNCTION.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
CLEAR: itab_zycit537, itab_zycit537[].
SELECT * FROM /pws/zycit537
INTO TABLE itab_zycit537.
IF NOT itab_zycit537[] IS INITIAL.
* >> Início da exclusão: FORM GERA_ITAB_ZYCIT042
PERFORM tpnf_new.
* << Fim da exclusão
* >> Início da inclusão: FORM GERA_ITAB_ZYCIT042
CLEAR: itab_zycit042-tpnf.
CALL FUNCTION '/PWS/ZYCI_TP_NF'
EXPORTING
i_ebeln = itab_zycit042-ebeln
i_ebelp = itab_zycit042-ebelp
i_nrseq = itab_zycit003-nrseq
i_nrseqli = itab_zycit003-nrseqli
IMPORTING
e_tpnf = itab_zycit042-tpnf.
* << Fim da inclusão
ELSE.
IF NOT itab_zycit003-tpnf IS INITIAL.
IF itab_zycit042-tpnf IS INITIAL.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
CLEAR: itab_zycit537, itab_zycit537[].
SELECT * FROM /pws/zycit537
INTO TABLE itab_zycit537.
IF NOT itab_zycit100[] IS INITIAL AND
NOT itab_zycit537[] IS INITIAL.
* >> Início da exclusão: FORM PROPOE_TIPONF
PERFORM tpnf_new.
* << Fim da exclusão
* >> Início da inclusão: FORM PROPOE_TIPONF
CLEAR: itab_zycit003-tpnf.
CALL FUNCTION '/PWS/ZYCI_TP_NF'
EXPORTING
i_ebeln = itab_zycit003-ebeln
i_ebelp = itab_zycit003-ebelp
i_nrseq = itab_zycit003-nrseq
i_nrseqli = itab_zycit003-nrseqli
IMPORTING
e_tpnf = itab_zycit003-tpnf.
* << Fim da inclusão
ELSE.
READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
...