CE PLUS - Nota 002289

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

Data/Hora da Publicação: 20/10/2006 00:00:00

Data/Hora Última Alteração: 20/06/2011 13:06:52

Descrição da Nota: AO CRIAR NF NÃO APARECE O DOCNUM

Sintoma

Não está salvando o número do documento na criação da NFGlobal.

 

 

Solução

alterado perform

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

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

VARIÁVEL V_MODALIDADE NO COMMON PART PARA UTILIZAÇÃO EM EXIT

Informações Complementares

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

Nota Número 02289 Data: 20/10/2006 Hora: 16:07:14

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

 

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

Nota Número              : 02289

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00025

Agrupamento              : 00136

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

Referência às notas relacionadas:

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

 

01526  - 00001 - 6.0    - 00023  - VARIÁVEL V_MODALIDADE NO COMMON PART PARA UTILIZAÇÃO EM EXIT

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

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

AO CRIAR NF NÃO APARECE O DOCNUM

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

Palavras Chave:

NOTA FISCAL - NUMERO DOCUMENTO

 

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

Objetos da nota:

REPS /PWS/MZYCI016F01

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

      FOR ALL ENTRIES IN itab_zycit042

      WHERE werks = itab_zycit042-werks.

  ENDIF.

  SORT itab_zycit042     BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.

  REFRESH: itab_zycit053_s.

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

  LOOP AT itab_zycit042 WHERE mark = 'X'.

* << Fim da exclusão

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

  read table itab_zycit042 with key mark = 'X'.

* << Fim da inclusão

    CLEAR v_lifnr.

    SELECT SINGLE modalidade FROM /pws/zycit001 INTO v_modalidade

      WHERE nrseq = itab_zycit042-nrseq.

    IF itab_zycit042[] IS INITIAL.

      SELECT * FROM /pws/zycit003

...

 

...

      CLEAR v_tpnf.

      LOOP AT itab_zycit042_aux WHERE ( docnum IS initial        OR

                                     docnum = '9999999999'       OR

                                     docnum = '8888888888' )     AND

                                     NOT ebeln  IS initial       AND

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

                                     lifnr = itab_zycit042-lifnr AND

* << Fim da exclusão

                                     mark   =  'X'.

        CLEAR: v_counter.

        IF itab_zycit042_aux-tpnf NE v_tpnf OR

           itab_zycit042_aux-j_1bbranch NE v_j_1bbranch OR

           itab_zycit042_aux-lifnr NE v_lifnr.

...

 

...

 

                     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.

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

                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.

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                        tpmsg  = 'S'.

                  IF sy-subrc EQ 0.

                    IF it_zycee005-belnr NE '0000000000'.

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                       /pws/zycie041-dt_mb01, /pws/zycie041-dt_f_51,

                       /pws/zycie041-dt_f_02,

                 /pws/zycie041-belnrf02seg, /pws/zycie041-dt_f02seg,

                 /pws/zycie041-belnrf02fre, /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                  docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042

                             TRANSPORTING docnum mark

                             WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                               AND ebeln    = itab_zycit042-ebeln

                               AND ebelp    = itab_zycit042-ebelp

                               AND tpnf     = itab_zycit042-tpnf

                               AND lifnr    EQ itab_zycit042-lifnr

                         AND j_1bbranch EQ itab_zycit042-j_1bbranch

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999' OR

                                    docnum = '8888888888' )

                               AND mark     = 'X'

                               AND processado = 'X'.

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

                        MODIFY /pws/zycit042 FROM itab_zycit042.

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                          /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      LOOP AT it_zycet004.

                        MESSAGE i019 WITH it_zycet004-descricao.

                      ENDLOOP.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

* << Fim da inclusão

               " 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' ).

...

 

