CE PLUS - Nota 003061

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal Remessa

Data/Hora da Publicação: 08/02/2007 00:00:00

Data/Hora Última Alteração: 10/11/2011 13:15:45

Descrição da Nota: NO MOMENTO QUE É GERADO A NF, NÃO GERA A NOTA NEM VAI PARA OS ITENS

Sintoma

Valor C&F e dos impostos estava em duplicidade no custo efetivo.

Foi criado um documento para emissão de Nota Fiscal no PWCE e o mesmo somente

aparece no SAP.

 

 

Solução

Tratar programa da NF para atualizar dados do CE após contabilização.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NA NF QUANDO POSSUI QUEBRAS DE ITENS. VALOR DUPLICADO NO CUSTO.

AO CRIAR NF NÃO ATUALIZA TABELAS DO CE E DUPLICA VALORES DE IMPOSTOS

Informações Complementares

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

Nota Número 03061 Data: 08/02/2007 Hora: 14:00:55

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

 

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

Nota Número              : 03061

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00026

Agrupamento              : 00151

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

Referência às notas relacionadas:

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

 

02595  - 00003 - 6.0    - 00025  - AO CRIAR NF NÃO ATUALIZA TABELAS DO CE E DUPLICA VALORES DE IMPOS

02845  - 00002 - 6.0    - 00026  - ATUALIZAÇÃO DO DOCNUM NA NOTA FISCAL

01972  - 00001 - 6.0    - 00024  - ERRO NA NF QUANDO POSSUI QUEBRAS DE ITENS. VALOR DUPLICADO NO CUS

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

NO MOMENTO QUE É GERADO A NF, NÃO GERA A NOTA NEM VAI PARA OS ITENS

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

Palavras Chave:

GERAÇÃO DE NF - EXIT - ITENS DA NF - TRATAMENTO DE EXIT

TABELA DE EXIT

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

Objetos da nota:

REPS /PWS/MZYCI016F01

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

...

          IF it_zycet004 IS INITIAL.

            CLEAR: sy-subrc.

 

            IF v_modalidade NE '99' AND ( t001-land1 NE 'AR' AND

                 t001-land1 NE 'CL' ) OR

               ( v_modalidade = '99' AND

                 v_libera = 'X' ).

 

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

 *Verificação da existência de exit.

               REFRESH itab_zyglt100.

               PERFORM verifica_exit USING 'D'

                                   '/PWS/SAPMZYCI016'

                                   ' '.

 

               e_subrc = '0'.

               v_tiponf = 'NF'.

 

               CLEAR itab_zyglt100 .

               READ TABLE itab_zyglt100 WITH KEY

                     zexit = 'DNF003'  BINARY SEARCH.

               IF sy-subrc EQ 0.

 

                 "Verifica se a Exit está ativa.

                 IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

 

                   "Para verificar o tipo da NF e diferenciar seus

                   "tratamentos

 

                   EXPORT: v_modo_bi TO MEMORY ID 'MODOBI'  ,

                           it_zycet004[] TO MEMORY ID 'CET004',

                           it_zycet005[] TO MEMORY ID 'CET005',

                           it_zycee006[] TO MEMORY ID 'CEE006'.

                   PERFORM (itab_zyglt100-formulario) IN PROGRAM

                      (itab_zyglt100-programa) TABLES itab_zycit042_d

                                                      itab_zycit042

                                                      it_zycee005

                                                      it_zycee007

                                              USING   /pws/zycie041

                                                      v_tiponf

                                              CHANGING e_subrc

                   IF FOUND .

 

                   IMPORT :  it_zycet004[] FROM MEMORY ID 'CET004_04',

                             it_zycet005[] FROM MEMORY ID 'CET005_05',

                            it_zycet005[] FROM MEMORY ID 'CET005_05',

                            it_zycee006[] FROM MEMORY ID 'CEE006_06'.

                ENDIF.

              ELSE.

                READ TABLE itab_zyglt100 WITH KEY

                      zexit = 'DNF011' BINARY SEARCH.

                IF sy-subrc EQ 0.

                  "Verifica se a Exit está ativa.

                  IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                    "Para verificar o tipo da NF e diferenciar seus

                    "tratamentos

                    v_tiponf = 'NF'.

                    e_subrc = '0'.

                    PERFORM (itab_zyglt100-formulario) IN PROGRAM

                       (itab_zyglt100-programa) IF FOUND.

                  ENDIF.

                ENDIF.

              ENDIF.

              IF e_subrc = '0'.

 

