CE PLUS - Nota 011168

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Valores Mantidos no Exterior

Data/Hora da Publicação: 20/05/2011 00:00:00

Data/Hora Última Alteração: 08/06/2011 16:36:27

Descrição da Nota: VME - DISPONIBILIDADE FATURAS - VINCULAÇÃO - BLOQUEIO DE FATURAS

Sintoma

O sistema permitia que a mesma fatura fosse incluída ao mesmo tempo no programa de Disponibilidade

de Faturas e Vinculação, fazendo com que o Saldo a Vincular fosse gravado com valor incorreto na

tabela

 

 

Solução

Foi incluído o bloqueio da fatura no programa de Disponibilidade de Faturas e rotinas de validação

de alteração do Saldo a Vincular nos programas de Disponibilidade de Faturas e Vinculação

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

DESVINCULAÇÃO DE VALORES NAS FATURAS NA VINCULAÇÃO

VALORES MANTIDOS NO EXTERIOR - DISPONIBILIDADE NO EXTERIOR

VINCULAÇÃO - PREENCHIMENTO DO CAMPO SOCIEDADE PARCEIRA.

VINCULAÇÃO - ESTORNO AUTOMATICO POR ERRO NA CONTABILIZAÇÃO

Informações Complementares

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

Nota Número 11168 Data: 20/05/2011 Hora: 13:59:07

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

 

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

Nota Número              : 11168

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00007

Agrupamento              : 00071

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

Referência às notas relacionadas:

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

 

02109  - 00001 - 6.0    - 00024  - DESVINCULAÇÃO DE VALORES NAS FATURAS NA VINCULAÇÃO

03752  - 00002 - 7.0    - 00001  - VINCULAÇÃO -  ESTORNO AUTOMATICO POR ERRO NA CONTABILIZAÇÃO

06218  - 00003 - 7.0    - 00005  - VALORES MANTIDOS NO EXTERIOR - DISPONIBILIDADE NO EXTERIOR

10202  - 00004 - 8.0    - 00003  - VINCULAÇÃO - PREENCHIMENTO DO CAMPO SOCIEDADE PARCEIRA.

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

VME - DISPONIBILIDADE FATURAS - VINCULAÇÃO - BLOQUEIO DE FATURAS

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

Palavras Chave:

VME - DISPONIBILIDADE FATURAS - VINCULAÇÃO

BLOQUEIO DE FATURAS PARA ALTERAÇÃO

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

Objetos da nota:

REPS /PWS/MZYCB009F03

REPS /PWS/MZYCB009F04

REPS /PWS/MZYCB009I01

REPS /PWS/MZYCB034F01

REPT /PWS/SAPMZYCB009

REPT /PWS/SAPMZYCB034

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F03

 

...

      if sy-subrc eq 0.

        move itab_t052u-text1 to itab_zycbt005-text1.

      else.

        clear itab_zycbt005-text1.

      endif.

      move itab_zycbt017-vlslf to itab_zycbt005-vlslf.

      modify itab_zycbt005 transporting vlslf text1

             where nrinvoic = itab_zycbt017-nrinvoic

               and nrparcf  = itab_zycbt017-nrparcf

               and gsberf   = itab_zycbt017-gsberf.

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

      perform lock_record_fatura.

* << Fim da inclusão

    endif.

  endloop.

  move itab_zycbt005[] to itab_zycbt005_ant[].

endform.

form limpa_itab_zycbt005_aux4.

  refresh itab_zycbt005_aux4.

  clear itab_zycbt005_aux4.

endform.

form carrega_zycbe005.

  clear: itab_zycbt017, /pws/zycbe017, itab_zycbt017-zterm,

...

 

