CE PLUS - Nota 005362

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Rotina de Pagamento

Data/Hora da Publicação: 30/11/2007 00:00:00

Data/Hora Última Alteração: 10/03/2010 17:36:29

Descrição da Nota: COMPLEMENTO DO BOLETO - PRINCIPAL CONTRATO TRAVA - ESTORNO POR FBRA/FB08

Sintoma

 

Ao estornar um boleto de Principal de Contrato de Trava, esta gerando uma F-02 e uma F-30, deixando

uma partida em aberto do banco.

 

Solução

 

Alterar o estorno para FBRA/FB08. Na ida(F-30) não mais atualizar campo da /pws/zycbt001, buscar

todos os documentos de boletos gerados para o contrato, no caso de haver mais que uma parcela de

principal, assim acha partida em aberto. No estorno só será permitido fazer do último boleto para o

primeiro, ou seja, na ordem da ida.

Versões Tratadas

7.0

Informações Complementares

 

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

Nota Número 05362 Data: 30/11/2007 Hora: 15:48:19

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

 

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

Nota Número              : 05362

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00003

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

Texto Rápido:

COMPLEMENTO DO BOLETO - PRINCIPAL CONTRATO TRAVA - ESTORNO POR FBRA/FB08

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

Palavras Chave:

COMPLEMENTO DO BOLETO PRINCIPAL CONTRATO TRAVA ESTORNO POR FBRA/FB08

F-30

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

Objetos da nota:

FUNC /PWS/ZYCB_TRANSACAO_F_30_A

REPS /PWS/MZYCB110F01

REPS /PWS/MZYCB110TOP1

 

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

Modificações efetuadas em FUNC /PWS/ZYCB_TRANSACAO_F_30_A

 

...

      CONCATENATE 'RF05A-XPOS1(' v_xpos_belnr ')' INTO v_xpos.

      PERFORM bdc_field USING:

              v_xpos        'X',

              'BDC_OKCODE'  '/00'.

    ENDIF.

    PERFORM bdc_screen USING 'SAPMF05A'   '0731'.

    PERFORM bdc_field USING:

           'RF05A-SEL01(1)' t_dados-belnr,

           'RF05A-SEL02(1)' t_dados-belnr,

           'BDC_CURSOR'    'RF05A-SEL01(1)',

* >> Início da exclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A

           'BDC_OKCODE'     '/00',

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A

           'BDC_OKCODE'     '/00'.

    v_cont = 1.

    LOOP AT t_zycbt036 WHERE tcode     eq t_dados-tcode

                         AND tabela    eq t_dados-tabela

                         AND cpochv    eq t_dados-cpochv

                         and not belnr is initial.

      ADD 1 TO v_cont.

      CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.

      PERFORM bdc_field USING v_campo t_zycbt036-belnr.

      CONCATENATE 'RF05A-SEL02(' v_cont ')' INTO v_campo.

      PERFORM bdc_field USING v_campo t_zycbt036-belnr.

      IF v_cont = 5.

        PERFORM bdc_screen USING 'SAPMF05A'   '0731'.

        PERFORM bdc_field  USING 'BDC_OKCODE' '/00'.

        CLEAR v_cont.

      ENDIF.

    ENDLOOP.

    PERFORM bdc_field USING:

* << Fim da inclusão

           'BDC_OKCODE'     '=PA'.

    IF t_dados-agkoa = 'S'.

      v_tela = '3100'.

      v_tela2 = '0300'.

    ELSE.

      v_tela = '3100'.

      v_tela2 = '0301'.

    ENDIF.

    IF NOT t_dados-dtdocto IS INITIAL.

      PERFORM bdc_screen USING 'SAPDF05X'   v_tela.

...

 