* << Fim da inclusão

 

 

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

*              REFRESH itab_zyglt100.

              PERFORM verifica_exit USING 'D'

                                  '/PWS/SAPMZYCI016'

                                  'DNF003'.

              e_subrc = '0'.

 

 

              v_tiponf = 'NF'.

 

              CLEAR itab_zyglt100 .

              READ TABLE itab_zyglt100 WITH KEY

                    zexit = 'DNF003'  BINARY SEARCH.

              IF sy-subrc EQ 0.

 

                "Verifica se a Exit está ativa.

                IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

 

                  "Para verificar o tipo da NF e diferenciar seus

                  "tratamentos

                  EXPORT: v_modo_bi TO MEMORY ID 'MODOBI'  ,

                          it_zycet004[] TO MEMORY ID 'CET004',

                          it_zycet005[] TO MEMORY ID 'CET005',

                          it_zycee006[] TO MEMORY ID 'CEE006'.

                  PERFORM (itab_zyglt100-formulario) IN PROGRAM

                     (itab_zyglt100-programa) TABLES itab_zycit042_d

                                                     itab_zycit042

                                                     it_zycee005

                                                     it_zycee007

                                             USING   /pws/zycie041

                                                     v_tiponf

                                             CHANGING e_subrc

                  IF FOUND .

 

                  IMPORT :  it_zycet004[] FROM MEMORY ID 'CET004_04',

                            it_zycet005[] FROM MEMORY ID 'CET005_05',

                            it_zycee006[] FROM MEMORY ID 'CEE006_06'.

                ENDIF.

 

              ENDIF.

 

              IF e_subrc = '0'.

                REFRESH itab_zyglt100.

                PERFORM verifica_exit USING 'D'

                                    '/PWS/SAPMZYCI016'

                                    'DNF011'.

                e_subrc = 0.

 

                CLEAR itab_zyglt100 .

                READ TABLE itab_zyglt100 WITH KEY

                      zexit = 'DNF011' BINARY SEARCH.

                IF sy-subrc EQ 0.

                  "Verifica se a Exit está ativa.

                  IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                    "Para verificar o tipo da NF e diferenciar seus

                    "tratamentos

                    v_tiponf = 'NF'.

                    e_subrc = '0'.

                    PERFORM (itab_zyglt100-formulario) IN PROGRAM

                       (itab_zyglt100-programa) IF FOUND.

                  ENDIF.

                ENDIF.

 

                IF e_subrc = '0'.

 

