PDA

Ver la Versión Completa : Crear 2 alv uno al lado del otro


ALNICO
20/10/09, 14:53:27
Saludos amigos como podria crear 2 alv , como son pequeños quisiera que fuera uno al lado del otro , o en su defecto , un espacio en blanco para que mi alv quede lo mas centrado posible o a la derecha

hrosas
20/10/09, 14:55:36
Saludos amigos como podria crear 2 alv , como son pequeños quisiera que fuera uno al lado del otro , o en su defecto , un espacio en blanco para que mi alv quede lo mas centrado posible o a la derecha
si lo haces por pantallas agrega sub screens y con eso tendras los 2 alvs

ALNICO
20/10/09, 20:35:20
como seria eso amigo , aunque en realidad lo que me interesa es tener uno solo del lado derecho

J_B
21/10/09, 03:34:40
Que tal,
mira para tener 2 alvs en una misma dynpro puedes hacerlo facilmente creandolos con objetos, si te interesa dejame hurgar entre mis datos y te lo paso.

ALNICO
21/10/09, 12:34:09
te lo agradeceria muchos , gracias de antemano

ernestoacostacuba
21/10/09, 13:38:04
*&---------------------------------------------------------------------*
*& Report ZEARA_ALV *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*

REPORT ZEARA_ALV.

INCLUDE z_dati.
INCLUDE z_procedures.

START-OF-SELECTION.

CALL SCREEN 101.



*&---------------------------------------------------------------------*
*& Include Z_DATI *
*&---------------------------------------------------------------------*

TYPE-POOLS : icon.

TABLES : sflight.

TYPES : BEGIN OF st_sflight,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
paymentsum LIKE sflight-paymentsum,
price LIKE sflight-price,
currency LIKE sflight-currency,
vicon TYPE lvc_emphsz,
cellcolors TYPE lvc_t_scol,
END OF st_sflight.

* Definizione dei dati per ALV
DATA : gr_alvgrid TYPE REF TO cl_gui_alv_grid.

* Nome del control custom da aggiungere alla dynpro
*DATA : gc_custom_control_name TYPE scrfname VALUE 'CC_ALV'.

* Istanza del contenitore custom
*DATA : gr_ccontainer TYPE REF TO cl_gui_custom_container.

* Catalogo dei campi
DATA : gt_fieldcat TYPE lvc_t_fcat.

* Struttura layout
DATA : gs_layout TYPE lvc_s_layo.

DATA : gr_docking TYPE REF TO cl_gui_docking_container,
g_splitter TYPE REF TO cl_gui_splitter_container,
g_container_1 TYPE REF TO cl_gui_container,
g_container_2 TYPE REF TO cl_gui_container.

* Tabella interna per scaricare dei dati
DATA : tb_sflight TYPE st_sflight OCCURS 0 WITH HEADER LINE.

DATA : ok_code LIKE sy-ucomm,
lt_selected_rows TYPE lvc_t_roid,
ls_selected_row TYPE lvc_s_roid,
ls_fcat TYPE lvc_s_fcat,
lv_stable TYPE lvc_s_stbl,
ls_cellcolor TYPE lvc_s_scol.


CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_hotspot_click.
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no.
ENDMETHOD.
ENDCLASS.

DATA : gr_event_handler TYPE REF TO lcl_event_handler.



*&---------------------------------------------------------------------*
*& Include Z_PROCEDURES *
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Module STATUS_0101 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0101 OUTPUT.
SET PF-STATUS 'STANDARD'.
* SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0101 OUTPUT


*&---------------------------------------------------------------------*
*& Module display_alv OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE display_alv OUTPUT.
PERFORM get_dati.
PERFORM split_screen.
PERFORM display_alv.
ENDMODULE. " display_alv OUTPUT


*&---------------------------------------------------------------------*
*& Form get_dati
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_TB_SFLIGHT text
*----------------------------------------------------------------------*
FORM get_dati.

* La clàsica instrucciòn SQL ....
ENDFORM. " get_dati




*&---------------------------------------------------------------------*
*& Form display_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv .

IF gr_alvgrid IS INITIAL.
* Añadir el ALV al contenedor inferior
CREATE OBJECT gr_alvgrid
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
I_PARENT = g_container_2
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* Creaciòn del catàlogo de campos
PERFORM prepare_field_catalog CHANGING gt_fieldcat.

* Creaciòn del layout
PERFORM prepare_layout CHANGING gs_layout.

CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
IS_LAYOUT = gs_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
CHANGING
IT_OUTTAB = tb_sflight[]
IT_FIELDCATALOG = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.

