Ir al contenido

Recuperar valor de una dynpro

Respuestas
2
Visitas
20
Iniciado por
molaci
Fecha
07 May 2008, 09:28
Tema anterior - Siguiente tema

molaci

Y otra pregunta mas.  ;D ;D

Tengo un module pool y necesito recuperar un valor de un campo de una dynpro.

¿Alguna sugerencia?

Muchisimas gracias por vuestra ayuda.



Nuria

Hola, para recuperar valores de dynpros puedes utilizar este FORM.


* Recuperamos el valor de la pantalla.
  PERFORM selscn_leer_valor_de_pantalla
                              USING sy-repid
                                    sy-dynnr
                                   'CAMPO-DYNPRO'
                           CHANGING lf_valor.





*---------------------------------------------------------------------*
*       FORM SELSCN_leer_valor_de_pantalla                            *
*---------------------------------------------------------------------*
*       Recupera de la pantalla de selección un valor antes de que se *
*       actualice.                                                    *
*---------------------------------------------------------------------*
*  -->  F_REPID -> Nombre del programa, normalmente SY-REPID          *
*  -->  F_DYNNR -> Número de dynpro, normalmente SY-DYNNR             *
*  -->  F_FIELDNAME_IN -> Nombre del campo que pretendemos recuperar  *
*  -->  F_FIELDVALUE -> Valor recuperado                              *
*---------------------------------------------------------------------*
FORM selscn_leer_valor_de_pantalla
                            USING f_repid
                                  f_dynnr
                            value(f_fieldname_in)
                         CHANGING f_fieldvalue.

  DATA: ltab_fields TYPE TABLE OF dynpread.
  DATA: ltab_fields_wa LIKE LINE OF ltab_fields.
  DATA: lc_dyname LIKE sy-repid.
  DATA: lc_dynumb LIKE sy-dynnr.

  ltab_fields_wa-fieldname = f_fieldname_in.
  APPEND ltab_fields_wa TO ltab_fields.

  lc_dyname = f_repid.

  lc_dynumb = f_dynnr.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname     = lc_dyname
      dynumb     = lc_dynumb
    TABLES
      dynpfields = ltab_fields
    EXCEPTIONS
      OTHERS     = 01.

  IF sy-subrc IS INITIAL.
    READ TABLE ltab_fields INDEX 1 INTO ltab_fields_wa.
*-- Return the value from the screen
    IF sy-subrc EQ 0.
      f_fieldvalue = ltab_fields_wa-fieldvalue.
    ENDIF.
  ENDIF.
ENDFORM.                    "SELSCN_leer_valor_de_pantalla



Un saludo.

metalgod

que bueno, muchas gracias por compartir tu codigo, me anduvo a la perfeccion, era lo que justo andaba necesitando ahora, muchas gracias