CE PLUS - Nota 002308

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Captação

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

Data/Hora Última Alteração: 18/02/2011 15:17:07

Descrição da Nota: CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA

Sintoma

Após vincular a primeira parcela de principal, o programa deverá permitir que seja alterado as

demais parcelas para ajustar com possiveis variações nas negociações. Alem disso, o programa nao faz

o estorno dos documentos contabeis apos erro no BI.

 

 

Solução

Foi adicionado o tratamento para evitar a modificação das parcelas vinculadas, permitir a

modificação nas parcelas não vinculadas e estorno das parcelas quando ocorre erro no BI.

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 02308 Data: 25/10/2006 Hora: 10:26:04

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

 

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

Nota Número              : 02308

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00025

Agrupamento              : 00137

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA

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

Palavras Chave:

CAPTAÇÃO MODIFICAÇÃO PRÉ PARCELA

 

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

Objetos da nota:

REPS /PWS/MZYCB001F01

REPS /PWS/MZYCB001F04

REPS /PWS/MZYCB001I01

REPS /PWS/MZYCB001TOP

MESS /PWS/ZYCBM304

 

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

Modificações efetuadas em MESS /PWS/ZYCBM304

* >> Início da inclusão:

304 Não é possível alterar parcela &1. Existe vinculação para essa parcela.

* << Fim da inclusão

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

Modificações efetuadas em REPS /PWS/MZYCB001F01

 

...

  PERFORM modifica_principal.

  v_flag_lanc = /pws/zycbe001-fdtjuros.

ENDFORM.

FORM refresh_dependent_tables USING p_ok value(p_okcode).

  DATA: nrseqpre LIKE /pws/zycbt001-nrseqc.

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

  DATA: BEGIN OF itab_zycbt005_temp OCCURS 0.

          INCLUDE STRUCTURE /pws/zycbt005.

  DATA: END OF itab_zycbt005_temp.

  CLEAR v_ok2.

  IF ( ( /pws/zycbe001-tpcontr(1) EQ 'S' ) OR

       ( /pws/zycbe001-tpcontr(1) EQ 'P' ) ).

    v_ok2 = 'X'.

    SELECT *

    FROM /pws/zycbt005

    INTO TABLE itab_zycbt005_temp

    WHERE nrseqc = /pws/zycbe001-nrseqc.

    LOOP AT itab_zycbt002p.

      READ TABLE itab_zycbt005_temp INDEX 1.

      IF sy-subrc EQ '0'.

        IF v_alterado EQ 'X'.

          p_ok = 'N'.

          MESSAGE i033 WITH text-229.

          EXIT.

        ENDIF.

        READ TABLE itab_zycbt002p_ant WITH KEY

                        nrparc = itab_zycbt002p-nrparc.

        IF sy-subrc EQ '0'.

          IF ( itab_zycbt002p_ant-vlme NE itab_zycbt002p_ant-slvinc ).

            IF ( itab_zycbt002p_ant-vlme NE itab_zycbt002p-vlme ) OR

               ( itab_zycbt002p_ant-nrdias NE itab_zycbt002p-nrdias ) OR

               ( itab_zycbt002p_ant-dtcrd NE itab_zycbt002p-dtcrd ) OR

               ( itab_zycbt002p_ant-txtinf NE itab_zycbt002p-txtinf ).

              MESSAGE i304 WITH itab_zycbt002p-nrparc.

              p_ok = 'N'.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ELSE.

* << Fim da inclusão

  SELECT nrinvoic INTO (/pws/zycbt005-nrinvoic)

                  FROM /pws/zycbt005 UP TO 1 ROWS

                  WHERE nrseqc   = /pws/zycbe001-nrseqc.

    p_ok = 'N'.

  ENDSELECT.

...

 

...

                  WHERE nrseqc   = /pws/zycbe001-nrseqc.

    p_ok = 'N'.

  ENDSELECT.

  IF sy-subrc EQ 0.

    MESSAGE i033 WITH text-232.

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

    ENDIF.

* << Fim da inclusão

  ENDIF.

  SELECT nrseq INTO (nrseqpre)

               FROM /pws/zycbt061 UP TO 1 ROWS

               WHERE nrseq_c  = /pws/zycbe001-nrseqc.

    p_ok = 'N'.

...

 

...

           /pws/zycbe001-tpcontr(1) EQ 'T'.

      MESSAGE i015 WITH text-260.

    ENDIF.

    v_nrseqc = /pws/zycbe001-nrseqc.

    IF okcode NE 'ANLE'.

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

      if v_erro_bi is initial.