* << Fim da exclusão

 

                  CALL FUNCTION '/PWS/ZYCI_TRANSACAO_J1B1N'

                       EXPORTING

                            v_modo          = v_modo_bi

                       TABLES

                            t_dados         = it_zycee005

                           t_itens         = it_zycee007

                           t_campos        = it_zycet004

                           t_zycet005      = it_zycet005

                           t_message       = it_zycee006

                      EXCEPTIONS

                           campo_em_branco = 1

                           OTHERS          = 2.

                 CLEAR v_contitm.

                 LOOP AT itab_zycit042

                   WHERE nrseq    EQ itab_zycit042_aux-nrseq

                     AND nfglobal EQ itab_zycit042_aux-nfglobal

                     AND tpnf     EQ itab_zycit042_aux-tpnf

                     AND lifnr    EQ itab_zycit042_aux-lifnr

                    AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch

                     AND ( docnum   IS initial OR

                           docnum   = '9999999999' OR

                           docnum   = '8888888888' )

                      AND mark     =  'X'

                     AND processado = 'X'.

 

                   ADD 1 TO v_contitm.

                   itab_zycit042-itmnum = v_contitm * 10.

                   MODIFY itab_zycit042 INDEX sy-tabix.

                   PERFORM atualiza_dados_nota.

                 ENDLOOP.

               ELSE.

                 CLEAR v_contitm.

                 LOOP AT itab_zycit042

                   WHERE nrseq    EQ itab_zycit042_aux-nrseq

                     AND nfglobal EQ itab_zycit042_aux-nfglobal

                     AND tpnf     EQ itab_zycit042_aux-tpnf

                     AND lifnr    EQ itab_zycit042_aux-lifnr

                     AND lifnr    EQ itab_zycit042_aux-lifnr

                    AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch

                     AND ( docnum   IS initial OR

                           docnum   = '9999999999' OR

                           docnum   = '8888888888' )

                      AND mark     =  'X'

                     AND processado = 'X'.

 

                   ADD 1 TO v_contitm.

                   itab_zycit042-itmnum = v_contitm * 10.

                   MODIFY itab_zycit042 INDEX sy-tabix.

                   PERFORM atualiza_dados_nota.

                 ENDLOOP.

               ENDIF.

 

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

              ELSE.

                CLEAR v_contitm.

                LOOP AT itab_zycit042

                  WHERE nrseq    EQ itab_zycit042_aux-nrseq

                    AND nfglobal EQ itab_zycit042_aux-nfglobal

                    AND tpnf     EQ itab_zycit042_aux-tpnf

                    AND lifnr    EQ itab_zycit042_aux-lifnr

                   AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch

                    AND ( docnum   IS initial OR

                          docnum   = '9999999999' OR

                          docnum   = '8888888888' )

                     AND mark     =  'X'

                    AND processado = 'X'.

                  ADD 1 TO v_contitm.

                  itab_zycit042-itmnum = v_contitm * 10.

                  MODIFY itab_zycit042 INDEX sy-tabix.

                  PERFORM atualiza_dados_nota.

                ENDLOOP.

              ENDIF.

* << Fim da exclusão

            ENDIF.

            IF  v_modalidade = '99'

             OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).

              IF v_modalidade = '99' AND

                 v_libera IS INITIAL.

                 it_zycet005-tcode  = text-065.

                 it_zycet005-tabela = text-014.

                 it_zycet005-cpochv = /pws/zycie041-nfglobal.

                 it_zycet005-tpmsg  = 'S'.

                 it_zycet005-belnr  = '9999999999'.

                 APPEND it_zycet005.

               ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.

                 it_zycet005-tcode  = text-065.

                 it_zycet005-tabela = text-014.

                 it_zycet005-cpochv = /pws/zycie041-nfglobal.

                 it_zycet005-tpmsg  = 'S'.

                 it_zycet005-belnr  = '8888888888'.

                 APPEND it_zycet005.

               ENDIF.

               CLEAR v_contitm.

               LOOP AT itab_zycit042

                 WHERE nrseq    EQ itab_zycit042_aux-nrseq

                   AND nfglobal EQ itab_zycit042_aux-nfglobal

                   AND tpnf     EQ itab_zycit042_aux-tpnf

                   AND lifnr    EQ itab_zycit042_aux-lifnr

                  AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch

                   AND ( docnum   IS initial OR

                         docnum   = '9999999999' OR

                         docnum   = '8888888888' )

                    AND mark     =  'X'

                   AND processado = 'X'.

 

                 ADD 1 TO v_contitm.

                 itab_zycit042-itmnum = v_contitm * 10.

                 MODIFY itab_zycit042 INDEX sy-tabix.

                 PERFORM atualiza_dados_nota.

               ENDLOOP.

             ENDIF.

 

             v_qtditem = wa_zycit048-qtd_item.

             IF v_counter >= v_qtditem.

               v_tpnf = 0.

             ENDIF.

           ENDIF.

         ELSE.

           CALL SCREEN '0050'.

 

         ENDIF.

       ENDIF.

     ENDLOOP.

     IF sy-subrc NE 0.

       MESSAGE e015 WITH text-043.

     ENDIF.

 

   ELSE.           "Não QUEBRA POR TIPO DE NOTA

     LOOP AT itab_zycit042_aux WHERE ( docnum IS initial OR

                             docnum = '9999999999' OR

                             docnum = '8888888888' ) AND

                             NOT ebeln  IS initial AND

                             processado IS initial AND

                                 mark   EQ 'X'.

 

       IF v_lifnr NE itab_zycit042_aux-lifnr OR

          v_j_1bbranch NE itab_zycit042-j_1bbranch.

         v_j_1bbranch = itab_zycit042_aux-j_1bbranch.

         v_lifnr = itab_zycit042_aux-lifnr.

         CLEAR v_counter.

        PERFORM clear_date_batch.

        PERFORM cabecalho_nf.

        IF ( v_resp EQ 'S' ) OR

           ( v_libera = 'X' AND v_modalidade = '99' ).

 

          SELECT SINGLE * FROM /pws/zycit093

            WHERE nrseqce = /pws/zycit085-nrbl.

 

          SELECT SINGLE tpembal quant descr

              INTO (local_embal,it_zycee005-quant,

               it_zycee005-shpmrk)

                 FROM /pws/zycit014

                 WHERE nrseq = /pws/zycit085-nrbl.

          IF sy-subrc EQ 0.

            SELECT SINGLE traty FROM /pws/zycit015 INTO

                it_zycee005-traty

                WHERE tpembal = local_embal.

 

          ENDIF.

 

          IF /pws/zycie041-nfexterna EQ 'X'.

            it_zycee005-nftype   = wa_zycit048-catnfext.

            it_zycee005-nfnum    = itab_zycit042_aux-nfnum.

            it_zycee005-series   = itab_zycit042_aux-series.

            it_zycee005-subser   = itab_zycit042_aux-subser.

          ELSE.

            "Se for Sucata, manda tiponf de sucata

            IF v_urf2 = 1.

              it_zycee005-nftype   = wa_zyglt369-catnfint.

            ELSE.

              it_zycee005-nftype   = wa_zycit048-catnfint.

            ENDIF.

          ENDIF.

 

          LOOP AT itab_zycit042 WHERE nrseq

             EQ itab_zycit042_aux-nrseq

                   AND nfglobal EQ itab_zycit042_aux-nfglobal

                AND j_1bbranch = itab_zycit042_aux-j_1bbranch

                          AND lifnr = itab_zycit042_aux-lifnr

                                 AND ( docnum   IS initial OR

                                   docnum   = '9999999999' OR

                                      docnum = '8888888888' )

                                          AND mark     =  'X'

                        AND processado IS initial.

 

            itab_zycit042-processado = 'X'.

            MODIFY itab_zycit042 TRANSPORTING processado.

 

            itab_zycit042_aux-processado = 'X'.

            MODIFY itab_zycit042_aux TRANSPORTING processado WHERE

                                  nrseq    EQ itab_zycit042-nrseq

                            AND j_1bbranch = itab_zycit042-j_1bbranch

                                 AND lifnr = itab_zycit042-lifnr

                              AND nfglobal EQ itab_zycit042-nfglobal

                              AND ebeln    EQ itab_zycit042-ebeln

