Anuncio

Colapsar
No hay anuncio todavía.

Ayuda con Matchcode complejo

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

  • Ayuda con Matchcode complejo

    Hola a todos.

    Tengo un problema y no se por donde tirar. A ver si alguno se ha encontrado con un caso similar. Os agradezco de antemano la ayuda.

    Veréis, tengo 3 campos implicados: motivo, submotivo y descripción. Motivo-submotivo son claves unicas. En una dynpro, se muestran únicamente estos 2 campos, motivo-submotivo, pero los usuarios quieren ver en la ayuda para búsqueda, el 3º en discordia: la descripción.

    lo que quiero es sacar en un matchcode la descripción y que al seleccionar una, que internamente se recuperen los 3 campos y se muestren motivo y submotivo.
    En la SE11 tengo creado un matchcode que funcionaría, pero ¿cual es el problema? pues que no puedo asignar ese matchcode a la dynpro, porque el campo descripción no sale en pantalla.

    Lo estoy intentando de forma manual, con un botón que al pulsar me muestre el matchcode por código, que lo monto con F4IF_INT_TABLE_VALUE_REQUEST.
    Lo he conseguido a medias, ya que llego a conseguir mostrar los 3 campos y recuperar los 3, peeeero los usuarios insisten en que solo quieren ver la descripción en la ayuda.
    Y ese es mi problema, que con F4IF_INT_TABLE_VALUE_REQUEST si le paso 1 solo campo a mostrar, nunca consigo que me recupere mas (lógico).

    ¿Sabéis si hay alguna forma de decirle a F4IF_INT_TABLE_VALUE_REQUEST que lleva 3 campos pero que solo sea visible 1?

    Saludos.

  • #2
    Solucionado

    Al final lo hemos hecho mostrando una tabla interna y simulando un matchcode por código. Os dejo el ejemplo por si a alguien le puede interesar


    ** ZSA_MOTIVOS es tabla Z con motivos de baja :
    ** MOTBAJA = MOTIVO || SUBMOTBAJA = SUBMOTIVO || DMOTIVO = DESCRIP.MOTIVO

    ** IMPORTANTE: definir PRIMERO el campo a mostrar en la ayuda. En este caso DMOTIVO

    DATA: BEGIN OF t_motivos OCCURS 0,
    dmotivo TYPE zsa_motivos-dmotivo,
    motbaja TYPE zsa_motivos-motbaja,
    submotbaja TYPE zsa_motivos-submotbaja,
    END OF t_motivos.

    DATA: selectfield LIKE help_info-fieldname.
    DATA: titulo(40) TYPE c.
    DATA: ind LIKE sy-tabix.
    DATA: BEGIN OF fields OCCURS 10.
    INCLUDE STRUCTURE help_value.
    DATA: END OF fields.
    DATA: BEGIN OF namelist OCCURS 0,
    feldname(21),
    END OF namelist.

    FREE: t_motivos.
    SELECT * FROM zsa_motivos
    INTO CORRESPONDING FIELDS OF TABLE t_motivos
    WHERE sparte = sector
    AND visible = 'S'.

    selectfield = 'DMOTIVO'.

    REFRESH namelist.
    namelist-feldname = 'ZSA_MOTIVOS-DMOTIVO'.
    APPEND namelist.
    REFRESH fields.

    CALL FUNCTION 'TRANSFER_NAMES_TO_FIELDS'
    EXPORTING
    selectfield = selectfield
    TABLES
    fields = fields
    namelist = namelist
    EXCEPTIONS
    wrong_format_given = 1
    OTHERS = 2.

    titulo = 'Selección Motivo Baja'.

    CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
    EXPORTING
    display = ' '
    selectfield = selectfield
    titel = titulo
    IMPORTING
    ind = ind
    TABLES
    fields = fields
    full_table = t_motivos
    EXCEPTIONS
    full_table_empty = 1
    no_tablestructure_given = 2
    no_tablefields_in_dictionary = 3
    more_then_one_selectfield = 4
    no_selectfield = 5
    OTHERS = 6.

    CLEAR: motivo, submotivo, dmotivo.

    IF sy-subrc EQ 0.
    READ TABLE t_motivos INDEX ind.
    motivo = t_motivos-motbaja.
    submotivo = t_motivos-submotbaja.
    dmotivo = t_motivos-dmotivo.
    ENDIF.

    Comentario


    • #3
      Gracias mi estimado estaba buscando algo similar

      Comentario

      Trabajando...
      X