...

       exceptions

            foreign_lock   = 1

            system_failure = 2.

  case sy-subrc.

    when 1.

      message w015 with text-001 text-150.

      delete itab_zycbt005     where nrinvoic = itab_zycbt005-nrinvoic

                                 and nrparcf  = itab_zycbt005-nrparcf

                                 and gsberf   = itab_zycbt005-gsberf.

      delete itab_zycbt017_aux where nrinvoic = itab_zycbt005-nrinvoic

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

                                 and nrparcf  = itab_zycbt005-nrparcf

                                 and gsberf   = itab_zycbt005-gsberf.

      if sy-tcode = c_transacao_c.

        /pws/zycbe001-slvinc =

          /pws/zycbe001-slvinc + itab_zycbt005-vlvinc.

      endif.

      delete itab_zycbt017 where nrinvoic = itab_zycbt005-nrinvoic

* << Fim da inclusão

                                 and nrparcf  = itab_zycbt005-nrparcf

                                 and gsberf   = itab_zycbt005-gsberf.

    when 2.

      message a015 with text-066.

  endcase.

endform.

form unlock_record_fatura using wa_zycbt005f like /pws/zycbt005.

  if not wa_zycbt005f is initial.

    call function '/PWS/ZYCB_DEQUEUE_ZYCBT017V'

         exporting

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F04

 

...

                i_bloqueia    = space

           TABLES

                itab_zycbt224 = itab_zycbe224_erro

           EXCEPTIONS

                zycbe224_null = 1

                erro_bloqueio = 2

                OTHERS        = 3.

    ENDIF.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM valida_alt_disp.

  TYPES:

    BEGIN OF t_zycbt017_saldo,

      nrinvoic TYPE /pws/zycbt017-nrinvoic,

      nrparcf  TYPE /pws/zycbt017-nrparcf,

      gsberf   TYPE /pws/zycbt017-gsberf,

      vlslf    TYPE /pws/zycbt017-vlslf,

    END OF t_zycbt017_saldo.

  DATA: itab_zycbt017_saldo TYPE TABLE OF t_zycbt017_saldo,

        wa_zycbt017_saldo   TYPE t_zycbt017_saldo,

        v_saldo             TYPE /pws/zycbt017-vlslf,

        v_tabix             TYPE sy-tabix.

  IF sy-tcode EQ c_transacao_c.

    CHECK NOT itab_zycbt005[] IS INITIAL.

    SELECT nrinvoic nrparcf gsberf vlslf

      FROM /pws/zycbt017

      INTO TABLE itab_zycbt017_saldo

      FOR ALL ENTRIES IN itab_zycbt005

      WHERE nrinvoic = itab_zycbt005-nrinvoic

        AND nrparcf  = itab_zycbt005-nrparcf

        AND gsberf   = itab_zycbt005-gsberf.

    CHECK sy-subrc EQ 0.

    LOOP AT itab_zycbt005.

      v_tabix = sy-tabix.

      READ TABLE itab_zycbt017_saldo INTO wa_zycbt017_saldo

        WITH KEY nrinvoic = itab_zycbt005-nrinvoic

                 nrparcf  = itab_zycbt005-nrparcf

                 gsberf   = itab_zycbt005-gsberf.

      IF sy-subrc EQ 0.

        v_saldo = itab_zycbt005-vlslf + itab_zycbt005-vlme_p.

        IF v_saldo NE wa_zycbt017_saldo-vlslf.

          MESSAGE e061 WITH text-514 itab_zycbt005-nrinvoic

                            text-514 text-515.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ELSEIF sy-tcode EQ c_transacao_a.

    CHECK NOT itab_zycbt005_ant[] IS INITIAL.

    SELECT nrinvoic nrparcf gsberf vlslf

      FROM /pws/zycbt017

      INTO TABLE itab_zycbt017_saldo

      FOR ALL ENTRIES IN itab_zycbt005_ant

      WHERE nrinvoic = itab_zycbt005_ant-nrinvoic

        AND nrparcf  = itab_zycbt005_ant-nrparcf

        AND gsberf   = itab_zycbt005_ant-gsberf.

    CHECK sy-subrc EQ 0.

    LOOP AT itab_zycbt005_ant.

      v_tabix = sy-tabix.

      READ TABLE itab_zycbt005 WITH KEY

        nrinvoic = itab_zycbt005_ant-nrinvoic

        nrparcf  = itab_zycbt005_ant-nrparcf

        gsberf   = itab_zycbt005_ant-gsberf.

      CHECK itab_zycbt005-vlvinc NE itab_zycbt005_ant-vlvinc.

      READ TABLE itab_zycbt017_saldo INTO wa_zycbt017_saldo

        WITH KEY nrinvoic = itab_zycbt005_ant-nrinvoic

                 nrparcf  = itab_zycbt005_ant-nrparcf

                 gsberf   = itab_zycbt005_ant-gsberf.

      IF sy-subrc EQ 0.

        IF itab_zycbt005_ant-vlslf NE wa_zycbt017_saldo-vlslf.

          MESSAGE e061 WITH text-514 itab_zycbt005_ant-nrinvoic

                            text-514 text-515.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB009I01

 