AND ebelp    EQ itab_zycit042-ebelp.

 

            READ TABLE itab_t001w WITH KEY werks = itab_zycit042-werks.

 

            READ TABLE itab_zycit042_d WITH KEY

                nrseq = itab_zycit042-nrseq

                ebeln = itab_zycit042-ebeln

                ebelp = itab_zycit042-ebelp.

            CLEAR v_subrc.

            MOVE: itab_zycit042 TO wa_zycit042_exit,

                  itab_zycit042_d TO wa_zycit042_exit_d.

            CALL CUSTOMER-FUNCTION '001'

              EXPORTING

               wa_zycit042 = wa_zycit042_exit

               wa_zycit042_d = wa_zycit042_exit_d

               wa_zycit041 = /pws/zycie041

               v_parametro = '01'

              IMPORTING

                v_subrc = v_subrc

              TABLES

                it_zycee007 = it_zycee007

                itab_zycit036 = itab_zycit036

                itab_zycit036_di = itab_zycit036_di.

            IF v_subrc NE 'X'.

 

            READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf

                                               regio = itab_t001w-regio.

              IF sy-subrc EQ 0.

                PERFORM itens_nf.

              ELSE.

            READ TABLE itab_zycit033 WITH KEY tpnf = itab_zycit042-tpnf

                                                          regio = space.

 

                PERFORM itens_nf.

              ENDIF.

              ENDIF.

           ENDIF.

           CLEAR itab_zycit033.

           PERFORM peso_global_n.

           v_counter = v_counter + 1.

           v_qtditem =  wa_zycit048-qtd_item.

           IF v_counter >= v_qtditem.

             EXIT.

           ENDIF.

         ENDLOOP.

         it_zycee005-transpnac = /pws/zycie041-transpnac.

 

         APPEND it_zycee005.

 

         PERFORM mensagens_nf.

 

         LOOP AT it_zycet004.

           MESSAGE i019 WITH it_zycet004-descricao.

         ENDLOOP.

 

         IF it_zycet004 IS INITIAL.

           IF ( v_modalidade NE '99' AND t001-land1 NE 'AR'

           AND t001-land1 NE 'CL' ) OR

              ( v_modalidade = '99' AND

                v_libera = 'X' ).

 

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

