PDA

Ver la Versión Completa : grafica pie


program1
30/04/09, 15:43:11
HOLA ,

TENGO UN PROBLEMA PARA MOSTRAR EL PORCENTAGE EN EL GRAFICO PIE, QUISIERA SABER SI LA FUNCION GRAPH TIENE ALGUA OPCION PARA QUE SE MUESTRE EL PORCENTAGE POR FA.

URGENTE.

FER.:eek:

DavidXD_XD
01/05/09, 02:34:33
Hola, creo q t refieres al FM de pastel estadistico, yo tbm lo he usado y le asignaba textos por cada pedazo de pastel, y dentro del programa calculaba por grupos los porcentajes respectivos dentro de una variable de caracteres y se los pasaba a la funcion pero como cadena de texto, espero que ese sea el caso :D

* Variables Locales
DATA: lt_list TYPE tab_list,
lt_pie TYPE TABLE OF ty_pie,
ls_pie LIKE LINE OF lt_pie,
l_total TYPE i,
l_name1 TYPE t001w-name1,
l_cad1(10) TYPE c,
l_cad2(10) TYPE c,
l_cad3(10) TYPE c,
l_text(30) TYPE c,
l_resul(13) TYPE p DECIMALS 3.

FIELD-SYMBOLS: <fs_list> LIKE LINE OF pt_list,
<fs_rang> TYPE ty_rang_dif,
<fs_valor> TYPE ty_dif.

lt_list[] = pt_list[].

SORT lt_list BY rango.
* Aqui saco el total de registros que sirve como base para el %
DESCRIBE TABLE lt_list LINES l_total.

SELECT SINGLE name1
INTO l_name1
FROM t001w
WHERE werks EQ p_werks.

IF sy-subrc = 0.
CONCATENATE p_werks
'-'
l_name1 INTO l_text SEPARATED BY space.
ENDIF.

LOOP AT lt_list ASSIGNING <fs_list> WHERE werks EQ p_werks.
ON CHANGE OF <fs_list>-rango.
CLEAR ls_pie.
READ TABLE gt_rang_dif ASSIGNING <fs_rang>
WITH KEY level = <fs_list>-rango.
IF sy-subrc = 0.
READ TABLE <fs_rang>-rango ASSIGNING <fs_valor> INDEX 1.
IF sy-subrc = 0.
l_cad1 = <fs_valor>-low.
l_cad2 = <fs_valor>-high.
WRITE <fs_list>-rango TO l_cad3.
CONCATENATE 'Rango'
l_cad3 '['
INTO ls_pie-text SEPARATED BY space.
CONCATENATE ls_pie-text
l_cad1 ','
l_cad2 ']' INTO ls_pie-text.
CONDENSE ls_pie-text.
ENDIF.
ENDIF.
ENDON.
ADD 1 TO ls_pie-value.
* Aqui construyo el texto de porcentaje por cada grupo
AT END OF rango.
l_resul = ls_pie-value * 100 / l_total.
WRITE l_resul TO l_cad1.
CONCATENATE ls_pie-text
'(' l_cad1 '%' ')'
INTO ls_pie-text SEPARATED BY space.
CONDENSE ls_pie-text.
APPEND ls_pie TO lt_pie.
ENDAT.
ENDLOOP.
IF lt_pie[] IS INITIAL.
MESSAGE S000 WITH text-t05.
EXIT.
ENDIF.
* Graficando Valores
CALL FUNCTION 'GRAPH_2D'
EXPORTING
display_type = 'PI'
titl = l_text
winpos = '5'
winszx = '50'
winszy = '50'
TABLES
data = lt_pie.

acha3318
01/05/09, 15:47:13
Hola David,

Será que nos podrías regalar la definición de la tabla interna ty_pie, ya que me imagino que la definiste en otro lado.

lt_pie TYPE TABLE OF ty_pie

Gracias,

DavidXD_XD
01/05/09, 20:25:46
Claro, ese es el tipo:

TYPES: BEGIN OF ty_pie,
text(50),
value TYPE p,
END OF ty_pie.

acha3318
03/05/09, 17:44:17
Bien, gracias...

Tambien es necesario la definición de pt_list y la forma como se llena.

Claro, ese es el tipo:

TYPES: BEGIN OF ty_pie,
text(50),
value TYPE p,
END OF ty_pie.

acha3318
05/05/09, 22:15:29
Hola hizo falta que me regalaras la definición de pt_list y la forma como la estas llenando. Te agradezco.

Hola, creo q t refieres al FM de pastel estadistico, yo tbm lo he usado y le asignaba textos por cada pedazo de pastel, y dentro del programa calculaba por grupos los porcentajes respectivos dentro de una variable de caracteres y se los pasaba a la funcion pero como cadena de texto, espero que ese sea el caso :D

* Variables Locales
DATA: lt_list TYPE tab_list,
lt_pie TYPE TABLE OF ty_pie,
ls_pie LIKE LINE OF lt_pie,
l_total TYPE i,
l_name1 TYPE t001w-name1,
l_cad1(10) TYPE c,
l_cad2(10) TYPE c,
l_cad3(10) TYPE c,
l_text(30) TYPE c,
l_resul(13) TYPE p DECIMALS 3.

