Ir al contenido

LAYOUT en pantalla de selección

Respuestas
7
Visitas
35
Iniciado por
ale12
Fecha
19 May 2008, 11:34
Tema anterior - Siguiente tema

ale12

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.


Carlos

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




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.


dluis

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?


Carlos

Se declara de esta forma...

  DATA: gs_variant              TYPE disvariant.

ariasnaty

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!

Carlos

Hola,

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

Aquí tienes el enlace... Include ZALV


Saludos

ariasnaty

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!!

lcruz