MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Meter variable por defecto en un SELECT-OPTIONS (foro/showthread.php?t=62193)

davidmc 12/04/12 09:11:54

Meter variable por defecto en un SELECT-OPTIONS
 
Buenos dias,

Tengo un problema que no consigo solucionar, y es que tengo un rango de fechas el cual quiero que tenga como valor por defecto la semana actual, es decir que en el valor low tenga el lunes anterior y el valor high el domingo siguiente a la fecha de hoy.
Lo he conseguido hacer cuando pulso la ayuda de busqueda, pero necesito que se haga cuando aparece la pantalla al ejecutar el programa.

Este es el codigo que estoy usando, con este codigo me sale bien pero cuando pulso el boton de la ayuda de busqueda, lo he intentado en el AT SELECTION-SCREEN OUTPUT y en el INITIALIZATION pero no me aparece nada.

* PANTALLA DE SELECCIÓN

SELECTION-SCREEN BEGIN OF BLOCK param WITH FRAME TITLE text-100.

SELECT-OPTIONS: s_fecha FOR sy-datum.

SELECTION-SCREEN END OF BLOCK param.

------------------------------------------------------------------------

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fecha-low.
PERFORM f_lunes_ant. " Subrutina que calcula la fecha del lunes anterior

CLEAR v_setvalue.
CONCATENATE v_fecha_lun+6(2) '.' v_fecha_lun+4(2) '.' v_fecha_lun(4) INTO v_setvalue.

CALL FUNCTION 'SET_DYNP_VALUE' " Función que coloca el valor en el campo de la pantalla
EXPORTING
i_field = 'S_FECHA-LOW'
i_repid = sy-repid
i_dynnr = sy-dynnr
i_value = v_setvalue.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_fecha-high.
PERFORM f_domingo_des. " Subrutina que calcula la fecha del domingo siguiente


CLEAR v_setvalue.
CONCATENATE v_fecha_dom+6(2) '.' v_fecha_dom+4(2) '.' v_fecha_dom(4) INTO v_setvalue.

CALL FUNCTION 'SET_DYNP_VALUE' " Función que coloca el valor en el campo de la pantalla

EXPORTING
i_field = 'S_FECHA-HIGH'
i_repid = sy-repid
i_dynnr = sy-dynnr
i_value = v_setvalue.

Espero haberme explicado bien, cualquier ayuda lo agradeceria.

kibo 12/04/12 13:10:55

Esto debes hacerlo en el evento INITIALIZATION

Deberias de completar el rango del SO y en ese evento... algo asi seria

INITIALIZATION

PERFORM f_lunes_ant using s_fecha-low.
PERFORM f_domingo_des using s_fecha-high.

s_fecha-sign = 'I'.
s_fecha-option = 'BT'.

Append s_fecha.


Calculo que con esto va a caminar...

davidmc 12/04/12 14:27:11

Muchas gracias por tu ayuda, ahora me sale correctamente :) .

kilysap 12/04/12 15:08:32

select option por default
 
buen dia yo lo encare distinto y me funciono. . .te paso lo que hice.
Espero te sirva !!!

DATA: v_fecha_lun TYPE d,
v_fecha_dom TYPE d,
p_repid TYPE d020s-prog,
p_dynnr TYPE d020s-dnum.

p_repid = sy-repid.
p_dynnr = sy-dynnr.

* PANTALLA DE SELECCIÓN

SELECTION-SCREEN BEGIN OF BLOCK param WITH FRAME TITLE t1.
SELECT-OPTIONS: s_fecha FOR sy-datum .
SELECTION-SCREEN END OF BLOCK param.

INITIALIZATION.
*CONSIGO EL VALOR DEL LUNES
PERFORM f_lunes_ant.
*CONSIGO EL VALOR DEL DOMINGO
v_fecha_dom = v_fecha_lun + 6.

*CARGO EL RANGO DEL SELECT CON LOS VALORES OBTENIDOS
MOVE: 'I' TO s_fecha-sign,
'BT' TO s_fecha-option,
v_fecha_lun TO s_fecha-low,
v_fecha_dom TO s_fecha-high.
APPEND s_fecha.


**** TITULO DEL FRAME

t1 = 'comienzo y fin de la semana'.


*&---------------------------------------------------------------------*
*& Form F_LUNES_ANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_lunes_ant .
DATA: f_week TYPE scal-week,
f_data TYPE d.

*CONSIGO SEMANA DEL AÑO
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
date = sy-datum
IMPORTING
week = f_week
EXCEPTIONS
date_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


*CONSIGO PRIMER DIA DE LA SEMANA
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
EXPORTING
week = f_week
IMPORTING
date = v_fecha_lun
EXCEPTIONS
week_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


ENDFORM. " F_LUNES_ANT


Husos Horarios son GMT. La hora en este momento es 15:02:08.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web