CE PLUS - Nota 008909

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Vinculação

Data/Hora da Publicação: 28/08/2009 00:00:00

Data/Hora Última Alteração: 18/02/2011 17:56:55

Descrição da Nota: VINCULAÇÃO/LIQUIDAÇÃO - ESTORNO PERÍODO FECHADO - DP - RAZÃO ESPECIAL

Sintoma

Ao estornar um DP com liquidação automática através da vinculação, em período fechado, após fazer a

F-02, esta compensando as duas partidas do cliente(normal e razão especial) no clearing do contrato.

Desta forma, quando for vai fazer o clearing da fatura, não encontra partida em aberto. Esta com

erro também na data gravada nos campos /pws/zycbt001-dtvincul e /pws/zycbt030-budat, onde não grava

a data do lançamento e sim a data da vinculação, o que pode gerar erro numa vinculação futura.

 

 

Solução

Ao efetuar o clearing do contrato, se for DP, liquidação automática, desflegar o campo PA normais da

F-30, para que compense apenas o item de razão especial. Para gravar a data corretamente, ajustar a

consistência de verificação de período fechado, utilizando o + em vez de S, pois assim já traz uma

data em período aberto.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DA-VINCULAÇÃO/LIQUIDAÇÃO-OTIMIZAÇÃO-BUSCA TAXAS/TIPO DOCTO. POR CONTRATO

LIQUIDAÇÃO - DA - CHECK DOS DOCUMENTOS - ESTORNO DAS FATURAS

LIQUIDAÇÃO - ITAB_PARTIDAS PONTOS DE EXIT - DECLARAÇÃO INCLUDE X01

LIQUIDAÇÃO - PONTO DE EXIT LIQ029

DA-LIQUIDAÇÃO E VINCULAÇÃO LIQ. AUTOMÁT - NORMAL/ARBITRAGEM/PERFORMANCE

LIQUIDAÇÃO - ESTORNO - CLEARING - ZFBDT E ZTERM VAZIOS NO DUPLO CLIQUE

Informações Complementares

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

Nota Número 08909 Data: 28/08/2009 Hora: 15:45:43

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

 

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

Nota Número              : 08909

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00010

Agrupamento              : 00111

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

Referência às notas relacionadas:

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

 

03678  - 00001 - 7.0    - 00001  - LIQUIDAÇÃO - DA - CHECK DOS DOCUMENTOS - ESTORNO DAS FATURAS

06474  - 00002 - 7.0    - 00005  - LIQUIDAÇÃO - PONTO DE EXIT LIQ029

07760  - 00003 - 7.0    - 00007  - DA-LIQUIDAÇÃO E VINCULAÇÃO LIQ. AUTOMÁT - NORMAL/ARBITRAGEM/PERFO

07847  - 00004 - 7.0    - 00008  - LIQUIDAÇÃO - ITAB_PARTIDAS PONTOS DE EXIT - DECLARAÇÃO INCLUDE X0

07884  - 00005 - 7.0    - 00008  - LIQUIDAÇÃO - ESTORNO - CLEARING - ZFBDT E ZTERM VAZIOS NO DUPLO C

08536  - 00006 - 7.0    - 00009  - DA-VINCULAÇÃO/LIQUIDAÇÃO-OTIMIZAÇÃO-BUSCA TAXAS/TIPO DOCTO. POR C

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

VINCULAÇÃO/LIQUIDAÇÃO - ESTORNO PERÍODO FECHADO - DP - RAZÃO ESPECIAL

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

Palavras Chave:

VINCULAÇÃO/LIQUIDAÇÃO ESTORNO PERÍODO FECHADO DP /PWS/ZYCBT001-DTVINCUL

/PWS/ZYCBT030-BUDAT DP LIQUIDAÇÃO AUTOMÁTICA

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

Objetos da nota:

FUNC /PWS/ZYCB_TRANSACAO_F_30_P

REPS /PWS/MZYCB004F01

REPS /PWS/MZYCB004F02

REPS /PWS/MZYCB004X01

 

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

Modificações efetuadas em FUNC /PWS/ZYCB_TRANSACAO_F_30_P

 

MODIFICAR MÓDULO DE FUNÇÃO: /PWS/ZYCB_TRANSACAO_F_30_P

CARACTERÍSTICAS

 

 

IMPORTAÇÃO:

NOME PARAM.   ATRIB. TIPO REFERÊNCIA  VL. PROPOSTO OPCIONAL TRANSF. TEXT

* >> Início da inclusão:

V_PANORMAIS   TYPE   C                ' '          'X'        ' '   Desflega PA Normais = X

V_ZUONR1      TYPE   BSEG-ZUONR       ' '          'X'        ' '   Nº atribuição

