CE PLUS - Nota 011361

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Valores Mantidos no Exterior

Data/Hora da Publicação: 28/07/2011 00:00:00

Data/Hora Última Alteração: 28/07/2011 15:54:24

Descrição da Nota: VME ASSOCIAÇÃO DE ORDEM DE PAGAMENTO BLOQUEIO DE CONTA

Sintoma

Ao estornar uma Associação de ordem de pagamento de VME quando a conta do cliente está bloqueada,

o sistema está executando a FBRA do documento e somente depois verifica que a conta está bloqueada

e exibe mensagem. Dessa forma o documento já foi estornado porém o valor da Ordem não volta no

Saldo e não é possível associar novamente.

No processo de estorno de VME - Fatura de Exportação o problema está ocorrendo quando está sendo

executado a F110 (rotina de pagamento do SAP) e ao mesmo tempo é processado o estorno da fatura.

O sistema estorna a Ordem de Pagamento, faz o Clearing da conta do cliente e somente depois exibe

mensagem de que a conta está bloqueada. Quando a conta já está bloqueada e é processado o estorno

do VME o sistema já dá mensagem de conta bloqueada.

 

 

Solução

O Sistema agora identifica que a conta está bloqueada antes de iniciar a contabilização no Processo

de Estorno da Associação de Ordem de Pagamento de VME e no Processo de Estorno do VME.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

ASSOCIAÇÃO DE VALORES MANTIDOS NO EXTERIOR - HOMOLOGAÇÃO PACOTE

ASSOCIAÇÃO DE ORDENS DE PAGAMENTO - DUMP

ASSOCIAÇÃO DE ORDENS DE PAGAMENTO, CRIAÇÃO DE EXIT

Informações Complementares

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

Nota Número 11361 Data: 28/07/2011 Hora: 14:59:43

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

 

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

Nota Número              : 11361

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00008

Agrupamento              : 00079

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

Referência às notas relacionadas:

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

 

04316  - 00001 - 7.0    - 00002  - ASSOCIAÇÃO DE ORDENS DE PAGAMENTO - DUMP

09574  - 00002 - 8.0    - 00001  - ASSOCIAÇÃO DE VALORES MANTIDOS NO EXTERIOR - HOMOLOGAÇÃO PACOTE

11123  - 00003 - 8.0    - 00007  - ASSOCIAÇÃO DE ORDENS DE PAGAMENTO, CRIAÇÃO DE EXIT

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

VME ASSOCIAÇÃO DE ORDEM DE PAGAMENTO BLOQUEIO DE CONTA

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

Palavras Chave:

ASSOCIAÇÃO, ORDEM DE PAGAMENTO, VME, BLOQUEIO DE CONTA

 

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

Objetos da nota:

FUNC /PWS/ZYCB_ENQUEUE_CONTAS

REPS /PWS/LZYCBGF5TOP

REPS /PWS/MZYCB035F01

REPS /PWS/MZYCB035F02

REPS /PWS/MZYCB035T02

 

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

Modificações efetuadas em FUNC /PWS/ZYCB_ENQUEUE_CONTAS

 

FUNCTION /PWS/ZYCB_ENQUEUE_CONTAS.

  CONSTANTS:

    c_dequeue(8) TYPE c VALUE 'DEQUEUE_',

    c_enqueue(8) TYPE c VALUE 'ENQUEUE_',

    c_razao(7)   TYPE c VALUE 'EFSKB1A' ,

    c_cliente(7) TYPE c VALUE 'EFKNB1A' .

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

  DATA: v_funcao(15) TYPE c.

* << Fim da exclusão

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

  DATA: v_funcao(15)  TYPE c,

        v_bloqueio(1) TYPE c.

  CLEAR: lt042x-bukrs,

         lt042x-koart,

         lt042x-konto.

* << Fim da inclusão

  FIELD-SYMBOLS <fs_zycbe224> TYPE /pws/zycbe224.

  IF itab_zycbt224[] IS INITIAL.

    RAISE zycbe224_null.

  ENDIF.

  IF i_bloqueia IS INITIAL.

    v_funcao = c_dequeue.

  ELSE.

    v_funcao = c_enqueue.

  ENDIF.

  SORT itab_zycbt224.