FIELD-SYMBOLS: <fs_list> LIKE LINE OF pt_list,
<fs_rang> TYPE ty_rang_dif,
<fs_valor> TYPE ty_dif.

lt_list[] = pt_list[].

SORT lt_list BY rango.
* Aqui saco el total de registros que sirve como base para el %
DESCRIBE TABLE lt_list LINES l_total.

SELECT SINGLE name1
INTO l_name1
FROM t001w
WHERE werks EQ p_werks.

IF sy-subrc = 0.
CONCATENATE p_werks
'-'
l_name1 INTO l_text SEPARATED BY space.
ENDIF.

LOOP AT lt_list ASSIGNING <fs_list> WHERE werks EQ p_werks.
ON CHANGE OF <fs_list>-rango.
CLEAR ls_pie.
READ TABLE gt_rang_dif ASSIGNING <fs_rang>
WITH KEY level = <fs_list>-rango.
IF sy-subrc = 0.
READ TABLE <fs_rang>-rango ASSIGNING <fs_valor> INDEX 1.
IF sy-subrc = 0.
l_cad1 = <fs_valor>-low.
l_cad2 = <fs_valor>-high.
WRITE <fs_list>-rango TO l_cad3.
CONCATENATE 'Rango'
l_cad3 '['
INTO ls_pie-text SEPARATED BY space.
CONCATENATE ls_pie-text
l_cad1 ','
l_cad2 ']' INTO ls_pie-text.
CONDENSE ls_pie-text.
ENDIF.
ENDIF.
ENDON.
ADD 1 TO ls_pie-value.
* Aqui construyo el texto de porcentaje por cada grupo
AT END OF rango.
l_resul = ls_pie-value * 100 / l_total.
WRITE l_resul TO l_cad1.
CONCATENATE ls_pie-text
'(' l_cad1 '%' ')'
INTO ls_pie-text SEPARATED BY space.
CONDENSE ls_pie-text.
APPEND ls_pie TO lt_pie.
ENDAT.
ENDLOOP.
IF lt_pie[] IS INITIAL.
MESSAGE S000 WITH text-t05.
EXIT.
ENDIF.
* Graficando Valores
CALL FUNCTION 'GRAPH_2D'
EXPORTING
display_type = 'PI'
titl = l_text
winpos = '5'
winszx = '50'
winszy = '50'
TABLES
data = lt_pie.

DavidXD_XD
06/05/09, 16:21:57
Hola, sry x la demora no tenia el codigo a la mano :( , ahi te adjunto el codigo completo ... espero te pueda ayudar

PD: El programa esta hecho con metodos y clases, pero la logica si esta clara, estrae datos de material, centro y lote, realiza una comparacion de fechas de fabricacion y de vencimiento y luego muestra un reporte con la diferencia de las mismas, en base a las diferencias hay un rango de diferencias (0,1,2,3,4,5) y tbm en base a ese rango se construye el pastel para ver el porcentaje del mismo

acha3318
08/07/09, 18:56:31
Te quedo muy agradecido, voy a estudiar el codigo.

Hola, sry x la demora no tenia el codigo a la mano :( , ahi te adjunto el codigo completo ... espero te pueda ayudar

PD: El programa esta hecho con metodos y clases, pero la logica si esta clara, estrae datos de material, centro y lote, realiza una comparacion de fechas de fabricacion y de vencimiento y luego muestra un reporte con la diferencia de las mismas, en base a las diferencias hay un rango de diferencias (0,1,2,3,4,5) y tbm en base a ese rango se construye el pastel para ver el porcentaje del mismo

sponsor
05/10/16, 14:45:19
Retomo el hilo, a ver si @DavidXD_XD sigue por aquí.

Mi duda es, si de alguna manera, se puede hacer que al grafico PIE se le pueda clicar en uno de los trozos para mandarlo a un user_command, que haga la funcionalidad que necesito.

Gracias.

sponsor
13/10/16, 06:46:27
Alguna sugerencia?

sponsor
13/10/16, 10:05:35
Alguna sugerencia?

acesar
18/10/16, 20:52:27
Alguna sugerencia?

La verdad es que no me queda claro que querés hacer.

Te comento que yo he hecho varias gráficas tomando como base un excel, al cual le configuro todo y lo grabo como excel base (sería como una plantilla).
Posteriormente en ABAP llamo a ese excel y lo grabo con un nombre distinto y me limito a llenar las celdas con los datos.
Con eso queda un excel con gráficos listo.

Te digo que me llevo un rato aprender a llenar un excel desde ABAP, pero finalmente es una pavada.

sponsor
25/10/16, 07:14:07
La verdad es que no me queda claro que querés hacer.

Te comento que yo he hecho varias gráficas tomando como base un excel, al cual le configuro todo y lo grabo como excel base (sería como una plantilla).
Posteriormente en ABAP llamo a ese excel y lo grabo con un nombre distinto y me limito a llenar las celdas con los datos.
Con eso queda un excel con gráficos listo.

Te digo que me llevo un rato aprender a llenar un excel desde ABAP, pero finalmente es una pavada.

Quiero saber si a partir de un grafico PIE podría clicar sobre él y hacerlo interactivo (por ejemplo hacer click en el gráfico y mostrar un alv popup.)