CE PLUS - Nota 013840

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.

 

Versões Tratadas

9.0


Pré-Requisitos

Produto:

Nota

Descrição

AUTOMATIZAÇÃO DO TIPO DE NOTA NO EMBARQUE E NA NOTA GLOBAL

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.

...