Ejemplo - Como Controlar Los Eventos en Tabla Con SM30
Ejemplo - Como Controlar Los Eventos en Tabla Con SM30
Ejemplo - Como Controlar Los Eventos en Tabla Con SM30
Pag. 1 de 7
Pag. 2 de 7
Pag. 3 de 7
Pag. 4 de 7
" CAMBIAR_ASPECTO
*&---------------------------------------------------------------------*
*&
Form VERIFICAR_AL_GRABAR
*&---------------------------------------------------------------------*
*
Salida de programa
*----------------------------------------------------------------------*
form verificar_al_grabar .
data: begin of li_zhc00012 occurs 0.
include structure zhc00012.
data: modif,
end of li_zhc00012.
data: lv_date like sy-datum,
lv_hora like sy-uzeit.
li_zhc00012[] = total[].
loop at li_zhc00012.
zhc00012 = li_zhc00012.
perform verificacion_campos.
endloop.
clear sy-subrc.
check vim_abort_saving is initial.
get time.
lv_date = sy-datum.
lv_hora = sy-uzeit.
loop at li_zhc00012 where not modif is initial.
li_zhc00012-aenam = sy-uname.
li_zhc00012-aedat = lv_date.
li_zhc00012-aezeit = lv_hora.
modify li_zhc00012.
endloop.
total[] = li_zhc00012[].
endform.
" VERIFICAR_AL_GRABAR
*&---------------------------------------------------------------------*
*&
Form VERIFICAR_ENTRADA
*&---------------------------------------------------------------------*
*
Verificacin de la lnea entrada o modificada
*----------------------------------------------------------------------*
form verificar_entrada.
data: begin of li_zhc00012 occurs 0.
include structure zhc00012.
data: modif,
end of li_zhc00012.
data: lv_date like sy-datum,
lv_hora like sy-uzeit.
* IF NOT v_privez IS INITIAL.
* CLEAR v_privez.
perform verificacion_campos.
Pag. 5 de 7
"verificar_ENTRADA
*&---------------------------------------------------------------------*
*&
Form VERIFICACION_CAMPOS
*&---------------------------------------------------------------------*
*
Verificacin de los campos
*----------------------------------------------------------------------*
form verificacion_campos .
* El cdigo de Concepto es obligatorio
if zhc00012-codint is initial.
message s398(00) with text-e02 display like 'E'.
*
text-e02: Cdigo de Concepto obligatorio
vim_abort_saving = 'X'.
exit.
endif.
* Buscamos la descripcin del Cdigo de Concepto
perform buscar_descc using zhc00012-codint
changing zhc00012-descc.
* La Descripcin es obligatoria
if zhc00012-descc is initial.
message s398(00) with text-e03 display like 'E'.
*
text-e03: Descripcin obligatoria
vim_abort_saving = 'X'.
exit.
endif.
* El cdigo de cliente es obligatorio si la cuenta de mayor no est
* informada
if zhc00012-kunnr is initial and zhc00012-hkont is initial.
message s398(00) with text-e06 display like 'E'.
*
text-e06: Se debe informar la Cta.Cliente o la Cta.Mayor
vim_abort_saving = 'X'.
exit.
endif.
* La Clave Contable Positiva es obligatoria
if zhc00012-clvpos is initial.
message s398(00) with text-e04 display like 'E'.
*
text-e04: Clave Cont. Positiva obligatoria
vim_abort_saving = 'X'.
exit.
endif.
* La Clave Contable Negativa es obligatoria
if zhc00012-clvneg is initial.
message s398(00) with text-e05 display like 'E'.
*
text-e05: Clave Cont. Negativa obligatoria
vim_abort_saving = 'X'.
exit.
endif.
* Si el campo inf.mov.contrario = 'X' debe informarse cta.mov.contrario
if zhc00012-infmvc = 'X' and zhc00012-hkontc is initial.
message s398(00) with text-e08 display like 'E'.
*
text-e08: Debe informarse la cuenta de movimiento contrario
vim_abort_saving = 'X'.
exit.
endif.
endform.
" VERIFICACION_CAMPOS
Pag. 6 de 7
*&---------------------------------------------------------------------*
*&
Form BUSCAR_DESCC
*&---------------------------------------------------------------------*
*
Buscar descripcin del Cdigo de Concepto
*----------------------------------------------------------------------*
*
-->PI_CODINT Cdigo Concepto
*
<--PO_DESCC Descripcin
*----------------------------------------------------------------------*
form buscar_descc using pi_codint
changing po_descc.
clear po_descc.
select single descc
into po_descc
from zhc00011
where codint eq pi_codint.
endform.
" BUSCAR_DESCC
Pag. 7 de 7