Monday, November 15, 2010

ALV OO

Preliminares
crear screen 0100
crear custom control en el dynpro 0100 nombre CC_0100
crear 'STATUS_100'.
Crear 'TITULO_100'.
TOP
* Tabla global para el manejo al alv.
DATA: gtd_alv TYPE STANDARD TABLE OF gty_alv.
* Variables para construir layout y fieldcat el alvOO.
DATA: gwa_alvoo_layout TYPE lvc_s_layo.
* Tabla con los datos del layout del alvOO.
DATA: gtd_alvoo_fieldcat TYPE lvc_t_fcat.
*Clase usada en el manejo del alv
CLASS gcl_alvoo_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS.
* Objetos para el ALV
DATA: go_custom_container TYPE REF TO cl_gui_custom_container,
go_alvoo TYPE REF TO cl_gui_alv_grid,
go_alvoo_event_handler TYPE REF TO gcl_alvoo_event_handler.
* Comando de eventos
DATA gs_okcode_0100 TYPE sy-ucomm.
CLA
* Clase usada en el manejo del alv
CLASS gcl_alvoo_event_handler IMPLEMENTATION.
METHOD handle_toolbar.
ENDMETHOD.
METHOD handle_user_command.
ENDMETHOD.
ENDCLASS.
MAI
START-OF-SELECTION.
PERFORM cargar_data.
IF gtd_alv[] IS NOT INITIAL.
PERFORM construir_alvoo.
call screen 100.
ENDIF.
F01
cargar data
F02
FORM construir_layout_alvoo CHANGING pwa_layout_alvoo TYPE lvc_s_layo.
pwa_layout_alvoo-zebra = 'X'.
pwa_layout_alvoo-sel_mode = 'A'.
ENDFORM.
--------------------------------------------
FORM construir_layout_alvoo CHANGING pwa_layout_alvoo type lvc_s_layo.
pwa_layout_alvoo-zebra = 'X'.
pwa_layout_alvoo-sel_mode = 'A'.
ENDFORM. " construir_layout_alvoo
------------------------------------------
FORM contruir_catalogo_alvoo CHANGING ptd_alvoo_fieldcat TYPE lvc_t_fcat.
* Sociedad
PERFORM llenar_fieldcat_alvoo USING 'BUKRS' 'GTD_ALV' '' 'X' ''
text-c01 text-c02 'T001' 'BUKRS'
CHANGING ptd_alvoo_fieldcat.
* Fecha de Emision
PERFORM llenar_fieldcat_alvoo USING 'FEMIS' 'GTD_ALV' '' '' ''
text-c03 text-c04 'T001' 'FMHRDATE'
CHANGING ptd_alvoo_fieldcat.
* Numero de carta fianza
PERFORM llenar_fieldcat_alvoo USING 'NCFIA' 'GTD_ALV' '' '' ''
text-c05 text-c06 '' ''
CHANGING ptd_alvoo_fieldcat.
ENDFORM.
--------------------------------------------
FORM llenar_fieldcat_alvoo USING pi_campo TYPE lvc_fname
pi_tabla TYPE lvc_tname
pi_ccampo TYPE lvc_cfname
pi_key TYPE lvc_key
pi_enfatizar TYPE lvc_emphsz
pi_textl
pi_textm
pi_rtabla TYPE lvc_rtname
pi_rcampo TYPE lvc_rfname
CHANGING ptd_fieldcat_alvoo TYPE lvc_t_fcat.
DATA: lwa_fieldcat TYPE lvc_s_fcat.
lwa_fieldcat-fieldname = pi_campo.
lwa_fieldcat-tabname = pi_tabla.
lwa_fieldcat-key = pi_key.
lwa_fieldcat-cfieldname = pi_ccampo.
lwa_fieldcat-emphasize = pi_enfatizar.
lwa_fieldcat-scrtext_l = pi_textl.
lwa_fieldcat-scrtext_m = pi_textm.
lwa_fieldcat-ref_table = pi_rtabla.
lwa_fieldcat-ref_field = pi_rcampo.
APPEND lwa_fieldcat TO ptd_fieldcat_alvoo.
CLEAR lwa_fieldcat.
ENDFORM. " llenar_fieldcat_alvoo
SCREEN 100
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE contenedor_0100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
MODULE exit_0100 AT EXIT-COMMAND.
I01
MODULE exit_0100 INPUT.
gs_okcode_0100 = sy-ucomm.
CASE gs_okcode_0100.
WHEN 'BACK' OR 'CANCEL'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN 'EXIT'.
PERFORM salir_programa.
ENDCASE.
CLEAR gs_okcode_0100.
ENDMODULE.
O01
-----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
SET TITLEBAR 'TITULO_0100'.
ENDMODULE. " status_0100 OUTPUT
-----
MODULE contenedor_0100 OUTPUT.
IF go_custom_container IS INITIAL.
CREATE OBJECT go_custom_container
EXPORTING
container_name = 'CC_0100'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = sy-repid
txt2 = sy-subrc
txt1 = text-001.
ENDIF.
CREATE OBJECT go_alvoo
EXPORTING
i_parent = go_custom_container.
CREATE OBJECT go_alvoo_event_handler.
SET HANDLER go_alvoo_event_handler->handle_toolbar FOR go_alvoo.
CALL METHOD go_alvoo->set_table_for_first_display
EXPORTING
i_structure_name = 'GTD_ALV'
is_layout = gwa_alvoo_layout
i_default = 'A'
CHANGING
it_fieldcatalog = gtd_alvoo_fieldcat
it_outtab = gtd_alv.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_alvoo.
ELSE.
CALL METHOD go_alvoo->refresh_table_display.
ENDIF.
ENDMODULE. " contenedor_0100 OUTPUT

No comments:

Post a Comment