Matchcode por modulo de función

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • nenuke
    Member
    • sep
    • 87

    #1

    Matchcode por modulo de función

    Hola,

    tengo un problema al leer los parámetros import de restricciones de mi matchcode, no se como acceder a ellos para hacer mi seleccion de datos y posteriormente mostrarlos. Me he basado en esta respuesta que encontré en el foro, pero no se bien como hacer mi select con los parametros que ha introducido el usuario.

    Os pego el código del otro post.

    Código:
    1° Parte creando un módulo de funciones que tenga la interfaz siguiente:
    
    FUNCTION ZAYUDA_MISDATOS.
    *"----------------------------------------------------------------------
    *"*"Interfase local
    *" TABLES
    *" RECORD_TAB STRUCTURE SEAHLPRES
    *" SHLP_TAB TYPE SHLP_DESCR_TAB_T
    *" CHANGING
    *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
    *" VALUE(SHLP) TYPE SHLP_DESCR_T
    *"----------------------------------------------------------------------
    
    * Defines tu tabla interna en donde tendrás losa datos que quieres 
    * tratar en el match-code
    data: begin of mis_datos occurs 0,
    campo1 like referencia,
    campo2 like referencia,
    campo3 like refrencia,
    end of mis_datos.
    
    * ESTE IF TIENE QUE IR NO LO BORRES.
    IF CALLCONTROL-STEP = 'SELECT'.
    
    * Puebla tu tabla interna, por ejemplo
    select * into corresponding fields of table mis_datos
    from <tu_tabla>
    where <tus_condiciones>.
    
    
    REFRESH RECORD_TAB.
    * ESTO PASA TUS DATOS A LA INTERFAZ DEL MATCH CODE
    * NO BORRAR.
    CALL FUNCTION 'F4UT_RESULTS_MAP'
    TABLES
    SHLP_TAB = SHLP_TAB
    RECORD_TAB = RECORD_TAB
    SOURCE_TAB = mis_datos
    CHANGING
    SHLP = SHLP
    CALLCONTROL = CALLCONTROL.
    CALLCONTROL-STEP = 'DISP'.
    ENDIF.
    ENDFUNCTION.
    
    2° vas a tu match code
    En la sección Obtención de Datos. No ingresas nada.
    En campo Exit Ayuda p.Búsq. Ingresas la Función que creaste anteriormente.
    Y con eso ya tienes disponible los campos de la tabla interna de la función para que crees el match code tal como si lo estuvieras tomando direcatamente de una tabla o vista (método de Selección).
    Mi duda está aquí:

    * Puebla tu tabla interna, por ejemplo
    select * into corresponding fields of table mis_datos
    from <tu_tabla>
    where <tus_condiciones>.


    Entiendo que en <tus condiciones> hay que hacer referencia a los parametros import del matchcode....como debo declararlos? alguna idea?

    Un saludo y gracias
  • nenuke
    Member
    • sep
    • 87

    #2
    ¿Nadie ha hecho nunca algo parecido a esto?

    Tengo otro problema: no se como sacar la ayuda de búsqueda individual de cada una de las restricciones. Si creo el matchcode cogiendo los parámetros de una vista o una tabla si que coge sus ayudas de busqueda pero si lo creo con el módulo de función no me aparecen.

    ¿Alguna idea?

    Comentario

    • LauraVV
      Junior Member
      • abr
      • 5

      #3
      Imports Matchcodes

      Qué tal?

      Ojalá alguien te respondiera porque tengo justamente el mismo problema... me explicarón que tenía que usar lo del callcontrol 'SELECT' pero tampoco sé como va el tema. Incluso mirando el código comentado del standard, hay una variable 'RC' que no sé de donde sale tampoco:

      IF callcontrol-step = 'SELECT'.
      PERFORM STEP_SELECT TABLES RECORD_TAB SHLP_TAB
      CHANGING SHLP CALLCONTROL RC.
      IF RC = 0.
      CALLCONTROL-STEP = 'DISP'.
      ELSE.
      CALLCONTROL-STEP = 'EXIT'.
      ENDIF.

      EXIT. "Don't process STEP DISP additionally in this call.
      ENDIF.

      Si consigo averiguar cómo va o si lo haces tu primero, nos escribimos, vale?
      Saludos!

      LauraV.

      Comentario

      • LauraVV
        Junior Member
        • abr
        • 5

        #4
        Vaya... no me había fijado en la fecha del mensaje... en fin, supongo que después de estos años ya lo habrán resuelto... de todas formas, si a alguien le interesa, que me pregunte que he logrado averiguar cómo va esto...

        Saludos!
        LauraV.

        Comentario

        • jjeffer
          Member
          • jun
          • 62

          #5
          Hola Laura

          Resulta que yo tambien estoy tratando de hacer un math code, el problema es, por ejemplo, al consultar los datos obtengo 4 registros, pero la popup sale con 4 lineas en blanco sin los valores, no se como hacer para que me muestre los datos y no solo los registros en blanco .


          IF callcontrol-step = 'SELECT'.
          SELECT pernr
          FROM nper
          INTO TABLE ti_ngpa
          WHERE sptyp EQ '01'.

          REFRESH record_tab.

          CALL FUNCTION 'F4UT_RESULTS_MAP'
          TABLES
          shlp_tab = shlp_tab
          record_tab = record_tab
          source_tab = ti_ngpa
          CHANGING
          shlp = shlp
          callcontrol = callcontrol
          EXCEPTIONS
          illegal_structure = 1
          OTHERS = 2.

          callcontrol-step = 'DISP'.
          ENDIF.

          Gracias.
          Editado por última vez por jjeffer; 05/09/2011, 19:56:30.

          Comentario

          • adge
            Junior Member
            • jul
            • 9

            #6
            Hola, yo tengo el mismo problema no se como hacer referencia a los datos de Import si alguien sabe exactamente como se hace si lo pued postear o envia se lo agradecería.

            Gracias.
            Un saludo.

            Comentario

            • jjeffer
              Member
              • jun
              • 62

              #7
              Originalmente publicado por adge
              Hola, yo tengo el mismo problema no se como hacer referencia a los datos de Import si alguien sabe exactamente como se hace si lo pued postear o envia se lo agradecería.

              Gracias.
              Un saludo.

              Mira lo que debes hacer es crear un modulo de funciones por la SE37, sin parametros de IMPORT y EXPORT, pero si con los siguientes parametros.

              En TABLES
              SHLP_TAB TYPE SHLP_DESCT
              RECORD_TAB TYPE SEAHLPRES

              En CHANGING
              SHLP TYPE SHLP_DESCR
              CALLCONTROL LIKE DDSHF4CTRL

              Luego si va el código
              ************************************
              * Se declara la estructura que almacena los datos del MatchCode
              ************************************
              DATA: BEGIN OF ti_ngpa OCCURS 0,
              name1 TYPE gpnam1, "Debe ser igual al nombre del parametro
              END OF ti_ngpa.

              IF callcontrol-step = 'SELECT'.
              ************************************
              * Inicio Se realiza la consulta y se almacenan los datos
              ************************************
              SELECT pernr
              FROM nper
              INTO TABLE ti_nper
              WHERE sptyp EQ '01'.

              LOOP AT ti_nper.
              SELECT SINGLE gpart
              FROM ngpa
              INTO lv_gpa
              WHERE gpart = ti_nper-pernr.

              CLEAR ti_ngpa.

              CALL FUNCTION 'ISH_NGPA_CONCATENATE'
              EXPORTING
              ss_gpart = lv_gpa
              ss_read_ngpa = 'X'
              IMPORTING
              ss_pname = ti_ngpa-name1
              EXCEPTIONS
              wrong_gpart = 1
              OTHERS = 2.

              APPEND ti_ngpa.
              ENDLOOP.
              ************************************
              * Fin Se realiza la consulta y se almacenan los datos
              ************************************

              REFRESH record_tab.

              CALL FUNCTION 'F4UT_RESULTS_MAP'
              TABLES
              shlp_tab = shlp_tab
              record_tab = record_tab
              source_tab = ti_ngpa
              CHANGING
              shlp = shlp
              callcontrol = callcontrol
              EXCEPTIONS
              illegal_structure = 1
              OTHERS = 2.

              callcontrol-step = 'DISP'.

              CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'
              EXPORTING
              parameter = 'NAME1' " Reference to search help parameter
              fieldname = 'NAME1' " Reference to field of Seatinfo
              TABLES
              shlp_tab = shlp_tab
              record_tab = record_tab
              results_tab = ti_ngpa
              CHANGING
              shlp = shlp
              callcontrol = callcontrol.
              ENDIF.


              Espero te sirva

              Comentario

              • mysmb2
                Senior Member
                • ene
                • 406

                #8
                en la tabla shlp-selopt que es pasada como CHANGING están todos los parámetros por los que filtraste en la ayuda para búsqueda y tiene la siguiente estructura similar a un rango.
                SHLPNAME
                SHLPFIELD
                SIGN
                OPTION
                LOW
                HIGH

                Saludos.
                Sebastián Chiavia
                http://www.programacionabap.com.ar

                Comentario

                • adge
                  Junior Member
                  • jul
                  • 9

                  #9
                  Gracias por los aportes.

                  Pero tengo un problema tonto que no se como resolver ya que no se como leer el numero de empleado. Hago una ayuda de búsqueda en el infotipo 61 donde un campo tendrá un valor según el TRFAR,TRFGB, y TRFGR del infotipo 8. Lo que no consigo es leer el PERNR.

                  He probado con PERNR en el import y con una estructura INNNN-PERNR pero no consigo obtener el numero del empleado de la ayuda de busqueda asociada a ese infotipo dodne lo leo.

                  MUchas Gracias.
                  Saludos.

                  Comentario

                  • adge
                    Junior Member
                    • jul
                    • 9

                    #10
                    Me da que va a ser imposible pq la ayuda de búsqueda la disparó en una tabla. Y necesito leer el pernr del infotipo 61, pero no tengo ninguna relación con esa tabla, sólo la categoría.

                    Comentario

                    Trabajando...