...

 

...

                  mode_knb1      = <fs_zycbe224>-modo

                  kunnr          = <fs_zycbe224>-saknr

                  bukrs          = <fs_zycbe224>-bukrs

             EXCEPTIONS

                  foreign_lock   = 1

                  system_failure = 2

                  OTHERS         = 3.

    ENDCASE.

    IF sy-subrc NE 0.

      <fs_zycbe224>-uname = sy-msgv1.

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

    ELSE.

      IF v_funcao(8) = c_enqueue.

        IF <fs_zycbe224>-koart = 'D'.

          PERFORM verifica_bloqueio_f110 USING <fs_zycbe224>-bukrs

                                               'D'

                                               <fs_zycbe224>-saknr

                                      CHANGING v_bloqueio.

          IF v_bloqueio = 'X'.

            <fs_zycbe224>-uname = 'Programa Pagto.'.

          ENDIF.

        ENDIF.

* << Fim da inclusão

    ENDIF.

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

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

  LOOP AT itab_zycbt224

    TRANSPORTING NO FIELDS

    WHERE uname NE space.

  ENDLOOP.

  IF sy-subrc EQ 0.

    RAISE erro_bloqueio.

  ENDIF.

ENDFUNCTION.

* >> Início da inclusão:

FORM verifica_bloqueio_f110 USING s02_bukrs

                                  s02_koart

                                  s02_konto

                         CHANGING p_bloqueio.

  p_bloqueio = ''.

  CHECK s02_bukrs NE lt042x-bukrs

     OR s02_koart NE lt042x-koart

     OR s02_konto NE lt042x-konto.

  SELECT * FROM t042x WHERE bukrs EQ s02_bukrs

                      AND   koart EQ s02_koart

                      AND   laufi NE 'F100XX'.

    SELECT SINGLE * FROM reguv WHERE laufd = t042x-laufd

                               AND   laufi = t042x-laufi.

    IF sy-subrc    NE 0

    OR reguv-xecht EQ 'A'

    OR reguv-xecht EQ 'X'.

      DELETE FROM t042x WHERE laufd = t042x-laufd

                        AND   laufi = t042x-laufi.

    ELSE.

      IF  reguv-xecht EQ space

      AND ( reguv-xvore EQ 'A' OR

            reguv-xvore EQ 'X' OR

            reguv-xvore EQ space ).

        DELETE FROM t042x WHERE laufd = t042x-laufd

                          AND   laufi = t042x-laufi.

      ELSE.

        f110id-laufd = t042x-laufd.

        f110id-laufi = t042x-laufi.

        IMPORT buktab slktab sldtab

               FROM DATABASE rfdt(fb) ID f110id.

        CHECK sy-subrc = 0.

        IF s02_koart = 'D'.

          LOOP AT sldtab WHERE vonkt LE s02_konto

                         AND   biskt GE s02_konto.

            p_bloqueio = 'X'.

          ENDLOOP.

        ENDIF.

        IF s02_koart = 'K'.

          LOOP AT slktab WHERE vonkt LE s02_konto

                         AND   biskt GE s02_konto.

            p_bloqueio = 'X'.

          ENDLOOP.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDSELECT.

  lt042x-bukrs = s02_bukrs.

  lt042x-koart = s02_koart.

  lt042x-konto = s02_konto.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/LZYCBGF5TOP

 

function-pool /pws/zycbgf5

              message-id /pws/zycbm.

tables: /pws/zycbt001,

        /pws/zycbt007,

* >> Início da exclusão:

        /pws/zycbt011.

* << Fim da exclusão

* >> Início da inclusão:

        /pws/zycbt011,

        t042x,

        reguv.

* << Fim da inclusão

data: begin of itab_zycbt002 occurs 0.

        include structure /pws/zycbt002.

data: end of itab_zycbt002.

data: begin of itab_zycbt003 occurs 0.

        include structure /pws/zycbt003.

data: end of itab_zycbt003.

data: begin of itab_zycbt009 occurs 0.

        include structure /pws/zycbt009.

data: end of itab_zycbt009.

data: begin of itab_zycbt010 occurs 0.

        include structure /pws/zycbt010.

data: end of itab_zycbt010.