...

      PERFORM bdc_field  USING 'BDC_OKCODE'  '=OSU'.

      PERFORM bdc_screen USING 'SAPDF05X'   '2000'.

      PERFORM bdc_field USING 'BDC_CURSOR'  v_xpos_budat.

      PERFORM bdc_field  USING v_xpos_budat 'X'.

      PERFORM bdc_field  USING 'BDC_OKCODE'  '=GO'.

      PERFORM bdc_screen USING 'SAPDF05X'        '0732'.

      PERFORM bdc_field USING  'BDC_CURSOR'      'RF05A-VONDT(01)'.

      WRITE t_dados-dtdocto TO v_dtdocto.

      PERFORM bdc_field USING  'RF05A-VONDT(01)' v_dtdocto.

      PERFORM bdc_field USING  'RF05A-BISDT(01)' v_dtdocto.

* >> Início da inclusão: FUNCTION /PWS/ZYCB_TRANSACAO_F_30_A

      v_cont = 1.

      LOOP AT t_zycbt036 WHERE tcode       eq t_dados-tcode

                           AND tabela      eq t_dados-tabela

                           AND cpochv      eq t_dados-cpochv

                           and not dtdocto is initial.

        ADD 1 TO v_cont.

        WRITE t_zycbt036-dtdocto TO v_dtdocto.

        CONCATENATE 'RF05A-VONDT(' v_cont ')' INTO v_campo.

        PERFORM bdc_field USING v_campo v_dtdocto.

        CONCATENATE 'RF05A-BISDT(' v_cont ')' INTO v_campo.

        PERFORM bdc_field USING v_campo v_dtdocto.

        if v_cont = 7.

          PERFORM bdc_field  USING 'BDC_OKCODE' '=SU1'.

          PERFORM bdc_screen USING 'SAPDF05X'   '0732'.

          CLEAR v_cont.

        endif.

      ENDLOOP.

* << Fim da inclusão

      PERFORM bdc_field  USING 'BDC_OKCODE' '=GO'.

    ENDIF.

    IF NOT v_zuonr IS INITIAL.

      PERFORM bdc_screen USING 'SAPDF05X'   v_tela.

      PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

      PERFORM bdc_field  USING 'BDC_OKCODE' '=OMX'.

      PERFORM bdc_screen USING 'SAPDF05X'   v_tela.

      PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

      PERFORM bdc_field  USING 'BDC_OKCODE' '=Z-'.

      PERFORM bdc_screen USING 'SAPDF05X'    v_tela..

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB110F01

 

...

        v_dtdocto = wa_zycbe001-dtcontr.

    ENDCASE.

  ELSE.

    v_dtdocto = wa_zycbe001-dt_lcto_tr.

  ENDIF.

  SELECT SINGLE * FROM bkpf

   WHERE bukrs = wa_zycbe001-bukrs

     AND belnr = wa_zycbe001-belnr_tr

     AND gjahr = v_dtdocto(4).

  itab_zycbe033-dtdocto = bkpf-budat.

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

  SELECT * FROM /pws/zycbt031 INTO TABLE itab_zycbt031_tr

           WHERE mdcorresp = 'ED'

             AND nrcorresp = /pws/zycbe031-nrcorresp

             AND nrseq     <> /pws/zycbe031-nrseq.

  CLEAR itab_zycbt036.

  REFRESH itab_zycbt036.

  LOOP AT itab_zycbt031_tr.

    itab_zycbt036-tcode   = 'F-30'.

    itab_zycbt036-tabela  = '/PWS/ZYCBT001'.

    itab_zycbt036-cpochv  = /pws/zycbe031-nrseq.

    itab_zycbt036-belnr   = itab_zycbt031_tr-belnr_p.

    itab_zycbt036-dtdocto = itab_zycbt031_tr-dtcredpr.

    SELECT SINGLE awkey FROM bkpf

                        INTO itab_zycbt036-awkey

                        WHERE belnr EQ itab_zycbt036-belnr

                          AND bukrs EQ /pws/zycbe031-bukrs

                          AND gjahr EQ itab_zycbt036-dtdocto(4).

    APPEND itab_zycbt036.

  ENDLOOP.

