Foro de programación ABAP

SAP / ABAP => ALV => Mensaje iniciado por: ekim68 en 20 de Abril de 2009, 02:42:10 am

Título: Es posible hacer esto?
Publicado por: ekim68 en 20 de Abril de 2009, 02:42:10 am


Hola a todos, me acabo de registrar en el foro y tengo una duda como soy nuevo en esto de abap, quisiera saber si es posible hacer un reporte ALV con este formato, muchas gracias.

Título: Re: Es posible hacer esto?
Publicado por: Carlos en 20 de Abril de 2009, 12:40:04 pm
Hola ekim, bienvenido al foro...  ;D

Se podría hacer algo parecido con la función REUSE_ALV_HIERSEQ_LIST_DISPLAY

Es un ALV de tipo LIST donde le puedes poner cabeceras y posiciones, la única diferencia respecto al informe que muestras es que los datos de cabecera estarían en una sola línea, pero para los efectos yo pienso que te puede servir.

Te quedaría como este ejemplo...
(http://img21.imageshack.us/img21/1715/ejemplo1i.jpg)

Un saludo.

Título: Re: Es posible hacer esto?
Publicado por: ekim68 en 20 de Abril de 2009, 04:40:52 pm
Muchas gracias por la respuesta, me ha sido de gran utilidad, si quiero hacer cortes de control en la segunda tabla por un campo en especifico, se pueden llevar a cabo por medio de las sentencias AT NEW y AT FIRST? o mas bien es posible hacerlos?

Los cortes de control me refiero a si es posible dividir los registros de la segunda tabla por un campo en especifico por ejemplo dividir los registros por el campo Alm. (En el ejemplo de Carlos).

El reporte de la imagen que presente anteriormente lo extraje de un standard que me pasaron, estuve viendo el codigo de ese estandar solo que es muy extenso y por mas que he buscado no he encontrado la forma de darle ese formato.

Gracias nuevamente por la respuesta.

Título: Re: Es posible hacer esto?
Publicado por: Carlos en 20 de Abril de 2009, 05:27:11 pm
Hola, creo recordar que puedes dividir los registros como comentas hasta por 5 campos creo.

Este es un ejemplo.
Código: [Seleccionar]
* Campos para relacionar la cabecera y la posición.
  gs_key-header01 = 'LINEA'.
  gs_key-item01   = 'LINEA'.
  gs_key-header02 = 'ARTICULO'.
  gs_key-item02   = 'ARTICULO'.
  gs_key-header03 = 'F_PRODU'.
  gs_key-item03   = 'F_PRODU'.

* Visualizar lista con CABECERA Y POSICIÓN.
  call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    exporting
      i_callback_program       = c_program
*     i_callback_pf_status_set = status
      i_callback_user_command  = formname_user_command
      is_layout                = layout
      it_fieldcat              = fieldtab
      it_sort                  = sort
      i_default                = 'A'
      i_save                   = g_save
      is_variant               = variant
      it_events                = events[]
      i_tabname_header         = 'GT_CAB'
      i_tabname_item           = 'GT_POS'
      is_keyinfo               = gs_key
    tables
      t_outtab_header          = gt_cab[]
      t_outtab_item            = gt_pos[].
Título: Re: Es posible hacer esto?
Publicado por: ekim68 en 20 de Abril de 2009, 07:24:58 pm
Hola, lo de los headers fue util, pero creo que hasta cierto punto, lo que pasa es que la segunda agrupacion que deseo realizar es por medio del campo Clase (mostrado en la imagen) dentro de un solo cliente, entonces cuando se realiza esto, pues me repite los datos de la cabecera para cada cliente y son como 15 distintos valores para el campo Clase, entonces creo que se repetira los datos del cliente 15 veces, no se si me explico?

Me agrupa los datos correctamente, pero lo que necesito es que me los agrupe, pero sin crear una segunda cabecera, creo que encontre una manera de realizarlo, añadiendo en un registro en blanco en la segunda tabla para que me realice la separación.

Lo que pasa es que requiero ademas realizar subtotales de cada agrupacion por cliente.
Muchas gracias por su ayuda.

Título: Re: Es posible hacer esto?
Publicado por: leonard77 en 28 de Julio de 2009, 03:25:24 am
excelente respuesta, gracias por la data!!!

saludos!

leo