Ejemplo - Como Controlar Los Eventos en Tabla Con SM30
-
Upload
martinjosep -
Category
Documents
-
view
12 -
download
0
description
Transcript of Ejemplo - Como Controlar Los Eventos en Tabla Con SM30
Ejemplo de cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________
Pag. 1 de 7
Ejemplo de cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________
Pag. 2 de 7
Ejemplo de cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________
Pag. 3 de 7
Ejemplo de cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________
*----------------------------------------------------------------------****INCLUDE LZHC00012F01 .*----------------------------------------------------------------------*
*&---------------------------------------------------------------------**& Form CAMBIAR_ASPECTO*&---------------------------------------------------------------------** Ocultar columnas y verificación de si la transacción se ha* ejecutado desde el Menu del Concentrador de Hojas de Caja*----------------------------------------------------------------------*form cambiar_aspecto .
* Definición 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 cómo se hace una User_Exit en una Tabla con actualización 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*&---------------------------------------------------------------------** Verificación de la línea 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 cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________* ELSE.* v_privez = c_on.* ENDIF.
endform. "verificar_ENTRADA
*&---------------------------------------------------------------------**& Form VERIFICACION_CAMPOS*&---------------------------------------------------------------------** Verificación de los campos*----------------------------------------------------------------------*form verificacion_campos .
* El código de Concepto es obligatorio if zhc00012-codint is initial. message s398(00) with text-e02 display like 'E'.* text-e02: Código de Concepto obligatorio vim_abort_saving = 'X'. exit. endif.
* Buscamos la descripción del Código de Concepto perform buscar_descc using zhc00012-codint changing zhc00012-descc.
* La Descripción es obligatoria if zhc00012-descc is initial. message s398(00) with text-e03 display like 'E'.* text-e03: Descripción obligatoria vim_abort_saving = 'X'. exit. endif.
* El código 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 cómo se hace una User_Exit en una Tabla con actualización SM30
_______________________________________________________________
*&---------------------------------------------------------------------**& Form BUSCAR_DESCC*&---------------------------------------------------------------------** Buscar descripción del Código de Concepto*----------------------------------------------------------------------** -->PI_CODINT Código Concepto* <--PO_DESCC Descripción*----------------------------------------------------------------------*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