Ejemplo - Como Controlar Los Eventos en Tabla Con SM30

8
Ejemplo de cómo se hace una User_Exit en una Tabla con actualización SM30 ___________________________________________________________ ____ Pag. 1 de 8

description

Ejemplo - Como Controlar Los Eventos en Tabla Con SM30

Transcript of Ejemplo - Como Controlar Los Eventos en Tabla Con SM30

Page 1: 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

Page 2: 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. 2 de 7

Page 3: 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. 3 de 7

Page 4: 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

_______________________________________________________________

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

Page 5: 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

_______________________________________________________________ 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

Page 6: 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

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

Page 7: 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

_______________________________________________________________

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