data: begin of itab_tcurx occurs 0.

        include structure tcurx.

data: end of itab_tcurx.

* >> Início da inclusão:

data:    begin of f110id,

           progr(4)          type c value 'F110',

           laufd             like f110v-laufd,

           laufi             like f110v-laufi,

           objkt(4)          type c value 'PARM',

         end of f110id.

data:    begin of lt042x,

           bukrs             like t001-bukrs,

           koart             like bseg-koart,

           konto             like bseg-lifnr,

         end of lt042x.

data:    begin of buktab occurs 100,

            bukrs            like t001-bukrs,

            bugrp(2)         type n,

            land1            like t001-land1,

            zbukr            like t001-bukrs,

            xkwes(1)         type c,

            xdwes(1)         type c,

         end of buktab.

data:    begin of slktab occurs 10,

            vonkt(10)        type c,

            biskt(10)        type c,

            xpruf(1)         type c,

         end of slktab.

data:    begin of sldtab occurs 10,

            vonkt(10)        type c,

            biskt(10)        type c,

            xpruf(1)         type c,

         end of sldtab.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB035F01

 

...

    CASE ok_code.

      WHEN 'MODO_BI'.

        PERFORM seleciona_modo_bi.

      WHEN 'SAVE'.

        PERFORM salva_dados.

    ENDCASE.

  ENDFORM.

  FORM user_command_0102.

    DATA

      v_linhas TYPE sy-tabix.

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

    field-symbols:

        <fs_zycbe226_del>  like line of itab_zycbt226_del.

* << Fim da inclusão

    CASE ok_code.

      WHEN 'P--' OR 'P-' OR 'P++' OR 'P+'.

        DESCRIBE TABLE itab_zycbt228a LINES v_linhas.

        PERFORM paginacao_table_control

          USING v_linhas

          CHANGING tc_ordens-top_line.

        ok_code = 'DUMMY'.

      WHEN 'MARK'.

        PERFORM marca_desmarca

          USING 'MARK' 'X'

...

 

...

        PERFORM marca_desmarca

          USING 'MARK' space

          CHANGING itab_zycbt228a.

        ok_code = 'DUMMY'.

      WHEN 'DEL_MK'.

        PERFORM elimina_itens_marcados

          USING 'MARK' 'OPER' 'X'

          CHANGING itab_zycbt228a.

        LOOP AT itab_zycbt228a ASSIGNING <fs_zycbt228a>.

          IF <fs_zycbt228a>-oper = 'D'.

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

            LOOP AT itab_zycbt226 ASSIGNING <fs_zycbe226_del>

                              WHERE nrseq = <fs_zycbt228a>-nrseq.

                 APPEND <fs_zycbe226_del> TO itab_zycbt226_del.

            ENDLOOP.

* << Fim da inclusão

            DELETE itab_zycbt226 WHERE nrseq = <fs_zycbt228a>-nrseq.

          ENDIF.

        ENDLOOP.

        ok_code = 'DUMMY'.

    ENDCASE.

  ENDFORM.

  FORM seleciona_modo_bi.

    DATA:

      v_answer(1) TYPE c,

      itab_modo   TYPE STANDARD TABLE OF spopli,

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB035F02

 

...

    exit.

  endif.

endform.

form bloqueia_contas.

  constants

    c_conta_cliente type koart value 'D'.

  data:

    wa_zycbe224   like line of itab_zycbe224,

    v_saldo       like /pws/zycbe227a-vlsltrans.

  field-symbols:

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

    <fs_zycbe224>  like line of itab_zycbe224,

    <fs_zycbt209>  like line of itab_zycbt209,

    <fs_zycbt226>  like line of itab_zycbt226,

    <fs_zycbt228a> like line of itab_zycbt228a.

* << Fim da exclusão

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

    <fs_zycbe224>     like line of itab_zycbe224,

    <fs_zycbt209>     like line of itab_zycbt209,

    <fs_zycbt226>     like line of itab_zycbt226,

    <fs_zycbt228a>    like line of itab_zycbt228a,

    <fs_zycbt226_del> like line of itab_zycbt226_del,

    <fs_zycbt228_del> like line of itab_zycbt228a.

