CE PLUS - Nota 004074

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Recebimento

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

Data/Hora Última Alteração: 09/03/2010 10:02:18

Descrição da Nota: EXIT NA SELEÇÃO DE NF GLOBAL OU REMESSA NO RECEBIMENTO OU ENCERRAMENTO.

Sintoma

 

Necessária abertura de exit na seleção de nota fiscal remessa ou global ao criar recebimento ou

encerramento.

 

Solução

 

criada exit  RCB014 no programa '/PWS/SAPMZYCI017' e ENC005 no programa '/PWS/SAPMZYCI037'.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 04074 Data: 02/07/2007 Hora: 09:20:17

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

 

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

Nota Número              : 04074

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00002

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

EXIT NA SELEÇÃO DE NF GLOBAL OU REMESSA NO RECEBIMENTO OU ENCERRAMENTO.

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

Palavras Chave:

EXIT - SELEÇÃO - NOTA FISCAL GLOBAL  -

NOTA FISCAL REMESSA - EXIT DE RECEBIMENTO - EXIT DE ENCERRAMENTO.

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

Objetos da nota:

REPS /PWS/MZYCI017F01

REPS /PWS/MZYCI017F03

REPS /PWS/MZYCI037F01

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F01

FORM seleciona_itens_nf.

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

  DATA v_reg TYPE i.

* << Fim da exclusão

...

 

...

    IF /pws/zycie043a-subser IS INITIAL.

      itab_subser-option = 'EQ'.

    ELSE.

      itab_subser-option = 'BT'.

    ENDIF.

    itab_subser-low  = /pws/zycie043-subser.

    itab_subser-high = /pws/zycie043a-subser.

    APPEND itab_subser.

  ENDIF.

  FREE itab_nfg.

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

  IF v_nrseqdi+7(3) EQ 'P06'.

    IF NOT /pws/zycie442-nrdi IS INITIAL.

* << Fim da exclusão

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

  PERFORM verifica_exit USING 'D'

                              '/PWS/SAPMZYCI017'

                              'RCB014'.

* << Fim da inclusão

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

      SELECT * FROM /pws/zycit442

      INTO TABLE itab_zycit442

      WHERE nrdi EQ /pws/zycie442-nrdi.

      IF sy-subrc = 0.

* << Fim da exclusão

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

  CLEAR itab_zyglt100 .

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

  IF sy-subrc EQ 0.

* << Fim da inclusão

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

        SELECT * FROM /pws/zycit041

          INTO CORRESPONDING FIELDS OF TABLE itab_nfg

           FOR ALL ENTRIES IN itab_zycit442

             WHERE nrseq    EQ  /pws/zycie043-nrseq

             AND nrseq     EQ itab_zycit442-nrseqda

             AND nfnum     IN itab_nfnum

             AND series    IN itab_series

             AND subser    IN itab_subser

             AND cancel    EQ ' '.

      ENDIF.

    ELSE.

      SELECT * FROM /pws/zycit041

       INTO CORRESPONDING FIELDS OF TABLE itab_nfg

       WHERE nrseq    EQ  /pws/zycie043-nrseq

         AND nfnum     IN itab_nfnum

         AND series    IN itab_series

         AND subser    IN itab_subser

         AND cancel    EQ ' '.

    ENDIF.

* << Fim da exclusão

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

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

            (itab_zyglt100-programa) IF FOUND.

* << Fim da inclusão

  ELSE.

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

      PERFORM select_tables.

* << Fim da inclusão

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

    IF NOT /pws/zycie085-nrdi IS INITIAL.

      SELECT * FROM /pws/zycit085

      INTO TABLE itab_zycit085

      WHERE nrdi EQ /pws/zycie085-nrdi.

      IF sy-subrc = 0.

        SELECT * FROM /pws/zycit041

          INTO CORRESPONDING FIELDS OF TABLE itab_nfg

           FOR ALL ENTRIES IN itab_zycit085

             WHERE nrseq    EQ  /pws/zycie043-nrseq

             AND nrseq    EQ itab_zycit085-nrseqdi

             AND nfnum     IN itab_nfnum

             AND series    IN itab_series

             AND subser    IN itab_subser

             AND cancel    EQ ' '.

