CE PLUS - Nota 001056

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Variação Cambial

Data/Hora da Publicação: 17/03/2006 00:00:00

Data/Hora Última Alteração: 21/02/2011 15:59:29

Descrição da Nota: DADOS DA NOTA FISCAL COM REFERÊNCIA ERRADOS OU DUPLICADOS

Sintoma

Ao gerar a nota fiscal complementar com referência, o programa está informando valores incorretos

nos itens da nota fiscal e duplicando algumas notas.

 

 

 

Solução

- Lançamento da nota de refência somente do valor do item

- Lançamento da nota de referência com NETPR = 1,0000

- Separação das Lógicas de processamento de Variação com Referência e Sem referência.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

EMISSÃO DE NOTAS EM VARIAÇÃO CAMBIAL COM REFERÊNCIA

VERIFICAÇÃO DE PARÂMETRO PARA PREENCHIMENTO DE NÚMERO DE DOCTO. FISCAL

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 01056 Data: 17/03/2006 Hora: 16:41:10

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 01056

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00023

Agrupamento              : 00106

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

00506  - 00002 - 6.0    - 00022  - VERIFICAÇÃO DE PARÂMETRO PARA PREENCHIMENTO DE NÚMERO DE DOCTO. F

01024  - 00001 - 6.0    - 00023  - EMISSÃO DE NOTAS EM VARIAÇÃO CAMBIAL COM REFERÊNCIA

----------------------------------------------------------------------------------------------------

DADOS DA NOTA FISCAL COM REFERÊNCIA ERRADOS OU DUPLICADOS

----------------------------------------------------------------------------------------------------

Palavras Chave:

EXPORTAÇÃO  VARIAÇÃO CAMBIA REFERÊNCIA

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

FUNC /PWS/ZYCE_TRANSACAO_J1B1N_B

REPS /PWS/ZYCEI007

REPS /PWS/ZYCER007

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYCE_TRANSACAO_J1B1N_B

 

...

    v_cfop(06)       TYPE c,

    v_netbase(16)    TYPE c,

    v_cont           TYPE n,

    v_cont1          TYPE i,

    v_text(16)       TYPE c,

* >> Início da exclusão:

    v_text_aux(16)   TYPE c.

* << Fim da exclusão

* >> Início da inclusão:

    v_text_aux(16)   TYPE c,

    v_cont_aux(2)   TYPE n,

    v_campo1(20),

    v_campo2(20),

    v_campo3(20),

    v_campo4(20).

* << Fim da inclusão

  LOOP AT t_dados.

    CHECK t_dados-tcode = 'J1B1N'.

    IF ( t_dados-docdat = space ).

      t_campos-mandt = t_dados-mandt.

      t_campos-campo = 'J_1BDYDOC-DOCDAT'.

...

 

...

           'BDC_OKCODE'              '=CORE'.

    PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.

    PERFORM bdc_campo USING:

           'J_1BDYDOC-DOCDAT'      v_data-doc,

           'J_1BDYDOC-PSTDAT'      v_data-pst,

* >> Início da inclusão:

           'J_1BDYDOC-DOCREF'      t_dados-docnum.

    IF t_itensnf[] IS INITIAL.

      PERFORM bdc_campo USING:

* << Fim da inclusão

           'J_1BDYLIN-ITMTYP(01)'  t_dados-itmtyp,

           'J_1BDYLIN-MENGE(01)'   v_menge,

           'J_1BDYLIN-MEINS(01)'   t_dados-meins,

           'J_1BDYLIN-NETPR(01)'   v_netpr,

* >> Início da exclusão:

           'J_1BDYDOC-DOCREF'      t_dados-docnum,

* << Fim da exclusão

           'BDC_OKCODE'            '/00'.

* >> Início da inclusão:

    ELSE.

      loop at t_itensnf.

          ADD 1 TO v_cont_aux.

          CONCATENATE 'J_1BDYLIN-ITMTYP(' v_cont_aux ')' INTO v_campo1.

          CONCATENATE 'J_1BDYLIN-MENGE(' v_cont_aux ')'  INTO v_campo2.

          CONCATENATE 'J_1BDYLIN-MEINS(' v_cont_aux ')'  INTO v_campo3.

          PERFORM bdc_field USING: v_campo1 t_dados-itmtyp,

                                   v_campo2 v_menge,

                                   v_campo3 v_netpr.

      endloop.

      PERFORM bdc_field USING: 'BDC_OKCODE'            '/00'.

    ENDIF.

