Betriebsmittel-Benchmark

Produktive Stunden, Begründete Unterbrechungen, Unbegründete Unterbrechungen aus dem Betriebsmittel-Zeitkonto.

 

Berichtsname

MDBMRK

Voraussetzungen

 

Tabelle(n)

MDZLOG (Betriebsmittel-Zeitkonto)

Prozedur-1

MDE_BenchmarkBetriebsmittelVonBisZeitraum

Parameter

Firmennummer

Von Betriebsmittelnummer

Bis Betriebsmittelnummer

Von Datum

Bis Datum

Prozedur-2

MDE_BenchmarkBetriebsmittelListeZeitraum  (wird nicht genutzt)

Parameter

Firmennummer

Betriebsmittelnummern ('0101','0102','0103','0110','0120')

Von Datum

Bis Datum

Ergebnistabelle

Betriebsmittelnummer

Bezeichnung des Betriebsmittels

Stunden Produktiv

Stunden Begründeter Unterbrechungen

Stunden Unbegründeter Unterbrechungen

Aufbereitung

Keine

Crystal-Reports

MDBMRK.RPT

Excel-Diagramme

Zylindersäulen 100% Gestapelt

 

 

CREATE    PROCEDURE MDE_BenchmarkBetriebsmittelVonBisZeitraum ( @ZSFIRM AS VARCHAR(2), @ZSVGRP AS VARCHAR(6), @ZSBGRP AS VARCHAR(6), @ZSVDAT AS DATETIME, @ZSBDAT AS DATETIME )

AS

 

-- Meldungen des SQL-Servers abschalten

--

SET NOCOUNT ON

 

-- Variablen definieren

--

DECLARE @SQLString    VARCHAR(2048)

DECLARE @TmpTableName VARCHAR( 128)

DECLARE @SQLVonDatum  VARCHAR(  30)

DECLARE @SQLBisDatum  VARCHAR(  30)

 

-- Prüfen ob der Abfragezeitraum hinter der aktuellen Zeit liegt

--

IF @ZSBDAT > GETDATE() SET @ZSBDAT = GETDATE()

 

-- Zeitraum in Stringvariablen übernehmen

--

SET @SQLVONDatum = CONVERT(VARCHAR,@ZSVDAT,104) + ' ' + CONVERT(VARCHAR,@ZSVDAT,108)

SET @SQLBisDatum = CONVERT(VARCHAR,@ZSBDAT,104) + ' ' + CONVERT(VARCHAR,@ZSBDAT,108)

 

-- Eindeutigen Tabellennamen vergeben

--

SET @TmpTableName = 'TEMPDB..MDZLOG_' + REPLACE( CONVERT(VARCHAR,GETDATE(),112) + CONVERT(VARCHAR,GETDATE(),114) ,':','')

 

-- Übernahme der Zeitkontodaten in eine temporäre Tabelle

--

SET @SQLString = 'SELECT

 ZSLKEY

,ZSFIRM

,ZSAGRP

,ZSIOCH

,ZSVDAT

,ZSBDAT

,ZSISON

,ZSUART

,ZSNUMM

,ZSLUSR

,SBVDAT = ZSVDAT

,SBBDAT = ZSBDAT

,MINUTEN = 0

INTO ' + @TmpTableName + '

FROM GIPSY4MDE.DBO.MDZLOG AS MDZLOG

 INNER JOIN GIPSY4MDE.DBO.PAMDEP AS PAMDEP ON

  ZSAGRP = TPAGRP

WHERE

 ZSFIRM = ''' + @ZSFIRM + '''

 AND ZSAGRP >= ''' + @ZSVGRP + '''

 AND ZSAGRP <= ''' + @ZSBGRP + '''

 AND ZSIOCH = TPCCNT

 AND (

      ( ZSBDAT BETWEEN ''' + @SQLVonDatum + ''' AND ''' + @SQLBisDatum + '''  )

  OR  ( ZSVDAT BETWEEN ''' + @SQLVonDatum + ''' AND ''' + @SQLBisDatum + '''  )

  OR  ( ZSVDAT <=      ''' + @SQLVonDatum + ''' AND YEAR(ZSBDAT) <= 1900 )

  OR  ( ZSVDAT <=      ''' + @SQLVonDatum + ''' AND ''' + @SQLBisDatum + ''' < ZSBDAT )

             )

ORDER BY

 ZSAGRP

,ZSVDAT'

 

-- Temporäre Tabelle mit allen relevanten Datensätzen erzeugen

--

EXEC (@SQLString)

 

-- Wenn der Zeitstrahl vor dem Abfragezeitpunkt liegt

--

SET @SQLString = 'UPDATE ' + @TmpTableName + '

SET

 SBVDAT = ''' + @SQLVonDatum + '''

WHERE

 ZSVDAT < ''' + @SQLVonDatum + ''''

 

-- SQL ausführen

--

EXEC (@SQLString)

 

-- Wenn der Zeitstrahl hinter dem Abfragezeitpunkt liegt oder unbeendet ist

--

SET @SQLString = 'UPDATE ' + @TmpTableName + '

SET

 SBBDAT = ''' + @SQLBisDatum + '''

WHERE

 YEAR(ZSBDAT) <= 1900 OR ZSBDAT > ''' + @SQLBisDatum + ''''

 

-- SQL ausführen

--

EXEC (@SQLString)

 

-- Berechne die Zeitspanne in Minuten

-- Dabei ungültige Zeiträume abfangen

SET @SQLString = 'UPDATE ' + @TmpTableName + 'SET MINUTEN = CASE WHEN SBBDAT < SBVDAT THEN 0 ELSE DATEDIFF(mi,SBVDAT,SBBDAT) END'

 

-- SQL ausführen

--

EXEC (@SQLString)

 

-- Zeige das Summenergebnis

--

SET @SQLString = 'SELECT

 ZSAGRP

,TPNAME

,PRDSTD = ROUND( SUM( CASE WHEN ZSISON > 0                THEN MINUTEN ELSE 0 END ) / 60.00,1)

,UBGSTD = ROUND( SUM( CASE WHEN ZSISON = 0 AND ZSUART > 0 THEN MINUTEN ELSE 0 END ) / 60.00,1)

,UUBSTD = ROUND( SUM( CASE WHEN ZSISON = 0 AND ZSUART = 0 THEN MINUTEN ELSE 0 END ) / 60.00,1)

FROM ' + @TmpTableName + ' AS MDZLOG

 INNER JOIN GIPSY4MDE.DBO.PAMDEP AS PAMDEP ON

  ZSAGRP = TPAGRP

GROUP BY

 ZSAGRP

,TPNAME

ORDER BY

 ZSAGRP'

 

-- SQL ausführem

--

EXEC (@SQLString)