Anuncio

Colapsar
No hay anuncio todavía.

Lanzar Evento

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • #16
    También decir que no he puesto la parte de cargar datos porque no consigo que me entre en el evento correspondiente ('LISTA'), adjunto imagen.

    Código:
    PROCESS BEFORE OUTPUT.
    
    MODULE STATUS_1000.
    
    module encontrar_pernr.
    module recuperar_datos_tc1000.
    loop at it_ZHORESFORMACIO with control TC1000.
    endloop.
    
    PROCESS AFTER INPUT.
    
    MODULE USER_COMMAND_1000.
    
    * Control table
    loop at it_ZHORESFORMACIO.
    endloop.
    
    * Comprobación que objetivos son diferentes
    field wa_ZHRFORM_EXT-OBJECTIU_1 module user_command_1000.
    field wa_ZHRFORM_EXT-OBJECTIU_2 module user_command_1000.
    
    * Valores fijos de campos Objetivo1, Objetivo2 y Cursos existentes
    process on value-request.
    field wa_ZHRFORM_EXT-OBJECTIU_1 module valors_objectiu_1.
    field wa_ZHRFORM_EXT-OBJECTIU_2 module valors_objectiu_2.
    [COLOR="red"]field IT2_HRP1000-STEXT module carregar_dades_curs.[/COLOR]
    MODULE CARREGAR_DADES_CURS

    Código:
    MODULE CARREGAR_DADES_CURS INPUT.
    
      CLEAR: IT2_HRP1000-STEXT.
      CLEAR: IHELP_FIELDS, HELPTAB.
    
      TNAM = 'HRP1000'.
      FNAM = 'STEXT'.
    
      REFRESH IHELP_FIELDS.
      MOVE 'HRP1000' TO IHELP_FIELDS-TABNAME.
      MOVE 'STEXT' TO IHELP_FIELDS-FIELDNAME.
      MOVE 'X' TO IHELP_FIELDS-SELECTFLAG.
      APPEND IHELP_FIELDS.
    
      MOVE 'DNTAB' TO IHELP_FIELDS-TABNAME.
      MOVE 'FIELDTEXT' TO IHELP_FIELDS-FIELDNAME.
      MOVE ' ' TO IHELP_FIELDS-SELECTFLAG.
      APPEND IHELP_FIELDS.
    
      REFRESH HELPTAB.
    
      PERFORM OBTENER_LISTA_CURSOS_EN_STRUCT.
    
      LOOP AT IT2_HRP1000.
    
        MOVE IT2_HRP1000-OBJID TO HELPTAB.
        APPEND HELPTAB.
        MOVE IT2_HRP1000-STEXT TO HELPTAB.
        APPEND HELPTAB.
    
      ENDLOOP.
    
      LOOP AT HELPTAB.
        IF FLAG = 1.
          VALUE_TAB_WA-STEXT = HELPTAB.
        ENDIF.
        IF FLAG = 2.
          VALUE_TAB_WA-STEXT_TEXT = HELPTAB.
          APPEND VALUE_TAB_WA TO VALUE_TAB.
        ENDIF.
        IF FLAG = 1.
          FLAG = 2.
        ELSE.
          FLAG = 1.
        ENDIF.
      ENDLOOP.
    
    CLEAR: RETURN_TAB, RETURN_TAB[].
    
      RETFIELD = 'STEXT'.
      DYNPROFIELD = 'IT2_HRP1000-STEXT'.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD        = RETFIELD
          DYNPPROG        = SY-CPROG
          DYNPNR          = SY-DYNNR
          DYNPROFIELD     = DYNPROFIELD
          VALUE_ORG       = 'S'
        TABLES
          VALUE_TAB       = VALUE_TAB
          RETURN_TAB      = RETURN_TAB  [COLOR="red"]--> También he intentado hacerlo con esta tabla cuando hagan doble clic, sin embargo cuando sale de la función me sale vacia, pero el matchbox lo muestra bien.[/COLOR]
        EXCEPTIONS
          PARAMETER_ERROR = 1
          NO_VALUES_FOUND = 2
          OTHERS          = 3.
    
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    MODULE USER_COMMAND_1000

    Código:
    MODULE USER_COMMAND_1000 INPUT.
    * BACK für Lan
      IF SY-UCOMM = 'BACK'.
        OKCODE_BACK = 'X'.
        SET SCREEN 0.   LEAVE SCREEN.
      ENDIF.
    
      IF NOT 1000_ALV IS INITIAL.
        CALL METHOD CL_GUI_CFW=>FLUSH.
        CALL METHOD CL_GUI_CFW=>DISPATCH.
      ENDIF.
      IF OKCODE1000 IS INITIAL.
        OKCODE1000 = 'EVBO'.
      ENDIF.
      CASE OKCODE1000.
    *   Botón de enviar inscripción
        WHEN 'EVBO'. [COLOR="Red"]--> En este evento me entra cuando clico en el matchbox[/COLOR]
          "Debemos comprobar que todos los campos están informados
          IF FLAGCURS = 0.
            PERFORM COMPROBACIONES0.
          ELSE.
    *       Vamos por listbox, si el usuario ha escogido un curso
            PERFORM COMPROBACIONES1.
          ENDIF.
    
         [COLOR="RED"] WHEN 'LISTA'.[/COLOR] "Nunca entra aquí
    
          FLAGCURS = 1.
          BREAK-POINT.
        
     ENDCASE.
    Archivos Adjuntos

    Comentario


    • #17
      A ver si hacemos algo...

      Supongo que en el módulo CARREGAR_DADES_CURS si que estas entrando. Y supongo que en value_tab tienes los datos que devulve la ayuda de búsqueda. ¿Esos son los datos que tienes que pasar a los otros campo? ¿No puedes asignarlos directamente? Creo que el MODULE USER_COMMAND_1000. debería ir despues de todas las sentencias field.

      A ver si sacamos algo por ahí
      "Soy el señor Lobo, arreglo problemas"
      http://sapymas.blogspot.com/

      Comentario


      • #18
        Originalmente publicado por bisonye Ver Mensaje
        A ver si hacemos algo...

        Supongo que en el módulo CARREGAR_DADES_CURS si que estas entrando. Y supongo que en value_tab tienes los datos que devulve la ayuda de búsqueda. ¿Esos son los datos que tienes que pasar a los otros campo? ¿No puedes asignarlos directamente? Creo que el MODULE USER_COMMAND_1000. debería ir despues de todas las sentencias field.

        A ver si sacamos algo por ahí
        En CARREGAR_DADES_CURS si que entra, en el value_tab tengo los datos de la ayuda de busqueda, pero estos no son los datos q tengo q cargar en los otros textbox, con estos datos tengo que recorrer una tabla interna para luego poder mostrar los datos q necesito, depende del curso seran unos u otros...

        De hecho en la funcion F4IF_INT_TABLE_VALUE_REQUEST el campo RETURN_TAB me debería volver una tabla con el campo seleccionado, y este campo siempre va en blanco. No se porque...

        Y lo del MODULE USER_COMMAND_1000 detras de los fields no puede ser, la estructura es así, si lo cambias da error.

        Gracias por intentar ayudarme!!!

        Comentario


        • #19
          Originalmente publicado por kilofafeure Ver Mensaje
          En CARREGAR_DADES_CURS si que entra, en el value_tab tengo los datos de la ayuda de busqueda, pero estos no son los datos q tengo q cargar en los otros textbox, con estos datos tengo que recorrer una tabla interna para luego poder mostrar los datos q necesito, depende del curso seran unos u otros...

          De hecho en la funcion F4IF_INT_TABLE_VALUE_REQUEST el campo RETURN_TAB me debería volver una tabla con el campo seleccionado, y este campo siempre va en blanco. No se porque...

          Y lo del MODULE USER_COMMAND_1000 detras de los fields no puede ser, la estructura es así, si lo cambias da error.

          Gracias por intentar ayudarme!!!
          ¿Y por que no haces el loop y asignas los datos en carregar dades?
          "Soy el señor Lobo, arreglo problemas"
          http://sapymas.blogspot.com/

          Comentario


          • #20
            Originalmente publicado por bisonye Ver Mensaje
            ¿Y por que no haces el loop y asignas los datos en carregar dades?
            Así si que funciona, pero ahora me aparecen otros problemas, ya que tengo que bloquear algunas cosas...jejejeje...muchas gracias por todo!!! si no lo consigo solucionar volveré a postear...al menos estoy aprendiendo un monton que es de lo que se trata...muchas gracias otra vez!!!
            Editado por última vez por kilofafeure; 12/05/2009, 12:06:44.

            Comentario


            • #21
              Pues bueno, si que me actualiza pero no lo hace bien y no se como hacerlo...ahora lo que me pasa es que yo selecciono un curso del matchcode y me bloquea los textbox de entrada pertinentes pero no me carga las fechas, sin embargo si le doy a otro curso si que me las carga...he provado con refresh y no sirve para esto, también con modify y nada...

              Código:
              MODULE CARREGAR_DADES_CURS INPUT.
              
                " Carreguem tots els cursos, nomes un cop
                IF FLAGCURS = 0.
              
                  CLEAR: IHELP_FIELDS, HELPTAB.
                  CLEAR: VALUE_TAB, VALUE_TAB[].
              
                  TNAM = 'HRP1000'.
                  FNAM = 'STEXT'.
              
                  REFRESH IHELP_FIELDS.
                  MOVE 'HRP1000' TO IHELP_FIELDS-TABNAME.
                  MOVE 'STEXT' TO IHELP_FIELDS-FIELDNAME.
                  MOVE 'X' TO IHELP_FIELDS-SELECTFLAG.
                  APPEND IHELP_FIELDS.
              
                  MOVE 'DNTAB' TO IHELP_FIELDS-TABNAME.
                  MOVE 'FIELDTEXT' TO IHELP_FIELDS-FIELDNAME.
                  MOVE ' ' TO IHELP_FIELDS-SELECTFLAG.
                  APPEND IHELP_FIELDS.
              
                  REFRESH HELPTAB.
              
                  PERFORM OBTENER_LISTA_CURSOS_EN_STRUCT.
              
                  LOOP AT IT2_HRP1000.
              
                    MOVE IT2_HRP1000-OBJID TO HELPTAB.
                    APPEND HELPTAB.
                    MOVE IT2_HRP1000-STEXT TO HELPTAB.
                    APPEND HELPTAB.
              
                  ENDLOOP.
              
                  LOOP AT HELPTAB.
                    IF FLAG = 1.
                      VALUE_TAB_WA-STEXT = HELPTAB.
                    ENDIF.
                    IF FLAG = 2.
                      VALUE_TAB_WA-STEXT_TEXT = HELPTAB.
                      APPEND VALUE_TAB_WA TO VALUE_TAB.
                    ENDIF.
                    IF FLAG = 1.
                      FLAG = 2.
                    ELSE.
                      FLAG = 1.
                    ENDIF.
                  ENDLOOP.
              
                  CLEAR: RETURN_TAB, RETURN_TAB[].
              
                  RETFIELD = 'STEXT'.
                  DYNPROFIELD = 'IT2_HRP1000-STEXT'.
                  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
                    EXPORTING
                      RETFIELD        = RETFIELD
                      DYNPPROG        = SY-CPROG
                      DYNPNR          = SY-DYNNR
                      DYNPROFIELD     = DYNPROFIELD
                      VALUE_ORG       = 'S'
                    TABLES
                      VALUE_TAB       = VALUE_TAB
                      RETURN_TAB      = RETURN_TAB
                    EXCEPTIONS
                      PARAMETER_ERROR = 1
                      NO_VALUES_FOUND = 2
                      OTHERS          = 3.
              
                  IF SY-SUBRC <> 0.
              * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
                  ENDIF.
              
                  FLAGCURS = 1.
              
              *Un cop carregats si es selecciona un curs aquí tractem la resta de camps
                ELSE.
              
                    DATA: STRUCT_VALUE_TAB LIKE LINE OF VALUE_TAB.
              
                    LOOP AT VALUE_TAB INTO STRUCT_VALUE_TAB.
              
                        IF STRUCT_VALUE_TAB-STEXT = IT2_HRP1000-STEXT.
                          SELECT BEGDA ENDDA FROM HRP1000
                                             INTO CORRESPONDING FIELDS OF WA_ZHRFORM_EXT
                                             WHERE OBJID = STRUCT_VALUE_TAB-STEXT.
                          ENDSELECT.
                        ENDIF.
              
                    ENDLOOP.
              
                    LOOP AT SCREEN.
                      IF SCREEN-GROUP1 = '069' AND SCREEN-GROUP2 = '069'.
                        SCREEN-ACTIVE = 1.
                        SCREEN-INPUT = 0.
                        SCREEN-OUTPUT = 1.
                        SCREEN-INVISIBLE = 0.
                        MODIFY SCREEN.
                      ENDIF.
                    ENDLOOP.
              
                  ENDIF.
              
                ENDMODULE.                 " CARREGAR_DADES_CURS  INPUT

              Comentario


              • #22
                Entonces esto:
                Código:
                 LOOP AT SCREEN.
                        IF SCREEN-GROUP1 = '069' AND SCREEN-GROUP2 = '069'.
                          SCREEN-ACTIVE = 1.
                          SCREEN-INPUT = 0.
                          SCREEN-OUTPUT = 1.
                          SCREEN-INVISIBLE = 0.
                          MODIFY SCREEN.
                        ENDIF.
                      ENDLOOP
                Lo hace bien pero esto:
                Código:
                 IF STRUCT_VALUE_TAB-STEXT = IT2_HRP1000-STEXT.
                            SELECT BEGDA ENDDA FROM HRP1000
                                               INTO CORRESPONDING FIELDS OF WA_ZHRFORM_EXT
                                               WHERE OBJID = STRUCT_VALUE_TAB-STEXT.
                            ENDSELECT.
                          ENDIF.
                No funciona

                No se como está definida tu pantalla pero, ¿por que no pones directamente el nombre de los campos a los que quieres asignar los valores? Prueba tambien a poner un chain endchain para agrupar los campos que quieres modificar.

                A ver si lo sacamos
                "Soy el señor Lobo, arreglo problemas"
                http://sapymas.blogspot.com/

                Comentario


                • #23
                  Código:
                   IF STRUCT_VALUE_TAB-STEXT = IT2_HRP1000-STEXT.
                              SELECT BEGDA ENDDA FROM HRP1000
                                                 INTO CORRESPONDING FIELDS OF WA_ZHRFORM_EXT
                                                 WHERE OBJID = STRUCT_VALUE_TAB-STEXT.
                              ENDSELECT.
                            ENDIF.
                  No funciona

                  No se como está definida tu pantalla pero, ¿por que no pones directamente el nombre de los campos a los que quieres asignar los valores? Prueba tambien a poner un chain endchain para agrupar los campos que quieres modificar.

                  A ver si lo sacamos[/QUOTE]

                  Te explico como tengo mi dynpro...los campos de mi dynpro que quiero bloquear los tengo con la estructura WA_ZHRFORM_EXT, es decir, para la fecha inicial sera WA_ZHRFORM_EXT-BEGDA y para la final WA_ZHRFORM_EXT-ENDDA, y el campo IT2_HRP1000-STEXT es el que me marca el curso a buscar, es el nombre del campo de la dynpro...es decir que si estoy asignando directamente el nombre de los campos a los que quiero asignar valores...lo del chain endchain lo acabo de mirar y es para agrupar campos, yo los tengo agrupados en la dynpro con el 069 069, mersy!! sigo investigando a ver...
                  Editado por última vez por kilofafeure; 13/05/2009, 08:48:19.

                  Comentario


                  • #24
                    Bueno ya esta solucionado, era tan facil como añadir el codigo al PBO y quitarlo del PAI...ahora funciona a la perfección!! muchas gracias por todo!!

                    Comentario


                    • #25
                      Originalmente publicado por kilofafeure Ver Mensaje
                      Bueno ya esta solucionado, era tan facil como añadir el codigo al PBO y quitarlo del PAI...ahora funciona a la perfección!! muchas gracias por todo!!
                      Jo macho que triste....

                      Para la próxima ya lo se xDDD
                      "Soy el señor Lobo, arreglo problemas"
                      http://sapymas.blogspot.com/

                      Comentario

                      Trabajando...
                      X