* << Fim da inclusão

  itab_zycbe033-d_gsber = wa_zycbe001-gsber.

  itab_zycbe033-d_kostl = wa_zycbe001-kostl.

  itab_zycbe033-d_prctr = wa_zycbe001-prctr.

  itab_zycbe033-d_fipos = wa_zycbe001-fipos.

  itab_zycbe033-c_gsber = wa_zycbe001-gsber.

  itab_zycbe033-c_kostl = wa_zycbe001-kostl.

  itab_zycbe033-c_prctr = wa_zycbe001-prctr.

  itab_zycbe033-c_fipos = wa_zycbe001-fipos.

  APPEND itab_zycbe033.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

  ENDLOOP.

  IF itab_zycbt034[] IS INITIAL.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'

         EXPORTING

              v_modo          = v_modo_bi

         TABLES

              t_dados         = itab_zycbe033

              t_campo         = itab_zycbt034

              t_zycbt032      = itab_zycbt032

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

              t_zycbt036      = itab_zycbt036

* << Fim da inclusão

         EXCEPTIONS

              campo_em_branco = 1

              periodo_fechado = 2

              OTHERS          = 3.

    IF sy-subrc = 0.

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

                                        tabela = '/PWS/ZYCBT001'

                                        cpochv = /pws/zycbe031-nrseq

                                        tpmsg  = 'S'.

      IF sy-subrc = 0.

        wa_despesa-statusp = 'C'.

        /pws/zycbe031-statusp   = 'C'.

        wa_despesa-belnr   = itab_zycbt032-belnr.

        /pws/zycbe031-belnr_p   = itab_zycbt032-belnr.

        wa_despesa-dtpagto = /pws/zycbe031-dtcredpr.

        itab_zycbt031-v_process = 'X'.

        MODIFY itab_zycbt031 TRANSPORTING v_process

                             WHERE nrseq    EQ /pws/zycbe031-nrseq

                               AND dtboleto EQ /pws/zycbe031-dtboleto.

        MESSAGE i082 WITH itab_zycbt032-belnr.

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

        wa_zycbe001-belnr_tr = itab_zycbt032-belnr.

        wa_zycbe001-dt_lcto_tr = itab_zycbe033-budat.

        UPDATE /pws/zycbt001 SET belnr_tr   = wa_zycbe001-belnr_tr

                            dt_lcto_tr = wa_zycbe001-dt_lcto_tr

           WHERE nrseqc = wa_zycbe001-nrseqc.

* << Fim da exclusão

        PERFORM atualiza_despesa.

        IF wa_zyglt009-comp_trans EQ 'C'.

          REFRESH itab_zycbe033_aux3.

          MOVE itab_zycbe033[] TO itab_zycbe033_aux3[].

          PERFORM contabiliza_f04.

        ENDIF.

      ELSE.

        LOOP AT itab_zycbt032.

          MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                            itab_zycbt032-msg+50(50).

...

 

...

FORM estorna_trava.

  IF wa_zyglt009-comp_trans EQ 'C' AND

     NOT /pws/zycbe031-belnr_comp IS INITIAL.

    PERFORM clear_date_batch.

    PERFORM estorna_f04.

    IF NOT /pws/zycbe031-belnr_comp IS INITIAL.

      MESSAGE i061 WITH text-074.

      EXIT.

    ENDIF.

  ENDIF.

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

  PERFORM clear_date_batch.

  PERFORM parametros_tr.

  itab_zycbe033-mandt = sy-mandt.

  itab_zycbe033-tcode = 'F-02'.

  itab_zycbe033-tabela = '/PWS/ZYCBT001'.

  itab_zycbe033-cpochv = /pws/zycbe031-nrseq.

  itab_zycbe033-budat = wa_zycbt031-dtcredpr.

  CASE wa_zycbt007-fdtdoc.

    WHEN 'D'.

      itab_zycbe033-bldat   = sy-datum.

      itab_zycbe033-d_valut = sy-datum.

      itab_zycbe033-c_valut = sy-datum.

    WHEN 'L'.

      itab_zycbe033-bldat   = wa_zycbt031-dtcredpr.

      itab_zycbe033-d_valut = wa_zycbt031-dtcredpr.

      itab_zycbe033-c_valut = wa_zycbt031-dtcredpr.

  ENDCASE.