*Verificação da existência de exit.

              REFRESH itab_zyglt100.

              PERFORM verifica_exit USING 'D'

                                  '/PWS/SAPMZYCI016'

                                  ' '.

 

              e_subrc = '0'.

              v_tiponf = 'NF'.

              CLEAR itab_zyglt100 .

 

              READ TABLE itab_zyglt100 WITH KEY

                    zexit = 'DNF003'  BINARY SEARCH.

              IF sy-subrc EQ 0.

                "Verifica se a Exit está ativa.

                IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                  "Para verificar o tipo da NF e diferenciar seus

                  "tratamentos

 

                  EXPORT: v_modo_bi TO MEMORY ID 'MODOBI'  ,

                          it_zycet004[] TO MEMORY ID 'CET004',

                          it_zycet005[] TO MEMORY ID 'CET005',

                          it_zycee006[] TO MEMORY ID 'CEE006'.

                  PERFORM (itab_zyglt100-formulario) IN PROGRAM

                     (itab_zyglt100-programa) TABLES itab_zycit042_d

                                                     itab_zycit042

                                                     it_zycee005

                                                     it_zycee007

                                              USING  /pws/zycie041

                                                     v_tiponf

                                              CHANGING e_subrc

                  IF FOUND.

 

                  IMPORT :  it_zycet004[] FROM MEMORY ID 'CET004_04',

                            it_zycet005[] FROM MEMORY ID 'CET005_05',

                            it_zycee006[] FROM MEMORY ID 'CEE006_06'.

 

                ENDIF.

 

              ELSE.

                READ TABLE itab_zyglt100 WITH KEY

                      zexit = 'DNF011' BINARY SEARCH.

                IF sy-subrc EQ 0.

                  "Verifica se a Exit está ativa.

                  IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                    "Para verificar o tipo da NF e diferenciar seus

                    "tratamentos

                    v_tiponf = 'NF'.

                    e_subrc = '0'.

                    PERFORM (itab_zyglt100-formulario) IN PROGRAM

                       (itab_zyglt100-programa) IF FOUND.

                  ENDIF.

                ENDIF.

              ENDIF.

* << Fim da inclusão

              if e_subrc = '0'.

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

*Verificação da existência de exit.

              REFRESH itab_zyglt100.

              PERFORM verifica_exit USING 'D'

                                  '/PWS/SAPMZYCI016'

                                  'DNF003'.

              e_subrc = '0'.

              CLEAR itab_zyglt100 .

              READ TABLE itab_zyglt100 WITH KEY

                    zexit = 'DNF003'  BINARY SEARCH.

              IF sy-subrc EQ 0.

                "Verifica se a Exit está ativa.

                IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                  "Para verificar o tipo da NF e diferenciar seus

                  "tratamentos

                  v_tiponf = 'NF'.

                  EXPORT: v_modo_bi TO MEMORY ID 'MODOBI'  ,

                          it_zycet004[] TO MEMORY ID 'CET004',

                          it_zycet005[] TO MEMORY ID 'CET005',

                          it_zycee006[] TO MEMORY ID 'CEE006'.

                  PERFORM (itab_zyglt100-formulario) IN PROGRAM

                     (itab_zyglt100-programa) TABLES itab_zycit042_d

                                                     itab_zycit042

                                                     it_zycee005

                                                     it_zycee007

                                              USING  /pws/zycie041

                                                     v_tiponf

                                              CHANGING e_subrc

                  IF FOUND.

 

                  IMPORT :  it_zycet004[] FROM MEMORY ID 'CET004_04',

                            it_zycet005[] FROM MEMORY ID 'CET005_05',

                            it_zycee006[] FROM MEMORY ID 'CEE006_06'.

 

                ENDIF.

 

              ENDIF.

 

              IF e_subrc = '0'.

 

                REFRESH itab_zyglt100.

                PERFORM verifica_exit USING 'D'

                                    '/PWS/SAPMZYCI016'

                                    'DNF011'.

                e_subrc = 0.

 

                CLEAR itab_zyglt100 .

                READ TABLE itab_zyglt100 WITH KEY

                      zexit = 'DNF011' BINARY SEARCH.

                IF sy-subrc EQ 0.

                  "Verifica se a Exit está ativa.

                  IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

                    "Para verificar o tipo da NF e diferenciar seus

                    "tratamentos

                    v_tiponf = 'NF'.

                    e_subrc = '0'.

                    PERFORM (itab_zyglt100-formulario) IN PROGRAM

                       (itab_zyglt100-programa) IF FOUND.

                  ENDIF.

                ENDIF.

 

                IF e_subrc = '0'.

