Ayuda de busqueda con filtro

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • larmadovr
    Member
    • ene
    • 77

    #1

    Ayuda de busqueda con filtro

    Que tal amigos, tengo una ayuda de busqueda que hace referencia a una tabla Z. Pero tengo el siguiente problema:

    Ejemplo:

    P_bukrs
    p_ceco

    La idea es que si yo selecciono la sociedad 1000, la siguiente ayuda me filtre por sociedad, es decir que si la sociedad 1000 tiene los centros de costos 1001 y 1002, solo muestre esos 2 y no todos los que contiene la tabla Z.

    He intentado poner el valor de propuesta para que la sociedad sea filtrada por el parametro P_bukrs, pero este me lo considera como una cadena y no como valor, por lo tanto no me hace el filtro.

    Alguien sabe como pasar el contenido de mi parametro P_BUKRS al valor de propuesta de mi ayuda de busqueda para p_ceco.


    Gracias por su ayuda.
    I.S.C.T. Luis Armando Valdez Rodríguez
    Consultor ABAP
    correo: larmandovr@hotmail.com
    cel: (045) 5537406023

    "La vida premia la acción"
  • Prometeo
    Junior Member
    • abr
    • 7

    #2
    Tengo estemismo problema. Alguien sabe como hacer esto???

    Comentario

    • mike_lazo
      Junior Member
      • oct
      • 11

      #3
      Cómo resolvieron el problema???

      De qué forma resolvieron el problema???
      Miguel A. Lazo
      El Salvador, C.A.

      Comentario

      • mauro_ARG
        Member
        • abr
        • 87

        #4
        Originalmente publicado por larmadovr
        Que tal amigos, tengo una ayuda de busqueda que hace referencia a una tabla Z. Pero tengo el siguiente problema:

        Ejemplo:

        P_bukrs
        p_ceco

        La idea es que si yo selecciono la sociedad 1000, la siguiente ayuda me filtre por sociedad, es decir que si la sociedad 1000 tiene los centros de costos 1001 y 1002, solo muestre esos 2 y no todos los que contiene la tabla Z.

        He intentado poner el valor de propuesta para que la sociedad sea filtrada por el parametro P_bukrs, pero este me lo considera como una cadena y no como valor, por lo tanto no me hace el filtro.

        Alguien sabe como pasar el contenido de mi parametro P_BUKRS al valor de propuesta de mi ayuda de busqueda para p_ceco.


        Gracias por su ayuda.
        Utiliza el evento AT SELECTION-SCREEN ON VALUE REQUEST FOR p_ceco.

        Código:
        AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_mes.
          DATA: return_tab  TYPE TABLE OF ddshretval WITH HEADER LINE.
        
        IF  ( NOT p_bukrs IS INITIAL ).
          SELECT * FROM csks INTO TABLE i_csks WHERE bukrs EQ p_bukrs.
        ELSE.
         SELECT * FROM csks INTO TABLE i_csks.
        ENDIF.
        
          CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
            EXPORTING
              retfield    = 'KOSTL'
              dynprofield = 'P_CECO'
              value_org   = 'S'
            TABLES
              value_tab   = i_csks[]
              return_tab  = return_tab.
          IF ( sy-subrc EQ 0 ).
            READ TABLE i_csks WITH KEY kostl = return_tab-fieldval.
            p_ceco   = i_csks-kostl.
          ENDIF.
        Lo hice en 5 minutos al codigo... pero vas a tener una idea de como funciona.

        Lo ideal es hacer una tabla interna con los campos de la tabla CSKS que quieres mostrar.

        Comentario

        • SAPING
          Senior Member
          • may
          • 199

          #5
          Fijate de hacerlo como te comentan y debuguealo.
          Si el parametro BUKRS no se te llena automaticamente para el matchcode, fijate si usas la funcion "C14Z_DYNP_READ_FIELD" para leer el contenido del parametro de la pantalla...

          Slds.

          Comentario

          • Junior Member
            • abr
            • 5

            #6
            Re: Ayuda de busqueda con filtro

            Aquí se muestra como aplicar la solución en la que se filtra un parámetro con otros parámetros. Y como se recupera el valor del parámetro con la función 'C14Z_DYNP_READ_FIELD'

            AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_HKTID-LOW.
            PERFORM F_AYUDA_IDCUENTA.

            Luego....

            FORM f_ayuda_idcuenta .
            TYPES: BEGIN OF ty_t012k,
            hktid TYPE t012k-hktid,
            bankn TYPE t012k-bankn,
            END OF ty_t012k.

            DATA: lt_t012k TYPE TABLE OF ty_t012k,
            lw_t012k TYPE ty_t012k,
            lv_hktid TYPE t012k-hktid,
            i_return LIKE ddshretval OCCURS 0 WITH HEADER LINE.
            DATA: ls_hktid LIKE LINE OF p_hktid.
            DATA: w_eval LIKE dynpread-fieldvalue.

            * Recupero el valor de pantalla de P_BUKRS1 que no lo trae por defecto
            CALL FUNCTION 'C14Z_DYNP_READ_FIELD'
            EXPORTING
            i_program = sy-cprog
            i_dynpro = sy-dynnr
            i_fieldname = 'P_BUKRS1'
            i_flg_steploop = 'X'
            CHANGING
            e_value = w_eval.
            * Cambiamos el valor recuperado a mayusculas.
            TRANSLATE w_eval TO UPPER CASE.
            p_bukrs1 = w_eval.

            CLEAR w_eval.
            * Recupero el valor de pantalla de P_HBKID-LOW que no lo trae por defecto
            CALL FUNCTION 'C14Z_DYNP_READ_FIELD'
            EXPORTING
            i_program = sy-cprog
            i_dynpro = sy-dynnr
            i_fieldname = 'P_HBKID-LOW'
            i_flg_steploop = 'X'
            CHANGING
            e_value = w_eval.
            * Cambiamos el valor recuperado a mayusculas.
            TRANSLATE w_eval TO UPPER CASE.

            * Obtengo el registro filtrado en este caso de la tabla T012K
            SELECT hktid bankn
            INTO TABLE lt_t012k
            FROM t012k
            WHERE bukrs EQ p_bukrs1
            AND hbkid EQ w_eval.
            * Mostramos el popup mach code
            CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
            EXPORTING
            retfield = 'HKTID'
            window_title = 'Clave breve para un banco/cuenta'
            value_org = 'S'
            TABLES
            value_tab = lt_t012k
            return_tab = i_return
            EXCEPTIONS
            parameter_error = 1
            no_values_found = 2
            OTHERS = 3.
            * Luego de elegiro..
            IF sy-subrc <> 0.
            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
            ELSE.
            * Mapeamos el valor seleccionado
            READ TABLE i_return INDEX 1.
            MOVE i_return-fieldval TO p_hktid-low.
            ENDIF.
            ENDFORM. " F_AYUDA_IDCUENTA

            Comentario

            Trabajando...