* << Fim da exclusão

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

  PERFORM est_fbra_comp.

  READ TABLE itab_zycbt032 WITH KEY tcode  = 'FBRA'

                                   tabela = '/PWS/ZYCBT031'

                                   cpochv = /pws/zycbe031-nrseq

                                   tpmsg  = 'S'.

* << Fim da inclusão

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

  itab_zycbe033-bktxt = wa_zycbt007-bktxt.

  itab_zycbe033-umskz = wa_zycbt011-agums.

  itab_zycbe033-zfbdt = wa_zycbe002-dtcrd.

  LOOP AT itab_zycbt013.

    CASE itab_zycbt013-cpor3.

      WHEN 'XBLNR'.

        IF itab_zycbt013-cpocb EQ  'NRSEQC'.

          itab_zycbe033-xblnr = wa_zycbe002-nrseqc.

        ENDIF.

      WHEN 'ZUONR'.

        IF  itab_zycbt013-cpocb EQ 'NRDESP'.

          itab_zycbe033-d_zuonr = wa_zycbe002-nrcontr.

          itab_zycbe033-c_zuonr = wa_zycbe002-nrcontr.

        ELSEIF itab_zycbt013-cpocb EQ 'NRSEQC'.

          itab_zycbe033-d_zuonr = wa_zycbe002-nrseqc.

          itab_zycbe033-c_zuonr = wa_zycbe002-nrseqc.

        ENDIF.

    ENDCASE.

  ENDLOOP.

  IF wa_zycbe002-txtinf IS INITIAL.

    itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

    itab_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

    itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

  ELSE.

    itab_zycbe033-d_sgtxt = wa_zycbe002-txtinf.

    itab_zycbe033-c_sgtxt = wa_zycbe002-txtinf.

    itab_zycbe033-augtx   = wa_zycbe002-txtinf.

  ENDIF.

  PERFORM verifica_field USING   wa_zycbe001-bukrs

                                  text-010.

  itab_zycbe033-bukrs  = wa_zycbe001-bukrs.

  PERFORM verifica_field USING wa_zycbe001-waers

                                  text-011.

  itab_zycbe033-waers  = wa_zycbe001-waers.

  itab_zycbe033-kursf  = wa_zycbt031-kursf.

  PERFORM verifica_field USING wa_zycbt011-blart

                                  text-020.

  itab_zycbe033-blart  = wa_zycbt011-blart.

  PERFORM verifica_field USING  wa_zycbt031-vlme

                                  text-013.

  itab_zycbe033-wrbtr  = wa_zycbt031-vlme.

  itab_zycbe033-d_gsber = wa_zycbe001-gsber.

  itab_zycbe033-d_kostl = wa_zycbe001-kostl.

  itab_zycbe033-d_prctr = wa_zycbe001-prctr.

  itab_zycbe033-d_fipos = wa_zycbe001-fipos.

  itab_zycbe033-c_gsber = wa_zycbe001-gsber.

  itab_zycbe033-c_kostl = wa_zycbe001-kostl.

  itab_zycbe033-c_prctr = wa_zycbe001-prctr.

  itab_zycbe033-c_fipos = wa_zycbe001-fipos.

  APPEND itab_zycbe033.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

  ENDLOOP.

  IF itab_zycbt034[] IS INITIAL.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_02'

         EXPORTING

              v_modo          = v_modo_bi

         TABLES

              t_dados         = itab_zycbe033

              t_campo         = itab_zycbt034

              t_zycbt032      = itab_zycbt032

         EXCEPTIONS

              campo_em_branco = 1

              periodo_fechado = 2

              OTHERS          = 3.

* << Fim da exclusão

    IF sy-subrc = 0.

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

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

                                        tabela = '/PWS/ZYCBT001'

* << Fim da exclusão

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

    PERFORM est_fb08.

    READ TABLE itab_zycbt032 WITH KEY tcode  = 'FB08'

                                    tabela = '/PWS/ZYCBT031'