* << Fim da inclusão

      v_status_s = '0'.

    ENDIF.

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

    ENDIF.

* << Fim da inclusão

    MOVE /pws/zycbe001-nrseqc TO /pws/zycbe074-nrseqc.

    MOVE-CORRESPONDING /pws/zycbe074 TO /pws/zycbt074.

    MODIFY /pws/zycbt074.

  ENDIF.

  CLEAR okcode.

...

 

...

     /pws/zycbe001-fdtlanc    NE wa_zycbt001-fdtlanc  OR

     /pws/zycbe001-vlme       NE wa_zycbt001-vlme     OR

     /pws/zycbe001-txcneg     NE wa_zycbt001-txcneg   OR

     /pws/zycbe001-fdtjuros   NE wa_zycbt001-fdtjuros ) AND

     /pws/zycbe001-status   EQ 'C'.

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

    v_alterado = 'X'.

* << Fim da inclusão

    PERFORM refresh_dependent_tables USING v_ok 'SAVE'.

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

    clear v_alterado.

* << Fim da inclusão

    IF v_ok NE 'N'.

...

 

...

      LOOP AT itab_zycbt002p_ant.

        MOVE-CORRESPONDING itab_zycbt002p_ant TO itab_zycbt002p.

        APPEND itab_zycbt002p.

      ENDLOOP.

    ENDIF.

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

    if v_erro_bi is initial.

* << Fim da inclusão

    PERFORM save_zycbt002.

    PERFORM save_zycbt003.

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

    else.

      perform desfazer_alteracoes.

    endif.

    IF v_ok NE 'N' and v_ok2 NE 'X'.

* << Fim da inclusão

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

    IF v_ok NE 'N'.

* << Fim da exclusão

      /pws/zycbe001-slvinc = /pws/zycbe001-slpagar =

                        /pws/zycbe001-slreserv = /pws/zycbe001-vlme.

    ENDIF.

    MODIFY /pws/zycbt001 FROM /pws/zycbe001.

    IF wa_zycbt007-cfm = 'X'.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB001F04

 

...

    MESSAGE s015 WITH text-258.

  ENDIF.

ENDFORM.

FORM executa_fb08.

  PERFORM mapeia_transacao.

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

  loop at itab_zycbe033.

    if itab_zycbe033-belnr is initial.

      itab_zycbe033-belnr = itab_rollback-belnr_novo.

      CASE /pws/zycbe001-fdtlanc.

        WHEN 'D'.

          PERFORM verify_null_field USING /pws/zycbe001-dtdesem

                                          'DTDESEM'

                                          text-023.

          itab_zycbe033-budat = /pws/zycbe001-dtdesem.

        WHEN 'O'.

          PERFORM verify_null_field USING /pws/zycbe001-dtcontr

                                          'DTCONTR'

                                          text-021.

          itab_zycbe033-budat = /pws/zycbe001-dtcontr.

        WHEN OTHERS.

          PERFORM verify_null_field USING /pws/zycbe001-dtcred

                                          'DTCRED'

                                          text-022.

          itab_zycbe033-budat = /pws/zycbe001-dtcred.

      ENDCASE.

      itab_zycbe033-bldat  = itab_zycbe033-budat.

      modify itab_zycbe033.

    endif.

  endloop.

* << Fim da inclusão

  CALL FUNCTION '/PWS/ZYCB_TRANSACAO_FB08'

       EXPORTING

            v_modo          = v_modo_bi

       TABLES

            t_dados         = itab_zycbe033

...

 

...

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = '/PWS/ZYCBT002'

                                       cpochv = /pws/zycbe001-nrseqc

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

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

        CLEAR itab_rollback.

        IF itab_zycbt002p-belnr2 IS INITIAL.

          READ TABLE itab_rollback WITH KEY

                              belnr_novo = itab_zycbt002p-belnr.

          IF sy-subrc EQ '0'.

            READ TABLE itab_zycbt002p_ant WITH KEY

                              nrparc = itab_zycbt002p-nrparc.

            WRITE itab_zycbt002p_ant-belnr TO itab_rollback-belnr_ant.

          ELSE.

            WRITE itab_zycbt002p-belnr TO itab_rollback-belnr_ant.

          ENDIF.

        ELSE.

          READ TABLE itab_rollback WITH KEY

                              belnr_novo = itab_zycbt002p-belnr2.

          IF sy-subrc EQ '0'.

            READ TABLE itab_zycbt002p_ant WITH KEY

                              nrparc = itab_zycbt002p-nrparc.

            WRITE itab_zycbt002p_ant-belnr2 TO itab_rollback-belnr_ant.

          ELSE.

            WRITE itab_zycbt002p-belnr2 TO itab_rollback-belnr_ant.

          ENDIF.

        ENDIF.

        WRITE itab_zycbt032-belnr TO itab_rollback-belnr_novo.

        WRITE 'X' TO itab_rollback-parcela.

        APPEND itab_rollback.

