MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 11/08/08, 08:36:21
eduraes eduraes is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 4
ALV top-of-page

Buenas, a ver si me pueden ayudar. He tenido que convertir un listado con formato de lista a formato de ALV, y para ello lo único que he hecho ha sido cambiar la llamada a la función REUSE_ALV_LIST_DISPLAY por REUSE_ALV_GRID_DISPLAY, lo que pasa es que al hacer esto se me ha descuadrado el top-of-page. ¿Alguien sabe cómo conservar el formato que tenía en el listado con forma de lista, o al menos introducir saltos entre líneas?
Les dejo imágenes con las cabeceras de ambos listados y el código en el que se monta el top-of-page.

FORM top_of_page_render.

* interface structurebegin of g_s_bestand.
DATA: lr_content TYPE REF TO cl_salv_form_element.

*... (1) create the information to be displayed by using
* the ALV Form elements
PERFORM create_alv_form_content_top CHANGING lr_content.


*... (2) Sending the information to the ALV
* Once the inforation to be displayed has been
* created the information has to be sent to the ALV
* This is done by calling the static method
* CL_SALV_FORM_CONTENT=>SET( <content> ) with the content
* which is to be displayed.
* Alternativly the function module REUSE_ALV_COMMENTARY_WRITE
* can still be used.

cl_salv_form_content=>set( lr_content ).


ENDFORM. " top_of_page_render

*----------------------------------------------------------------------*
* create_alv_form_content_top
*----------------------------------------------------------------------*
* baustelle

FORM create_alv_form_content_top
CHANGING cr_content TYPE REF TO cl_salv_form_element.
*
DATA: lr_grid TYPE REF TO cl_salv_form_layout_grid,
lr_flow TYPE REF TO cl_salv_form_layout_flow,
l_text(500) TYPE c,
l_char(500) TYPE c.

DATA: l_row TYPE i,
l_figure(24) TYPE c,
l_flag_tied_empties(01) TYPE c.

DATA: l_f_text(60) TYPE c. "n999530

*----------------------------------------------------------------------



*... create a grid
CREATE OBJECT lr_grid.

* the current data are in interface structure g_s_bestand.

* in the case the report run in print or background mode
* --> print the old headlines

IF NOT sy-prdsn IS INITIAL.
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

IF bwbst IS INITIAL.
* stocks only
WRITE : sy-pagno NO-SIGN TO g_s_header_77-page.
MOVE : g_s_header_77 TO l_text.
ELSE.
* stocks and values
WRITE : sy-pagno NO-SIGN TO g_s_header_91-page.
MOVE : g_s_header_91 TO l_text.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

ADD 1 TO l_row.
ENDIF.

* first line : plant or valuation area---------------------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

IF bwbst IS INITIAL.
PERFORM f2200_read_t001 USING g_s_bestand-werks. "n999530

WRITE g_s_bestand-werks TO l_f_text. "n999530
CONDENSE l_f_text. "n999530
CONCATENATE l_f_text t001w-name1 "n999530
INTO l_f_text "n999530
SEPARATED BY space. "n999530

MOVE : text-020 TO l_text,
l_f_text TO l_text+g_offset_header. "n999530
ELSE.
* show valuation area
* MOVE : text-025 TO l_text,
MOVE : text-116 TO l_text,
g_s_bestand-bwkey TO l_text+g_offset_header.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

* second line : material number----------------------------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

* MOVE : text-021 TO l_text.
MOVE : text-117 TO l_text.
WRITE : g_s_bestand-matnr TO l_text+g_offset_header.

* add line to object
lr_flow->create_text( text = l_text ).

* third line : material short text-------------------------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

PERFORM f2100_mat_text USING g_s_bestand-matnr.

* MOVE : text-022 TO l_text,
MOVE : text-118 TO l_text,
g_s_makt-maktx TO l_text+g_offset_header.

* add line to object
lr_flow->create_text( text = l_text ).

* fourth line : batch if required--------------------------------------
IF xchar = 'X'.
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

MOVE : text-023 TO l_text,
g_s_bestand-charg TO l_text+g_offset_header.

* add line to object
lr_flow->create_text( text = l_text ).
ENDIF.

* line : stock and value on start date ------------------------------
* with one empty line
ADD 2 TO l_row.

lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

* convert unit of measurement from internal to external format n1018717
WRITE : g_s_bestand-meins TO l_f_meins_external. "n1018717

CLEAR l_text.
IF bwbst IS INITIAL.
* stock on start date
MOVE : g_date_line_from TO l_text.
WRITE g_s_bestand-anfmenge TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717