* << Fim da inclusão

    PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.

    PERFORM bdc_campo USING:

           'BDC_OKCODE'            '=TAB4'.

    PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.

    CLEAR v_cont.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCEI007

 

...

DATA: END OF it_tcurx.

DATA: BEGIN OF it_relat OCCURS 0,

        nrseq     LIKE /pws/zycet002-nrseq,

        branch    LIKE j_1bnfdoc-branch,

        nfnum     LIKE /pws/zycet002-nfnum,

* >> Início da inclusão:

        ITMNUM    like j_1bnflin-itmnum,

* << Fim da inclusão

        docdat    LIKE j_1bnfdoc-docdat,

        kurrf     LIKE /pws/zycet002-kurrf,

        bukrs     LIKE /pws/zycet002-bukrs,

        vbeln_va  LIKE /pws/zycet002-vbeln_va,

        vbeln_vf  LIKE /pws/zycet002-vbeln_vf,

...

 

...

      END OF it_contabil_nfa.

DATA: BEGIN OF it_emitenf OCCURS 0,

        nrseq    LIKE  /pws/zycet002-nrseq,

        branch   LIKE  j_1bnfdoc-branch,

        docnum   LIKE  j_1bnflin-docnum,

* >> Início da inclusão:

        itmnum   LIKE  j_1bnflin-itmnum,

* << Fim da inclusão

        difer    LIKE  /pws/zycet002-vlme,

        tot      LIKE  /pws/zycet002-vlme,

      END OF it_emitenf.

DATA: BEGIN OF it_total_pos OCCURS 0,

        branch   LIKE  j_1bnfdoc-branch,

...

 

...

       END OF itab_vbapf.

DATA: BEGIN OF itab_vt005 OCCURS 0,

        land1 LIKE v_t005-land1,

        curha LIKE v_t005-curha,

      END OF itab_vt005.

* >> Início da inclusão:

DATA  it_zycee00_aux   LIKE /pws/zycee005 OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

DATA: wa_zycbt011  LIKE /pws/zycbt011.

DATA: wa_relat     LIKE it_relat.

DATA: v_dtate         LIKE /pws/zycet001-dtaverb,

      v_dtde          LIKE /pws/zycet001-dtaverb,

      v_index         LIKE syst-tabix,

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCER007

 

...

AT USER-COMMAND.

  CASE sy-ucomm.

    WHEN 'POPUP'.

      PERFORM popup.

    WHEN 'NOTE'.

* >> Início da inclusão:

      IF NOT it_zycet035-nfcref IS INITIAL.

        PERFORM contabiliza_j1b1_ref.

      ELSE.

* << Fim da inclusão

      PERFORM contabiliza_j1b1.

* >> Início da inclusão:

      ENDIF.

* << Fim da inclusão

      IF p_reimp NE 'X'.

...

 

...

      IF NOT it_zyglt338-flag IS INITIAL.

        MOVE-CORRESPONDING it_relat TO it_contabil_nfa.

        COLLECT it_contabil_nfa.

      ENDIF.

    ENDIF.

* >> Início da inclusão: FORM IMPRIME_DADOS

    IF NOT it_zycet035-nfcref IS INITIAL.

      MOVE: it_relat-nrseq    TO it_emitenf-nrseq,

            it_relat-branch   TO it_emitenf-branch,

            it_relat-itmnum   TO it_emitenf-itmnum,

            it_relat-difer    TO it_emitenf-difer.

    else.

* << Fim da inclusão

    MOVE: it_relat-nrseq    TO it_emitenf-nrseq,

          it_relat-branch   TO it_emitenf-branch,

          it_relat-difer    TO it_emitenf-difer.

* >> Início da inclusão: FORM IMPRIME_DADOS

    endif.