* << Fim da exclusão

      ENDIF.

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

    ELSE.

      IF /pws/zycie043-nrseq NE '0000000000'.

        SELECT * FROM /pws/zycit041

         INTO CORRESPONDING FIELDS OF TABLE itab_nfg

         WHERE nrseq    EQ  /pws/zycie043-nrseq

           AND nfnum     IN itab_nfnum

           AND series    IN itab_series

           AND subser    IN itab_subser

           AND cancel    EQ ' '.

      ELSE.

        SELECT * FROM /pws/zycit041

         INTO CORRESPONDING FIELDS OF TABLE itab_nfg

         WHERE nfnum     IN itab_nfnum

           AND series    IN itab_series

           AND subser    IN itab_subser

           AND cancel    EQ ' '.

        CHECK sy-subrc = 0.

        DESCRIBE TABLE itab_nfg LINES v_reg.

        IF v_reg > 1.

          MESSAGE w015 WITH text-260 text-261.

          EXIT.

* << Fim da exclusão

        ELSE.

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

          READ TABLE itab_nfg INDEX 1.

          MOVE itab_nfg-nrseq TO /pws/zycie043-nrseq.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

* << Fim da exclusão

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

    PERFORM select_tables.

* << Fim da inclusão

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

  FREE itab_nf.

  LOOP AT itab_nfg.

    SELECT * FROM /pws/zycit043

      APPENDING CORRESPONDING FIELDS OF TABLE itab_nf

      WHERE  nrseq     = itab_nfg-nrseq

        AND nrdi       = itab_nfg-nrdi

        AND  nfglobal  = itab_nfg-nfglobal

        AND  docnumnfg = itab_nfg-docnum

        AND  cancel   = ' '.

    IF sy-subrc EQ 0.

      itab_nfg-delete = 'S'.

      MODIFY itab_nfg.

    ENDIF.

  ENDLOOP.

  READ TABLE itab_nfg INDEX 1.

  SELECT SINGLE * FROM /pws/zycit100 WHERE nrseqdi = itab_nfg-nrseq.

  SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycit100-nrseq.

  IF /pws/zycit001-modalidade = '99'.

    READ TABLE itab_nf INDEX 1.

    IF sy-subrc NE 0.

      MESSAGE s015 WITH text-060.

      EXIT.

    ENDIF.

  ENDIF.

  LOOP AT itab_nf.

    itab_nf-remessa = 'S'.

    MODIFY itab_nf.

  ENDLOOP.

  CLEAR itab_nf.

  LOOP AT itab_nfg.

    IF itab_nfg-delete NE 'S'.

      MOVE itab_nfg TO itab_nf.

      APPEND itab_nf.

* << Fim da exclusão

    ENDIF.

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

  ENDLOOP.

* << Fim da exclusão

  DESCRIBE TABLE itab_nf LINES v_nolin.

  IF v_nolin IS INITIAL.

    MESSAGE w009.

  ELSE.

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI017F03

...

 

* >> Início da inclusão:

