Problema At-selection screen

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • gambitworms
    Junior Member
    • jun
    • 24

    #1

    Problema At-selection screen

    Hola a todos:

    El problema es el siguiente: Cuando ingreso un parámetro quiero que me cargue en otro parámetro de la pantalla un dato relacionado con el parámetro que ingrese primero (no se si me explico). Total que la primera vez que lo hago lo hace correctamente...pero la segunda.... Mantiene el parámetro que cargo primero. Adjunto código a ver si me podeis echar una mano gracias!!!

    AT SELECTION-SCREEN ON P_TPLNR.
    IF P_TPLNR IS INITIAL.
    MESSAGE E000 WITH TEXT-010.
    ELSE.
    SELECT SINGLE EQART LGWID INTO (IFLOT-EQART,IFLOT-LGWID)
    FROM IFLOT
    WHERE TPLNR = P_TPLNR.
    IF SY-SUBRC NE 0.
    MESSAGE E000 WITH TEXT-002.
    ELSE.
    SELECT SINGLE ARBPL INTO P_ARBPL
    FROM CRHD
    WHERE OBJID = IFLOT-LGWID.
    IF SY-SUBRC NE 0.
    P_ARBPL = ''.
    ENDIF.
    ENDIF.
    ENDIF.

    debugeo y de aquí sale el parámetro con el valor que tiene que tener pero en cuanto pasa por aqui vuelve a poner el que hay en pantalla.

    AT SELECTION-SCREEN ON P_ARBPL.
    IF P_ARBPL IS INITIAL.
    MESSAGE E000 WITH TEXT-010.
    ELSE.
    SELECT SINGLE ARBPL INTO P_ARBPL
    FROM CRHD
    WHERE ARBPL = P_ARBPL.
    IF SY-SUBRC NE 0.
    MESSAGE E000 WITH TEXT-009.
    ENDIF.
    ENDIF.


    Espero haberme explicado con claridad.
    Gracias de antemano
    Editado por última vez por gambitworms; 04/11/2008, 10:55:32.
  • Promethevs
    Member
    • ago
    • 42

    #2
    En una de esas esto te ayuda..

    Comentario

    • gambitworms
      Junior Member
      • jun
      • 24

      #3
      Muchas gracias por la ayuda. Lo he repasado por activa y por pasiva pero no logro verlo!!. Alguna idea más?? Gracias

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Hola, deberias colocar un flag, ya que cuando colocas el AT SELECTION-SCREEN va a pasar por todos esos tipos de eventos, o lo que podrias hacer es invertir el orden de los AT SELECTION-SCREEN, primero coloca el de abajo arriba y viceversa, aver como sale ...
        David Carballido Córdova

        Comentario

        • ernestocuba2009
          Junior Member
          • feb
          • 1

          #5
          Creo que esto te puede funcionar

          Hola, Gambitworms:

          Te respondo a propòsito del problema que tienes con la actualizaciòn del contenido de un paràmetro en base al valor que toma el primero.
          Pues bien... yo estaba creando un programa que gestiona algo màs o menos parecido, y la soluciòn que encontrè fue un rejuego con las diversas opciones del evento AT SELECTION-SCREEN.

          Te lo explico con una ejemplo sencillo...
          Imagina que tienes una pantalla de selecciòn con dos paràmetros, y de acuerdo al valor que toma el primero, le asignas el mismo valor al segundo paràmetro.
          Todo se resuelve con los eventos:

          AT SELECTION-SCREEN ON

          y

          AT SELECTION-SCREEN OUTPUT


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

          SELECTION-SCREEN BEGIN OF BLOCK TT WITH FRAM TITLE TEXT-002.
          PARAMETERS : P1(10) TYPE C,
          P2(10) TYPE C.
          SELECTION-SCREEN END OF BLOCK TT.

          AT SELECTION-SCREEN ON P1.

          *Este evento es para gestionar la primera toma de valor del segundo paràmetro
          P2 = P1.

          AT SELECTION-SCREEN OUTPUT.

          *Este evento, en cambio, te permite actualizar el contenido del segundo paràmetro
          *cada vez que el primer paràmetro cambia de valor

          CLEAR P2.
          P2 = P1.

          END-OF-SELECTION.


          Espero te sirva de ayuda para el problema que tenias.

          Mucha suerte y èxitos.

          Comentario

          Trabajando...