* << Fim da inclusão

        itab_zycbt002p-belnr  = itab_zycbt032-belnr.

        CLEAR itab_zycbt002p-belnr2.

        itab_zycbt002p-slvinc = itab_zycbt002p-vlme.

        MOVE: itab_zycbt032-belnr   TO itab_contabil-belnr,

              itab_zycbt002p-nrparc TO itab_contabil-nrparc,

...

 

...

  LOOP AT itab_zycbt002p_exc.

    v_valor = v_valor + itab_zycbt002p_exc-vlme.

    itab_partidas-tcode   = 'F-30'.

    itab_partidas-tabela  = '/PWS/ZYCBT002'.

    itab_partidas-cpochv  = itab_zycbe033-cpochv.

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

    IF itab_zycbt002p-belnr2 IS INITIAL.

* << Fim da exclusão

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

    IF itab_zycbt002p_exc-belnr2 IS INITIAL.

* << Fim da inclusão

      itab_partidas-belnr   = itab_zycbt002p_exc-belnr.

    ELSE.

      itab_partidas-belnr   = itab_zycbt002p_exc-belnr2.

    ENDIF.

    CONCATENATE /pws/zycbe001-tpcontr

...

 

...

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                        tabela = '/PWS/ZYCBT002'

                                        cpochv = itab_zycbe033-cpochv

                                        tpmsg  = 'S'.

      IF sy-subrc EQ 0.

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

        CLEAR itab_rollback.

        WRITE itab_zycbt032-belnr TO itab_rollback-belnr_novo.

        APPEND itab_rollback.

* << Fim da inclusão

      READ table itab_zycbt002p with key v_flag = 'A'.

        itab_zycbt002p-belnr  = itab_zycbt032-belnr.

        CLEAR itab_zycbt002p-belnr2.

        itab_zycbt002p-slvinc = itab_zycbt002p-vlme.

        MOVE: itab_zycbt032-belnr   TO itab_contabil-belnr,

...

 