ELSE.
CALL METHOD gr_alvgrid->refresh_table_display
* EXPORTING
* IS_STABLE = lv_stable
* I_SOFT_REFRESH =
EXCEPTIONS
FINISHED = 1
others = 2.

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD GR_ALVGRID->SET_SELECTED_ROWS
EXPORTING
* IT_INDEX_ROWS =
IT_ROW_NO = lt_selected_rows.
ENDIF.

ENDFORM. " display_alv

*&---------------------------------------------------------------------*
*& Form prepare_field_catalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM prepare_field_catalog CHANGING p_gt_fieldcat TYPE lvc_t_fcat.

* El procedimiento habitual para la creaciòn del catàlogo de campos....
ENDFORM. " prepare_field_catalog



*&---------------------------------------------------------------------*
*& Form prepare_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GS_LAYOUT text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING p_gs_layout TYPE lvc_s_layo.
p_gs_layout-zebra = 'X'.
p_gs_layout-grid_title = 'Flights'.
p_gs_layout-smalltitle = 'X'.
p_gs_layout-sel_mode = 'A'.
p_gs_layout-ctab_fname = 'CELLCOLORS'.
ENDFORM. " prepare_layout

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0101 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0101 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.

WHEN 'BTMOSTRA'.
PERFORM read_rows.
ENDCASE.
ENDMODULE. " USER_COMMAND_0101 INPUT

*&---------------------------------------------------------------------*
*& Form read_rows
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_rows .
DATA : v_cont TYPE i.

CLEAR lt_selected_rows.
REFRESH lt_selected_rows.

LOOP AT tb_sflight.
CLEAR tb_sflight-paymentsum.
MODIFY tb_sflight INDEX sy-tabix.
ENDLOOP.

CALL METHOD GR_ALVGRID->GET_SELECTED_ROWS
IMPORTING
* ET_INDEX_ROWS =
ET_ROW_NO = lt_selected_rows.

IF NOT lt_selected_rows IS INITIAL.
LOOP AT lt_selected_rows INTO ls_selected_row.
READ TABLE tb_sflight INDEX ls_selected_row-row_id.
SELECT SINGLE * FROM sflight
WHERE carrid EQ tb_sflight-carrid AND connid EQ tb_sflight-connid
AND fldate EQ tb_sflight-fldate.
tb_sflight-paymentsum = sflight-paymentsum.

MODIFY tb_sflight INDEX ls_selected_row-row_id.
ENDLOOP.

CLEAR tb_sflight.
ENDIF.

v_cont = 0.
* Definir un color diferente a las celdas que son vacìas
LOOP AT tb_sflight.
v_cont = sy-tabix.
IF tb_sflight-paymentsum = '0.00'.
ls_cellcolor-fname = 'PAYMENTSUM'.
ls_cellcolor-color-col = '6'.
ls_cellcolor-color-int = '1'.
ls_cellcolor-nokeycol = 'X'.
APPEND ls_cellcolor TO tb_sflight-cellcolors.
MODIFY tb_sflight INDEX v_cont.
ELSE.
tb_sflight-vicon = ICON_FLIGHT.
MODIFY tb_sflight INDEX v_cont.
ENDIF.
CLEAR tb_sflight.
ENDLOOP.

CLEAR v_cont.

PERFORM show_price_rows.

ENDFORM. " read_rows


*&---------------------------------------------------------------------*
*& Form show_price_rows
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_price_rows .
DATA : v_ind TYPE i.

CALL METHOD gr_alvgrid->get_frontend_fieldcatalog
IMPORTING
ET_FIELDCATALOG = gt_fieldcat[].

IF lt_selected_rows IS INITIAL.
LOOP AT gt_fieldcat INTO ls_fcat.
IF ls_fcat-fieldname = 'PAYMENTSUM'.
ls_fcat-no_out = 'X'.
MODIFY gt_fieldcat FROM ls_fcat.
ENDIF.
ENDLOOP.

LOOP AT tb_sflight.
v_ind = sy-tabix.
tb_sflight-vicon = ICON_WS_PLANE.
MODIFY tb_sflight INDEX v_ind.
ENDLOOP.
ELSE.
LOOP AT gt_fieldcat INTO ls_fcat.
IF ls_fcat-fieldname = 'PAYMENTSUM'.
ls_fcat-no_out = SPACE.
MODIFY gt_fieldcat FROM ls_fcat.
ENDIF.
ENDLOOP.
ENDIF.