...

 

 

                     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.

 

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

                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.

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                     tpmsg  = 'S'.

                  IF sy-subrc EQ 0.

                    IF it_zycee005-belnr NE '0000000000'.

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                               /pws/zycie041-dt_mb01,

                               /pws/zycie041-dt_f_51,

                               /pws/zycie041-dt_f_02,

                               /pws/zycie041-belnrf02seg,

                               /pws/zycie041-dt_f02seg,

                               /pws/zycie041-belnrf02fre,

                               /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                   docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042 TRANSPORTING docnum mark

                            WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                            AND j_1bbranch = itab_zycit042-j_1bbranch

                              AND lifnr = itab_zycit042-lifnr

                              AND ebeln    = itab_zycit042-ebeln

                              AND ebelp    = itab_zycit042-ebelp

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999'  OR

                                    docnum = '8888888888' )

                              AND mark     = 'X'

                              AND processado = 'X'.

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

                        MODIFY /pws/zycit042 FROM itab_zycit042.

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                 /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

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

                        v_modalidade NE '99' ) OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

* << Fim da inclusão

                  ENDIF.

                ENDIF.

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

                  ELSE.

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

                  ENDIF.

* << Fim da inclusão

              ENDIF.

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

              ENDIF.

* << Fim da inclusão

 

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

             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.

 

                  "Busca log de execução

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                     tpmsg  = 'S'.

                  IF sy-subrc EQ 0.                "SUCESSO na J1B1

                    IF it_zycee005-belnr NE '0000000000'.

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                                /pws/zycie041-statusp_mb01,

                                /pws/zycie041-statusp_f_51,

                                /pws/zycie041-statusp_f_02,

                                /pws/zycie041-dt_mr1m,

                                /pws/zycie041-dt_mb01,

                                /pws/zycie041-dt_f_51,

                                /pws/zycie041-dt_f_02,

                                /pws/zycie041-belnrf02seg,

                                /pws/zycie041-dt_f02seg,

                                /pws/zycie041-belnrf02fre,

                                /pws/zycie041-dt_f02fre.

                         itab_zycit042-docnum = it_zycee005-belnr.

                         IF it_zycet005-belnr = '9999999999'.

                           itab_zycit042-docnum = it_zycet005-belnr.

                         ENDIF.

                         IF it_zycet005-belnr = '8888888888'.

                           itab_zycit042-docnum = it_zycet005-belnr.

                         ENDIF.

                         itab_zycit042-mark   = ' '.

                         MODIFY /pws/zycit041 FROM /pws/zycie041.

                         IF NOT /pws/zycie041-docnum = '9999999999'

                         AND NOT /pws/zycie041-docnum = '8888888888'.

                           DELETE  FROM /pws/zycit041

                              WHERE nrseq = /pws/zycie041-nrseq AND

                               nfglobal = /pws/zycie041-nfglobal AND

                                    ( docnum = '9999999999' OR

                                    docnum = '8888888888' ).

                         ENDIF.

                         MODIFY itab_zycit042 TRANSPORTING docnum mark

                             WHERE nrseq    = itab_zycit042-nrseq

                               AND nfglobal = itab_zycit042-nfglobal

                             AND j_1bbranch = itab_zycit042-j_1bbranch

                               AND lifnr = itab_zycit042-lifnr

                               AND ebeln    = itab_zycit042-ebeln

                              AND ebelp    = itab_zycit042-ebelp

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999'  OR

                                    docnum = '8888888888' )

                              AND mark     = 'X'

                              AND processado = 'X'.

 

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

 

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

 

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

 

 

                        MODIFY /pws/zycit042 FROM itab_zycit042.

 

                        " Atualiza Embarque com tipo de nf

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

 

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                 /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

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

                        v_modalidade NE '99' ) OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.                            "ERRO na J1B1

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

              ENDIF.

            ENDIF.

          ELSE.

            CALL SCREEN '0050'.

          ENDIF.

        ENDIF.

      ENDLOOP.

    ENDIF.

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

  ENDLOOP.