ELSE.
* stocks and values on start date
MOVE : g_date_line_from TO l_text.
WRITE g_s_bestand-anfmenge TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717


WRITE g_s_bestand-anfwert TO l_figure
CURRENCY g_s_bestand-waers.
MOVE l_figure TO l_text+g_offset_value(24).
MOVE g_s_bestand-waers TO l_text+g_offset_curr.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

* line : total quantity and value of goods receipts--------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

CLEAR l_text.

IF bwbst IS INITIAL.
* total quantities of goods receipts
MOVE : text-005 TO l_text+2.
WRITE g_s_bestand-soll TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717
ELSE.
* total quantities and values of goods receipts
MOVE : text-030 TO l_text+2.
WRITE g_s_bestand-soll TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717

WRITE g_s_bestand-sollwert TO l_figure
CURRENCY g_s_bestand-waers.
MOVE l_figure TO l_text+g_offset_value(24).
MOVE g_s_bestand-waers TO l_text+g_offset_curr.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

* line : total quantity and value of goods issues----------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

CLEAR l_text.

IF bwbst IS INITIAL.
* total quantities of goods issues
MOVE : text-006 TO l_text+2.
COMPUTE g_s_bestand-haben = g_s_bestand-haben * -1.
WRITE g_s_bestand-haben TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717
ELSE.
* total quantities of goods issues
MOVE : text-031 TO l_text+2.
COMPUTE g_s_bestand-haben = g_s_bestand-haben * -1.
WRITE g_s_bestand-haben TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717

COMPUTE g_s_bestand-habenwert = g_s_bestand-habenwert * -1.
WRITE g_s_bestand-habenwert TO l_figure
CURRENCY g_s_bestand-waers.
MOVE l_figure TO l_text+g_offset_value(24).
MOVE g_s_bestand-waers TO l_text+g_offset_curr.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

* line : stock and value on end date ------------------------------
ADD 1 TO l_row.
lr_flow = lr_grid->create_flow( row = l_row column = 1 ).

CLEAR l_text.

IF bwbst IS INITIAL.
* stock on end date
MOVE : g_date_line_to TO l_text.
WRITE g_s_bestand-endmenge TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717
ELSE.
* stocks and values on end date
MOVE : g_date_line_to TO l_text.
WRITE g_s_bestand-endmenge TO l_figure
UNIT g_s_bestand-meins.
MOVE l_figure TO l_text+g_offset_qty(24).
* move g_s_bestand-meins to l_text+g_offset_unit. n1018717
MOVE l_f_meins_external TO l_text+g_offset_unit. "n1018717

WRITE g_s_bestand-endwert TO l_figure
CURRENCY g_s_bestand-waers.
MOVE l_figure TO l_text+g_offset_value(24).
MOVE g_s_bestand-waers TO l_text+g_offset_curr.
ENDIF.

* add line to object
lr_flow->create_text( text = l_text ).

* copy whole header object
cr_content = lr_grid.

ENDFORM.


Gracias de antemano.
Imágenes Adjuntas
Tipo de Archivo: jpg list_display.JPG (82.8 KB, 35 visitas)
Tipo de Archivo: jpg grid_display.JPG (84.1 KB, 31 visitas)
Responder Con Cita
  #2  
Viejo 11/08/08, 13:24:32
ibecerra
 
