Meter variable por defecto en un SELECT-OPTIONS

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • davidmc
    Junior Member
    • mar
    • 2

    #1

    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.
    Editado por última vez por davidmc; 12/04/2012, 09:15:46.
  • kibo
    Senior Member
    • may
    • 177

    #2
    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...
    http://diariotitular.com/contacto/

    Comentario

    • davidmc
      Junior Member
      • mar
      • 2

      #3
      Muchas gracias por tu ayuda, ahora me sale correctamente .

      Comentario

      • kilysap
        Junior Member
        • abr
        • 3

        #4
        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

        Comentario

        Trabajando...