...

       AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD '/PWS/ZYCB001_E'

                                      .

        IF sy-subrc EQ 0.

          SET PARAMETER ID '/PWS/ZYCBP019' FIELD v_valor.

          CALL TRANSACTION '/PWS/ZYCB001_E' AND SKIP FIRST SCREEN .

        ELSE.

          MESSAGE e261(sf) WITH '/PWS/ZYCB001_E'.

        ENDIF.

      ENDIF.

    WHEN 'SAVE'.

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

      PERFORM valida_alt_disp.

* << Fim da inclusão

      IF NOT /pws/zycbe006-dtpagext IS INITIAL

     AND NOT itab_zycbt005[] IS INITIAL

     AND ( itab_zycbt005-tpcontr(1) EQ 'P'

        OR itab_zycbt005-tpcontr(1) EQ 'S' ).

        CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

             EXPORTING

                  defaultoption  = 'Y'

                  textline1      = text-511

                  textline2      = text-512

                  titel          = text-510

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB034F01

 

...

endform.

form adicionar_disponibilidade.

  data:

    wa_disp     like line of itab_disp_30,

    wa_zycbt226 like line of itab_zycbt226,

    v_total     type /pws/zycbe238-vldisp,

    v_answer(1) type c,

    v_ok(1)     type c,

    itab_modo   type standard table of spopli,

    wa_modo     like line of itab_modo.

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

  PERFORM verifica_bloqueio.

* << Fim da inclusão

  loop at itab_zycbt226 into wa_zycbt226

    where mark = 'X'.

    clear:

      v_total.

    loop at itab_disp_30 into wa_disp

      where nrseq = wa_zycbt226-nrseq.

      v_total = v_total + wa_disp-vldisp.

    endloop.

    loop at itab_disp_70 into wa_disp

      where nrseq = wa_zycbt226-nrseq.

...

 

...

      read table itab_icon with key name = c_icon_change.

      if sy-subrc = 0.

        p_icone = itab_icon-id.

      endif.

  endcase.

endform.

form processa_disponibilidade

  using p_itab_disp     type t_t_disponibilidade.

  data:

    v_tabix type sy-tabix.

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

  DATA: v_ok TYPE c.

* << Fim da inclusão

  field-symbols:

    <fs_disp> like line of p_itab_disp.

  check <fs_op> is assigned.

  read table itab_zycbt007 into wa_zycbt007

    with key bukrs = <fs_op>-bukrs.

  read table itab_zyglt009 into wa_zyglt009

    with key bukrs = <fs_op>-bukrs.

  loop at p_itab_disp assigning <fs_disp>

    where nrseq = <fs_op>-nrseq.

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

    v_ok = 'S'.

    PERFORM verif_alt_fatura USING <fs_disp>

                             CHANGING v_ok.

    IF v_ok = 'N'.

      CONTINUE.

    ENDIF.

