grafica pie

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • program1
    Junior Member
    • mar
    • 8

    #1

    grafica pie

    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.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    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

    Código:
    [COLOR="Blue"]* Variables Locales[/COLOR]
      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.
    [COLOR="Blue"]* Aqui saco el total de registros que sirve como base para el %[/COLOR]
      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.
    [COLOR="Blue"]* Aqui construyo el texto de porcentaje por cada grupo[/COLOR]
        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.
    [COLOR="Blue"]* Graficando Valores[/COLOR]
      CALL FUNCTION 'GRAPH_2D'
           EXPORTING
                display_type = 'PI'
                titl         = l_text
                winpos       = '5'
                winszx       = '50'
                winszy       = '50'
           TABLES
                data         = lt_pie.
    David Carballido Córdova

    Comentario

    • acha3318
      Senior Member
      • abr
      • 182

      #3
      Probar Prog Graficos Pie

      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,

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Claro, ese es el tipo:

        Código:
        TYPES: BEGIN OF ty_pie,
                 text(50),
                 value TYPE p,
               END OF ty_pie.
        David Carballido Córdova

        Comentario

        • acha3318
          Senior Member
          • abr
          • 182

          #5
          Bien, gracias...

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

          Originalmente publicado por DavidXD_XD
          Claro, ese es el tipo:

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

          Comentario

          • acha3318
            Senior Member
            • abr
            • 182

            #6
            Hola hizo falta que me regalaras la definición de pt_list y la forma como la estas llenando. Te agradezco.

            Originalmente publicado por DavidXD_XD
            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

            Código:
            [COLOR="Blue"]* Variables Locales[/COLOR]
              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.
            [COLOR="Blue"]* Aqui saco el total de registros que sirve como base para el %[/COLOR]
              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.
            [COLOR="Blue"]* Aqui construyo el texto de porcentaje por cada grupo[/COLOR]
                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.
            [COLOR="Blue"]* Graficando Valores[/COLOR]
              CALL FUNCTION 'GRAPH_2D'
                   EXPORTING
                        display_type = 'PI'
                        titl         = l_text
                        winpos       = '5'
                        winszx       = '50'
                        winszy       = '50'
                   TABLES
                        data         = lt_pie.

            Comentario

            • DavidXD_XD
              Moderator
              • ago
              • 1255

              #7
              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
              Archivos Adjuntos
              David Carballido Córdova

              Comentario

              • acha3318
                Senior Member
                • abr
                • 182

                #8
                Te quedo muy agradecido, voy a estudiar el codigo.

                Originalmente publicado por DavidXD_XD
                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

                Comentario

                • sponsor
                  Senior Member
                  • may
                  • 108

                  #9
                  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.

                  Comentario

                  • sponsor
                    Senior Member
                    • may
                    • 108

                    #10
                    Alguna sugerencia?

                    Comentario

                    • sponsor
                      Senior Member
                      • may
                      • 108

                      #11
                      Alguna sugerencia?

                      Comentario

                      • acesar
                        Member
                        • abr
                        • 44

                        #12
                        Originalmente publicado por sponsor
                        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.

                        Comentario

                        • sponsor
                          Senior Member
                          • may
                          • 108

                          #13
                          Originalmente publicado por acesar
                          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.)

                          Comentario

                          Trabajando...