* << Fim da inclusão

  clear:   itab_zycbe224.

  refresh: itab_zycbe224.

  wa_zycbe224-mandt = sy-mandt.

  wa_zycbe224-modo  = c_modo_bloqueio.

  if wa_controle-processo = c_flag_embarque.

    v_saldo = /pws/zycbe227a-vlsltrans.

    loop at itab_zycbt209 assigning <fs_zycbt209>.

      check <fs_zycbt209>-saldo > 0.

      perform verifica_conta_itab_zycbe224

        using

...

 

...

          <fs_zycbt226>-bukrs

          'D'

          <fs_zycbt226>-kunag

          itab_zycbe224.

      check sy-subrc <> 0.

      wa_zycbe224-bukrs = <fs_zycbt226>-bukrs.

      wa_zycbe224-saknr = <fs_zycbt226>-kunag.

      append wa_zycbe224 to itab_zycbe224.

    endif.

  endloop.

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

  wa_zycbe224-koart = c_conta_cliente.

  loop at itab_zycbt228a assigning <fs_zycbt228_del>.

    read table itab_zycbt226_del

      with table key nrseq = <fs_zycbt228_del>-nrseq

      assigning <fs_zycbt226_del>.

    if sy-subrc = 0.

      perform verifica_conta_itab_zycbe224

        using

          <fs_zycbt226_del>-bukrs

          'D'

          <fs_zycbt226_del>-kunag

          itab_zycbe224.

      check sy-subrc <> 0.

      wa_zycbe224-bukrs = <fs_zycbt226_del>-bukrs.

      wa_zycbe224-saknr = <fs_zycbt226_del>-kunag.

      append wa_zycbe224 to itab_zycbe224.

    endif.

  endloop.

* << Fim da inclusão

  perform verifica_bloqueio changing itab_zycbe224.

  loop at itab_zycbe224 transporting no fields where uname <> space.

    exit.

  endloop.

  if sy-subrc = 0.

    call function '/PWS/ZYCB_ENQUEUE_CONTAS'

         exporting

              i_bloqueia    = 'X'

         tables

              itab_zycbt224 = itab_zycbe224

         exceptions

              zycbe224_null = 1

              erro_bloqueio = 2

              others        = 3.

    if sy-subrc <> 0.

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

      exit.

* << Fim da exclusão

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

    else.

* << Fim da inclusão

    endif.

  endif.

  loop at itab_zycbe224 assigning <fs_zycbe224> where uname <> space.

    call function 'MESSAGE_STORE'

         exporting

              arbgb                  = c_grupo_mensagem

              msgty                  = 'E'

              msgv1                  = <fs_zycbe224>-saknr

              msgv2                  = <fs_zycbe224>-bukrs

              msgv3                  = <fs_zycbe224>-uname

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB035T02

 

...

  wa_zycbt030       type t_s_zycbt030,

  wa_zycbt124       type t_s_zycbt124,

  itab_zycbt209     type t_t_zycbt209,

  itab_zycbt226     type t_t_zycbt226,

  itab_zycbt227     type t_t_zycbt227,

  itab_zycbt228     type t_t_zycbt228,

  itab_zycbt229     type t_t_zycbt229,

  itab_zycbt230     type t_t_zycbt230,

  itab_zycbt228a    type t_t_zycbt228a,

  itab_zycet001     type t_t_zycet001,

* >> Início da exclusão:

  wa_zycbe228a_comp type t_s_zycbe228a_comp.

* << Fim da exclusão

* >> Início da inclusão:

  wa_zycbe228a_comp type t_s_zycbe228a_comp,

  itab_zycbt226_del type t_t_zycbt226.

* << Fim da inclusão

data:begin of itab_zycbt226a occurs 0,

      nrseq          type /pws/zycbt226-nrseq,

      gsberf         type /pws/zycbt226-gsberf,

      bukrs          type /pws/zycbt226-bukrs,

      werks          type /pws/zycbt226-werks,

      j_1bbranch     type /pws/zycbt226-j_1bbranch,

      kunag          type /pws/zycbt226-kunag,

      waers          type /pws/zycbt226-waers,

      sld_associar   type /pws/zycbt226-sld_associar,

      dtcredext      type /pws/zycbt226-dtcredext,

...