* << Fim da inclusão

    IF NOT it_zycet035-flagfunc IS INITIAL

      AND NOT it_zycet035-nfcref IS INITIAL.

      MOVE it_relat-docnum TO it_emitenf-docnum.

    ENDIF.

    COLLECT it_emitenf.

...

 

...

          it_vbrp-kursk  TO it_relat-kursf.

    it_relat-dmbtr = it_relat-wrbtr * it_relat-kursf.

  ENDIF.

  MOVE: it_zycet002-nrseq     TO it_relat-nrseq,

        it_zycet002-nfnum     TO it_relat-nfnum,

* >> Início da inclusão: FORM PREENCHE_IT_RELAT

        it_zycet002-posnr     TO it_relat-itmnum,

* << Fim da inclusão

        it_zycet002-kurrf     TO it_relat-kurrf,

        it_zycet002-vbeln_va  TO it_relat-vbeln_va,

        it_zycet002-vbeln_vf  TO it_relat-vbeln_vf,

        it_zycet002-posnr     TO it_relat-posnr,

        it_zycet002-docnum    TO it_relat-docnum,

...

 

...

  PERFORM limpa_tabelas.

ENDFORM.

FORM fill_data_j1b1.

  CLEAR: v_nrseq,

         v_nremb.

* >> Início da inclusão: FORM FILL_DATA_J1B1

  IF NOT it_zycee005[] IS INITIAL AND

     NOT it_zycet035-nfcref IS INITIAL.

    .

    MOVE it_zycee005 TO it_zycee005_aux.

    APPEND it_zycee005_aux.

    CLEAR it_zycee005.

    REFRESH it_zycee005.

  ENDIF.

* << Fim da inclusão

  IF NOT v_enrseq IS INITIAL.

    v_nrseq = it_relat-nrseq.

  ENDIF.

  IF NOT v_enremb IS INITIAL.

    v_nremb = it_relat-nremb.

...

 

...

                  INTO it_zycee006-msg SEPARATED BY space.

      ADD 1 TO v_index2.

      it_zycee006-indice = v_index2.

      APPEND it_zycee006.

    ENDIF.

* >> Início da inclusão: FORM FILL_DATA_J1B1

    CLEAR it_itmnf.

    REFRESH it_itmnf.

* << Fim da inclusão

    LOOP AT it_j1bnflin WHERE docnum = it_emitenf-docnum.

      READ TABLE it_relat_aux2 WITH KEY  nrseq = it_relat-nrseq

                                        docnum = it_emitenf-docnum

                                         posnr = it_j1bnflin-itmnum.

      IF sy-subrc EQ 0.

...

 

...

    v_modo_bi = 'E'.

  ELSEIF v_modo_bi EQ '1'.

    v_modo_bi = 'N'.

  ENDIF.

endform.

* >> Início da inclusão:

