Tricktresorsche Glockenkurve
Eine kleine Fingerübung im old-style, die aus einem Denkansatz heraus abgefallen ist: Eine kleine “grafische” Spielerei zur Darstellung der Gauß-Funktion/ Glockenkurve/ Normalverteilung.
Da dies für mich bereits höhere Mathematik ist, bin ich besonders stolz auf diese kleine Spielerei. Eine schönere Möglichkeit wäre sicherlich die Darstellung im GFW-Framework, aber ich wollte nur schnell sehen, ob die berechneten Werte irgendwie stimmig sind.
GFW-Framework
Bei Interesse schau dir die Demoprogramme GFW_PROG* und GFW_DEMO* einmal an:
GFW_DEMO_HIER3 GFW: Demonstration einer Hierarchie-/Präsentationsgrafik (Drag&Drop)
GFW_DEMO_PRES GFW: Demonstration von GFW mit sichtbarem Datencontainer
GFW_DEMO_PRES1 GFW: Demonstration von Präsentationsgrafiken mit GFW
GFW_DEMO_PRES_MAIN class with application logic of example report “GFW_DEMO_PRES”
GFW_PROG_BAR GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_COLUMNS_AND_TIME_AXIS GFW: Programmierbeispiel für ein Balkendiagramm mit Zeitachse
GFW_PROG_CREATE_CUSTOMIZING GFW: Programmierbeisp. für einfachen Gebrauch von Customizing-Bündeln
GFW_PROG_DC_PERFORMANCE GFW: Programmierbeispiel für die schnelle Datencontainerverwendung
GFW_PROG_GET_CU_BUNDLE GFW: Programmierbeispiel mit Methode if_graphic_proxy~get_cu_bundle
GFW_PROG_HISTOGRAM GFW: Programmierbeispiel für ein Histogramm
GFW_PROG_LABELS GFW: Programmierbeispiel für dieselben Beschriftungen, lange Beschr.
GFW_PROG_MTA GFW: Programmierbeispiel für eine Meilensteintrendanalyse
GFW_PROG_PIE GFW: Programmierbeispiel für ein Kreisdiagramm
GFW_PROG_POINT_WITH_LABEL GFW: Programmierbeispiel für Diagramm mit gekennzeichnetem Punkt
GFW_PROG_PORTFOLIO GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_SPEEDOMETER GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_TIME_AXIS GFW: Programmierbeispiel für ein Punktdiagramm mit Zeitachse
GFW_PROG_TUTORIAL GFW: Programmierbeispiel für eine einfache PräsGrafik = GFW-Tutorial
Code
REPORT zz_gauss_timer_demo NO STANDARD PAGE HEADING LINE-SIZE 1000.
CLASS main DEFINITION.
PUBLIC SECTION.
METHODS start.
PROTECTED SECTION.
DATA sigma TYPE f VALUE '0.1'.
DATA my TYPE f VALUE 0.
DATA count TYPE i.
METHODS gauss.
DATA timer TYPE REF TO cl_gui_timer.
METHODS finished FOR EVENT finished OF cl_gui_timer.
METHODS clear_screen.
ENDCLASS.
CLASS main IMPLEMENTATION.
METHOD start.
gauss( ).
timer = NEW #( ).
SET HANDLER finished FOR timer.
timer->interval = 1.
timer->run( ).
ENDMETHOD.
METHOD finished.
gauss( ).
ADD 1 TO count.
IF count < 10.
timer->run( ).
ELSE.
SKIP TO LINE 28.
POSITION 120.
WRITE 'FINISHED'.
ENDIF.
ENDMETHOD.
METHOD gauss.
DATA e TYPE f VALUE '2.718281828459'.
DATA pi TYPE f VALUE '3.14159265359'.
DATA x TYPE f.
DATA erg TYPE f.
DATA anz TYPE i VALUE 51.
DATA l TYPE i. "value for result (scaled)
clear_screen( ).
SKIP TO LINE 3.
ADD '0.02' TO sigma.
x = -1.
DO anz TIMES.
"calculate gauss
erg = ( 1 / sigma * sqrt( 2 * pi ) ) * e **
( '0.5-' * ( ( x - my ) / ( sigma ) ) ** 2 ) .
"write result
WRITE: / x EXPONENT 0 DECIMALS 2, erg EXPONENT 0 DECIMALS 5.
"scale result
l = erg * 4.
"write graph
DO l TIMES.
WRITE sym_checkbox as SYMBOL NO-GAP.
* WRITE icon_bw_apd_source as icon NO-GAP.
ENDDO.
"add step
x = x + 1 / ( ( anz - 1 ) / 2 ) .
ENDDO.
ENDMETHOD.
METHOD clear_screen.
SKIP TO LINE 1.
write: /20 'x-value result; sigma=', sigma EXPONENT 0 DECIMALS 3 LEFT-JUSTIFIED,
'my=', my EXPONENT 0 DECIMALS 3 LEFT-JUSTIFIED.
SET BLANK LINES ON.
DO 50 TIMES.
DO sy-linsz TIMES.
WRITE space NO-GAP.
ENDDO.
ENDDO.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
NEW main( )->start( ).
- Automatisches Eingabefeld [SAPGUI] - 9. Oktober 2025
- So verhinderst du Jobstarts zur falschen Zeit - 15. September 2025
- [apple] iCloud-Photos herunterladen - 21. Juli 2025