form select_tables.

  DATA v_reg TYPE i.

  IF v_nrseqdi+7(3) EQ 'P06'.

    IF NOT /pws/zycie442-nrdi IS INITIAL.

      SELECT * FROM /pws/zycit442

      INTO TABLE itab_zycit442

      WHERE nrdi EQ /pws/zycie442-nrdi.

      IF sy-subrc = 0.

        SELECT * FROM /pws/zycit041

          INTO CORRESPONDING FIELDS OF TABLE itab_nfg

           FOR ALL ENTRIES IN itab_zycit442

             WHERE nrseq    EQ  /pws/zycie043-nrseq

             AND nrseq     EQ itab_zycit442-nrseqda

             AND nfnum     IN itab_nfnum

             AND series    IN itab_series

             AND subser    IN itab_subser

             AND cancel    EQ ' '.

      ENDIF.

    ELSE.

      SELECT * FROM /pws/zycit041

       INTO CORRESPONDING FIELDS OF TABLE itab_nfg

       WHERE nrseq    EQ  /pws/zycie043-nrseq

         AND nfnum     IN itab_nfnum

         AND series    IN itab_series

         AND subser    IN itab_subser

         AND cancel    EQ ' '.

    ENDIF.

  ELSE.

    IF NOT /pws/zycie085-nrdi IS INITIAL.

      SELECT * FROM /pws/zycit085

      INTO TABLE itab_zycit085

      WHERE nrdi EQ /pws/zycie085-nrdi.

      IF sy-subrc = 0.

        SELECT * FROM /pws/zycit041

          INTO CORRESPONDING FIELDS OF TABLE itab_nfg

           FOR ALL ENTRIES IN itab_zycit085

             WHERE nrseq    EQ  /pws/zycie043-nrseq

             AND nrseq    EQ itab_zycit085-nrseqdi

             AND nfnum     IN itab_nfnum

             AND series    IN itab_series

             AND subser    IN itab_subser

             AND cancel    EQ ' '.

      ENDIF.

    ELSE.

      IF /pws/zycie043-nrseq NE '0000000000'.

        SELECT * FROM /pws/zycit041

         INTO CORRESPONDING FIELDS OF TABLE itab_nfg

         WHERE nrseq    EQ  /pws/zycie043-nrseq

           AND nfnum     IN itab_nfnum

           AND series    IN itab_series

           AND subser    IN itab_subser

           AND cancel    EQ ' '.

      ELSE.

        SELECT * FROM /pws/zycit041

         INTO CORRESPONDING FIELDS OF TABLE itab_nfg

         WHERE nfnum     IN itab_nfnum

           AND series    IN itab_series

           AND subser    IN itab_subser

           AND cancel    EQ ' '.

        CHECK sy-subrc = 0.

        DESCRIBE TABLE itab_nfg LINES v_reg.

        IF v_reg > 1.

          MESSAGE w015 WITH text-260 text-261.

          EXIT.

        ELSE.

          READ TABLE itab_nfg INDEX 1.

          MOVE itab_nfg-nrseq TO /pws/zycie043-nrseq.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  FREE itab_nf.

  LOOP AT itab_nfg.

    SELECT * FROM /pws/zycit043

      APPENDING CORRESPONDING FIELDS OF TABLE itab_nf

      WHERE  nrseq     = itab_nfg-nrseq

        AND nrdi       = itab_nfg-nrdi

        AND  nfglobal  = itab_nfg-nfglobal

        AND  docnumnfg = itab_nfg-docnum

        AND  cancel   = ' '.

    IF sy-subrc EQ 0.

      itab_nfg-delete = 'S'.

      MODIFY itab_nfg.

    ENDIF.

  ENDLOOP.

  READ TABLE itab_nfg INDEX 1.

  SELECT SINGLE * FROM /pws/zycit100 WHERE nrseqdi = itab_nfg-nrseq.

  SELECT SINGLE * FROM /pws/zycit001 WHERE nrseq = /pws/zycit100-nrseq.

  IF /pws/zycit001-modalidade = '99'.

    READ TABLE itab_nf INDEX 1.

    IF sy-subrc NE 0.

      MESSAGE s015 WITH text-060.

      EXIT.

    ENDIF.

  ENDIF.

  LOOP AT itab_nf.

    itab_nf-remessa = 'S'.

    MODIFY itab_nf.

  ENDLOOP.

  CLEAR itab_nf.

  LOOP AT itab_nfg.

    IF itab_nfg-delete NE 'S'.

      MOVE itab_nfg TO itab_nf.

      APPEND itab_nf.

    ENDIF.

  ENDLOOP.

endform.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI017TOP

...

 

* >> Início da exclusão:

DATA: BEGIN OF itab_cta OCCURS 0.

        INCLUDE STRUCTURE /pws/zygle316.

DATA: END OF itab_cta.

DATA: BEGIN OF itab_nf OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit043.

DATA: remessa,

      marc,

      lgort LIKE /pws/zycit042-lgort.

DATA: END   OF itab_nf.

DATA: BEGIN OF itab_nfg OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit043.

DATA: delete .

DATA: END   OF itab_nfg.

* << Fim da exclusão

...

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

Modificações efetuadas em REPS /PWS/MZYCI017X01

 

...

 

* >> Início da inclusão:

DATA: BEGIN OF itab_cta OCCURS 0.

        INCLUDE STRUCTURE /pws/zygle316.

DATA: END OF itab_cta.

DATA: BEGIN OF itab_nf OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit043.

DATA: remessa,

      marc,

      lgort LIKE /pws/zycit042-lgort.

DATA: END   OF itab_nf.

DATA: BEGIN OF itab_nfg OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit043.

DATA: delete .

DATA: END   OF itab_nfg.

* << Fim da inclusão

DATA: END OF COMMON PART.

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI017 0010

 

PROCESS BEFORE OUTPUT.

  MODULE: STATUS_0010,

          SET_SCREEN,

          carrega_nf,

* <<Inicio da inclusão

          exit_tela .

* << Fim da inclusão

  LOOP AT ITAB_NF

    CURSOR TC_LISTA_NF-CURRENT_LINE.

    MODULE CARREGA_ZYCIE043A_LISTA.

  ENDLOOP.

