Foro de programación ABAP

SAP / ABAP => Programación ABAP => Mensaje iniciado por: ale12 en 19 de Mayo de 2008, 11:34:23 am

Título: LAYOUT en pantalla de selección
Publicado por: ale12 en 19 de Mayo de 2008, 11:34:23 am
Hola,

como se crea en la pantalla de selección el campo que posibilite la indicación del LAYOUT creado por usuario, para poder meterle en una variante.


Muchas gracias.

Título: Re: LAYOUT en pantalla de selección
Publicado por: Carlos en 20 de Mayo de 2008, 12:03:04 pm
Lo primero que tienes que hacer es crearte la entrada en la Pantalla de Selección de esta manera:

Para ello utilizaremos el include aquí definido... Include ZALV (http://www.abap.es/foro/index.php?topic=5.msg6)




SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
...
PARAMETERS: p_vari            LIKE gs_variant-variant.
SELECTION-SCREEN END OF BLOCK b1.



Luego...

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

  PERFORM alv_f4 USING 'Z_TU_NOMBRE_REPORT'
                        p_vari.



Llamada al form... alv_f4

*____________________________________________________________Form Alv_F4
FORM alv_f4 USING p_repname LIKE sy-repid
                  p_variante LIKE disvariant-variant.

* Esta form devuelve un matchcode con las variantes existentes.
* Tan solo se tiene que poner si se quiere cargar una variante de
* visualización.
* Para poner esta form se tiene que poner:

**** at selection-screen on value-request for p_variante.          *****
**** perform alv_f4 using (Nombreprograma) (Variable_variante).    *****
  variant-report = p_repname.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = variant
      i_save     = 'A'
    IMPORTING
      es_variant = variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 2.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    p_variante = variant-variant.
  ENDIF.
ENDFORM.                                                    "alv_f4



Y antes de la llamada a la función ALV...

* Se asigna la variante de visualización
  PERFORM asignar_variante USING 'Z_TU_NOMBRE_REPORT'
                                 p_vari.


Llamada al form... asignar_variante

*______________________________________________________Asignar variante.
FORM asignar_variante USING p_repname LIKE sy-repid
                            p_variante LIKE disvariant-variant.
* Si se quiere visualizar una variante es obligatorio llamar a esta form
* No es suficiente con llamar a la función de matchcode, o a la form de
* verificación.
  CLEAR variant.
  variant-report = p_repname.
  variant-variant = p_variante.
ENDFORM.                    "asignar_variante


Saludos.

Título: Re: LAYOUT en pantalla de selección
Publicado por: dluis en 10 de Septiembre de 2008, 12:49:46 pm
Hola, estoy probando lo que estáis comentando y me da un error:

The field "GS_VARIANT" is unknown, but there is a field with the...

¿Como se declara ese campo?

Título: Re: LAYOUT en pantalla de selección
Publicado por: Carlos en 10 de Septiembre de 2008, 01:02:36 pm
Se declara de esta forma...

Código: [Seleccionar]
  DATA: gs_variant              TYPE disvariant.
Título: Re:LAYOUT en pantalla de selección
Publicado por: ariasnaty en 25 de Abril de 2013, 07:28:09 pm
Hola Carlos, como estas?

Estoy tratando de agregar un layout para seleccionar en un programa, copie el codigo que pasaste pero tengo errores.

El programa me muestra: Field "VARIANT-REPORT" is unknown. It is neither in one of the
specified tables nor defined by a "DATA" statement. .

Me podes ayudar con esto?
Gracias y saludos!
Título: Re:LAYOUT en pantalla de selección
Publicado por: Carlos en 26 de Abril de 2013, 09:12:29 am
Hola,

Ese campo esta definido en este INCLUDE que puedes añadir al programa.

Aquí tienes el enlace... Include ZALV (http://www.abap.es/foro/index.php?topic=5.msg6)


Saludos
Título: Re:LAYOUT en pantalla de selección
Publicado por: ariasnaty en 26 de Abril de 2013, 02:59:35 pm
Carlos, defini el campo pero sigue sin funcionar.

Es mucha molestia que te pase el codigo para ver que le pasa?, tengo el parametro de seleccion y elijo la variante pero cuando ejecuto el programa, la variante no pasa al AVL y no la toma.
Gracias!!
Título: Re:LAYOUT en pantalla de selección
Publicado por: lcruz en 08 de Mayo de 2013, 04:23:12 am
Hola, puedes encontrar un ejemplo explicado y descargable desde este enlace

http://abap.facilparami.com/2013/05/definir-layout-disposicion-desde-los-parametros-del-reporte-en-abap/ (http://abap.facilparami.com/2013/05/definir-layout-disposicion-desde-los-parametros-del-reporte-en-abap/)