* << Fim da inclusão

 

TEXTO FONTE

 

...

        PERFORM bdc_screen USING 'SAPMF05A' '0710'.

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

        IF t_dados-d_newko1 IS INITIAL.

          PERFORM bdc_field USING:

                  'RF05A-AGKON' t_dados-d_newko,

                  'RF05A-AGKOA' wa_tbsl-koart,

                  v_xpos        'X'.

          IF NOT t_dados-umskz IS INITIAL.

            PERFORM bdc_field USING:

                  'RF05A-AGUMS' t_dados-umskz.

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

            if v_panormais = 'X'.

              perform bdc_field using  'RF05A-XNOPS' ' '.

* << Fim da inclusão

          ENDIF.

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

          endif.

* << Fim da inclusão

          v_agkoa = wa_tbsl-koart.

        ELSE.

          IF v_acc_pre_dp IS INITIAL.

            PERFORM bdc_field USING:

                    'RF05A-AGKON' t_dados-d_newko1,

                    'RF05A-AGKOA' 'S',

                    v_xpos        'X'.

            v_agkoa = 'S'.

          ELSE.

            PERFORM bdc_field USING:

                    'RF05A-AGKON' t_dados-d_newko1,

                    'RF05A-AGKOA' 'D',

                    'RF05A-AGUMS' t_dados-agums,

                    v_xpos        'X'.

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

            v_agkoa = 'D'.

* << Fim da exclusão

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

            if not t_dados-agums is initial and v_panormais = 'X'.

              perform bdc_field using  'RF05A-XNOPS' ' '.

            endif.

* << Fim da inclusão

          ENDIF.

        ENDIF.

        PERFORM bdc_field USING: 'BDC_OKCODE'  '=PA'.

      ELSE.

        SUBTRACT 1 FROM v_xpos_belnr.

        SHIFT v_xpos_belnr LEFT DELETING LEADING  '0'.

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

        PERFORM bdc_screen USING: 'SAPMF05A'    '0710'.

        IF v_debcred = 'C'.

          v_xpos_belnr = v_xpos_belnr + 1.

...

 

...

                    v_xpos        'X'.

          ELSE.

            PERFORM bdc_field USING:

                    'RF05A-AGKON' t_dados-d_newko,

                    'RF05A-AGKOA' wa_tbsl-koart,

                    v_xpos        'X'.

          ENDIF.

          IF NOT t_dados-umskz IS INITIAL.

            PERFORM bdc_field USING:

                  'RF05A-AGUMS' t_dados-umskz.

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

            if v_panormais = 'X'.

              perform bdc_field using  'RF05A-XNOPS' ' '.

* << Fim da inclusão

          ENDIF.

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

          endif.

* << Fim da inclusão

          v_agkoa = wa_tbsl-koart.

        ELSE.

          IF v_acc_pre_dp IS INITIAL.

            PERFORM bdc_field USING:

                    'RF05A-AGKON' t_dados-d_newko1,

                    'RF05A-AGKOA' 'S',

                    v_xpos        'X'.

            v_agkoa = 'S'.

          ELSE.

            PERFORM bdc_field USING:

                    'RF05A-AGKON' t_dados-d_newko1,

                    'RF05A-AGKOA' 'D',

                    'RF05A-AGUMS' t_dados-agums,

                    v_xpos        'X'.

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

            if not t_dados-agums is initial and v_panormais = 'X'.

              perform bdc_field using  'RF05A-XNOPS' ' '.

            endif.

* << Fim da inclusão

            v_agkoa = 'D'.

          ENDIF.

        ENDIF.

        IF v_debcred <> 'C'.

          WHILE v_xpos_belnr > 10.

            v_xpos_belnr = v_xpos_belnr - 10.

            PERFORM bdc_screen USING 'SAPMF05A'   '0608'.

            PERFORM bdc_field USING 'BDC_OKCODE'  'P+'.

            SHIFT v_xpos_belnr LEFT DELETING LEADING  '0'.

          ENDWHILE.

...

 

...

          PERFORM bdc_screen USING 'SAPDF05X'   '2000'.

          PERFORM bdc_field  USING 'BDC_OKCODE'  'P+'.

        ENDDO.

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

        CLEAR v_cont.

        PERFORM bdc_screen USING 'SAPDF05X'        '0732'.

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

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

        if not t_dados-dtdocto is initial.

* << Fim da inclusão

        WRITE t_dados-dtdocto TO v_dtdocto.

        ADD 1 TO v_cont.

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

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

        PERFORM bdc_field USING v_campo  v_dtdocto.

        PERFORM bdc_field USING v_campo2 v_dtdocto.

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

        endif.

* << Fim da inclusão

        LOOP AT t_doctos WHERE tcode  = t_dados-tcode

