Foro de programación ABAP

SAP / ABAP => Programación ABAP => Mensaje iniciado por: molaci en 07 de Mayo de 2008, 09:28:11 am

Título: Recuperar valor de una dynpro
Publicado por: molaci en 07 de Mayo de 2008, 09:28:11 am
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.


Título: Re: Recuperar valor de una dynpro
Publicado por: Nuria en 07 de Mayo de 2008, 11:35:03 am
Hola, para recuperar valores de dynpros puedes utilizar este FORM.

Código: [Seleccionar]
* Recuperamos el valor de la pantalla.
  PERFORM selscn_leer_valor_de_pantalla
                              USING sy-repid
                                    sy-dynnr
                                   'CAMPO-DYNPRO'
                           CHANGING lf_valor.


Código: [Seleccionar]

*---------------------------------------------------------------------*
*       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.
Título: Re:Recuperar valor de una dynpro
Publicado por: metalgod en 24 de Septiembre de 2013, 02:57:54 pm
que bueno, muchas gracias por compartir tu codigo, me anduvo a la perfeccion, era lo que justo andaba necesitando ahora, muchas gracias