Lista objetos de desarrollo
REPORT zinventario_objetos .
*----------------------------------------------------------------*
* Descripción: El programa muestra un listado de los objetos de
* desarrollo que hay en el sistema los podremos filtrar por
* Tipo de objeto:
* Programa.
* Report
* ModulPool
* Grupo Funciones / Función
* Clase de Desarrollo.
* Usuario Creador.
*----------------------------------------------------------------*
* Nombre Programa: ZINVENTARIO_OBJETOS
* Autor: Alberto Martín Hernández.
* Fecha: 13-01-2003
*----------------------------------------------------------------*
*----------------------------------------------------------------*
* DEFINICIÓN DE TIPOS
*----------------------------------------------------------------*
TYPE-POOLS: slis.
*----------------------------------------------------------------*
* DEFINICIÓN DE TABLAS
*----------------------------------------------------------------*
TABLES:
tstc, " Códigos de transacción SAP
trdirt, " Textos título p.programas en TRDIR
trdir, " Tabla de sistema TRDIR
tadir. " Catálogo de objetos Repository
*----------------------------------------------------------------*
* DEFINICIÓN DE ESTRUCTURAS
*----------------------------------------------------------------*
*----------------------------------------------------------------*
* DEFINICIÓN DE TABLAS INTERNAS
*----------------------------------------------------------------*
DATA: BEGIN OF ti_object OCCURS 0,
devclass LIKE tadir-devclass,
object LIKE tadir-object,
obj_name LIKE tadir-obj_name,
author LIKE tadir-author,
cdat LIKE trdir-cdat,
text LIKE trdirt-text,
tcode LIKE tstc-tcode,
END OF ti_object.
*----------------------------------------------------------------*
* DEFINICIÓN DE CONSTANTES
*----------------------------------------------------------------*
CONSTANTS:
formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
formname_user_command TYPE slis?????P?:?a???˜??_formname VALUE 'USER_COMMAND',
formname_before_output TYPE slis_formname VALUE 'BEFORE_OUTPUT'.
*----------------------------------------------------------------*
* DEFINICIÓN DE VARIABLES
*----------------------------------------------------------------*
DATA: fieldtab TYPE slis_t_fieldcat_alv,
heading TYPE slis_t_listheader,
layout TYPE slis_layout_alv,
events TYPE slis_t_event,
repname LIKE sy-repid,
f2code LIKE sy-ucomm VALUE '&ETA',
g_save(1) TYPE c VALUE 'A',
g_exit(1) TYPE c,
t_sort TYPE slis_t_sortinfo_alv,
e_sort TYPE slis_sortinfo_alv,
g_variant LIKE disvariant,
gx_variant LIKE disvariant.
*----------------------------------------------------------------*
* PANTALLA DE SELECCIÓN
*----------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bloq1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_pgmid FOR tadir-pgmid, " Id progama
p_object FOR tadir-object, " tipo Objeto
p_name FOR tadir-obj_name OBLIGATORY, " Nombre Objeto
p_devcl FOR tadir-devclass, " Clase Des
p_cnam FOR trdir-cnam. " Usuario Creador
SELECTION-SCREEN END OF BLOCK bloq1.
SELECTION-SCREEN BEGIN OF BLOCK bloq3 WITH FRAME TITLE text-003.
PARAMETERS: p_alvasg TYPE slis_vari. " Disposición ALV
SELECTION-SCREEN END OF BLOCK bloq3.
*--------------------------------------------------------------------*
* INITIALIZATION
*--------------------------------------------------------------------*
INITIALIZATION.
repname = sy-repid.
* PERFORM initialize_fieldcat USING fieldtab[].
PERFORM build_eventtab USING events[].
PERFORM build_comment USING heading[].
*--------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alv
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvasg.
PERFORM alvl_value_request USING p_alvasg ' ?????P?:?a???˜?? '.
*----------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------*
START-OF-SELECTION.
PERFORM obtener_datos.
*----------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------*
END-OF-SELECTION.
PERFORM build_layout USING layout.
PERFORM write_output.
*--------------------------------------------------------------------*
* SUBRUTINAS
*--------------------------------------------------------------------*
*&---------------------------------------------------------------------
*& Form BUILD_EVENTTAB
*&---------------------------------------------------------------------
FORM build_eventtab USING p_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events.
READ TABLE p_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
READ TABLE p_events WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_user_command TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
READ TABLE p_events WITH KEY name = slis_ev_before_line_output
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_before_output TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
ENDFORM. " BUILD_EVENTTAB
*&---------------------------------------------------------------------
*& Form BUILD_COMMENT
*&---------------------------------------------------------------------
FORM build_comment USING p_heading TYPE slis_t_listheader.
DATA: hline TYPE slis_listheader,
text(60?????P?:?a???˜??) TYPE c,
sep(20) TYPE c.
CLEAR: hline, text.
hline-typ = 'H'.
WRITE: text-101 TO text+23.
hline-info = text.
APPEND hline TO p_heading.
hline-typ = 'H'.
CLEAR text.
WRITE: 'User: ' TO text,
sy-uname TO text+6,
'Date: ' TO text+25,
sy-datum TO text+31,
'Page: ' TO text+50,
sy-pagno TO text+56.
hline-info = text.
APPEND hline TO p_heading.
CLEAR text.
hline-typ = 'S'.
ENDFORM. " BUILD_COMMENT
*---------------------------------------------------------------------
* Form ALVL_VALUE_REQUEST
*---------------------------------------------------------------------
FORM alvl_value_request USING pi_alv
value(p_0158).
DATA: l_disvariant TYPE disvariant.
* Wertehilfe
l_disvariant-report = sy-cprog.
* l_disvariant-report(1) = 'A'.
l_disvariant-variant = pi_alv.
l_disvariant-log_group = p_0158.
CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
EXPORTING
i_save_load = 'F'
i_tabname = '1'
CHANGING
cs_variant = l_disvariant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
pi_alv = l_disvariant-variant.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " ALVL_VALUE_REQUEST
*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = heading.
ENDFORM.
*&---------------------------------------------------------------------
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------
FORM ?????P?:?a???˜??build_layout USING p_layout TYPE slis_layout_alv.
p_layout-f2code = f2code.
p_layout-zebra = 'X'.
p_layout-detail_popup = 'X'.
* p_layout-box_fieldname = 'SELEC'.
p_layout-colwidth_optimize = 'X'.
p_layout-cell_merge = 'X'.
p_layout-detail_initial_lines = 'X'.
p_layout-window_titlebar =
'Listado Objetos Desarrollo'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------
*& Form WRITE_OUTPUT
*&---------------------------------------------------------------------
FORM write_output.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = repname
i_internal_tabname = 'TI_OBJECT'
i_inclname = repname
CHANGING
ct_fieldcat = fieldtab.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_FIELDCATALOG_MERGE'.
ENDIF.
* Modificamos el catálogo de campos.
PERFORM modify_fieldcatalog USING fieldtab[].
* Tabla con los campos por los se ordenarán el listado en el
* List Viewer
* La ordenación se realizará por: destinatario, ciente, pedido y
* posición de pedido.
PERFORM ordenar_listado USING: 1 'obj_name' 'X' ' '.
* Informar Disposición de Salida
CLEAR g_variant.
g_variant-report = sy-repid.
g_variant-variant = p_alvasg.
g_variant-log_group = ' '.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
* i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_structure_name = 'TI_OBJECT'
is_layout = layout
it_fieldcat = fieldtab
i_default = 'X'
i_save = g_save
is_variant = g_variant
it_events ?????P?:?a???˜?? = events[]
TABLES
t_outtab = ti_object
EXCEPTIONS
program_error = 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.
ENDFORM. " WRITE_OUTPUT
*---------------------------------------------------------------------*
* Form obtener_datos
*---------------------------------------------------------------------*
FORM obtener_datos.
SELECT * FROM tadir INTO CORRESPONDING FIELDS OF TABLE ti_object
WHERE pgmid IN p_pgmid
AND object IN p_object
AND obj_name IN p_name
AND devclass IN p_devcl.
LOOP AT ti_object.
PERFORM otros_datos.
MODIFY ti_object.
ENDLOOP.
ENDFORM. " obtener_datos
*---------------------------------------------------------------------*
* Form otros_datos
*---------------------------------------------------------------------*
FORM otros_datos.
SELECT SINGLE * FROM trdir WHERE name = ti_object-obj_name.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING trdir TO ti_object.
SELECT SINGLE * FROM trdirt WHERE name = trdir-name.
IF sy-subrc IS INITIAL.
MOVE trdirt-text TO ti_object-text.
ENDIF.
SELECT SINGLE * FROM tstc WHERE pgmna = trdir-name.
IF sy-subrc IS INITIAL.
MOVE tstc-tcode TO ti_object-tcode.
ENDIF.
ENDIF.
ENDFORM. " otros_datos
*---------------------------------------------------------------------
* Form modify_fieldcatalog
*---------------------------------------------------------------------
FORM modify_fieldcatalog USING p_fieldtab TYPE slis_t_fieldcat_alv.
DATA: l_fieldcat TYPE slis_fieldcat_alv.
* fixed columns (obligatory)
READ TABLE p_fieldtab WITH KEY fieldname = 'SELEC' INTO l_fieldcat.
IF sy-su?????P?:?a???˜??brc = 0.
l_fieldcat-no_out = 'X'.
MODIFY p_fieldtab FROM l_fieldcat INDEX sy-tabix.
ENDIF.
ENDFORM. " INITIALIZE_FIELDCAT
*---------------------------------------------------------------------
* Form ordenar_listado
*---------------------------------------------------------------------
* Tabla con los campos por los se ordenarán el listado en el
* List Viewer
*----------------------------------------------------------------------
FORM ordenar_listado USING p_spos p_fieldname p_up p_subtot.
CLEAR t_sort.
CLEAR e_sort.
e_sort-spos = p_spos.
e_sort-fieldname = p_fieldname.
e_sort-up = p_up.
e_sort-subtot = p_subtot.
APPEND e_sort TO t_sort.
ENDFORM. " ordenar_listado
|