Você está na página 1de 2

*Tabelas

DATA t_paga TYPE STANDARD TABLE OF ztpagamentos_hdv.


* Estruturas

* Variaveis
DATA o_root TYPE REF TO cx_root.
DATA v_texto TYPE string.
**********************************************************************
* Seleção de dados

SELECT *
FROM ztpagamentos_hdv
INTO TABLE t_paga
WHERE gjahr IN s_gjahr
AND idapt IN s_aprtmt
AND idpre IN s_predio.

IF sy-subrc = 0.
SORT t_paga BY gjahr idapt idpre.
ELSE.
"Não foram encontrados dados para a seleção indicada
MESSAGE s789(m7) DISPLAY LIKE 'E'.
RETURN.
ENDIF.

* Pop-Up
CALL FUNCTION 'STC1_POPUP_WITH_TABLE_CONTROL'
EXPORTING
header = 'Atualizar Dados de Pagamentos'
tabname = 'ZTPAGAMENTOS_HDV'
* NO_INSERT = abap_on
no_delete = abap_on
no_button = abap_false
TABLES
table = t_paga
EXCEPTIONS
no_more_tables = 1
too_many_fields = 2
nametab_not_valid = 3
handle_not_valid = 4
OTHERS = 5.
IF sy-subrc <> 0.
"Erro ao gerar popup de Ataulização de Dados
MESSAGE s023 DISPLAY LIKE 'E'.
RETURN.
ENDIF.

"Bloquea a tabela toda dos pagamentos, para fazer atualização de varios


registos
CALL FUNCTION 'ENQUEUE_EZPAGAMENTOS_HDV'
* EXPORTING
* MODE_ZTPAGAMENTOS_HDV = 'E'
* MANDT = SY-MANDT
* GJAHR =
* IDPRE =
* IDAPT =
* X_GJAHR = ' '
* X_IDPRE = ' '
* X_IDAPT = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
* EXCEPTIONS
* FOREIGN_LOCK = 1
* SYSTEM_FAILURE = 2
* OTHERS = 3
.
IF sy-subrc = 0.
TRY.
UPDATE ztpagamentos_hdv FROM TABLE t_paga.
IF sy-subrc = 0.
COMMIT WORK AND WAIT.
"Registo(s) eliminado(s) com Sucesso
MESSAGE s022.
ELSE.
ROLLBACK WORK.
"Erro ao Eliminar o(s) registo(s)
MESSAGE s021 DISPLAY LIKE 'E'.
RETURN.
ENDIF.

CATCH cx_root INTO o_root.


v_texto = o_root->get_text( ).
MESSAGE v_texto TYPE 'S' DISPLAY LIKE 'E'.

ENDTRY.
ELSE.
"Não foi possivel obter o lock do registo
MESSAGE s020 DISPLAY LIKE 'E'.

ENDIF.

Você também pode gostar