...

    ENDIF.

  ELSE.

    CLEAR estorno_ok.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM desfazer_alteracoes.

  SORT itab_rollback BY belnr_novo DESCENDING.

  LOOP AT itab_rollback.

    itab_zycbe033-mandt  = sy-mandt.

    itab_zycbe033-tcode  = 'FBRA'.

    itab_zycbe033-tabela = '/PWS/ZYCBT001'.

    itab_zycbe033-cpochv = /pws/zycbe001-nrseqc.

    itab_zycbe033-belnr  = itab_rollback-belnr_novo.

    PERFORM verify_null_field USING /pws/zycbe001-bukrs

                                    'BUKRS'

                                    text-092.

    itab_zycbe033-bukrs  = /pws/zycbe001-bukrs.

    CASE /pws/zycbe001-fdtlanc.

      WHEN 'D'.

        PERFORM verify_null_field USING /pws/zycbe001-dtdesem

                                        'DTDESEM'

                                        text-023.

        itab_zycbe033-budat = /pws/zycbe001-dtdesem.

      WHEN 'O'.

        PERFORM verify_null_field USING /pws/zycbe001-dtcontr

                                        'DTCONTR'

                                        text-021.

        itab_zycbe033-budat = /pws/zycbe001-dtcontr.

      WHEN OTHERS.

        PERFORM verify_null_field USING /pws/zycbe001-dtcred

                                        'DTCRED'

                                        text-022.

        itab_zycbe033-budat = /pws/zycbe001-dtcred.

    ENDCASE.

    itab_zycbe033-bldat  = itab_zycbe033-budat.

    PERFORM determina_periodo USING itab_zycbe033-budat

                           CHANGING v_monat.

    PERFORM determina_ano USING itab_zycbe033-budat

                                /pws/zycbe001-bukrs

                       CHANGING itab_zycbe033-budat(4).

    CALL FUNCTION 'FI_PERIOD_CHECK'

         EXPORTING

              i_bukrs          = itab_zycbe033-bukrs

              i_gjahr          = v_ano

              i_koart          = '+'

              i_monat          = v_monat

         EXCEPTIONS

              error_period     = 1

              error_period_acc = 2

              OTHERS           = 3.

    IF sy-subrc = 0.

      itab_zycbe033-stgrd = '01'.

    ELSE.

      itab_zycbe033-stgrd = '02'.

    ENDIF.

    APPEND itab_zycbe033.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_FBRA'

         EXPORTING

              v_modo          = v_modo_bi

         TABLES

              t_dados         = itab_zycbe033

              t_campo         = itab_zycbt034

              t_zycbt032      = itab_zycbt032

         EXCEPTIONS

              campo_em_branco = 1

              OTHERS          = 2.

    IF sy-subrc = 0.

      PERFORM clear_date_batch.

      PERFORM executa_fb08.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt002p.

    READ TABLE itab_rollback WITH KEY

                        belnr_novo = itab_zycbt002p-belnr

                        parcela = 'X'.

    IF sy-subrc EQ '0'.

      READ TABLE itab_rollback WITH KEY

                        belnr_ant = itab_rollback-belnr_novo.

      itab_zycbt002p-belnr = itab_rollback-belnr_ant.

    ELSE.

      READ TABLE itab_rollback WITH KEY

                        belnr_novo = itab_zycbt002p-belnr2

                        parcela = 'X'.

      IF sy-subrc EQ '0'.

        READ TABLE itab_rollback WITH KEY

                          belnr_ant = itab_rollback-belnr_novo.

        itab_zycbt002p-belnr2 = itab_rollback-belnr_ant.

      ENDIF.

    ENDIF.

    READ TABLE itab_zycbt002p_ant WITH KEY

                      belnr = itab_zycbt002p-belnr.

    IF sy-subrc EQ '0'.

      itab_zycbt002p-slvinc = itab_zycbt002p_ant-slvinc.

    ENDIF.

    MODIFY itab_zycbt002p.

  ENDLOOP.

  loop at itab_rollback.

    read table itab_contabil with key

                          belnr = itab_rollback-belnr_novo.

    if sy-subrc eq '0'.

      delete itab_contabil index sy-tabix.

    endif.

  endloop.

  CLEAR   itab_rollback.

  REFRESH itab_rollback.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB001I01

 

...

      CLEAR: v_belnr.

      IF /pws/zycbe001-tpcontr NE 'A'  AND

         /pws/zycbe001-tpcontr NE 'C'  AND

         /pws/zycbe001-tpcontr NE 'DP' AND

         /pws/zycbe001-tpcontr NE 'E'.

* >> Início da inclusão: MODULE USER_COMMAND_CB001

        if v_erro_bi is initial.

* << Fim da inclusão

        PERFORM mensagens USING v_belnr.

* >> Início da inclusão: MODULE USER_COMMAND_CB001

        endif.

* << Fim da inclusão

      ENDIF.

...

 

...

      ENDIF.

    WHEN 'DEL2'.

      IF ts_contr-activetab = 'FC_PERP'.

        IF itab_zycbt002p-vlme EQ itab_zycbt002p-slvinc OR

           sy-tcode            EQ c_transacao_c.

* >> Início da exclusão: MODULE USER_COMMAND_0104

          CHECK v_status_s = '1' OR v_status_s IS INITIAL.

          GET CURSOR LINE v_index_4.

          CHECK NOT v_index_4 IS INITIAL.

          v_index_4 = tc_perp-top_line + v_index_4 - 1.

          READ TABLE itab_zycbt002p INDEX v_index_4.

* << Fim da exclusão

* >> Início da inclusão: MODULE USER_COMMAND_0104

          loop at itab_zycbt002p where mark = 'X'.

* << Fim da inclusão

          MOVE itab_zycbt002p TO itab_zycbt002p_exc.

          APPEND itab_zycbt002p_exc.

* >> Início da inclusão: MODULE USER_COMMAND_0104

          endloop.

* << Fim da inclusão

          v_delete = 'S'.

* >> Início da inclusão: MODULE USER_COMMAND_0104

          DELETE itab_zycbt002p WHERE mark = 'X'.

* << Fim da inclusão

* >> Início da exclusão: MODULE USER_COMMAND_0104

          DELETE itab_zycbt002p INDEX v_index_4.

* << Fim da exclusão