* << Fim da exclusão

                CALL FUNCTION '/PWS/ZYCI_TRANSACAO_J1B1N'

                     EXPORTING

                          v_modo          = v_modo_bi

                     TABLES

                          t_dados         = it_zycee005

                          t_itens         = it_zycee007

                          t_campos        = it_zycet004

                          t_zycet005      = it_zycet005

                          t_message       = it_zycee006

                     EXCEPTIONS

                          campo_em_branco = 1

                          OTHERS          = 2.

 

                CLEAR v_contitm.

                LOOP AT itab_zycit042

                        WHERE nrseq    EQ itab_zycit042_aux-nrseq

                         AND nfglobal EQ itab_zycit042_aux-nfglobal

                      AND j_1bbranch = itab_zycit042_aux-j_1bbranch

                          AND lifnr = itab_zycit042_aux-lifnr

                          AND ( docnum   IS initial OR

                            docnum   = '9999999999' OR

                              docnum = '8888888888' )

                          AND mark     = 'X'

                          AND processado = 'X'.

 

                  ADD 1 TO v_contitm.

                  itab_zycit042-itmnum = v_contitm * 10.

                  MODIFY itab_zycit042 INDEX sy-tabix.

                  PERFORM atualiza_dados_nota.

                ENDLOOP.

              ELSE.

                CLEAR v_contitm.

                LOOP AT itab_zycit042

                        WHERE nrseq    EQ itab_zycit042_aux-n

                         AND nfglobal EQ itab_zycit042_aux-nf

                      AND j_1bbranch = itab_zycit042_aux-j_1b

                          AND lifnr = itab_zycit042_aux-lifnr

                          AND ( docnum   IS initial OR

                            docnum   = '9999999999' OR

                              docnum = '8888888888' )

                          AND mark     = 'X'

                          AND processado = 'X'.

 

                  ADD 1 TO v_contitm.

                  itab_zycit042-itmnum = v_contitm * 10.

                  MODIFY itab_zycit042 INDEX sy-tabix.

                  PERFORM atualiza_dados_nota.

                ENDLOOP.

              ENDIF.

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

              ELSE.

                CLEAR v_contitm.

                LOOP AT itab_zycit042

                        WHERE nrseq    EQ itab_zycit042_aux-nrseq

                         AND nfglobal EQ itab_zycit042_aux-nfglobal

                      AND j_1bbranch = itab_zycit042_aux-j_1bbranch

                          AND lifnr = itab_zycit042_aux-lifnr

                          AND ( docnum   IS initial OR

                            docnum   = '9999999999' OR

                              docnum = '8888888888' )

                          AND mark     = 'X'

                          AND processado = 'X'.

                  ADD 1 TO v_contitm.

                  itab_zycit042-itmnum = v_contitm * 10.

                  MODIFY itab_zycit042 INDEX sy-tabix.

                  PERFORM atualiza_dados_nota.

                ENDLOOP.

              ENDIF.

            ENDIF.