* << Fim da exclusão

  MODIFY /pws/zycit053 FROM TABLE itab_zycit053_s.

  COMMIT WORK.

 IF v_modalidade = '99' OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).

    LOOP AT itab_zycit042 WHERE docnum IS initial OR

                                docnum = '9999999999' OR

...

 

 

 

 

 

****************************************************************************************************

****************************************************************************************************

************************* POR SER UMA NOTA DIFÍCIL DE APLICAR O ************************************

********************** PERFORM FILL DATA J1B1 FOI COPIADO INTEIRO **********************************

************************** A BAIXO PARA FACILITA A LOCALIZAÇÕA**************************************

****************************************************************************************************

****************************************************************************************************

*&---------------------------------------------------------------------*

*&      Form  FILL_DATA_J1B1

*&---------------------------------------------------------------------*

*       Preenche dados para emissão Nota Fiscal Writer Global - J1B1

*----------------------------------------------------------------------*

FORM fill_data_j1b1.

  DATA:

    v_tpnf LIKE /pws/zycit044-tpnf,

    v_lifnr LIKE /pws/zycit042-lifnr,

    v_j_1bbranch LIKE /pws/zycit042-j_1bbranch,

 

*chamado 307472 inicio

*    v_counter TYPE i,

*    v_qtditem TYPE i,

*chamado 307472 fim

 

    v_contitm LIKE sy-tabix,

    local_embal LIKE /pws/zycit014-tpembal,

*    v_libera,

    wa_zycit042_exit LIKE /pws/zycit042,

    wa_zycit042_exit_d LIKE /pws/zycit042.

 

  CLEAR: v_libera, v_icms_dif, v_base_dif.

  CLEAR: v_urf2, e_subrc.

 

*chamado 210007 inicio

  CLEAR    itab_zycit042_mark.

  REFRESH itab_zycit042_mark.

*chamado 210007 fim

 

  IF v_modalidade = '99'.

    SELECT SINGLE * FROM /pws/zycit043

      WHERE nrseq = /pws/zycie041-nrseq AND

            cancel = space.

    IF sy-subrc = 0.

      SELECT SINGLE * FROM /pws/zycit045

       WHERE nrseqnf = /pws/zycie041-nrseq AND

         saldo > 0.

      IF sy-subrc NE 0.

        SELECT SINGLE * FROM /pws/zycit043

          WHERE nrseq = /pws/zycie041-nrseq AND

                belnr_mr1m EQ space AND

                cancel NE 'X'.

        IF sy-subrc NE 0 AND

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

          v_libera = 'X'.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  CLEAR: v_despmens.

* Parâmetros Gerais Nota Fiscal de Importação

 

* Se encontrar dados na /pws/zyglt369.

  CLEAR wa_zycit048.

  SELECT SINGLE * FROM /pws/zyglt369

         INTO wa_zyglt369

         WHERE bukrs  EQ /pws/zycit085-bukrs

          AND  branch EQ /pws/zycit085-j_1bbranch

          AND urfdesp EQ /pws/zycit085-urfdesp.

  IF sy-subrc EQ 0.

    SELECT SINGLE * FROM /pws/zycit048

      INTO wa_zycit048

      WHERE bukrs  EQ wa_zyglt369-bukrs

        AND branch EQ wa_zyglt369-branch.

* Se fez seleção pela tabela /pws/zyglt369 v_urf2 = 1.

    v_urf2 = 1.

  ENDIF.

  IF sy-subrc NE 0.

* Senão, faz processo normal pela /pws/zycit048.

    SELECT SINGLE * FROM /pws/zycit048

      INTO wa_zycit048

      WHERE bukrs  EQ /pws/zycie041-bukrs

        AND branch EQ /pws/zycie041-j_1bbranch.

    IF sy-subrc NE 0.

      SELECT SINGLE * FROM /pws/zycit048

         INTO wa_zycit048

         WHERE bukrs EQ /pws/zycie041-bukrs

               AND branch EQ space.

      IF sy-subrc NE 0.

        MESSAGE e015 WITH text-082.

      ENDIF.

    ENDIF.

  ENDIF.

 

  IF wa_zycit048-qtd_item IS INITIAL.

    MESSAGE i015 WITH text-054 text-055.

    EXIT.

  ENDIF.

 