...

 

...

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

        IF total NE 'X'.

          PERFORM bdc_screen USING 'SAPDF05X'    '3100'.

          PERFORM bdc_field  USING 'BDC_CURSOR'  'DF05B-PSBET(02)'.

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

        ENDIF.

      ELSE.

        PERFORM bdc_screen USING 'SAPDF05X'    '3100'.

        PERFORM bdc_field  USING 'BDC_CURSOR'  'DF05B-PSBET(02)'.

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

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

      endif.

    if v_filt_atrib = 'X' .

      perform bdc_screen using 'SAPDF05X'   '3100'.

      perform bdc_field  using 'BDC_CURSOR' 'RF05A-ABPOS'.

      perform bdc_field  using 'BDC_OKCODE' '=OMX'.

      perform bdc_screen using 'SAPDF05X'   '3100'.

      perform bdc_field  using 'BDC_CURSOR' 'RF05A-ABPOS'.

      perform bdc_field  using 'BDC_OKCODE' '=Z-'.

      perform bdc_screen using 'SAPDF05X'    '3100'.

      perform bdc_field  using 'BDC_SUBSCR'  'SAPDF05X'.

      perform bdc_field  using 'RF05A-ABPOS' '1'.

      perform bdc_field  using 'BDC_OKCODE'  '=OSU'.

      clear v_xpos1.

      select single selps from t021r

        into  v_xpos1

        where event = 'SU-AG'

          and feldn = 'ZUONR'.

      shift v_xpos1 left deleting leading  '0'.

      while v_xpos1 > 10.

        v_xpos1 = v_xpos1 - 10.

        perform bdc_screen using 'SAPDF05X'   '2000'.

        perform bdc_field using 'BDC_OKCODE'  'P+'.

        shift v_xpos1 left deleting leading  '0'.

      endwhile.

      concatenate 'RF05A-XPOS1(' v_xpos1 ')' into v_xpos_zuonr.

      perform bdc_screen using 'SAPDF05X'    '2000'.

      perform bdc_field using 'BDC_CURSOR'   v_xpos_zuonr.

      perform bdc_field  using v_xpos_zuonr  'X'.

      perform bdc_field  using 'BDC_OKCODE'  '=GO'.

      perform bdc_screen using 'SAPDF05X'        '0731'.

      perform bdc_field using  'RF05A-SEL01(01)' v_zuonr1.

      perform bdc_field  using 'BDC_OKCODE'      '=GO'.

* << Fim da inclusão

      ENDIF.

    ELSE.

      PERFORM bdc_screen USING 'SAPDF05X'   '3100'.

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

      PERFORM bdc_field  USING 'BDC_OKCODE' '=OMX'.

      PERFORM bdc_screen USING 'SAPDF05X'    '3100'.

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

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

    ENDIF.

    PERFORM bdc_screen USING 'SAPDF05X'   '3100'.

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

    PERFORM bdc_field USING: 'BDC_OKCODE' '=DBR'.

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

    perform bdc_screen using 'SAPDF05X'   '3100'.

    perform bdc_field  using 'BDC_CURSOR' 'RF05A-ABPOS'.

    perform bdc_field  using 'BDC_OKCODE' '=OMX'.

* << Fim da inclusão

    PERFORM bdc_screen USING 'SAPDF05X'   '3100'.

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

    perform bdc_field  using 'BDC_CURSOR' 'RF05A-ABPOS'.

    perform bdc_field  using 'BDC_OKCODE' '=Z+'.

    perform bdc_screen using 'SAPDF05X'   '3100'.

* << Fim da inclusão

    IF filtra     EQ 'X' AND

       so_segundo EQ 'X'.

      PERFORM bdc_field USING: 'BDC_CURSOR' 'DF05B-PSDIF(02)',

                               'BDC_OKCODE' '=PI'.

    ELSE.

      PERFORM bdc_field USING: 'BDC_CURSOR' 'DF05B-PSDIF(01)',

                               'BDC_OKCODE' '=PI'.

    ENDIF.

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

    perform bdc_screen using 'SAPDF05X'   '3100'.

    perform bdc_field  using 'BDC_CURSOR' 'RF05A-ABPOS'.

    perform bdc_field  using 'BDC_OKCODE' '=Z+'.

* << Fim da inclusão

    PERFORM bdc_screen USING 'SAPDF05X'   '3100'.

    IF t_dados-flag_nc EQ 'X'.

      PERFORM bdc_field USING: 'BDC_OKCODE' '=BU'.

    ELSE.

      PERFORM bdc_field USING: 'BDC_OKCODE' '=BS'.

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

      perform bdc_field using: 'BDC_OKCODE' '=BU'.