* << Fim da inclusão

                                        cpochv = /pws/zycbe031-nrseq

                                        tpmsg  = 'S'.

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

    IF sy-subrc EQ 0.

* << Fim da inclusão

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

      IF sy-subrc = 0.

        CLEAR: wa_despesa-belnr,

               /pws/zycbe031-belnr_p,

               wa_despesa-dtpagto,

               itab_zycbt031-v_process.

* << Fim da exclusão

        IF w_ok EQ 'DEL'.

          /pws/zycbe031-status = 'E'.

        ELSE.

          /pws/zycbe031-status = 'I'.

        ENDIF.

        wa_despesa-statusp = 'I'.

        /pws/zycbe031-statusp = 'I'.

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

      CLEAR: wa_despesa-belnr,   /pws/zycbe031-belnr_p,

             wa_despesa-dtpagto, itab_zycbt031-v_process.

* << Fim da inclusão

        MODIFY itab_zycbt031 TRANSPORTING v_process

                             WHERE nrseq    EQ /pws/zycbe031-nrseq

                               AND dtboleto EQ /pws/zycbe031-dtboleto.

        PERFORM atualiza_despesa.

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

        /pws/zycbe031-belnr_p   = itab_zycbt032-belnr.

        MESSAGE i061 WITH text-141 itab_zycbt032-belnr text-142.

        PERFORM fill_date_1_f-30_tr USING /pws/zycbe031-belnr_p.

* << Fim da exclusão

        IF ok_code NE 'DEL'.

          PERFORM contabiliza_ed.

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

        ENDIF.

      ELSE.

        LOOP AT itab_zycbt032.

          MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                            itab_zycbt032-msg+50(50).

        ENDLOOP.

        MODIFY /pws/zycbt031 FROM wa_zycbt031.

        /pws/zycbe031 = wa_zycbt031.

        erro_bi = 'X'.

* << Fim da exclusão

      ENDIF.

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

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i127 WITH itab_zycbt034-descricao v_evento.

      ENDLOOP.

      MODIFY /pws/zycbt031 FROM wa_zycbt031.

      /pws/zycbe031 = wa_zycbt031.

* << Fim da exclusão

    ENDIF.

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

  ELSE.

    MODIFY /pws/zycbt031 FROM wa_zycbt031.

    /pws/zycbe031 = wa_zycbt031.

* << Fim da exclusão

  ENDIF.

ENDFORM.

FORM parametros_tr.

  REFRESH : itab_zycbt012.

  CLEAR :   itab_zycbt012.

  REFRESH itab_zycbt013.

  SELECT * FROM /pws/zycbt013

    INTO TABLE itab_zycbt013

    WHERE tabela = '/PWS/ZYCBT004'.

  SELECT SINGLE * FROM /pws/zycbt007

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB110TOP1

 

...

DATA: END OF itab_zycbt136.

DATA: BEGIN OF itab_zycbt156 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt156.

DATA: END OF itab_zycbt156.

DATA: BEGIN OF itab_zycbe033_aux3 OCCURS 10.

        INCLUDE STRUCTURE /pws/zycbe033.

DATA: END OF itab_zycbe033_aux3.

DATA: BEGIN OF itab_zycet001 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet001.

DATA: END OF itab_zycet001.

* >> Início da inclusão:

DATA: BEGIN OF itab_zycbt031_tr OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt031.

DATA: END OF itab_zycbt031_tr.

* << Fim da inclusão

DATA: v_okcomis(1)  TYPE c,

      v_cpochv      LIKE /pws/zycbe033-cpochv,

      v_belnr6      LIKE /pws/zycbt030-belnr6,

      wa_zycbt009   LIKE /pws/zycbt009,

      v_nrboleto(1) TYPE c,

      v_contcli     LIKE /pws/zycbt017-kunag,

      v_block(1)    TYPE c,

      v_deleta,

      v_corrige     TYPE /pws/zycbe031-vlmi,

      v_conta       TYPE i,

...