* Dados da DI

  CLEAR wa_zycit085.

  SELECT SINGLE * FROM /pws/zycit085

    INTO wa_zycit085

    WHERE nrseqdi EQ /pws/zycie041-nrseq.

 

* Classificacao da Nota Fiscal Global

  FREE itab_zycit033.

  SELECT * FROM /pws/zycit033

    INTO TABLE itab_zycit033

    WHERE clnf = text-027                      " GLOBAL

     AND bukrs = /pws/zycie041-bukrs.

 

  IF NOT itab_zycit042[] IS INITIAL.

    SELECT * FROM t001w INTO TABLE itab_t001w

      FOR ALL ENTRIES IN itab_zycit042

      WHERE werks = itab_zycit042-werks.

  ENDIF.

 

* Chamado 298395 - inicio

  SORT itab_zycit042     BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.

* Chamado 298395 - Fim

 

  REFRESH: itab_zycit053_s.

 

 

***PWS5393838 - Inicio.

* Cria nota fiscal com dois itens ao mesmo tempo e

* com fornecedores diferentes.

  read table itab_zycit042 with key mark = 'X'.

 

*  LOOP AT itab_zycit042 WHERE mark = 'X'.

    CLEAR v_lifnr.

***PWS5393838 - Fim.

    SELECT SINGLE modalidade FROM /pws/zycit001 INTO v_modalidade

      WHERE nrseq = itab_zycit042-nrseq.

 

    IF itab_zycit042[] IS INITIAL.

      SELECT * FROM /pws/zycit003

        INTO CORRESPONDING FIELDS OF TABLE itab_zycit003

        FOR ALL ENTRIES IN itab_zycit042

        WHERE nrseq = itab_zycit042-nrseq AND

              ebeln = itab_zycit042-ebeln AND

              ebelp = itab_zycit042-ebelp.

    ENDIF.

 

   IF wa_zycit048-sepnf = 'X'.                  " Separar Lançto. por NF

      SORT itab_zycit042_aux BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.

      SORT itab_zycit042     BY tpnf j_1bbranch lifnr nrseq ebeln ebelp.

 

      CLEAR v_tpnf.

*     Controle para separar por tipo de NF e por qtde.

*     itab_42_aux = itab_42, anda pela itab_42aux preenche alguns docnum

*     na itab_42 sem deixar que reprocessem.

 

***PWS5393838 - Inicio.

      LOOP AT itab_zycit042_aux WHERE ( docnum IS initial        OR

                                     docnum = '9999999999'       OR

                                     docnum = '8888888888' )     AND

                                     NOT ebeln  IS initial       AND

*                                     lifnr = itab_zycit042-lifnr AND

                                     mark   =  'X'.

***PWS5393838 - Fim.

 

        CLEAR: v_counter.

        IF itab_zycit042_aux-tpnf NE v_tpnf OR

           itab_zycit042_aux-j_1bbranch NE v_j_1bbranch OR

           itab_zycit042_aux-lifnr NE v_lifnr.

          v_tpnf = itab_zycit042_aux-tpnf.

          v_j_1bbranch = itab_zycit042_aux-j_1bbranch.

          v_lifnr = itab_zycit042_aux-lifnr.

 

          PERFORM clear_date_batch.

          PERFORM cabecalho_nf.

*        if v_resp eq 'S'.

          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 fez seleção pela tabela /pws/zyglt369 v_urf2 = 1.

              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 tpnf     EQ itab_zycit042_aux-tpnf

                          AND lifnr    EQ itab_zycit042_aux-lifnr

                   AND j_1bbranch EQ itab_zycit042_aux-j_1bbranch

                                              AND mark     =  'X'

                                     AND ( docnum   IS initial OR

                                       docnum   = '9999999999' OR

                                          docnum = '8888888888' )

                                        AND processado IS initial.