FORM contabiliza_j1b1_ref.

  DATA: r_nrseq   LIKE /pws/zycet002-nrseq,

        r_branch  LIKE j_1bnfdoc-branch,

        r_docnum  LIKE /pws/zycet002-docnum,

        r_itmnum  LIKE j_1bnflin-itmnum,

        v_execute TYPE i,

        r_nrseq1  LIKE /pws/zycet002-nrseq,

        r_branch1 LIKE j_1bnfdoc-branch,

        r_docnum1 LIKE /pws/zycet002-docnum.

  SORT it_relat BY land1 nrseq branch docnum.

  CLEAR: r_nrseq, r_branch, r_docnum.

  CLEAR: r_nrseq1, r_branch1, r_docnum1.

  it_relat_aux2[] = it_relat[].

  SORT it_emitenf BY nrseq branch docnum.

  LOOP AT it_relat WHERE land1 NE 'AR'.

    CLEAR v_execute.

    IF NOT it_zycet035-nfcref IS INITIAL.

      IF it_relat-nrseq  NE r_nrseq  OR

         it_relat-branch NE r_branch OR

         it_relat-docnum NE r_docnum OR

         it_relat-itmnum NE r_itmnum.

        MOVE 1 TO v_execute.

      ENDIF.

    ELSEIF it_relat-nrseq NE r_nrseq OR

           it_relat-branch NE r_branch.

      MOVE 1 TO v_execute.

    ENDIF.

    IF NOT v_execute IS INITIAL.

      MOVE: it_relat-nrseq  TO r_nrseq,

            it_relat-branch TO r_branch,

            it_relat-docnum TO r_docnum,

            it_relat-itmnum TO r_itmnum.

      READ TABLE it_emitenf

            WITH KEY nrseq  = it_relat-nrseq

                     branch = it_relat-branch

                     docnum = it_relat-docnum

                     itmnum = it_relat-itmnum.

      IF it_emitenf-difer EQ 0.

        CONTINUE.

      ENDIF.

      IF sy-subrc EQ 0 AND

         it_relat-difer  NE 0.

        CLEAR: it_zycet035.

        IF it_emitenf-difer GT 0.

          READ TABLE it_zycet035 WITH KEY tpnf = '2'

                                          bukrs  = it_relat-bukrs.

        ELSEIF it_emitenf-difer LT 0.

          READ TABLE it_zycet035 WITH KEY tpnf = '1'

                                          bukrs  = it_relat-bukrs.

        ELSE.

          it_zycet004-campo = 'DIFER'.

          it_zycet004-descricao = text-060.

          APPEND it_zycet004.

          CONTINUE.

        ENDIF.

        CLEAR v_execute.

        IF NOT it_zycet035-nfcref IS INITIAL.

          IF it_emitenf-docnum NE it_relat-docnum.

            MOVE 1 TO v_execute.

          ENDIF.

        ENDIF.

        IF v_execute IS INITIAL.

          IF it_relat-dtnf EQ '00000000' OR p_reimp EQ 'X'.

            IF NOT it_zycet035-emitdtbl IS INITIAL AND

               NOT it_zycet035-emitfmes IS INITIAL.

              PERFORM fill_data_j1b1.

            ELSEIF NOT it_zycet035-emitdtbl IS INITIAL AND

                       it_zycet035-emitfmes IS INITIAL AND

                   NOT it_relat-dtbl        IS INITIAL.

              PERFORM fill_data_j1b1.

            ELSEIF it_zycet035-emitdtbl IS INITIAL AND

               NOT it_zycet035-emitfmes IS INITIAL AND

                   it_relat-dtbl        IS INITIAL.

              PERFORM fill_data_j1b1.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

      v_executa_j1b1 = 'X'.

      READ TABLE itab_zyglt100 WITH KEY zexit = 'VRC001' BINARY SEARCH.

      IF sy-subrc EQ 0                           AND

         NOT itab_zyglt100-programa IS INITIAL   AND

         NOT itab_zyglt100-formulario IS INITIAL .

        PERFORM (itab_zyglt100-formulario)

                IN PROGRAM (itab_zyglt100-programa) IF FOUND.

      ENDIF.

      IF it_zycet004[]  IS INITIAL AND

         v_executa_j1b1 EQ 'X'.

        IF it_zycet035-flagfunc IS INITIAL.

          IF NOT it_zycet035-nfcref IS INITIAL.

            CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1_A'

                 EXPORTING

                      v_modo          = v_modo_bi

                 TABLES

                      t_dados =

                         it_zycee005

                      t_campos        = it_zycet004

                      t_zycet005      = it_zycet005

                      t_message       = it_zycee006

                      t_itensnf       = it_itmnf

                 EXCEPTIONS

                      campo_em_branco = 1

                      periodo_fechado = 2

                      OTHERS          = 3.

          ENDIF.

        ELSE.

          IF not it_zycet035-nfcref IS INITIAL.

            CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1N_B'

                 EXPORTING

                      v_modo          = v_modo_bi

                 TABLES

                      t_dados =

                         it_zycee005

                      t_campos        = it_zycet004

                      t_zycet005      = it_zycet005

                      t_message       = it_zycee006

                      t_itensnf       = it_itmnf

                 EXCEPTIONS

                      campo_em_branco = 1

                      periodo_fechado = 2

                      OTHERS          = 3.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF NOT it_zycee005_aux[] IS INITIAL.

    CLEAR   it_zycee005.

    REFRESH it_zycee005.

    MOVE it_zycee005_aux[] TO it_zycee005[].

  ENDIF.

  IF it_zycet004[] IS INITIAL AND

  v_executa_j1b1 EQ 'X'.

    IF it_zycet035-flagfunc IS INITIAL.

      IF it_zycet035-nfcref IS INITIAL.

        CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1'

             EXPORTING

                  v_modo          = v_modo_bi

             TABLES

                  t_dados         = it_zycee005

                  t_campos        = it_zycet004

                  t_zycet005      = it_zycet005

                  t_message       = it_zycee006

             EXCEPTIONS

                  campo_em_branco = 1

                  periodo_fechado = 2

                  OTHERS          = 3.

      ENDIF.

    ELSEIF it_zycet035-nfcref IS INITIAL.

      CALL FUNCTION '/PWS/ZYCE_TRANSACAO_J1B1N'

           EXPORTING

                v_modo          = v_modo_bi

           TABLES

                t_dados         = it_zycee005

                t_campos        = it_zycet004

                t_zycet005      = it_zycet005

                t_message       = it_zycee006

           EXCEPTIONS

                campo_em_branco = 1

                periodo_fechado = 2

                OTHERS          = 3.

    ENDIF.

  ENDIF.

  IF sy-subrc = 0.

    CALL CUSTOMER-FUNCTION '002'.

    LOOP AT it_relat.

      CLEAR v_execute.

      IF NOT it_zycet035-nfcref IS INITIAL.

        IF it_relat-nrseq  NE r_nrseq1  OR

           it_relat-branch NE r_branch1 OR

           it_relat-docnum NE r_docnum1.

          MOVE 1 TO v_execute.

        ENDIF.

      ELSEIF it_relat-nrseq NE r_nrseq1 OR

             it_relat-branch NE r_branch1.

        MOVE 1 TO v_execute.

      ENDIF.

      IF NOT v_execute IS INITIAL.

        MOVE: it_relat-nrseq  TO r_nrseq1,

              it_relat-branch TO r_branch1,

              it_relat-docnum TO r_docnum1.

        LOOP AT it_emitenf WHERE nrseq  = it_relat-nrseq

                             AND branch = it_relat-branch.

          CONCATENATE it_emitenf-nrseq it_emitenf-branch

                      it_emitenf-docnum INTO v_cpochv.

          CLEAR it_zycet005.

          IF it_zycet035-flagfunc IS INITIAL.

            LOOP AT it_zycet005 WHERE tcode  EQ text-050

                                  AND tabela EQ text-006

                                  AND cpochv EQ v_cpochv

                                  AND tpmsg  EQ 'S'.

              PERFORM atualiza_tabelas_j1b1.

              it_doccont-nrseq    = it_relat-nrseq.

              it_doccont-branch   = it_relat-branch.

              it_doccont-belnr5   = it_zycet005-belnr.

              it_doccont-controle = 'N'.

              APPEND it_doccont.

            ENDLOOP.

          ELSE.

            LOOP AT it_zycet005 WHERE tcode  EQ text-097

                                  AND tabela EQ text-006

                                  AND cpochv EQ v_cpochv

                                  AND tpmsg  EQ 'S'.

              PERFORM atualiza_tabelas_j1b1.

              it_doccont-nrseq    = it_relat-nrseq.

              it_doccont-branch   = it_relat-branch.

              it_doccont-belnr5   = it_zycet005-belnr.

              it_doccont-controle = 'N'.

              APPEND it_doccont.

            ENDLOOP.

          ENDIF.

          IF NOT it_doccont[] IS INITIAL.

            SORT it_doccont BY nrseq branch belnr5 controle.

            DELETE ADJACENT DUPLICATES FROM it_doccont.

          ELSE.

            READ TABLE it_zycet005 WITH KEY tcode  = text-050

                                            tabela = text-006

                                            cpochv = v_cpochv

                                            tpmsg  = 'E'.

            IF sy-subrc EQ 0.

              it_erro-nrseq  = it_emitenf-nrseq.

              it_erro-branch = it_emitenf-branch.

              it_erro-msg = it_zycet005-msg.

              APPEND it_erro.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ENDIF.

    ENDLOOP.

  ELSE.

    PERFORM limpa_tabelas.

  ENDIF.

  PERFORM limpa_tabelas.

ENDFORM.

* << Fim da inclusão