Foro de programación ABAP
Código abierto => Reports => Mensaje iniciado por: TIN_JD en 14 de Enero de 2008, 10:21:36 pm
-
HOLA A TODOS, LO QU EPASA ES QUE ESTOY DESARROLLANDO UN REPORTE PERO ME TOPE CON ALGO QUE NO SE SI SE PUEDA HACER Y PUES POR MAS QUE BUSCO NO ENCUENTRO COMO, ASI QUE OS PLANTEO.
ALGUIEN SABE COMO PUEDO ABERIGUAR SI UN REPORTE A SIDO UTILIZADO DESDE SU CREACION, O SI ES UTILIZADO AMENUDO, PUESTO QUE SE QUIER HACER UNA MANTENIMIENTO DE TODO EL SAP EN GENERAL SE DESEA SABER SI TODO LO QU ESTA AQUI ES UTIL O NO.
DE ANTEMANO SI ALGUIEN ME PUDIERA AYUDAR RESPONDIENDOME LO AGRADESCO.
-
Hola.
De forma estandar no se como se puede mirar, pero se me ocurre una idea que no se si te servirá.
Te puedes crear una tabla de la base de datos con los siguientes campos:
-NOMBRE_DEL_REPORT
-FECHA_EJECUCION
-HORA_EJECUCION
-USUARIO_DE_LA_EJECUCION
Lo que tendrías que hacer (lo mas coñazo) es en todos los programas que quieras saber cuando ha sido ejecutado meterle un trozo de código donde le puedas guardar toda esta información en la tabla.
Un saludo.
-
OYE GRASIAS PERO SAVES CREO QUE NO ME EXPLIQUE BIEN EN MI DUDA, LO QUE MEE STAN OPIDIENDO EN LA EMPRESA ES SAVER DIGAMOS QUE DESDE QUE SE CREARON SI SE USAN O NO, PORQUE AL PARESER TIENEN COMO 300 O MAS REPORTES Y CREOQ UE SOLO OCUPAN MAXIMO 80
Y DESEAN SAVER CUALES SON LOS QUE YA NO OCUPAN Y CUALES SI.
AGRADESCO TU RESPUESTA
UN SALUDO
-
Copia este report.
Te dice todos los programas que no han sido utilizados desde la fecha indicada.
REPORT zsbcprog LINE-SIZE 110
NO STANDARD PAGE HEADING.
TABLES: d010sinf, tstc, tstct.
* Pantalla de selección
SELECTION-SCREEN BEGIN OF BLOCK sele WITH FRAME TITLE text-t02.
PARAMETERS: date_fr LIKE sy-datum.
* date_to type d default sy-datum.
SELECTION-SCREEN END OF BLOCK sele.
* Tablas internas
DATA: t_apps LIKE sapwlustcx OCCURS 0.
DATA: wa_apps LIKE sapwlustcx.
DATA: BEGIN OF t_progs OCCURS 0, "Programas que se utilizan
prog(8),
END OF t_progs.
DATA: BEGIN OF t_trans OCCURS 0,
tcode LIKE tstc-tcode,
ttext LIKE tstct-ttext,
END OF t_trans.
* Variables auxiliares.
DATA: used.
DATA: years(4), months(2), days(2).
DATA: aux_date TYPE d.
DATA: prog_texts LIKE textpool OCCURS 0 WITH HEADER LINE.
INITIALIZATION.
* Desde el inicio del año.
date_fr = sy-datum.
date_fr+4 = '0101'.
AT SELECTION-SCREEN.
IF date_fr > sy-datum.
MESSAGE e000(z1).
ENDIF.
TOP-OF-PAGE.
WRITE: / 'Programas no usados desde el día'(t01), date_fr.
ULINE.
START-OF-SELECTION.
REFRESH t_progs.
* Busco los programas utilizados en el periodo especificado
* Years
years = date_fr(4).
aux_date+4 = '0101'.
WHILE years < sy-datum(4).
aux_date(4) = years.
PERFORM get_used_programs USING 'Y' aux_date.
years = years + 1.
ENDWHILE.
aux_date(4) = years.
* Months
months = date_fr+4(2).
aux_date+6 = '01'.
WHILE months <= sy-datum+4(2).
aux_date+4(2) = months.
PERFORM get_used_programs USING 'M' aux_date.
months = months + 1.
ENDWHILE.
* Weeks
WHILE aux_date <= sy-datum.
PERFORM get_used_programs USING 'W' aux_date.
aux_date = aux_date + 7.
ENDWHILE.
aux_date = aux_date - 7.
* Days
WHILE aux_date <= sy-datum.
PERFORM get_used_programs USING 'D' aux_date.
aux_date = aux_date + 1.
ENDWHILE.
* Ordenamos la tabla de programas usados.
SORT t_progs BY prog.
FORMAT RESET.
SELECT * FROM d010sinf
WHERE ( prog LIKE 'Z%' "Reports
OR prog LIKE 'Y%' )
AND subc = '1'
OR ( prog LIKE 'SAPMZ%' "Module-Pools
OR prog LIKE 'SAPMY%' )
AND subc = 'M'.
* or ( prog like 'SAPLZ%' "Function Groups
* or prog like 'SAPLY%' )
* and subc = 'F'.
CLEAR used.
REFRESH t_trans.
* Si se llama por transacción, compruebo si esta se usa
SELECT tcode FROM tstc
INTO TABLE t_trans
WHERE pgmna = d010sinf-prog.
IF sy-subrc = 0.
LOOP AT t_trans.
READ TABLE t_progs WITH KEY prog = t_trans-tcode.
CHECK sy-subrc = 0.
used = 'X'.
EXIT.
ENDLOOP.
ENDIF.
READ TABLE t_progs WITH KEY prog = d010sinf-prog
BINARY SEARCH.
IF sy-subrc <> 0 AND used IS INITIAL.
* append...
REFRESH prog_texts.
READ TEXTPOOL d010sinf-prog INTO prog_texts LANGUAGE sy-langu.
IF sy-subrc = 0.
READ TABLE prog_texts WITH KEY id = 'R'.
ENDIF.
WRITE: / d010sinf-prog COLOR 1,
AT (prog_texts-length) prog_texts-entry COLOR 2.
LOOP AT t_trans.
SELECT SINGLE ttext FROM tstct
INTO t_trans-ttext
WHERE tcode = t_trans-tcode
AND sprsl = sy-langu.
WRITE: /10 t_trans-tcode COLOR 7 INTENSIFIED OFF,
t_trans-ttext INTENSIFIED OFF.
AT LAST.
SKIP.
ENDAT.
ENDLOOP.
ENDIF.
ENDSELECT.
*---------------------------------------------------------------------*
* FORM GET_USED_PROGRAMS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_PERIOD Puede ser 'Y' (Año), 'M' (Mes), ó 'D' (Día) *
* --> P_STARTD Fecha de referencia *
*---------------------------------------------------------------------*
FORM get_used_programs USING p_period p_startd.
REFRESH t_apps.
CALL FUNCTION 'SAPWL_WORKLOAD_GET_STATISTIC'
EXPORTING
periodtype = p_period
hostid = 'TOTAL'
startdate = p_startd
only_application_statistic = 'X'
TABLES
application_statistic = t_apps
EXCEPTIONS
unknown_periodtype = 1
no_data_found = 2
OTHERS = 3.
CHECK sy-subrc = 0.
LOOP AT t_apps INTO wa_apps
WHERE account = 'cumul.' AND
entry_id(1) = 'Z' OR
entry_id(1) = 'Y' OR
entry_id(5) = 'SAPMZ' OR
entry_id(5) = 'SAPMY'.
t_progs-prog = wa_apps-entry_id.
COLLECT t_progs.
ENDLOOP.
ENDFORM. "get_used_programs
Un saludo,
Oscar.
-
GRASIAS AGRADESCO MUCHO TU APORTE YA LO ADAPTE Y MODIFIQUE DEACUERDO AMIS REQUERIEMINTOS Y CAMBIANDO LQ UE YA TENIA JUNTO CON ESTO ESTUVO CHIDO, SOLO UNA PREGUNTA SAVES DE DONDE SE PUEDE VER O SACAR LA FECHA DE ULTIMA EJECUCION , NO LA DE CREACION NI LA DE MODIFICACION ESAS SI SE DE DONDE , SINO LA DE ULTIMA VES QUE ALGUIEN LO OCUPO, Y UNA DUDA, EL TUYO ASI COMO ESTA EL CODIGO MUESTRA SIEMPRE LOS MISMOS PROGRAMAS NO CRES, QUE EN EL LLENADO DE LA TABLA T_PROGS, ESTA ALREVES?
DE ANTEMANO MUCHAS GRACIAS
Y DESPUES QUE TERMINE EL REPORTE EN SU TOTALIDAD LO SUBIRE POR SI ALGIEN LO NESESITA
GRAX OSCAR, POR TU AYUDA
-
Efectivamente el programa no funciona como es debido. Este es un programa de los que tengo archivados y he visto que no funcionaba correctamente. Lo voy a corregir para dejarlo bien en funcionamiento.
En cuanto a ver cuando fue la última vez que ha sido ejecutado, es cierto que ese dato no viene en la trabla d010sinf que se está utilizando, voy a ver si consigo encontrarlo porque el programa yo pienso que es interesante (funcionando claro :D).
Un saludo.
-
Hola buenos días, los molesto porque me toca realizar la misma tarea que a @TIN_JD, necesitaría saber si pudieron resolverlo y agradecería mucho si me pudiesen indicar la forma o las tablas donde puedo encontrar la fecha de última ejecución de un reporte.-
Desde ya muchas gracias.-
Saludos