*          itab_zycit042-itmnum = sy-tabix * 10.

              itab_zycit042-processado = 'X'.

*          modify itab_zycit042 transporting itmnum processado.

              MODIFY itab_zycit042 TRANSPORTING processado.

 

             READ TABLE itab_t001w WITH KEY werks = itab_zycit042-werks.

*            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.

*            perform itens_nf.

*          endif.

              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.

              PERFORM peso_global_sep.

              CLEAR itab_zycit033.

*       Verificar a qtde de itens/NFG parametrizados na 48

              v_counter = v_counter + 1.

              v_qtditem = wa_zycit048-qtd_item.

              IF v_counter >= v_qtditem.

                EXIT.

              ENDIF.

            ENDLOOP.

            IF sy-subrc NE 0.

              EXIT.

            ENDIF.

            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.

              CLEAR: sy-subrc.

 

*chamado 326853 inicio

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

                   t001-land1 NE 'CL' ) OR

                 ( v_modalidade = '99' AND

                   v_libera = 'X' ).

*chamado 326853 fim

 

*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'.

*chamado 326853 inicio

* Chamado - 316107 - inicio

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

                  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'.

 

* Chamado - 316107 - Fim

 

 

                    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.

 

                  "Busca log de execução

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                        tpmsg  = 'S'.

                  IF sy-subrc EQ 0. "SUCESSO na J1B1

                    IF it_zycee005-belnr NE '0000000000'.

 

* Chamado - 310796 - inicio

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

*              SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc

*                                      WHERE docnum EQ it_zycee005-belnr

*.

* Chamado - 310796 - Fim

 

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                       /pws/zycie041-dt_mb01, /pws/zycie041-dt_f_51,

                       /pws/zycie041-dt_f_02,

                 /pws/zycie041-belnrf02seg, /pws/zycie041-dt_f02seg,

                 /pws/zycie041-belnrf02fre, /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

 

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                  docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042

                             TRANSPORTING docnum mark

                             WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                               AND ebeln    = itab_zycit042-ebeln

                               AND ebelp    = itab_zycit042-ebelp

                               AND tpnf     = itab_zycit042-tpnf

                               AND lifnr    EQ itab_zycit042-lifnr

                         AND j_1bbranch EQ itab_zycit042-j_1bbranch

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999' OR

                                    docnum = '8888888888' )

                               AND mark     = 'X'

                               AND processado = 'X'.

* Chamado - 310796 -  inicio

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

 

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

 

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

* Chamado - 310796 -  Fim

*                    modify /pws/zycit042 from table itab_zycit042.

                        MODIFY /pws/zycit042 FROM itab_zycit042.

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                          /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.                          "ERRO na J1B1

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      LOOP AT it_zycet004.

                        MESSAGE i019 WITH it_zycet004-descricao.

                      ENDLOOP.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

 

 

                  ENDIF.

* Chamado - 316107 - inicio

                ENDIF.

* Chamado - 316107 - Fim

              ENDIF.

*chamado 326853 fim

 

 

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

              IF  v_modalidade = '99'

*chamado 326853 inicio

*               OR sy-subrc = '0'

*chamado 326853 fim

               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.

 

                  "Busca log de execução

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                        tpmsg  = 'S'.

                  IF sy-subrc EQ 0. "SUCESSO na J1B1

                    IF it_zycee005-belnr NE '0000000000'.

 

* Chamado - 310796 - inicio

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

*              SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc

*                                      WHERE docnum EQ it_zycee005-belnr

*.