Mensajes: n/a
vas ha tener q utilizar un funcion para la cabecera ejemplo
*---principal
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM COMMENT_BUILD USING GT_LHEADER[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'ALV_BACKGROUND'
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
IT_SORT = GT_SORT[]
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
TABLES
T_OUTTAB = GT_DATA.
*------
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
FORM COMMENT_BUILD USING LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER,
L_TEXTO(10).
REFRESH LT_TOP_OF_PAGE.
* Titulo
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = TEXT-TTT.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
* Cliente
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
IF NOT VBAK-KUNNR IS INITIAL.
CLEAR KNA1-NAME1.
SELECT SINGLE NAME1 INTO KNA1-NAME1
FROM KNA1
WHERE KUNNR EQ VBAK-KUNNR.
LS_LINE-KEY = TEXT-T02.
CONCATENATE VBAK-KUNNR KNA1-NAME1 INTO LS_LINE-INFO
SEPARATED BY SPACE.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDIF.
* Material
IF NOT VBAP-MATNR IS INITIAL.
CLEAR KNA1-NAME1.
SELECT SINGLE MAKTX INTO MAKT-MAKTX
FROM MAKT
WHERE MATNR EQ VBAP-MATNR
AND SPRAS EQ SY-LANGU.
LS_LINE-KEY = TEXT-T03.
CONCATENATE VBAP-MATNR MAKT-MAKTX INTO LS_LINE-INFO
SEPARATED BY SPACE.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDIF.
* Numero de Pedido
IF NOT VBAK-VBELN IS INITIAL.
LS_LINE-KEY = TEXT-T04.
LS_LINE-INFO = VBAK-VBELN.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDIF.
* Fecha/Hora/Usuario
LS_LINE-KEY = TEXT-T01.
WRITE SY-UNAME TO L_TEXTO.
CONCATENATE '/' L_TEXTO INTO LS_LINE-INFO.
WRITE SY-UZEIT TO L_TEXTO.
CONCATENATE '/' L_TEXTO LS_LINE-INFO INTO LS_LINE-INFO.
WRITE SY-DATUM TO L_TEXTO.
CONCATENATE L_TEXTO LS_LINE-INFO INTO LS_LINE-INFO.
APPEND LS_LINE TO LT_TOP_OF_PAGE.
ENDFORM.

*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'LOGOQS1'
IT_LIST_COMMENTARY = GT_LHEADER.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
FORM EVENTTAB_BUILD USING LT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
*
REFRESH LT_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = LT_EVENTS.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC EQ 0.
MOVE C_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND
INTO LS_EVENT.
IF SY-SUBRC EQ 0.
MOVE C_USER_COMMAND TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_PF_STATUS_SET
INTO LS_EVENT.
IF SY-SUBRC EQ 0.
MOVE C_PF_STATUS_SET TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
ENDFORM.
Responder Con Cita
  #3  
Viejo 11/08/08, 14:42:34
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola ... asi como coloca Ibecerra en el ejemplo, el problema es que puedes usar la funcion

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'LOGOQS1'
IT_LIST_COMMENTARY = GT_LHEADER.

Donde I_LOGO es opcional y puedes ver los logos que tienes disponibles en la transaccion OAER, y el otro campo es la tabla interna que contiene el titulo, ahora para eso existen los tipos H y S, H es para titulos de la cabecera y S es para textos normales el cual esta compuestos de 2 partes.

gt_leader-typ = 'S'.
gt_leader-key = 'Usuario'.
gt_leader-info = 'BCUSER'.

aparecera en tu ALV de esta forma:

Usuario: BCUSER

Espero sirva la info
__________________
David Carballido Córdova
Responder Con Cita
  #4  
Viejo 12/08/08, 07:15:05
eduraes eduraes is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 4
Gracias a ambos por vuestra ayuda.
Lo de usar el 'REUSE_ALV_COMMENTARY_WRITE' ya lo intenté usar pero el problema es que las líneas en blanco que quiero meter se me añaden al final de la cabecera, aumentando el espacio entre la última línea de la cabecera y el comienzo de la información del listado. La cuestión era saber si se podía introducir líneas en blanco entre línea y línea.
Gracias de nuevo por su ayuda.
Responder Con Cita
  #5  
Viejo 12/08/08, 16:56:40
Avatar de DavidXD_XD
DavidXD_XD DavidXD_XD is offline
Moderator
 
Fecha de Ingreso: ago 2006
Localización: Lima - Perú
Mensajes: 1,251
Hola ... no lo he intentado , pero supongo q solo bastaria crear una linea en blanco dentro de la tabla interna q se mandara a la funcion, en este caso es gt_lheader ... aver si nos cuentas como t fue
__________________
David Carballido Córdova
Responder Con Cita
  #6  
Viejo 13/08/08, 06:45:53
eduraes eduraes is offline
Junior Member
 
Fecha de Ingreso: jul 2007
Mensajes: 4
DavidXD_XD,
Lo de meter una linea en blanco entre dos de datos en la tabla que lleva la información que se le pasa a la función 'REUSE_ALV_COMMENTARY_WRITE' ya lo intenté, y como comenté anteriormente, y creo que es por usar la función 'REUSE_ALV_GRID_DISPLAY', se me eliminan las lineas en blanco que hay en medio de la información y se empiezan a añadir al final de la última línea del TOP-OF-PAGE del listado. Empiezo a pensar que es una cosa de la función 'REUSE_ALV_GRID_DISPLAY', ya que la 'REUSE_ALV_LIST_DISPLAY' si que deja los espacios, y que no se puede solucionar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 02:44:32.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web