* << Fim da inclusão

    ENDIF.

    PERFORM verifica_empresas USING t_dados-bukrs

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F01

 

...

  endif.

  v_monat = p_monat.

  v_gjahr = p_gjahr.

  v_conta = p_konto.

  while v_ok <> 'S'.

    add 1 to v_cont.

    call function 'FI_PERIOD_CHECK'

         exporting

              i_bukrs          = p_bukrs

              i_gjahr          = v_gjahr

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

              i_koart          = 'S'

              i_konto          = v_conta

* << Fim da exclusão

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

              i_koart          = '+'

* << Fim da inclusão

              i_monat          = v_monat

         exceptions

              error_period     = 1

              error_period_acc = 2

              others           = 3.

    if sy-subrc <> 0.

      if v_monat eq 12.

        v_monat = 1.

      else.

        add 1 to v_monat.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F02

 

...

    elseif p_agkoa eq 'D'.

      perform unlock_cliente using itab_zycbe033-d_newko

                                   itab_zycbe033-bukrs.

    endif.

    perform busca_exit.

    read table itab_zyglt100 with key zexit = 'LIQ029'.

    if sy-subrc eq 0 and not itab_zyglt100-zexit_ativa is initial.

      perform (itab_zyglt100-formulario)

              in program (itab_zyglt100-programa).

    else.

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

      clear v_panormais.

      if /pws/zycbe001-tpcontr(1) = 'D'  and

         /pws/zycbt089-f_cont_vinc = 'F' and

         p_texto = text-189.

        v_panormais = 'X'.

      endif.

* << Fim da inclusão

      if /pws/zycbt084-cont_desmemb is initial.

        if v_periodo_aberto is initial and

           not ( itab_zycbt006-v_armda       = 'X' and

                 itab_zycbt006-v_performance = ' ' ).

          call function '/PWS/ZYCB_TRANSACAO_F_30_P'

               exporting

                    v_modo          = v_modo_bi

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

                    v_panormais     = v_panormais

* << Fim da inclusão

               tables

                    t_dados         = itab_zycbe033

                    t_campo         = itab_zycbt034

                    t_zycbt032      = itab_zycbt032

                    t_doctos        = itab_zycbt036

               exceptions

                    campo_em_branco = 1

                    periodo_fechado = 2

                    others          = 3.

        else.

...

 

...

            endif.

          else.

            v_total = 'X'.

          endif.

          call function '/PWS/ZYCB_TRANSACAO_F_30_P'

               exporting

                    filtra          = 'X'

                    total           = v_total

                    v_modo          = v_modo_bi

                    v_vinc_tot      = 'X'

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

                    v_panormais     = v_panormais

* << Fim da inclusão

               tables

                    t_dados         = itab_zycbe033

                    t_campo         = itab_zycbt034

                    t_zycbt032      = itab_zycbt032

                    t_doctos        = itab_zycbt036

               exceptions

                    campo_em_branco = 1

                    periodo_fechado = 2

                    others          = 3.

        endif.

...

 

...

    elseif p_agkoa eq 'D'.

      perform unlock_cliente using itab_zycbe033-d_newko

                                 itab_zycbe033-bukrs.

      perform unlock_cliente using itab_zycbe033-d_newko

                                 itab_zycbt006-bukrs.

    elseif p_agkoa eq 'K'.

      perform unlock_fornecedor using itab_zycbe033-d_newko

                                 itab_zycbe033-bukrs.

      perform unlock_fornecedor using itab_zycbe033-d_newko

                                 itab_zycbt006-bukrs.

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

    endif.

    clear v_panormais.

    if /pws/zycbe001-tpcontr(1) = 'D'  and

       /pws/zycbt089-f_cont_vinc = 'F' and

       p_texto = text-189.

      v_panormais = 'X'.

* << Fim da inclusão

    endif.

    if /pws/zycbt084-cont_desmemb is initial.

      call function '/PWS/ZYCB_TRANSACAO_F_30_P'

           exporting

                v_modo          = v_modo_bi

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

                v_panormais     = v_panormais

* << Fim da inclusão

           tables

                t_dados         = itab_zycbe033

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004X01

 

...

        vljur_acc   LIKE  /pws/zycbt006-vljur_acc,

        vljur_ace   LIKE  /pws/zycbt006-vljur_ace,

       END OF itab_zycbt005_t.

DATA: BEGIN OF itab_erro OCCURS 0,

         vbeln  LIKE /pws/zycbt030-vbeln,

         msg    LIKE /pws/zycbt032-msg,

       END OF itab_erro.

DATA: BEGIN OF itab_partidas OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbe033.

DATA: END OF itab_partidas.

* >> Início da inclusão:

data: v_panormais type c.

* << Fim da inclusão

DATA: END OF COMMON PART.