* Chamado - 310796 - Fim

 

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                       /pws/zycie041-dt_mb01, /pws/zycie041-dt_f_51,

                       /pws/zycie041-dt_f_02,

                 /pws/zycie041-belnrf02seg, /pws/zycie041-dt_f02seg,

                 /pws/zycie041-belnrf02fre, /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

 

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                  docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042

                             TRANSPORTING docnum mark

                             WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                               AND ebeln    = itab_zycit042-ebeln

                               AND ebelp    = itab_zycit042-ebelp

                               AND tpnf     = itab_zycit042-tpnf

                               AND lifnr    EQ itab_zycit042-lifnr

                         AND j_1bbranch EQ itab_zycit042-j_1bbranch

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999' OR

                                    docnum = '8888888888' )

                               AND mark     = 'X'

                               AND processado = 'X'.

* Chamado - 310796 -  inicio

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

 

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

 

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

* Chamado - 310796 -  Fim

*                    modify /pws/zycit042 from table itab_zycit042.

                        MODIFY /pws/zycit042 FROM itab_zycit042.

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                          /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.                          "ERRO na J1B1

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      LOOP AT it_zycet004.

                        MESSAGE i019 WITH it_zycet004-descricao.

                      ENDLOOP.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

              ENDIF.

 

*      Forçar mudança de tipo para processar itens restantes do tipo

*      de NFG atual.

              v_qtditem = wa_zycit048-qtd_item.

              IF v_counter >= v_qtditem.

                v_tpnf = 0.

              ENDIF.

            ENDIF.

          ELSE.

*            call screen '0100'.

            CALL SCREEN '0050'.

 

          ENDIF.

        ENDIF.

*    endon.

      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

*     IF v_lifnr NE itab_zycit042_aux 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'.

          IF ( v_resp EQ 'S' ) OR

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

 

*    PERFORM PESO_GLOBAL_N.

            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.

 

*    READ TABLE ITAB_ZYCIT042 INDEX 1.

            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

* PWS25829968 inicio.

*              IF v_nfsuc NE 'S'.

* PWS25829968 fim

              IF v_urf2 = 1.

                it_zycee005-nftype   = wa_zyglt369-catnfint.

              ELSE.

                it_zycee005-nftype   = wa_zycit048-catnfint.

              ENDIF.

* PWS25829968 inicio

*              ELSE.

*                it_zycee005-nftype   = wa_zycit048-tiponf.

*              ENDIF.

* PWS25829968 fim

*        it_zycee005-nftype   = wa_zycit048-catnfint.

            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-itmnum = sy-tabix * 10.

              itab_zycit042-processado = 'X'.

*        modify itab_zycit042 transporting itmnum processado.

              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.

*     Verificar a qtde de itens/NFG parametrizados na 48

              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.

*chamado 326853 inicio

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

              AND t001-land1 NE 'CL' ) OR

                 ( v_modalidade = '99' AND

                   v_libera = 'X' ).

*chamado 326853 fim

 

*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'.

 

*chamado 326853 inicio

* Chamado - 316107 - inicio

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

                  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'.

 

 

                    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.

 

                  "Busca log de execução

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                     tpmsg  = 'S'.

                  IF sy-subrc EQ 0.                "SUCESSO na J1B1

                    IF it_zycee005-belnr NE '0000000000'.

* Chamado - 310796 - inicio

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

*              SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc

*                                      WHERE docnum EQ it_zycee005-belnr

*.

* Chamado - 310796 - Fim

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                               /pws/zycie041-dt_mb01,

                               /pws/zycie041-dt_f_51,

                               /pws/zycie041-dt_f_02,

                               /pws/zycie041-belnrf02seg,

                               /pws/zycie041-dt_f02seg,

                               /pws/zycie041-belnrf02fre,

                               /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                   docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042 TRANSPORTING docnum mark

                            WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                            AND j_1bbranch = itab_zycit042-j_1bbranch

                              AND lifnr = itab_zycit042-lifnr

                              AND ebeln    = itab_zycit042-ebeln

                              AND ebelp    = itab_zycit042-ebelp

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999'  OR

                                    docnum = '8888888888' )

                              AND mark     = 'X'

                              AND processado = 'X'.