* << Fim da exclusão

          ENDIF.

            IF sy-subrc = 0 OR v_modalidade = '99' OR

               ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).

              IF v_modalidade = '99' AND

                v_libera IS INITIAL.

                it_zycet005-tcode  = text-065.

                it_zycet005-tabela = text-014.

                it_zycet005-cpochv = /pws/zycie041-nfglobal.

                it_zycet005-tpmsg  = 'S'.

                it_zycet005-belnr  = '9999999999'.

                APPEND it_zycet005.

              ELSEIF t001-land1 EQ 'AR' OR  t001-land1 EQ 'CL'.

                it_zycet005-tcode  = text-065.

                it_zycet005-tabela = text-014.

                it_zycet005-cpochv = /pws/zycie041-nfglobal.

                it_zycet005-tpmsg  = 'S'.

                it_zycet005-belnr  = '8888888888'.

                APPEND it_zycet005.

              ENDIF.

              CLEAR v_contitm.

              LOOP AT itab_zycit042

                      WHERE nrseq    EQ itab_zycit042_aux-nrseq

                       AND nfglobal EQ itab_zycit042_aux-nfglobal

                    AND j_1bbranch = itab_zycit042_aux-j_1bbranch

                        AND lifnr = itab_zycit042_aux-lifnr

                        AND ( docnum   IS initial OR

                          docnum   = '9999999999' OR

                            docnum = '8888888888' )

                        AND mark     = 'X'

                        AND processado = 'X'.

 

                ADD 1 TO v_contitm.

                itab_zycit042-itmnum = v_contitm * 10.

                MODIFY itab_zycit042 INDEX sy-tabix.

                PERFORM atualiza_dados_nota.

               ENDLOOP.

             ENDIF.

           ENDIF.

         ELSE.

           CALL SCREEN '0050'.

         ENDIF.

       ENDIF.

     ENDLOOP.

 

...

 

...

 

  LOOP AT it_zycet004.

    MESSAGE i019 WITH it_zycet004-descricao.

  ENDLOOP.

 

  IF it_zycet004 IS INITIAL.

 

*Verificação da existência de exit.

 

    PERFORM verifica_exit USING 'D'

                        '/PWS/SAPMZYCI016'

                        'DNF004'.

 

    CLEAR itab_zyglt100 .

    READ TABLE itab_zyglt100 WITH KEY

          zexit = 'DNF004'  BINARY SEARCH.

    IF sy-subrc EQ 0.

      "Verifica se a Exit está ativa.

      IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

        "Para verificar o tipo da NF e diferenciar seus

        "tratamentos

        v_tiponf = 'NFR'.

        EXPORT: v_modo_bi TO MEMORY ID 'MODOBI'  ,

                it_zycet004[] TO MEMORY ID 'CET004',

                it_zycet005[] TO MEMORY ID 'CET005',

                it_zycee006[] TO MEMORY ID 'CEE006'.

        PERFORM (itab_zyglt100-formulario) IN PROGRAM

 (itab_zyglt100-programa) TABLES itab_zycit042_d

                                   itab_zycit044

                                  it_zycee005

                                  it_zycee007

                           USING  v_tiponf

                                  /pws/zycie043

                           CHANGING e_subrc

         IF FOUND.

         IMPORT :  it_zycet004[] FROM MEMORY ID 'CET004_04',

                   it_zycet005[] FROM MEMORY ID 'CET005_05',

                   it_zycee006[] FROM MEMORY ID 'CEE006_06'.

       ENDIF.

 

     ENDIF.

 

 

     IF e_subrc = '0'.

 

       " Campos da tela ok, porém resultado igual 'S' ou 'E'

       IF v_modalidade = '99' OR

        ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).

 

         IF v_modalidade = '99'.

           it_zycet005-tcode  = text-065.

           it_zycet005-tabela = text-025.

           it_zycet005-cpochv = /pws/zycie043-nfremessa.

           it_zycet005-tpmsg  = 'S'.

           it_zycet005-belnr  = '9999999999'.

           APPEND it_zycet005.

         ELSEIF t001-land1 EQ 'AR' OR t001-land1 EQ 'CL'.

           it_zycet005-tcode  = text-065.

           it_zycet005-tabela = text-025.

           it_zycet005-cpochv = /pws/zycie043-nfremessa.

           it_zycet005-tpmsg  = 'S'.

           it_zycet005-belnr  = '8888888888'.

           APPEND it_zycet005.

        ENDIF.

        LOOP AT itab_zycit044.

          PERFORM atualiza_dados_nota_r.

        ENDLOOP.