* >> Início da inclusão: MODULE USER_COMMAND_0104

          v_nrparc_i = '1'.

* << Fim da inclusão

          LOOP AT itab_zycbt002p.

* >> Início da exclusão: MODULE USER_COMMAND_0104

            v_nrparc_i = itab_zycbt002p-nrparc.

            CHECK v_nrparc_i GT v_index_4.

            v_nrparc = itab_zycbt002p-nrparc - 1.

            itab_zycbt002p-nrparc = v_nrparc.

* << Fim da exclusão

* >> Início da inclusão: MODULE USER_COMMAND_0104

            if itab_zycbt002p-nrparc GT v_nrparc_i.

              itab_zycbt002p-nrparc = v_nrparc_i.

* << Fim da inclusão

            MODIFY itab_zycbt002p.

* >> Início da inclusão: MODULE USER_COMMAND_0104

            endif.

            v_nrparc_i = v_nrparc_i + 1.

* << Fim da inclusão

          ENDLOOP.

        ENDIF.

* >> Início da exclusão: MODULE USER_COMMAND_0104

        DELETE itab_zycbt002p WHERE mark = 'X'.

* << Fim da exclusão

        v_del4 = 'X'.

        CLEAR okcode.

      ENDIF.

    WHEN 'CLI'.

      GET CURSOR FIELD v_campo VALUE v_valor LINE v_line.

...

 

...

    IF v_dtfinal IS INITIAL.

      v_dtfinal = v_dtaux.

    ENDIF.

    IF itab_zycbt002p-nrdias EQ '00000' AND

      itab_zycbt002p-dtinicio = itab_zycbt002p-dtfinal.

* >> Início da inclusão: MODULE DIAS_PRINCIPAL

      MOVE itab_zycbt002p to itab_zycbt002p_exc.

      APPEND itab_zycbt002p_exc.

* << Fim da inclusão

      DELETE itab_zycbt002p.

    ENDIF.

  ENDLOOP.

ENDMODULE.

MODULE juros_dp INPUT.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB001O01

 

...

    WHEN '0104'.

      CHECK NOT itab_zycbt002p[] IS INITIAL.

      MOVE-CORRESPONDING itab_zycbt002p TO /pws/zycbe002p.

      WRITE /pws/zycbe002p-slvinc CURRENCY /pws/zycbe002p-waers.

      WRITE /pws/zycbe002p-vlme CURRENCY /pws/zycbe002p-waers.

* >> Início da inclusão: MODULE INSERT_LINE

      if not itab_zycbt002p_ant[] is initial.

        read table itab_zycbt002p_ant with key

              nrparc = itab_zycbt002p-nrparc.

        if sy-subrc eq '0'.

          if itab_zycbt002p_ant-VLME NE itab_zycbt002p_ant-slvinc.

            loop at screen.

              screen-input = '0'.

              MODIFY SCREEN.

            endloop.

          endif.

        endif.

      else.

    endif.

* << Fim da inclusão

    WHEN '0105'.

      MOVE-CORRESPONDING itab_zycbt002 TO /pws/zycbe002.

    WHEN '0114'.

      MOVE-CORRESPONDING itab_zycbt216 TO /pws/zycbe216.

    WHEN '0201'.

...

 

...

                            WHERE nrseqc = v_nrseqc.

            SELECT * FROM /pws/zycbt002 INTO TABLE itab_zycbt002p

                     WHERE nrseqc = v_nrseqc

                       AND tpparc = 'P'

                       AND tpcontr EQ /pws/zycbe001-tpcontr.

* >> Início da inclusão: MODULE LOAD_ITAB_ZYCBT002

          itab_zycbt002p_ant[] = itab_zycbt002p[].

* << Fim da inclusão

          ENDIF.

        ENDIF.

      ELSEIF /pws/zycbe001-tpcontr(1) EQ 'T'.

        IF itab_zycbt002p[] IS INITIAL.

          PERFORM parcela_principal.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB001TOP

 

...

      v_mode               TYPE c,

      v_nrmsg              TYPE i VALUE 0.

DATA: BEGIN OF t_zycbt003_ant OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt003.

DATA: END OF t_zycbt003_ant.

* >> Início da inclusão:

  Data: v_alterado,

        v_ok2.

DATA: BEGIN OF itab_rollback OCCURS 0,

        belnr_novo type /pws/zycbt002-belnr,

        belnr_ant  type /pws/zycbt002-belnr,

        parcela,

      END OF itab_rollback.

* << Fim da inclusão