* << Fim da inclusão

    wa_controle-msg_cnt = wa_controle-msg_cnt + 1.

    if <fs_disp>-destino eq c_70.

      perform processa_contrato

        using itab_contrato

              <fs_disp>.

    endif.

    if wa_zycbt007-cont_disp = 'X'.

      perform estorno_disponibilidade

        changing <fs_disp>.

    endif.

...

 

...

        using '/PWS/ZYCBM'

              'E'

              'Campo não está preenchido.'(m13)

              wa_zycbt034-campo

              '-'

              wa_zycbt034-descricao

              '061'.

    endloop.

  endif.

endform.

* >> Início da inclusão:

FORM verifica_bloqueio.

  DATA: wa_zycbt226 LIKE LINE OF itab_zycbt226.

  CHECK sy-tcode EQ c_transacao_c OR

        sy-tcode EQ c_transacao_a.

  LOOP AT itab_zycbt226 INTO wa_zycbt226

    WHERE mark = 'X'.

    CALL FUNCTION '/PWS/ZYCB_ENQUEUE_ZYCBT017V'

         EXPORTING

              nrinvoic       = wa_zycbt226-nrinvoic

              nrparcf        = wa_zycbt226-nrparcf

              gsberf         = wa_zycbt226-gsberf

         EXCEPTIONS

              foreign_lock   = 1

              system_failure = 2.

    CASE sy-subrc.

      WHEN 1.

        CLEAR ok_code.

        MESSAGE e061 WITH text-070 wa_zycbt226-nrinvoic

              text-071.

        CLEAR wa_zycbt226-mark.

        MODIFY itab_zycbt226 FROM wa_zycbt226.

      WHEN 2.

        MESSAGE a015 WITH text-066.

    ENDCASE.

  ENDLOOP.

ENDFORM.

FORM verif_alt_fatura USING    p_disp TYPE t_disponibilidade

                      CHANGING p_ok.

  DATA: wa_zycbt017 TYPE t_s_zycbt017,

        v_saldo     TYPE /pws/zycbt017-vlslf.

  CHECK NOT p_disp-operacao IS INITIAL.

  READ TABLE itab_zycbt017 INTO wa_zycbt017

    WITH KEY nrinvoic = <fs_op>-nrinvoic

             nrparcf  = <fs_op>-nrparcf

             gsberf   = <fs_op>-gsberf.

  SELECT SINGLE vlslf

    FROM /pws/zycbt017

    INTO v_saldo

    WHERE nrinvoic = <fs_op>-nrinvoic

      AND nrparcf  = <fs_op>-nrparcf

      AND gsberf   = <fs_op>-gsberf.

  IF wa_zycbt017-vlslf NE v_saldo.

    p_ok = 'N'.

    CASE p_disp-operacao.

      WHEN c_novo.

        PERFORM message_store USING

          '/PWS/ZYCBM'

          'E'

          text-070

          <fs_op>-nrinvoic

          text-072

          text-073

          '061'.

      WHEN c_excluido.

        PERFORM message_store USING

          '/PWS/ZYCBM'

          'E'

          text-070

          <fs_op>-nrinvoic

          text-072

          text-074

          '061'.

    ENDCASE.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCB009

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 514

 

Texto: (6 caracteres)

"Fatura"

 

Comprimento máximo: 7

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 515

 

Texto: (28 caracteres)

"alterada pela Disp. Faturas."

 

Comprimento máximo: 28

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 516

 

Texto: (23 caracteres)

"Gravação não permitida."

 

Comprimento máximo: 23

 

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCB034

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 070

 

Texto: (6 caracteres)

"Fatura"

 

Comprimento máximo: 7

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 071

 

Texto: (29 caracteres)

"bloqueada por outro processo."

 

Comprimento máximo: 29

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 072

 

Texto: (28 caracteres)

"alterada por outro processo."

 

Comprimento máximo: 28

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 073

 

Texto: (23 caracteres)

"Inclusão não efetivada."

 

Comprimento máximo: 23

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 074

 

Texto: (23 caracteres)

"Exclusão não efetivada."

 

Comprimento máximo: 23