* >> Início da exclusão: FORM FILL_DATA_J1B1_R

      ENDIF.

* << Fim da exclusão

    ELSEIF v_modalidade NE '99' AND

    ( t001-land1 NE 'AR' AND t001-land1 NE 'CL' )..

      REFRESH itab_zyglt100.

      PERFORM verifica_exit USING 'D'

                          '/PWS/SAPMZYCI016'

                             'DNF011'.

         e_subrc = 0.

 

         CLEAR itab_zyglt100 .

         READ TABLE itab_zyglt100 WITH KEY

               zexit = 'DNF011' BINARY SEARCH.

         IF sy-subrc EQ 0.

           "Verifica se a Exit está ativa.

           IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

             "Para verificar o tipo da NF e diferenciar seus

             "tratamentos

             v_tiponf = 'NF'.

             e_subrc = '0'.

             PERFORM (itab_zyglt100-formulario) IN PROGRAM

                (itab_zyglt100-programa) IF FOUND.

           ENDIF.

         ENDIF.

 

       ENDIF.

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

      ENDIF.

* << Fim da inclusão

      IF e_subrc = '0'.

        CALL FUNCTION '/PWS/ZYCI_TRANSACAO_J1B1N'

             EXPORTING

                  v_modo          = v_modo_bi

             TABLES

                  t_dados         = it_zycee005

                  t_itens         = it_zycee007

                  t_campos        = it_zycet004

                  t_zycet005      = it_zycet005

                  t_message       = it_zycee006

             EXCEPTIONS

                  campo_em_branco = 1

                  OTHERS          = 2.

 

        LOOP AT itab_zycit044.

          PERFORM atualiza_dados_nota_r.

        ENDLOOP.

      ELSE.

        LOOP AT itab_zycit044.

          PERFORM atualiza_dados_nota_r.

        ENDLOOP.

 

      ENDIF.

 

    ELSE.

      LOOP AT itab_zycit044.

        PERFORM atualiza_dados_nota_r.

      ENDLOOP.

...

 

...

      IMPORT /pws/zycee007 FROM MEMORY ID 'I016D'.

      MOVE /pws/zycee007 TO it_zycee007.

      APPEND it_zycee007.

      CLEAR it_zycee007.

    ELSE.

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

      REFRESH itab_zyglt100.

      PERFORM verifica_exit USING 'D'

                          '/PWS/SAPMZYCI016'

                          'DNF012'.

      e_subrc = 0.

      CLEAR itab_zyglt100 .

      READ TABLE itab_zyglt100 WITH KEY

            zexit = 'DNF012' BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

          v_tiponf = 'NF'.

          e_subrc = '0'.

          PERFORM (itab_zyglt100-formulario) IN PROGRAM

             (itab_zyglt100-programa) IF FOUND.

        ENDIF.

      ENDIF.

      IF e_subrc = '0'.

* << Fim da inclusão

      PERFORM itens_nfnew.

    ENDIF.

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

    ENDIF.

* << Fim da inclusão

    EXPORT space TO MEMORY ID 'I016A'.

    EXPORT space TO MEMORY ID 'I016B'.

  ENDIF.

ENDFORM.

FORM itens_nf_r.

...

 

...

      SET PARAMETER ID 'BSP'      FIELD space.

      SET PARAMETER ID '/pws/ZYCBP001' FIELD space.

      EXPORT space TO MEMORY ID 'I016A'.

      EXPORT space TO MEMORY ID 'I016B'.

    ELSE.

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

      REFRESH itab_zyglt100.

      PERFORM verifica_exit USING 'D'

                          '/PWS/SAPMZYCI016'

                          'DNF012'.

      e_subrc = 0.

      CLEAR itab_zyglt100 .

      READ TABLE itab_zyglt100 WITH KEY

            zexit = 'DNF012' BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

          v_tiponf = 'NFR'.

          e_subrc = '0'.

          PERFORM (itab_zyglt100-formulario) IN PROGRAM

             (itab_zyglt100-programa) IF FOUND.

        ENDIF.

      ENDIF.

      IF e_subrc = '0'.

* << Fim da inclusão

      PERFORM itens_nfrnew.

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

      ENDIF.

* << Fim da inclusão

    ENDIF.

...