CALL METHOD gr_alvgrid->set_frontend_fieldcatalog
EXPORTING
IT_FIELDCATALOG = gt_fieldcat.

ENDFORM. " show_price_rows

*&---------------------------------------------------------------------*
*& Form handle_hotspot_click
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_hotspot_click USING P_E_ROW_ID TYPE lvc_s_row
P_E_COLUMN_ID TYPE lvc_s_col
P_ES_ROW_NO TYPE lvc_s_roid.

PERFORM read_rows.
ENDFORM. " handle_hotspot_click


*&---------------------------------------------------------------------*
*& Form split_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM split_screen .
CLEAR : gr_docking,
g_splitter,
g_container_1,
g_container_2.

CREATE OBJECT gr_docking
EXPORTING
REPID = sy-repid
DYNNR = sy-dynnr "Nro dynpro actual
RATIO = '95' .

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* Crear un splitter control con 2 filas y 1 columna
CREATE OBJECT g_splitter
EXPORTING
PARENT = gr_docking
ROWS = 2
COLUMNS = 1 .

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

* Contenedor superior
CALL METHOD g_splitter->get_container
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = g_container_1.
.
* Contenedor inferior
CALL METHOD g_splitter->get_container
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = g_container_2.

* Altura del contenedor superior
CALL METHOD g_splitter->set_row_height
EXPORTING
ID = 1
HEIGHT = 20.

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

PERFORM header.

ENDFORM. " split_screen

*&---------------------------------------------------------------------*
*& Form header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM header .
* Documentos dinàmicos
DATA : l_document TYPE REF TO cl_dd_document, "DOCUMENTO

l_doctable TYPE REF TO cl_dd_table_element, "TABELLA ELEMENTI
l_column1 TYPE REF TO cl_dd_area, "AREA DOCUMENTO
l_column2 TYPE REF TO cl_dd_area.

* Crear la istancia del DOCUMENTO y el texto de encabezamiento
CREATE OBJECT l_document.
CALL METHOD l_document->add_text
EXPORTING
TEXT = 'Descrizione totali statistiche'
SAP_STYLE = cl_dd_area=>heading.

* Creare la tabella degli elementi del documento dinamico CALL METHOD l_document->add_table
EXPORTING
NO_OF_COLUMNS = 5 "Nro colonne della tabella
CELL_BACKGROUND_TRANSPARENT = 'X' "='X' celle della tabella senza
"colore di background
BORDER = '0' "='0' senza bordo
IMPORTING
TABLE = l_doctable "Istanza tabella di
"elementi
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.


CALL METHOD l_doctable->add_column
IMPORTING
COLUMN = l_column1 "Area della colonna
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

PERFORM titles CHANGING l_column1.

CALL METHOD l_doctable->add_column
IMPORTING
COLUMN = l_column2 .

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.


CALL METHOD l_column2->add_gap
EXPORTING
WIDTH = 150 "Nro degli spazi
.

CALL METHOD l_document->merge_document.
CALL METHOD l_document->display_document
EXPORTING
parent = g_container_1.
ENDFORM. " header


*&---------------------------------------------------------------------*
*& Form titles
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_L_COLUMN1 text
*----------------------------------------------------------------------*FORM titles CHANGING dg_dyndoc_id TYPE REF TO cl_dd_area.
DATA : dl_text(255) TYPE c. "Testo

dl_text = sy-title.

CONDENSE dl_text.
CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CALL METHOD dg_dyndoc_id->new_line.
CLEAR dl_text.

dl_text = 'Fecha:'.

CALL METHOD dg_dyndoc_id->add_gap.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CLEAR dl_text.

WRITE sy-datum TO dl_text.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CALL METHOD dg_dyndoc_id->new_line.

CLEAR dl_text.

dl_text = 'Hora:'.

CALL METHOD dg_dyndoc_id->add_gap.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CLEAR dl_text.
WRITE sy-uzeit TO dl_text.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CALL METHOD dg_dyndoc_id->new_line.

dl_text = 'Usuario:'.

CALL METHOD dg_dyndoc_id->add_gap.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.

CLEAR dl_text.

dl_text = sy-uname.

CALL METHOD dg_dyndoc_id->add_text
EXPORTING
TEXT = dl_text.
ENDFORM. " titles

Drako
21/10/09, 16:28:06
Para que sea mas facil puedes entrar a la Tx, SE80 y entra en el Paquete SLIS, ahi vienen muchos ejemplos de como hacer ALV's con objetos, en la pestaña de Programas encontraras los ejemplos que te menciono.

Lo que debes hacer es incluir los 2 dynpros en el Custom Container.