Ejemplo - Como Controlar Los Eventos en Tabla Con SM30

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 7

Ejemplo de cmo se hace una User_Exit

en una Tabla con actualizacin SM30


_______________________________________________________________

Pag. 1 de 7

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________

Pag. 2 de 7

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________

Pag. 3 de 7

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________
*----------------------------------------------------------------------*
***INCLUDE LZHC00012F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form CAMBIAR_ASPECTO
*&---------------------------------------------------------------------*
*
Ocultar columnas y verificacin de si la transaccin se ha
*
ejecutado desde el Menu del Concentrador de Hojas de Caja
*----------------------------------------------------------------------*
form cambiar_aspecto .
* Definicin tabla local para mostrar/ocultar columnas
data: li_movcon_cols type standard table of cxtab_column
with non-unique default key
with header line.
data: li_zhc00012_cols like li_movcon_cols occurs 0 with header line.
data: lv_modif.
* Importamos el valor de V_TRANSOK que est en memoria
import v_transok from memory id 'OKTRANS'.
if v_transok is initial.
message s398(00) with text-e01.
*
text-e01: Acceso no permitido al aplicativo
leave program.
endif.
* Inicializamos y exportamos a memoria el valor de V_TRANSOK
clear v_transok.
export v_transok to memory id 'OKTRANS'.
v_privez = c_on.
* Ocultamos columnas
li_zhc00012_cols[] = <vim_tctrl>-cols[].
loop at li_zhc00012_cols.
clear lv_modif.
* Protegemos
if li_zhc00012_cols-screen-name = 'ZHC00012-DESCC'.
li_zhc00012_cols-screen-input = '0'.
lv_modif = 'X'.
endif.
* Escondemos
if li_zhc00012_cols-screen-name = 'ZHC00012-AENAM' or
li_zhc00012_cols-screen-name = 'ZHC00012-AEDAT' or
li_zhc00012_cols-screen-name = 'ZHC00012-AEZEIT' .
li_zhc00012_cols-invisible = '1'.
lv_modif = 'X'.
endif.
check lv_modif = 'X'.
modify li_zhc00012_cols.
endloop.
<vim_tctrl>-cols[] = li_zhc00012_cols[].
x_namtab-readonly = 'H'.
modify x_namtab transporting readonly where viewfield = 'AENAM'
or viewfield = 'AEDAT'

Pag. 4 de 7

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________
or viewfield = 'AEZEIT'.
endform.

" 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

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________
* ELSE.
* v_privez = c_on.
* ENDIF.
endform.

"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

Ejemplo de cmo se hace una User_Exit


en una Tabla con actualizacin SM30
_______________________________________________________________

*&---------------------------------------------------------------------*
*&
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

También podría gustarte