PROCESS AFTER INPUT.

  LOOP AT ITAB_NF.

    MODULE ATUALIZA_ITAB_NF.

  ENDLOOP.

  MODULE: USER_COMMAND_EXIT AT EXIT-COMMAND,

          USER_COMMAND_0010.

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI037F01

 

...

  ENDSELECT.

  CLEAR: itab_docscont.

  SELECT  belnr_f02 dtlanc FROM /pws/zycit016 INTO

      (itab_docscont-belnr, itab_docscont-bldat)

         WHERE nrseq = /pws/zycie001-nrseq.

    IF sy-subrc EQ 0 AND NOT itab_docscont-belnr IS INITIAL.

      MOVE text-047 TO itab_docscont-evento.

      COLLECT itab_docscont.

    ENDIF.

  ENDSELECT.

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

  PERFORM verifica_exit USING 'D'

                              '/PWS/SAPMZYCI037'

                              'ENC005'.

  CLEAR itab_zyglt100 .

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

  IF sy-subrc EQ 0.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

            (itab_zyglt100-programa) IF FOUND.

    ELSE.

      IF NOT it_zycit003_cont[] IS INITIAL.

        SELECT * FROM /pws/zycit042

                 INTO TABLE it_zycit042_cont

                 FOR ALL ENTRIES IN it_zycit003_cont

                 WHERE nrseq EQ it_zycit003_cont-nrseq.

      ENDIF.

      READ TABLE it_zycit042_cont INDEX 1.

      SELECT * FROM /pws/zycit041 INTO TABLE itab_zycit041

             WHERE nrseq EQ it_zycit042_cont-nrseqnf AND

                   cancel EQ space.

      READ TABLE itab_zycit041 INDEX 1.

      SELECT * FROM /pws/zycit043 INTO TABLE itab_zycit043

             WHERE nrseq = itab_zycit041-nrseq AND

                   cancel EQ space.

    ENDIF.

  ELSE.

* << Fim da inclusão

  IF NOT it_zycit003_cont[] IS INITIAL.

    SELECT * FROM /pws/zycit042

             INTO TABLE it_zycit042_cont

             FOR ALL ENTRIES IN it_zycit003_cont

             WHERE nrseq EQ it_zycit003_cont-nrseq.

  ENDIF.

  READ TABLE it_zycit042_cont INDEX 1.

  SELECT * FROM /pws/zycit041 INTO TABLE itab_zycit041

         WHERE nrseq EQ it_zycit042_cont-nrseqnf AND

               cancel EQ space.

  READ TABLE itab_zycit041 INDEX 1.

  SELECT * FROM /pws/zycit043 INTO TABLE itab_zycit043

         WHERE nrseq = itab_zycit041-nrseq AND

               cancel EQ space.

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

  IF sy-subrc NE 0.

* << Fim da exclusão

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

  ENDIF.

  IF itab_zycit043[] IS INITIAL.

* << Fim da inclusão

    LOOP AT itab_zycit041.

      CLEAR: itab_docscont.

      IF NOT itab_zycit041-belnr_f_51 IS INITIAL.

        MOVE: text-048 TO itab_docscont-evento,

              itab_zycit041-dt_f_51 TO itab_docscont-bldat,

              itab_zycit041-belnr_f_51 TO itab_docscont-belnr .

        COLLECT itab_docscont.

      ENDIF.

      IF NOT itab_zycit041-belnr_f_02 IS INITIAL.

        MOVE: text-049 TO itab_docscont-evento,

...

 

...

          COLLECT itab_docscont.

        ENDIF.

        IF NOT itab_zycit041-belnrf02que IS INITIAL.

          MOVE: text-063 TO itab_docscont-evento,

                itab_zycit041-dt_f02que TO itab_docscont-bldat,

                itab_zycit041-belnrf02que TO itab_docscont-belnr .

          COLLECT itab_docscont.

        ENDIF.

      ENDIF.

    ENDLOOP.

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

  ENDIF.

* << Fim da inclusão

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

  ENDIF.

* << Fim da exclusão

  LOOP AT it_zycit202.

    IF NOT it_zycit202-belnr_f_02 IS INITIAL.

      CLEAR: itab_docscont.

      MOVE: text-051 TO itab_docscont-evento,

            it_zycit202-dt_f_02 TO itab_docscont-bldat,

            it_zycit202-belnr_f_02 TO itab_docscont-belnr .

      COLLECT itab_docscont.

    ENDIF.

    IF NOT it_zycit202-belnr_f51_mt0 IS INITIAL.

      CLEAR: itab_docscont.

...