* Chamado - 310796 -  inicio

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

 

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

 

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

* Chamado - 310796 -  Fim

 

                        MODIFY /pws/zycit042 FROM itab_zycit042.

 

                        " Atualiza Embarque com tipo de nf

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

 

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                 /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

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

                        v_modalidade NE '99' ) OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.                            "ERRO na J1B1

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

 

                  ENDIF.

                ENDIF.

* Chamado - 316107 - Fim

              ENDIF.

*chamado 326853 fim

 

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

              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.

 

                  "Busca log de execução

                  READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                   tabela = text-014

                                     cpochv = /pws/zycie041-nfglobal

                                                     tpmsg  = 'S'.

                  IF sy-subrc EQ 0.                "SUCESSO na J1B1

                    IF it_zycee005-belnr NE '0000000000'.

* Chamado - 310796 - inicio

                      SELECT SINGLE * FROM j_1bnfdoc

                                    WHERE docnum EQ it_zycee005-belnr.

*              SELECT SINGLE docnum INTO j_1bnfdoc-docnum FROM j_1bnfdoc

*                                      WHERE docnum EQ it_zycee005-belnr

*.

* Chamado - 310796 - Fim

                   IF sy-subrc EQ 0 OR it_zycet005-belnr = '9999999999'

                                    OR it_zycet005-belnr = '8888888888'.

                        /pws/zycie041-docnum      = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          /pws/zycie041-docnum      = it_zycet005-belnr.

                        ENDIF.

                        /pws/zycie041-nfnum       = itab_zycit042-nfnum.

                       /pws/zycie041-series      = itab_zycit042-series.

                       /pws/zycie041-subser      = itab_zycit042-subser.

                        /pws/zycie041-cancel      = ' '.

                        CLEAR: /pws/zycie041-belnr_mr1m,

                               /pws/zycie041-mblnr_mb01,

                               /pws/zycie041-belnr_f_51,

                               /pws/zycie041-belnr_f_02,

                               /pws/zycie041-statusp_mr1m,

                               /pws/zycie041-statusp_mb01,

                               /pws/zycie041-statusp_f_51,

                               /pws/zycie041-statusp_f_02,

                               /pws/zycie041-dt_mr1m,

                               /pws/zycie041-dt_mb01,

                               /pws/zycie041-dt_f_51,

                               /pws/zycie041-dt_f_02,

                               /pws/zycie041-belnrf02seg,

                               /pws/zycie041-dt_f02seg,

                               /pws/zycie041-belnrf02fre,

                               /pws/zycie041-dt_f02fre.

                        itab_zycit042-docnum = it_zycee005-belnr.

                        IF it_zycet005-belnr = '9999999999'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        IF it_zycet005-belnr = '8888888888'.

                          itab_zycit042-docnum = it_zycet005-belnr.

                        ENDIF.

                        itab_zycit042-mark   = ' '.

                        MODIFY /pws/zycit041 FROM /pws/zycie041.

                        IF NOT /pws/zycie041-docnum = '9999999999'

                        AND NOT /pws/zycie041-docnum = '8888888888'.

                          DELETE  FROM /pws/zycit041

                             WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                   ( docnum = '9999999999' OR

                                   docnum = '8888888888' ).

                        ENDIF.

                        MODIFY itab_zycit042 TRANSPORTING docnum mark

                            WHERE nrseq    = itab_zycit042-nrseq

                              AND nfglobal = itab_zycit042-nfglobal

                            AND j_1bbranch = itab_zycit042-j_1bbranch

                              AND lifnr = itab_zycit042-lifnr

                              AND ebeln    = itab_zycit042-ebeln

                              AND ebelp    = itab_zycit042-ebelp

                              AND ( docnum   IS initial OR

                                    docnum   = '9999999999'  OR

                                    docnum = '8888888888' )

                              AND mark     = 'X'

                              AND processado = 'X'.

* Chamado - 310796 -  inicio

        READ TABLE itab_matuse_aux WITH KEY ebeln = itab_zycit042-ebeln

                                            ebelp = itab_zycit042-ebelp.

 

                        IF sy-subrc = 0.

                          MOVE itab_matuse_aux-matnr TO

                               itab_zycit042-matnr.

                        ENDIF.

 

                        MOVE: j_1bnfdoc-nfnum  TO itab_zycit042-nfnum,

                             j_1bnfdoc-series TO itab_zycit042-series.

* Chamado - 310796 -  Fim

 

                        MODIFY /pws/zycit042 FROM itab_zycit042.

 

                        " Atualiza Embarque com tipo de nf

                     UPDATE /pws/zycit003 SET tpnf = itab_zycit042-tpnf

                                     WHERE nrseq  = itab_zycit042-nrseq

                                     AND   ebeln  = itab_zycit042-ebeln

                                     AND   ebelp  = itab_zycit042-ebelp.

 

                        IF v_modalidade = '99'

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

                          UPDATE /pws/zycit043 SET docnumnfg =

                                 /pws/zycie041-docnum

                            WHERE nrseq = /pws/zycie041-nrseq AND

                              nfglobal = /pws/zycie041-nfglobal AND

                                  cancel = space.

                        ENDIF.

                        v_status_s = 0.

                        COMMIT WORK.

                      ENDIF.

                      IF v_modalidade NE '99' OR

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

                        v_modalidade NE '99' ) OR

                       ( v_modalidade = '99' AND

                         v_libera IS INITIAL ).

                        PERFORM congela_despesa.

                      ENDIF.

                    ENDIF.

                  ELSE.                            "ERRO na J1B1

                    READ TABLE it_zycet005 WITH KEY  tcode  = text-065

                                                     tabela = text-014

                                       cpochv = /pws/zycie041-nfglobal

                                                          tpmsg  = 'E'.

                    IF sy-subrc EQ 0.

                      it_erro-nrseq  = itab_zycit042-nrseq.

                      it_erro-branch = itab_zycit042-j_1bbranch.

                      it_erro-msg    = it_zycet005-msg.

                      APPEND it_erro.

                    ENDIF.

                  ENDIF.

                ENDLOOP.

              ENDIF.

            ENDIF.

          ELSE.

*            call screen '0100'.

            CALL SCREEN '0050'.

          ENDIF.

        ENDIF.

      ENDLOOP.

    ENDIF.

*  ENDLOOP.

*  Chamado 310077 - Inicio

  MODIFY /pws/zycit053 FROM TABLE itab_zycit053_s.

  COMMIT WORK.

*  Chamado 310077 - Fim

 

 IF v_modalidade = '99' OR ( t001-land1 EQ 'AR' OR t001-land1 EQ 'CL' ).

    LOOP AT itab_zycit042 WHERE docnum IS initial OR

                                docnum = '9999999999' OR

                                docnum = '8888888888'.

    ENDLOOP.

    IF sy-subrc NE 0.

      PERFORM contabiliza_impostos.

    ENDIF.

  ENDIF.

*PWS232454 inicio

  CLEAR v_modo_bi.

*PWS232454 fim

 

*chamado 304439 inicio

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

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                       '/PWS/SAPMZYCI016'

                       'DNF009'.

  CLEAR itab_zyglt100 .

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

 

  IF sy-subrc EQ 0.

    "Verifica se a Exit está ativa.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

              (itab_zyglt100-programa) IF FOUND .

    ENDIF.

  ENDIF.

*chamado 304439 fim

*323885 inicio

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

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                      '/PWS/SAPMZYCI016'

                      'DNF008'.

  CLEAR: itab_zyglt100 .

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

 

  IF sy-subrc EQ 0.

    "Verifica se a Exit está ativa.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

          (itab_zyglt100-programa) IF FOUND.

    ENDIF.

  ENDIF.

*323885 fim.

 

ENDFORM.                    " FILL_DATA_J1B1