Die Dokumentation ab Version 39.5.17 von PLANTA project finden Sie in der neuen PLANTA Online-Hilfe.

Bekannte/Behobene Probleme

Client

Problem Neu ab Behoben ab
- Beim PDF-Export werden Effekte z.B. auf Balken aktuell nicht unterstützt.    
- Aufgrund eines MS-Excel-Problems kann es beim Export nach Excel z.B. auf Währungsfeldern in der Excel-Datei zu Formatsänderungen kommen, wenn die exportierte Datei zuvor gespeichert wurde.    
- In Modulen mit IronPython-Charts kommt es im Bereich dieser beim Scrollen und Zoomen zu einem schwarzen Flackern.
  • Hierbei handelt es sich um ein bestehendes Windows-Problem. Weitere Informationen dazu finden Sie hier.
   
- Der Befehl Bearbeiten fehlt im Kontextmenü auf den Input-Feldern. C 39.5.16 C 39.5.17
- Beim Drag&Drop-Kopieren/Verschieben wird manchmal der "Verboten"-Cursor angezeigt, obwohl das Kopieren bzw. Verschieben dennoch möglich ist.   C 39.5.13
- In Modulen mit aktiviertem Parameter Neben Oberbereich und bestehenden Relationen zwischen den Datenbereichen kann es zu Darstellungsproblemen kommen. C 39.5.0  
- Die Symbolparameter Inhaltmuster, Inhaltdicke und Inhaltdichte haben keine Wirkung (sind nicht funktionsfähig).   C 39.5.10
- Automatische Tooltips werden auf abgeschnittenen Datenfeld-Überschriften in Masken und auf Schaltflächen nicht angezeigt.   C 39.5.0

Server

Problem Neu ab Behoben ab
- Neu angelegte OLEs werden nicht sofort im Modul OLEs angezeigt, sondern erst nach Neustart des Systems.    
- Die Wertebereich-Funktion EXPAND() wird nur einmal berechnet.    
- In Gruppierungsbereichen, deren DDI ein Inkarnations-DI ist, kann es zu Problemen beim Einfügen neuer Gruppen kommen. Daher sollte stattdessen das Unter-DI des Inkarnations-DI mit der Funktion = KO verwendet werden.    
- Der Oracle-Fehler im Logfile OCIError: ORA-24432: Die zurückgegebene Anweisung ist keine Tagged-Anweisung. ist keine wirkliche Fehlermeldung, sondern eine Warnung und kann ignoriert werden.    
- Während des anonymisierten Terminrechnungsdaten-Export erscheint folgende Fehlermeldung: FileNotFoundError: [Errno 2] No such file or directory: 'test_data_430.csv'.
Hinweis: Trotz dieser Fehlermeldung hat der Export funktioniert, die Dateien konnten nur nicht gezippt werden und liegen daher einzeln im angegebenen Verzeichnis
S 39.5.17 S 39.5.18
- Der Menüpunkt Python-Module neu laden funktioniert nicht und soll nicht verwendet werden. Wird er trotzdem verwendet, werden Python-Fehlermeldungen ausgegeben. S 39.5.5 S 39.5.18
- Die Earned Value-Analyse (EVA) kann nicht verwendet werden. Die Berechnung der Kostenabweichung (CV) sowie evtl. einiger weiterer Werte stimmt unter bestimmten Voraussetzungen nicht.   S 39.5.14
- Beim Verwenden der Python-Methode get_children() kommt es zum Absturz, wenn eine nicht existierende Datentabelle angesprochen wird.   S 39.5.0

Datenbank

Problem Neu ab Behoben ab
- Ordnet man einem Projekt ein Prozessmodell zu, welches in der ersten Phase keine Prozessschritte enthält, wird am unteren Rand des Moduls Prozessstatus folgende Fehlermeldung ausgegeben: Local Variable akt_pos referenced before assignment. Fehlen die Prozessschritte in den weiteren Phasen des Prozessmodels, wird die Fehlermeldung nicht ausgegeben.    
- Wurde eine Prozessphase, die in einem Projekt aktiv ist, im Modul Prozessmodell-Templates gelöscht, wird beim Aufruf dieses Projekts oder der Projektübersicht eine Python-Fehlermeldung ausgegeben.    
- Beim Ändern einer fachlichen ID eines Hauptprojekts kommt es im Modul Teilprojekte gelegentlich zum Vertauschen der Reihenfolge von Unterprojekten, die sich auf der gleichen Strukturebene befinden.    
- Die Rückmeldung auf Request-Prozessschritte ist zurzeit nicht möglich.    
- Beim PDF-Export wird die Fehlermeldung ValueError: invalid literal for int() with base 10: ausgegeben. Nach dem Bestätigen dieser Fehlermeldung wird der PDF-Export trotzdem durchgeführt. DB 39.5.10 DB 39.5.11
- Passwort zurücksetzen im Modul Benutzer ist nicht möglich. DB 39.5.6 DB 39.5.7
- Beim Versuch Skills im Modul Skills zu löschen erscheint die Meldung Löschen in diesem Bereich nicht erlaubt. Die Skills werden dennoch wie gewünscht gelöscht. DB 39.5.6 DB 39.5.7
- Es ist auch mit CU-Rechten nicht möglich, aus den Modulen Dataitems und Modulinformation durch Klick auf den Link auf der Tabellen-ID die entsprechende Datentabelle aufzurufen.   DB 39.5.6
- Die Schaltfläche VN im Modul Vorgangskette hat derzeit keine Funktion.   DB 39.5.0
- In manchen Fällen wird bei Verwendung von Drag&Drop-Verschieben Datensätze die Meldung Verschieben nicht möglich:? ausgegeben (mit Fragezeichen anstatt Grund).   DB 39.5.0
- Im Modul Meine Tätigkeiten werden Chancenmaßnahmen, die den Termin in der Zukunft haben oder keinen Termin haben, nicht angezeigt, wenn es keine weiteren Faktoren (Vorgänge, Aufgaben etc) gibt, die ebenfalls in die Gruppen Zukünftig oder Ohne Termin gehören.   DB 39.5.0

Installer

Problem Neu ab Behoben ab
- Der versteckte Parameter planta.migration_scripts_to_ignore funktioniert derzeit nicht bei Paketen im Migrationsverzeichnis after_db_import S 39.5.21  


Bekannte Probleme mit Lösung

Keine Zeiterfassung unter Skala beim Arbeiten mit mehreren Kalendern möglich

Ist bei Ihnen die Zeiterfassungs-Variante 2 im Einsatz (Globaler Parameter load_creation_variant = 2) und haben Sie im Modul Kalender mehrere Kalender erfasst, ist die Erfassung der Arbeitsstunden im Modul Zeiterfassung direkt unter der Sakala nicht möglich oder es wird eine Python-Meldung ausgegeben (MSSQL-Systeme).
Umgehungslösung: Zur Behebung des Problems müssen zwei sql-Skripte auf Ihrer Datenbank ausgeführt werden. Diese finden Sie in dem hier beigefügten zip-Archiv Zeiterfassung.zip in dem jeweils Ihrer Datenbank entsprechenden Ordner (Oracle oder MSSQL). Bitte stellen Sie sicher, dass dieser Vorgang von einem Administrator durchgeführt wird oder wenden Sie sich bitte an Ihren zuständigen PLANTA-Consultant.

Lösung: Update auf DB 39.5.17

Fehlerhafte Anzeige nach Löschen von Anwesenheiten in PLANTA pulse

Wird die erweiterte Zeiterfassung für PLANTA-Hybrid genutzt und werden Anwesenheiten in PLANTA pulse erfasst, kann es zur fehlerhaften Anzeige kommen, wenn Anwesenheiten in PLANTA pulse gelöscht werden.
Der Wert in der Datenbank wird gelöscht, doch die Anzeige unter der Skala wird nicht aktualisiert. Im Modul Anwesenheiten wird der korrekte Wert angezeigt.

Fehlermeldung beim Einloggen von Benutzern mit Portfoliorolle (Portfoliomodulen)

  • Ursache:
    • Das Problem besteht in Versionen DB 39.5.10 - DB 39.5.16 mit Client 39.5.28 Stable 1 aufgrund der fehlenden Benutzerrechte. Portfoliobilder werden im Client-Verzeichnis gespeichert, für das Benutzer keine Schreibrechte haben. Mit den nächsten Versionen (DB 39. 5.17 und C 39.5.28 Stable 2) werden Portfoliobilder im Tempverzeichnis des Benutzers gespeichert.
  • Lösung für Versionen DB 39.5.10 - DB 39.5.16 mit Client 39.5.28 Stable 1:
    • Um das Problem zu beheben, bitte die in diesem zip-Ordner aufgeführten Client- und Server-Pythondateien an die entsprechenden Stellen in Ihren Client- und Server-Verzeichnissen kopieren (die gleichen Dateien in Ihren Verzeichnissen mit den neuen überschreiben).

Probleme nach Update bei Einsatz von Web-Schnittstellen

Sind Web-Schnittstellen im Einsatz, muss aktuell (bis voraussichtlich S 39.5.30) nach einem Update auf ein höheres Release (DB oder Server) die Serviceprovider.jar ausgetauscht werden.
  • Die auszutauschende Datei ist im Serververzeichnis unter /jars/webservice_infrastructure zu finden.
  • Die neue Datei zum Austausch finden Sie auf PLANTA-Transferserver im Ordner Serviceprovider.jar

Python-Fehlermeldung beim Berechnen eines Projekts mit Ressourcen mit unvollständigen Periodendatensätzen ab S 39.5.24

Bei der Berechnung eines Projekts mit einer (oder mehreren) Ressourcen mit unvollständigen Perioden erscheint ab S 39.5.24 eine Python-Fehlermeldung. Dieser ist eine Text-Meldung vorgeschaltet, die darüber informiert, dass die Berechnung abgebrochen wird und gibt die Ursache an. Nach Bestätigung dieser Meldung erscheint weiterhin die Python-Meldung, die jedoch ignoriert werden kann. Die Ursache, die zu dieser Meldung führt (inkonsistente Daten) muss jedoch aktiv behoben werden.
  • Ursache:
    • Das Problem entsteht, wenn eine Berechnung eines Projekts durchgeführt wird, das eine oder mehrere Ressource enthält, deren Periodendatensätze im Zeitraum, für den die Ressource(n) eingeplant ist/sind, nicht vollständig sind oder die Ressource gar keine Perioden aufweist, obwohl die Felder Startperiode und Endperiode gefüllt sind. Beide Fälle stellen Dateninkonsistenzen dar.
  • Lösung:

Möglicher Fehler bei individuellem IronPython-CU: AttributeError: 'Environment' object has no attribute 'PanelManager

  • Ursache:
    • Das Problem entsteht, da hier auf eine alte interne Client-Funktion zugegriffen wird, die unter diesem Namen nicht mehr zur Verfügung steht.
  • Lösung:
    • Um das Problem zu umgehen, muss stattdessen "PanelsList" aus der Public API benutzt werden.

Fehlermeldung beim Importieren der Datenbank unter Oracle

  • Ursache:
    • Zur Installationszeit dürfen für den Datenbank-User keine Synonyme (public oder private) existieren. Siehe auch Installer-Parameter.
  • Lösung:
    • Synonyme abschalten oder löschen.
      • Zur Laufzeit ist dies erlaubt. Wenn zu einem späteren Zeitpunkt Daten importiert werden sollen (z. B. bei einem DB-Update), müssen die Synonyme wiederum deaktiviert werden.

Terminrechnung

Bei der Parameterkonstellation Wunsch-Anfang und Wunsch-Ende in der Vergangenheit, Aktive Heutelinie = Checked, Fixierung = 1 kann es vorkommen, dass das Kalk. Ende eines Vorgangs vor dem Kalk. Anfang liegt (z.B. bei gesetztem Ist-Anfang in der Vergangenheit).
  • Ursache:
    • Der Konflikt zwischen den Parametern Fixierung = 1 und Aktive Heutelinie = Checked. Anders formuliert: Der Vorgang soll heute anfangen, obwohl er in der Vergangenheit fixiert ist.
  • Lösung:

Direktes Auslesen von CLOB-Feldern über SQL bei Verwendung von MSSQL 2012 schlägt fehl

Das direkte Auslesen von CLOB-Feldern über SQL funktioniert bei Verwendung von MSSQL 2008, unter MSSQL 2012 ist das Ergebnis leer.

Beispiel: CLOB-Felder können unter MSSQL 2012 so nicht ausgelesen werden

 sql = """
    select  di051831 as python_id,
            di051828 as alpha120,
            di051867 as description,
            di058129 as template_code
    from    dt333
    where   len(di058129) > 2
"""
result = ppms.db_select(sql)
ppms.ui_message_box(result)

Beispiel: CLOB-Felder unter MSSQL 2012 auslesen

 sql = """
    select  di051831 as python_id,
            di051828 as alpha120,
            cast(di051867 as varchar(8000)) as description,
            cast(di058129 as varchar(8000)) as template_code
    from    dt333
    where   len(di058129) > 2
"""
result = ppms.db_select(sql)
ppms.ui_message_box(result)

Paket SetObsoletePacketToSucceed ist nach Update auf "gelb"

Beim Update von DB 39.5.7 (nur MSSQL) auf eine höhere Datenbankversion, kann es passieren, dass das Paket SetObsoletePacketToSucceed nach dem Update gelb, also "wartend" markiert ist.
  • In diesem Fall bitte die Pakete FixLoadAutoNumber und SetObsoletePacketToSucceed in dieser Reihenfolge manuell ausführen.

Verhalten von Belastung-Rest bei Belastungskurve MAN

Beim Verwenden der Belastungskurve MAN und wenn noch keine Ist-Termine gesetzt sind, werden bei der manuellen Eingabe von Belastung-Rest, die Werte zwar in Belastung-Soll Übernommen, jedoch nicht auf Aufwand-Soll verdichtet.
  • Umgehungslösung: Nach der Eingabe von Belastung-Rest und der Berechnung des Terminplans den Aufwand-Rest auf den Aufwand-Soll kopieren.

Problem mit mod_obj.menu(91) / Aktions-ID 91

Das System hängt sich auf, wenn Menüpunkt 91 in ein Modul eingebunden wird. Dies kann durch ein Python-Makro oder eine Aktions-ID im Datenbereich passieren.
  • Auf einem Datenfeld mit DF-Verhalten = c2 sollte als Aktions-ID keine 91 mehr vergeben werden, um Fehler zu vermeiden.
  • In allen Makros, in denen mod_obj.menu(91) verwendet wird, um einen untergeordneten Datenbereich einzufügen, muss man nun explizit angeben, in welchem Datenbereich ein Datensatz eingefügt werden soll. Dies geschieht über die DA-Python-ID.

  • Lösung:
Old: 
mod_obj=ppms.get_target_module()
mod_obj.menu(91)

New:
inv_rec=ppms.get_context_df().get_record()
inv_rec.insert_child(str(DA-Python-ID))

  • Der Vorteil dieser Vorgehensweise ist, dass genau darüber entschieden werden kann, in welchem Datenbereich ein Datensatz eingefügt wird.

Datenbank-Fehlermeldung beim Speichern in der Q1B und Q2B nach einem CU-Deployment

Beim Speichern von Änderungen in den Customizing-Schemas Q1B und Q2B (z.B. im Modul Module oder Datenbereiche) tritt nach einem CU-Deployment eine Datenbank-Fehlermeldung auf.

  • Lösung:
    • Die HIBERNATE_SEQUENCE muss manuell auf den höchsten Stand der in den History-Tabellen vorhanden Daten gesetzt werden.

Fehlermeldung beim Importieren der Datenbank

Beim Importieren der Datenbank tritt eine Fehlermeldung auf: WARN session=global o.d.database.DatabaseTableMetaData - No columns found for table 'DT411' that are supported by dbunit. Will return an empty column list

  • Lösung:
    • Datei config/hibernate.cfg.xml öffnen.
    • Parameter hibernate.synonyms deaktivieren.
    • Speichern.
    • Import der Datenbank wiederholen.

Hinweis:

  • Voraussetzung für diese Lösung ist S 39.5.19.

Im Modul Einplanungen fehlen die Aufwandsbalken

Wenn eine Ressource an einem der Tage, an dem sie eingeplant ist (d.h. Aufwand-Rest besitzt), nicht verfügbar ist, fehlt für die Ressource für diesen Tag der Aufwandsbalken im Modul Einplanungen.
  • Lösung:

Problem beim Verwenden von individuellen und Standard-Modulvarianten-Favoriten

Ist in einem Modul eine Modulvariante als Favorit für alle Benutzer definiert und legt ein Benutzer eine individuelle Modulvariante als seinen Favorit fest, wird die vorherige Favorit-Variante für alle Benutzer als Favorit deaktiviert.

  • Lösung: Die Modulvariante, die für alle Benutzer standardmäßig ausgewählt werden soll, nicht als Favorit deklarieren. Stattdessen beim Modulaufruf prüfen, ob der Benutzer einen individuellen Favorit hat, und je nach dem den Favoriten oder die gewünschte Modulvariante wählen. Hierfür im Makro des Moduls in der on_initial_focus() -Methode folgenden Code aufnehmen:
        standard_favorite= '2000000002' # <- Replace with the standard (not user specific) favorite MV-ID
    
        module_rec405 = ppms.search_record(405, [mod_obj.get_id()], ['id'])
        mv_recs500 = module_rec405.get_children(500, di_list=['user', 'favorite', 'variant_id'])
        user_has_favorite = False
        for rec in mv_recs500:
            if rec.user.get_value() == ppms.uvar_get('@1') and rec.favorite.get_value():
                mod_obj.apply_mv_by_id(rec.variant_id.get_value())
                user_has_favorite = True
                break
        if not user_has_favorite:
            mod_obj.apply_mv_by_id(standard_favorite)

  • Als standard_favorite muss die Modulvarianten-ID angegeben werden, die für alle Benutzer als Favorit gelten soll.

Der Planta-Service wird nicht automatisch gestartet

  • Ursache:
    • Je nach Betriebssystem weichen die angegebenen Pfade in der Standardkonfiguration des Service Wrappers (yajsw) ab und müssen angepasst werden.
  • Lösung: Anpassen des Pfades in der Datei [ServerVerzeichnis]/yajsw/conf/linux.conf:
    • Default: wrapper.daemon.run_level_dir = /rcX.d

Siehe auch: YAJSW Dokumentation

Bei manchen Vorgängen ist Dauer-Rest immer 1 und lässt sich manuell nicht verändern

Bei manchen Vorgängen wird die manuell vergebene Dauer-Rest nach der Terminrechnung immer mit einer 1 Überschrieben.
  • Ursache:
    • In bestimmten Planungskonstellationen kann es vorkommen, dass die Dauer-Soll leer ist. Die Terminrechnung setzt in diesen Fällen die Dauer-Rest auf 1. Wird danach ein Ist-Anfangstermin eingetragen oder ist er bereits vorhanden, kann die Dauer-Rest nicht mehr manuell geändert werden. Versucht man das, wird sie von der Terminrechnung wieder auf die 1 zurückgesetzt.
  • Lösung:

Überschreiben von komplexeren Python-Customizings

Informationen
  • Standardmäßig wird empfohlen, die Import-Wrapper zu nutzen, um Standard-Funktionalitäten abzuändern.
  • Bei bestimmten Programmierungen ist dies aber nicht möglich. In diesen Fällen muss wie folgt vorgegangen werden:
    • Der Code in der Datei, die unter /planta_de/ liegt muss angepasst werden.
    • Die Veränderung muss im ICOU dokumentiert werden.
    • Bei jedem Update muss die Änderung wieder zurückgespielt werden.

Details

  • Beispiel für eine solche Programmierung:
    • Die Funktion _apply_project_parameter_heredity wird von create_project_by_type in create_project.py aufgerufen.
    • Diese Funktion ruft wiederrum insert_project_child_records auf, um die Stakeholder bei einem Teilprojekt vom Hauptprojekt zu kopieren.
    • Wird die Funktion insert_project_child_records durch die Import-Wrapper überschrieben, hat das keine Auswirkung auf dieses Verhalten.

  • Begründung:
    • Beide Funktionen befinden sich im gleichen Modul, was ihren lokalen Namespace darstellt.
    • Will nun die Funktion _apply_project_parameter_heredity die Funktion insert_project_child_records aufrufen, wird nach dieser Funktion erst im lokalen Namespace gesucht, bevor die Suche ausgeweitet wird.
    • Ist die Funktion also im customer Verzeichnis Überschrieben, kommt der Code nie soweit, dass er dort nachschauen müsste, weil die Funktion bereits im lokalen Namespace gefunden wird.

Aktualisierung nach Änderungen an Ressourcenstrukturen

Wird in einer bestehenden Ressourcenstruktur eine Ressource "umgehängt" oder aus der Struktur entfernt, aktualisiert sich die verfügbare Kapazität und die Auslastung einer direkt übergeordneten Ressource automatisch, die einer übergeordneten Ressource von der höheren Strukturebene jedoch nicht.

Druckkopf wird in einem Untermodul in der Druckvorschau nicht angezeigt

In einem Untermodul in der Druckvorschau wird der Druckkopf oder die Fußzeile nicht angezeigt.

  • Lösung: In das Makro des Untermoduls, in dem der Druckkopf oder die Fußzeile nicht angezeigt wird, in die on_load() -Methode die folgende Zeile aufnehmen:
 mod_obj.get_das() 

Im Server-Logfile wird com.google.protobuf.InvalidProtocolBufferException ausgegeben

Im Server-Logfile wird com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large ausgegeben.

  • Lösung: Ein Update auf eine Server-Version S 39.5.22 wird empfohlen.

Unscharfe Schrift unter Windows Server 2008 und Windows 7

Bei der Verwendung von PLANTA auf den Windows-Versionen Server 2008 und 7 kommt es zur unscharfen Anzeige der Schrift. Der Grund dafür ist, dass die global in PLANTA verwendete Schriftart Roboto auf diesen Windows-Versionen nicht installiert ist.

  • Lösung: Im Client-Verzeichnis in der Datei \Resources\defaultSkingSettings in der Zeile GlobalFontName:Roboto die Schriftart Roboto durch eine gängige Schriftart, z.B. Arial, ersetzen.

Behobene Probleme mit Lösung

Korrupte Daten nach Update von DB 39.5.14 auf DB 39.5.15 (behoben mit DB 39.5.16)

Wurde beim Update auf DB 39.5.14 das neue Konfliktmanagement-Verfahren angewandt, kann es beim Update auf DB 39.5.15 zu Datenkorruptionen kommen.
  • Ursache:
    • Das in DB 39.5.15 neu implementierte "PosRefreshApplicator" zum Auffinden von Positionskonflikten kann die älteren Positionskonflikte aufgrund von falsch definierter Constraints nicht löschen und verursacht somit Datenkorruptionen.
  • Als Umgehungslösung bitte folgende Statements in genau hier angegebener Reihenfolge ausführen:
    • Wichtig: Die Statements müssen vor dem Update ausgeführt werden!
alter table CONFLICT_MAPPING drop constraint FKCONFLICT_MAPPINGID123;
alter table CONFLICT_MAPPING drop constraint FKCONFLICT_MAPPINGID124;

alter table CONFLICT_MAPPING
    add constraint FKCONFLICT_MAPPINGID123
            foreign key (MODIFICATION) references MODIFICATION
            on delete cascade;
alter table CONFLICT_MAPPING
    add constraint FKCONFLICT_MAPPINGID124
            foreign key (CONFLICT) references CONFLICT
            on delete cascade;
            
delete from CONFLICT where UUID in
    (select CONFLICT from CONFLICT_MAPPING where MODIFICATION in
        (select UUID from MODIFICATION where DATAITEM = '001992' and TYPE <> 1));

delete from MODIFICATION where DATAITEM = '001992' and TYPE <> 1;

Nach Update auf DB 39.5.15 werden ICOU-Datentabellen gelöscht (behoben mit S 39.5.29 Stable 2 / DB 39.5.15 Stable 1)

  • Lösung: Nachdem der Server vollständig entpackt wurde, bitte den Inhalt der folgenden Dateien austauschen
    • py/api/ppms/customizing/venus/ppms/db_update/modules.py
    • py/api/ppms/customizing/venus/ppms/db_update/update.py
    • migration/after_migration/ZZZ_Icou.py
  • durch

Bitte beachten Sie

  • Der Austausch der Dateien soll unbedingt während der Installation im Zeitfenster zwischen dem Zeitpunkt wenn der Server vollständig entpackt wurde und dem Beginn der Migration stattfinden.
  • Die Information darüber, wann der Server vollständig entpackt ist, entnehmen Sie bitte dem Server-Log.
  • Wenn Sie weitere Fragen haben, wenden Sie sich bitte an Ihren PLANTA-Consultant.

Server startet nicht nach Update von DB 39.5.14 auf DB 39.5.15 (behoben mit DB 39.5.16)

Wenn nach dem Update von DB 39.5.14 auf DB 39.5.15 der Server nicht startet und im Server-Log folgende Meldung steht: "Most likely, table EVENTS is missing. Execute migration package WI12399_event_table, or Planta-Events will NOT work in this system!", bitte das Update nochmal mit den aktuellen Download-Dateien durchführen.

Problem mit Löschen von synchronisierten Objekten nach Update auf DB 39.5.15 (behoben mit DB 39.5.16)

Das Löschen von den mit Fremdsystemen (z. B. Jira) synchronisierten Objekten wird nach Update von DB 39.14 auf DB 39.5.15 nicht an allen Stellen verhindert.

Persistente Datenbankverbindungen funktionieren nicht (behoben mit S 39.5.29)

  • Lösung: Den folgenden Parameter zur Datei hibernate.cfg.xml hinzufügen:
    <property name="hibernate.connection.release_mode">
       on_close
    </property> 

Datenfeld-Überschriften in bestimmten Bereichen plötzlich sichtbar (behoben mit DB 39.5.15)

  • Ursache:
    • Der Client < C 39.5.27 Stable 1 visualisierte in folgenden Customizing-Konstellationen die Datenfeld-Überschriften fälschlicherweise nicht: Wenn in einem Datenbereich der Parameter Überschrift aktiviert war und in dem diesem Bereich untergeordneten Bereich der Parameter Neben Oberbereich aktiviert war. Dies führte dazu, dass auch fälschlicherweise aktivierte Überschriften nicht sichtbar waren.
    • Wird nun der Client C 39.5.27 Stable 1 und höher verwendet, sind alle aktivierten Überschriften sichtbar, auch die falsch gesetzten.
  • Lösung:
    • Für die Datenbereiche, in denen die Datenfeld-Überschriften nicht sichtbar sein sollen, die Checkbox Überschrift deaktivieren.
    • Im PLANTA-Standard ab Version DB 39.5.15 sind die Stellen mit fehlerhaftem Customizing korrigiert.

Skill-Zuordnung nicht möglich (behoben mit DB 39.5.15)

  • In der Version DB 39.5.14 ist es im Modul Ressourcendatenblatt nicht möglich, in den neu zugeordneten Skill-Datensätzen Skills auszuwählen, weil das Skill-Datenfeld "output" ist.
  • Ursache:
    • Das eigentliche Skill-Listbox-Datenfeld, aus dem Skills ausgewählt werden, ist in der Anwendersicht ausgeblendet, ohne die Option, es einblenden zu können.
  • Lösung:
    • Den Datenbereich 040732 im Modul Datenbereiche im Customizer öffnen.
    • Für das DI002799 den Eintrag im Feld Fenster von 9 auf 1 ändern und und das DI selbst im Datenbereich nach ganz oben schieben.

Mehrfache Einträge nach Schließen/Zurücksetzen im Benutzermenü (behoben mit C 39.5.27)

Beim Betätigen von Schließen/Zurücksetzen (F7) im Benutzermenü werden alle Einträge mehrfach angezeigt, nur auf einem kann der Link betätigt werden.

Dei nachfolgend beschriebene CU-Umgehungslösung gilt, bis das Update auf das C 39.5.27 durchgeführt wurde. Sie ist standardmäßig in den DB-Versionen 39.5.7 - 39.13 enthalten. Haben Sie die Umgehungslösung in Ihrem System (manuell implementiert oder standardmäßig enthalten) und updaten Sie Ihr System auf C 39.5.27, empfehlen wir, die CU-Lösung zu entfernen.

  • Umgehungslösung: Im Benutzermenü den Menüpunkt 19 Schließen/Zurücksetzen Überschreiben.
    • Vorgehensweise
      • Ein neues Makro-Modul mit Klasse 6 anlegen.
        • Soll bei F7 etwas ausgeführt werden, hierfür ein Makro schreiben, ansonsten kann das Feld Makro leer bleiben
      • Im Benutzermenü-Modul 0099QC einen neuen Datenbereich anlegen
        • DDI = 004336 Button/IronPython
        • DI 004336 Button/IronPython als Datenfeld anlegen, DF-Verhalten = d4, @L-Variable = 19, Aktions-ID = ID des neu angelegten Makro-Moduls
        • Datenbereichsposition vergeben und Nie anzeigen = @Y

Manuelle Belastungen in Zukunft bei Einsatz der Belastungskurve PM-MONTH nicht möglich (behoben mit DB 39.5.14)

Wenn man mit der Belastungskurve PM-MONTH arbeitet und nach dem Planen des Aufwands und dem initialen Kalkulieren des Projekts neue manuelle Belastungen in zukünftigen Monaten anlegen möchte, bekommt man je nach DB-Stand entweder die Meldung: Erfassung nach der aktuellen Woche ist nur für Gemeinkostenprojekte möglich oder Die Buchung von Ist-Aufwänden ist in der Zukunft nicht möglich. Das Problem tritt in den DB-Versionen 39.5.11, 39.5.12 und 39.5.13 auf.

  • Lösung:
    • Im Server-Verzeichnis unter /py/api/ppms/customizing/venus/ppms/exits in der Datei project_exits.py den Eintrag in der Zeile 43
      • if not self.load_rec.get_di(di_to_check).get_value():
      • durch den folgenden ersetzen:
      • if not self.load_rec.get_di("load_act").get_value():

Inkorrekte Überlastdaten bei Einzelrechnungen der Projekte (behoben mit S 39.5.28)

Bei den Einzelrechnungen der Projekte, die gleiche Ressourcen teilen und diese Ressourcen zu dem gleichen Zeitpunkt in den Projekten eingeplant sind, kann es vorkommen, dass höhere Überlastdaten angezeigt werden, als bei der Neuplanung, ohne dass an den Plandaten des Projekts oder an den Ressourcendaten sich etwas geändert hat.

  • Ursache:
    • Die freie Kapazität einer Ressource kann bei der Einzelrechnung nicht immer korrekt ermittelt wurden
      • Bei der Einzelrechnung eines Projekts wird nur das aktive Projekt in den Speicher geladen. Andere Projekte, die dieselben Ressourcen verwenden, sind nicht bekannt. Um zu ermitteln, ob einer Ressource an einem bestimmten Tag noch freie Kapazität zur Verfügung steht, kann die Einzelrechnung nur auf die Perioden (DT468) zurückgreifen. In dieser Tabelle steht für jeden Tag, an dem eine Ressource belastet wird, die Auslastung (entspricht der Summe des Restaufwands aller Projekte, die diese Ressource an diesem Tag belasten), aber es fehlt die Information, ob diese Belastung von der Kapazität der Ressource gedeckt wird oder Überlast erzeugt.
  • Umgehungslösung:
    • Die Berechnung aller Projekte (Neuplanung) durchführen.

Eine ausführliche Beschreibung des alten (bis S 39.5.28) und des neuen korrigierten Verhaltens (ab S 39.5.28) finden Sie hier.

Das Kontextmenü Mit PLANTA pulse synchronisieren wird im Terminplan in DB 39.5.12 nicht angezeigt (behoben mit DB 39.5.13)

  • Ursache:
    • Das Kontextmenü befindet sich im Fenster 9
  • Lösung:
    • Um das Kontextmenü defaultmäßig im Modul Terminplan anzeigen zu lassen
      • Im Datenbereich 044473 das DI004336 Button/IronPython (DF-Überschrift = Mit PLANTA pulse synchronisieren) von Fenster = 9 auf Fenster = 1 umstellen.

Beim Update einer DB-Version < 39.5 auf DB 39.5.11 kann es zu Performance-Problemen bei der Budgetmigration kommen (behoben mit DB 39.5.12)

Beim Update einer Datenbank < 39.5 (z.B. 39.4.x) auf DB 39.5.11 nimmt die Budgetmigration bei mehreren komplexen Projektstrukturen pro Projekt bis zu 5 min in Anspruch.
Lösung
  • Vor der Durchführung des Updates die Datei alternative_migration_directory.zip herunterladen und auf dem Applikations-Server entpacken.
  • Beim Anpassen der properties -Datei den Update-Parameter planta.alternative_migration_directory (zur Parameterbeschreibung) wie folgt einfügen:
    planta.alternative_migration_directory=<Pfad zum alternative_migration_directory-Verzeichnis (z.B. /tmp/migration)> 
  • Das Update auf DB 39.5.11 durchführen.
    • Bitte achten Sie darauf, dass das Migrationspaket A_CreateConstraints erfolgreich gelaufen ist.
  • Die Datei Migrationspakete.zip herunterladen und entpacken.
  • Die Datei WI10938_cost_and_budget_migration.py in das Verzeichnis /<PLANTA-Server-Verzeichnis>/migration/after_db_import/DB_39_5_2 einfügen.
  • Die Datei zz_WI17217_unload_and_replan.py in das Verzeichnis /<PLANTA-Server-Verzeichnis>/migration/after_db_import/DB_39_5_7 einfügen.
  • Auf der Datenbank folgendes Statement absetzen:
    alter trigger "PLANTA_ON_UPDATE_DT461" disable
  • PLANTA project starten und einloggen Customizer Migration Migrationspakete Klick auf den Button Pakete von Dateisystem lesen
  • Die Migrationspakete MigrateCostsAndBudget und UnloadAndReplan ausführen.
  • Auf der Datenbank folgendes Statement absetzen:
    alter trigger "PLANTA_ON_UPDATE_DT461" enable

Python-Fehlermeldung beim Buchen von Kosten und Erlösen (behoben mit DB 39.5.12)

In Modulen Kosten buchen und Erlöse buchen kommt es in der Datenbank-Version DB 39.5.11 beim Versuch Kosten oder Erlöse zu buchen zu einer Pythonfehlermeldung
  • Lösung
    • Die Datei load_creation im Verzeichnis ppms.module_subclasses.load_creation.CostRevenueBookingModule durch die folgende ersetzen.

Fehlerhafte Daten der Abteilungsressourcen, wenn Mitarbeiterressourcen arbeitsfreie Tage erfassen in der Version DB 39.5.10 (behoben mit DB 39.5.11)

Erfasst eine Mitarbeiterressource "Abwesenheit" oder "Urlaub" für einen bestimmten Tag, wird für diesen Tag für die entsprechende Abteilungsressource Arbeit = "Nein" gesetzt.
  • Lösung:
    • Um den Fehler im System zu korrigieren
      • bitte die beigefügte Python-Datei period.py.txt in Ihrem Serververzeichnis unter py/api/ppms/customizing/venus/ppms/period.py abspeichern.
        • Bitte die Datei als .py-Datei (period.py) speichern.
    • Um die bereits fehlerhaften Daten zu korrigieren
      • Im Customizer ein Makromodul erstellen und das beigefügte Makro work_flag_fix.py.txt einkopieren.
      • Das Makro ausführen.

Wunsch-Termine der Quality Gates nach Einkopieren in ein Planungsobjekt nicht änderbar (behoben mit DB 39.5.11)

Nach dem Einkopieren einer Quality Gates-Vorlage in ein Planungsobjekt im Modul Quality Gates lassen sich die Wunsch-Termine der Quality Gates nicht ändern, weil sie output sind.

  • Lösung:
    • Modul Quality Gates MOD009CU6 im Customizer öffnen.
    • Im Datenbereich 057527 das Feld 001114 Wunsch-Ende auf input setzen.
    • Speichern.

Fehler bei manueller Eingabe des Parameters archive_dir (behoben mit S 39.5.25)

Bei manueller Eingabe des Schnittstellen-Parameters archive_dir tritt ein SQL-Fehler auf.

  • Lösung:
    • Das Listboxmodul 009COL, in dem der Fehler auftritt, im Customizer öffnen.
    • In den Datenbereichen 056658 und 056659 die Werte in den Datenfeldern Pos. und Oberbereich entfernen.

FixPeriodAggregationQuery schlägt beim Venus-Update unter MSSQL fehl (behoben mit S 39.5.25)

Beim Ausführen des Migrationspakets FixPeriodAggregationQuery besteht beim Update von Venus-Systemen auf Server 39.5.24 unter MSSQL ggf. das Problem, dass das Paket fehlschlägt. Das Problem besteht nicht beim Update von Venus on Earth auf Server 39.5.24.

Ursache:
  • In der Datenbank wird eine falsche Version des Statements erwartet.
Lösung:
  • Statement 000682 (für MSSQL) durch das Statement aus dem PLANTA Server-Verzeichnis migration/server/S_39_5_24/aggregation_mssql_old.sql ersetzen.
  • Anschließend das Migrationspaket FixPeriodAggregationQuery erneut ausführen.

Statusbericht kann nach Update auf S 39.5.22 nicht mehr erstellt werden (behoben mit S 39.5.23)

Nach Update auf Server 39.5.22 mit einer Datenbank-Version bis einschließlich DB 39.5.9 kann kein Statusbericht erstellt werden, es erscheint folgende Fehlermeldung: java.sql.SQLSyntaxErrorException: ORA-01741: illegal zero-length identifier

  • Ursache:
    • Das Migrationspaket MoveDeviationOutOfScheduling setzt die DIs DI001296 und DI001177 auf virtuell, löscht die Spalten aus der Datenbank und fügt stattdessen für die virtuellen DIs Wertebereiche ein, die die Berechnung übernehmen. Die entsprechenden DIs in Statusberichtstabellen wurden jedoch nicht auf virtuell gesetzt.
  • Lösung:

 def computeOutput(di):
    rec = di.get_dtp_record()
    calc_end = rec.calc_end.get_value()
    requested_end = rec.req_end.get_value()
    if not calc_end or not requested_end:
        return 0
    return calc_end - requested_end

computeOutput.deps = ("calc_end","req_end") 

    • Speichern.
    • Server neustarten

Fehlerhafte Auslastungsdiagramme aufgrund von fehlenden Werten im DI002488 (behoben mit S 39.5.23)

In PLANTA-Versionen mit Server S 39.5.22 kann unter Umständen zu fehlerhaften Daten in Auslastungsdiagrammen kommen, weil das DI002488 nicht gefüllt wird.
  • Lösung:
    • Entweder Serverpatch für S 39.5.22 einspielen
      • Zur Behebung des Problems steht ab sofort ein Serverpatch zur Verfügung. Zum Einspielen des Patches wenden Sie sich bitte an Ihren PLANTA-Consultant.
    • Oder Update auf S 39.5.23 durchführen

Python-Fehlermeldung bei der Auswahl eines Datums im Modul Ressourcenstruktur (behoben mit DB 39.5.10)

Wird im Modul Ressourcenstruktur die Spalte Ausgeschieden am eingeblendet und versucht man diese zu befüllen, wird eine Python-Fehlermeldung ausgegeben.
  • Lösung: Die oben genannte Spalte nicht verwenden. In der Version DB 39.5.10 wurde sie aus dem Modul Ressourcenstruktur entfernt.

Problem beim Entladen von Hyperlinks durch leeres Storage-DI unter MSSQL (behoben mit S 39.5.22)

Bei der Durchführung eines CU-Deployments unter MSSQL kann es zu folgendem Fehler kommen:

ERROR session=global o.d.o.AbstractBatchOperation - execute: table.column=DT397.DI024561 value is empty but must contain a value de.planta.server.database.DataTransferException: ERROR inserting intotable DT397 at de.planta.server.database.DataImporter$ImportHandle.performTransferNonAtomic(DataImporter.java:218)

  • Lösung bis einschließlich S 39.5.18
    Bevor das CU-Deployment durchgeführt wird, müssen NULL-Werte von DI024561 aus der Datenbank des Quellsystems entfernt werden. Hierfür folgendes SQL-Statement ausführen.
DELETE FROM DT397 WHERE DI024561 IS NULL

Hinweis

  • Der gleiche Fall kann auch bei anderen Storage-DIs auftreten, z.B. DI024543 in DT460 Hyperlink Q5B. Das SQL-Statement ist dann entsprechend anzupassen.

NameError global name 'sort_dict_list_By_Uid' is not defined (behoben mit DB 39.5.10)

Beim Öffnen der Aufwandtrendcharts in einem Statusbericht kommt es zu einem NameError
  • Lösung:
    • Im Modul Module MOD 009A52 öffnen.
    • Datenbereich 045418 öffnen.
    • IronPyhton-Skript für DF714068 und DF719852 wie folgt anpassen:
      • Zeile 54 in beiden Datenfeldern ändern zu:
dict_list = sort_dict_list_by_date(dict_list)

Probleme mit erneuter Auswahl der Werte in der Abwesenheits-Listbox des Moduls Abwesenheit (behoben mit DB 39.5.9)

Es st nicht möglich, in der Abwesenheitslistbox des Moduls Abwesenheit einen neuen Wert auszuwählen, nachdem der vorhandene Eintrag gelöscht wurde, aus der Listbox ohne zu speichern rausgeklickt wurde und die Listbox erneut geöffnet wurde.
  • Lösung:
    • Im Modul Dataitems DI 041422 öffnen.
    • Den vorhandenen Python-Wertebereich durch den folgenden ersetzen:

def set_absence(rec,type):
    vacation=rec.vacation
    absence=rec.absence
    work=rec.work
    
    """reset vacation or absence"""
    vacation.set_string_value(0)
    absence.set_string_value(0)
    rec.save(('absence','vacation'))
    
    if type == "vacation":
        vacation.set_string_value(1)
        work.set_value(0)
    elif type == "half_vacation":
        vacation.set_string_value(0.5)
    elif type == "absence":
        absence.set_value(1)
        work.set_value(0)
    elif type == "half_absence":
        absence.set_string_value(0.5)
 
def remove_absence(rec):
    rec.vacation.set_string_value(0)
    rec.absence.set_string_value(0)
    rec.work.set_value(1)
    
def processInput(di, oldvalue):
    rec = di.get_dtp_record()
    new_val = di.get_value()
    vacation=rec.vacation
    absence=rec.absence
    old_absence=absence.get_value()
    old_vacation=vacation.get_value()
    absence_type=di.get_value()
    work=rec.work.get_value()
    type=""

    type_dict={}
    type_dict["half_vacation"]=[11]
    type_dict["vacation"]=[10]
    type_dict["half_absence"]=[21]
    type_dict["absence"]=[20, 30]

    type_master = ppms.search_record(447, [absence_type], [41279], True)
    
    if hasattr(type_master,'number_i2'):
        type_master_data=type_master.number_i2.get_value()
    else:
        type_master_data=""

    for key,value in type_dict.items():
        if type_master_data in value:
            type=key

    if (work == 1 or old_absence == 1 or old_vacation == 1) and type != "":
        set_absence(rec,type)
        return new_val
    elif work ==0:
        ppms.ui_message_id("0711")
        remove_absence(rec)
        return 0
    else:
        remove_absence(rec)
        return 0

processInput.deps = ("DI001364",)

Client wird bei einem Update auf Server 39.5.20 nicht installiert (behoben mit S 39.5.21)

Bei einem Update auf Server 39.5.20 wird der Client nicht installiert.

  • Lösung:
    • Update durchführen mit client install = no
    • Der Client muss für die Releases Server 39.5.20 und DB 39.5.8 separat installiert werden. Folgende Wege sind möglich:
      • Aktuellen Client herunterladen und die Client-Installation ohne PLANTA-Installer durchführen.
      • Aufruf des Client-Installers im Verzeichnis des PLANTA-Installers: <Installer-Verzeichnis>\client\Installer\PlantaClientInstaller.exe.

Fehlermeldung beim Customizing-Deployment mit NULL-Werten in der DT447 bei Verwendung von DB 39.4.4.0 (behoben mit S 39.5.21)

Bei der Durchführung eines CU-Deployments kann es zu folgendem Fehler kommen:

de.planta.server.database.DataTransferException: ERROR inserting into DT 447 / SQL table 'DT447' Caused by: java.sql.BatchUpdateException: ORA-01400: Einfügen von NULL in ("DB_USER"."DT447"."DI041270") nicht möglich

  • Lösung:
    Bevor das CU-Deployment durchgeführt wird, müssen im Quellsystem Daten in der DT447 bereinigt werden. Dazu sind folgende SQL-Statements erforderlich:

UPDATE DT447 SET DI041270 = '011' WHERE DI041270 IS NULL OR DI041270 = ('');
UPDATE DT447 SET DI041269 = 'P20' WHERE DI041269 LIKE '%8';
UPDATE DT447 SET DI041268 = 'P20' WHERE DI041268 LIKE '%8';

Python-Fehlermeldung beim Import der deutschen Feiertage (behoben mit DB 39.5.9)

Wird der Import der deutschen Feiertage von einem Benutzer vorgenommen, für den im System die Sprache "English" eingestellt ist, wird beim Importvorgang eine Python-Fehlermeldung ausgegeben.
  • Lösung:
    • Modul Textkonstanten öffnen.
    • Spalte Konstante EN für die Sprache "Englisch" einblenden.
    • Den Text der Konstante 001789
      • Holiday import for calendar "{calendar}" - state: {} - Year {start_year} till {end_year}
      • durch den folgenden ersetzen:
      • Holiday import for calendar "{calendar}" - state: {state} - Year {start_year} till {end_year}

Problem mit geänderten Zugriffsrechten durch Wechsel der Modulvarianten (behoben mit DB 39.5.8)

Trotz fehlender Berechtigung sind für einen Benutzer etliche Felder in den Modulen Ideensteckbrief, Vorhabensteckbrief, Projektsteckbrief und Programmsteckbrief nach Änderung der Modulvariante und anschließender Auswahl der Modulvariante Basis änderbar.

  • Lösung: In der Datei base_class.py im Verzeichnis py\api\ppms\customizing\venus\ppms\module_subclasses\ die Funktion safe_mv_switch durch folgende Zeilen ersetzen :
 def safe_mv_switch(fn):
    @wraps(fn)
    def wrapped_mv(*args, **kwargs):
        mod_obj = args[0]
        right_setting = getattr(mod_obj, 'right_setting', None)
        if not right_setting:
            right_setting = getattr(mod_obj, 'right_settings', None)

        if right_setting:
            # Avoid customizing dependency until runtime
            from ppms import project_rights
            project_rights.exec_project_rights(mod_obj, right_setting)

        return fn(*args, **kwargs)

    return wrapped_mv 

Problem mit Aktualisierung der Charts der strukturierten Projekte im Modul Status (behoben mit DB 39.5.8)

Nach Erstellung eines neuen Statusberichts in strukturierten Projekten aktualisieren sich die Kosten- und Aufwands-Trend-Charts im Modul Status nach Betätigen der Schaltfläche Aktualisieren nicht.
  • Lösung:
    • Im Modul Datenbereiche den Datenbereich 052067 öffnen.
    • Auf dem DI008413 die Variable @L30 einfügen.
    • Speichern.

Python-Fehlermeldungen nach Verwenden des Menüpunkts Python-Module neu laden (behoben mit S 39.5.20)

Bei Änderungen an Python-Modulen, die komplexe Abhängigkeiten zu anderen Python-Modulen haben, kann das Verwenden des Menüpunkts Python-Module neu laden dazu führen, dass das Verwenden von Funktionen aus diesen Python-Modulen Python-Fehlermeldungen hervorruft.
  • Lösung: In diesem Fall muss der Dienst (Server) neugestartet werden.

Ressourcenabwesenheit beim Anlegen von Perioden in DB 39.5.6 MSSQL nicht berücksichtigt (behoben mit DB 39.5.7)

Die Prozedur zum Anlegen von neuen Perioden berücksichtigt in DB 39.5.6 MSSQL die Abwesenheiten der Ressourcen nicht.
  • Lösung:
    • Die Prozedur p_calc_periods auf der Datenbank löschen (drop).
    • Das folgende Skript P_CALC_PERIODS.sql auf der Datenbank ausführen.
    • Ein Makromodul anlegen, die folgende Perioden_korrigieren.py einkopieren und das Makro ausführen.

Ressourcenstruktur kann im Modul Stakeholder auswählen geändert werden (behoben mit DB 39.5.7)

Im Modul Stakeholder auswählen kann per Drag&Drop die Ressourcenstruktur verändert werden
  • Lösung:
    • Modul 0099IJ im Modul Module öffnen.
    • Für Datenbereich 045322 Ressource die Chechbox des Parameters Verschieben deaktivieren.
    • Speichern.

In gruppierten Bereichen wirken die Ampel der Ampel-DIs nicht (z.B. Farben auf den Balken-DIs) (behoben mit DB 39.5.7)

  • Lösung:
    • Sind in Bereichen mit dem aktivierten Parameter Gruppe Ampel-DIs (z.B. Balken) vorhanden, müssen die Unter-DIs dieser DIs ebenfalls in den Datenbereich aufgenommen werden. Das Beispiel siehe anhand des Modules Ressourcenauslastung nach Code

Fehlermeldung beim Öffnen des Moduls Rückmeldung (behoben mit S 39.5.19/DB 39.5.7)

Beim Öffnen des Moduls (Aktivieren des Reiters) Rückmeldung tritt eine Traceback-Fehlermeldung auf: Traceback (most recent call last): File "MACRO_MOD_009ABV.py", line 26, in on_initial_focus ...Caused by: java.sql.SQLDataException: ORA-01841: (Volles) Jahr muss zwischen -4713 und +9999 liegen und darf nicht 0 sein

Bereichsbezeichnungen in den Portfoliodaten werden nicht angezeigt (behoben mit DB 39.5.7)

Im Modul Bewertungskriterien werden die Bereichsbezeichnungen nicht dargestellt.

  • Lösung:
    • Im Modul Module Modul 0099FA öffnen.
    • Datenbereich 050091 öffnen.
    • Im Datenbereich ein neues Datenfeld für DI057615 anlegen. Den Parameter Fenster mit dem Wert "9" und den Parameter DF-Verhalten mit dem Wert "o" belegen.
    • Speichern.

Terminrechnung läuft in Programmen nicht (behoben mit DB 39.5.7)

  • Lösung:
    • Die vorhandene Python-Datei start_tcalc.py unter /py/api/ppms/customizing/venus/ppms durch die folgende start_tcalc.py ersetzen.

Balken der Ressourcen in der Ressourcenauslastung sind alle gleichfarbig (behoben mit DB 39.5.7)

Im Modul Ressourcenauslastung nach Code werden die Balken für die kalkulierten Termine unterhalb der Ressourcen in der selben Farbe dargestellt statt derjenigen, die dem Projektcode zugeordnet ist.

  • Lösung:
    • Modul 0099G0 im Modul-Customizer öffnen.
    • Datenbereich 044340 öffnen.
    • Im Datenbereich ein neues Datenfeld für DI007633 anlegen. Den Parameter Fenster mit dem Wert "9" und den Parameter DF-Verhalten mit dem Wert "o" belegen.
    • Speichern.

Python-Fehlermeldung beim Aktivieren eines Prozessmodels mit fehlerhaften Einstellungen (behoben mit DB 39.5.7)

Im Modul Prozessstatus tritt eine Python-Fehlermeldung beim Aktivieren eines Prozessmodells auf, wenn im Modul Prozessmodell-Templates im Prozessmodell als Platzhalter ein Wert angegeben wurde, der weder eine gültige Ressourcen-ID ist noch eine gültige Python-ID, die eine Ressourcen-ID beinhaltet.

  • Lösung:
    • Im Modul Prozessmodell-Templates im Prozessmodell als Platzhalter einen Wert angeben, der entweder eine gültige Ressourcen-ID ist oder eine gültige Python-ID, die eine Ressourcen-ID beinhaltet.

Im Modul Terminplan verschwinden ID und Vorgangsbezeichnung, wenn ein Netzplanzyklus vorhanden ist (behoben mit S 39.5.16)

Wird eine Terminrechnung durchgeführt, wenn ein Netzplanzyklus vorhanden ist, verschwinden im Modul Terminplan die ID und die Vorgangsbezeichnung von Vorgängen, die im Zyklus involviert sind.

Fehlende Perioden-Datensätze beim Anlegen neuer Ressourcen (behoben mit S 39.5.18)

Wird beim Anlegen einer Ressource die übergeordnete Ressource bereits vor dem ersten Speichern ausgewählt, werden für die neu angelegte Ressource beim Speichern keine Periodendatensätze erzeugt. Wird vor dem Auswählen der übergeordneten Ressource bereits zwischengespeichert, werden die Periodendatensätze angelegt.
  • Lösung für das Erfassen der Ressourcen direkt im Modul Ressourcendatenblatt:
    • Die Werte in den Feldern Startperiode und Endperiode jeweils um einen Tag verlängern oder verkürzen.
    • Speichern.
    • Die Werte, wenn notwendig, zurückändern und nochmal speichern.

  • Lösung für den Import:
    • Die Mitarbeiterdaten zweimal importieren:
      • Der erste Importlauf ohne übergeordnete Ressource (bzw. mit Feld Name Übergeordnete Ressource bei allen Personen = leer). Dabei werden die Ressourcen mit Ihren Perioden angelegt.
      • Der zweite Importlauf mit den übergeordneten Ressourcen. Dabei wird die Struktur erzeugt.

Mitarbeiter werden trotz Abwesenheit eingeplant (behoben mit DB 39.5.7)

Wird im Modul Abwesenheit der bereits gespeicherte Abwesenheitstyp (Abwesenheitsgrund) auf einen anderen geändert (z.B. Abwesenheit auf Krankheit), wird die entsprechende Ressource an dem Tag auf "verfügbar" zurückgesetzt und kann eingeplant werden.

  • Lösung:
    • Im Modul Dataitems DI041422 öffnen.
    • Den Wertebereich folgendermaßen anpassen.
    • Vorher:
      def set_value(rec,type):
          vacation=rec.vacation
          absence=rec.absence
          #
          """reset vacation and absence"""
          vacation.set_string_value(0)
          absence.set_string_value(0)
      ...
      Nachher:
      def set_value(rec,type):
          vacation=rec.vacation
          absence=rec.absence
          #
          """reset vacation and absence"""
          vacation.set_string_value(0)
          absence.set_string_value(0)
          rec.save(('absence','vacation'))
      ...
    • Speichern.

Fehlermeldung im Modul Microsoft Project beim Importieren von Microsoft Project-Dateien in DB 39.5.6 (behoben mit DB 39.5.7)

Beim Importieren von Microsoft Project-Dateien tritt die Fehlermeldung UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8f in position 50: invalid start byte nach jedem Server-Update ab Version S 39.5.17 auf.

  • Lösung:
    • Die Verzeichnisse /user_interface/ und /msp_interface/ müssen nachträglich ausgetauscht werden.
      • Hinweis: Verzeichnisse zunächst sichern
      • die erforderlichen Dateien befinden sich in der Datei py.zip
    • PLANTA-Dienst neustarten

Client kann bei Verwendung von Kerberos nicht mehr verbinden (behoben in S 39.5.18)

Bei Verwenden von Kerberos kann der Client sich seit S 39.5.16 nicht mehr verbinden. Nach Aktivieren der Client-Logfiles sieht man in diesem die Fehlermeldung IE: java.lang.NullPointerException
  • Lösung:
    • In den Clientparametern: mutual = on hinterlegen

Benutzermenü minimiert sich nicht (behoben in C 39.5.16)

Bei Verwenden von C 39.5.15 minimiert sich das Benutzermenü nicht, wenn in einem anderen Modul die Suchen im Modul-Leiste (STRG + F) geöffnet ist.
  • Lösung:
    • Zurück zum Modul mit der aktiven Suchleiste wechseln.
    • Die Suchleiste schließen.

Anlegen von Vorgangsdokumenten im Modul Vorgang nicht möglich (behoben mit DB 39.5.7)

Im Modul Vorgang ist das Speichern von neu erstellten Vorgangsdokumenten nicht möglich.

Leeres Feld im Modul Abwesenheit nach einer Umstellung von Urlaub auf Krankheit (behoben mit DB 39.5.7)

Beim Ändern des Abwesenheitstyps von Urlaub auf Krankheit über die Listbox im Modul Abwesenheit bleibt das Feld leer.
  • Lösung:
    • Im Modul Dataitems DI 041422 öffnen.
    • Den vorhandenen Python-Wertebereich durch den den folgenden ersetzen:

def set_absence(rec,type):
    vacation=rec.vacation
    absence=rec.absence
    work=rec.work
    
    """reset vacation or absence"""
    vacation.set_string_value(0)
    absence.set_string_value(0)
    rec.save(('absence','vacation'))
    
    if type == "vacation":
        vacation.set_string_value(1)
        work.set_value(0)
    elif type == "half_vacation":
        vacation.set_string_value(0.5)
    elif type == "absence":
        absence.set_value(1)
        work.set_value(0)
    elif type == "half_absence":
        absence.set_string_value(0.5)
 
def remove_absence(rec):
    rec.vacation.set_string_value(0)
    rec.absence.set_string_value(0)
    rec.work.set_value(1)
    
def processInput(di, oldvalue):
    rec = di.get_dtp_record()
    new_val = di.get_value()
    vacation=rec.vacation
    absence=rec.absence
    old_absence=absence.get_value()
    old_vacation=vacation.get_value()
    absence_type=di.get_value()
    work=rec.work.get_value()
    type=""

    type_dict={}
    type_dict["half_vacation"]=[11]
    type_dict["vacation"]=[10]
    type_dict["half_absence"]=[21]
    type_dict["absence"]=[20, 30]

    type_master = ppms.search_record(447, [absence_type], [41279], True)
    
    if hasattr(type_master,'number_i2'):
        type_master_data=type_master.number_i2.get_value()
    else:
        type_master_data=""

    for key,value in type_dict.items():
        if type_master_data in value:
            type=key

    if (work == 1 or old_absence == 1 or old_vacation == 1) and type != "":
        set_absence(rec,type)
        return new_val
    elif work ==0:
        ppms.ui_message_id("0711")
        remove_absence(rec)
        return 0
    else:
        remove_absence(rec)
        return 0

processInput.deps = ("DI001364",)

Fehlermeldung Incorrect syntax near 'r_' beim Speichern von Portfoliolistbox-Werten (behoben mit S 39.5.15)

Beim Anlegen von neuen Listboxwerten im Modul Portfolio-Listboxwerte kommt es zu einer Fehlermeldung Incorrect syntax near 'r_' und die Listboxwerte werden nicht gespeichert.

  • Lösung:
    • Das Modul Data Dictionary öffnen.
    • Den Entity-Namen der DT875 zu RiskCategory ändern und speichern.
    • Danach muss das Data Dictionary neu geladen werden: Tools -> PLANTA-Dienst neu starten (Bis S 39.5.20: Tools -> System-Customizing neu laden)

Leeres Feld Kategoriebezeichnung im Modul Projektsteckbrief (behoben mit DB 39.5.7)

Nachdem im Modul Portfolio-Listboxwerte eine neue Risikokategorie eingefügt wurde und im Modul Risikocheckliste ein neues Risiko mit dieser Kategorie angelegt wurde, ist das Feld Kategoriebezeichnung für die neue Kategorie im Modul Projektsteckbrief leer.
  • Lösung:
    • Im Modul Dataitems DI023284 öffnen.
    • Den Parameter WB-Art = PY setzen.
    • Den vorhandenen Eintrag im Feld Wertebereich durch den folgenden ersetzen:
def computeOutput(di):
    rec = di.get_dtp_record()
    name = ''
    
    rec875 = ppms.search_record(875, [str(rec.category_id.get_value())], ['name'], True)
    if rec875:
        name = rec875.name.get_value()
    
    return name

computeOutput.deps = ("DI023022",)
  • Speichern.

In der Druckfußzeile wird die falsche Zeit angezeigt (behoben mit DB 39.5.7/C 39.5.13)

Sowohl im Druck als auch in der Druckvorschau wird in der Fußzeile nicht die aktuelle Uhrzeit angezeigt. Stattdessen wird in der Fußzeile die Uhrzeit angezeigt, zu der sich der Benutzer eingeloggt hatte.

Hinweis

  • Die folgenden Lösungen funktionieren nur in Verbindung mit einer Client-Version ab C 39.5.13.

Lösung für DB 39.5.0 - DB 39.5.6

  • Lösung: Den Standard-Druckfuß wie folgt anpassen:
    • Das Modul 009AFA im Modul Module Öffnen.
    • Den Datenbereich 045645 Öffnen.
    • Hier das DI 000022 mit DI 025544 ersetzen und mit der folgenden Datenfeld-Konfiguration speichern:
DI Drucktext Fenster DF-Verhalten DF-Höhe DF-Breite X-Pos. F Y-Pos. F Symbol-ID
025544 @date_time(dd.MM.yy HH:mm:ss) 1 o 35 600 600 10 002008
Hinweise
  • Die Änderungen werden nach dem Neustarten der Session wirksam.
  • Ein individuleller Druckbereich muss unter Verwenden der neuen Variable @date_time(dd.MM.yy HH:mm:ss) im Feld Drucktext angepasst werden.

Lösung für DB 39.4.4.0

  • Lösung: Den Standard-Druckfuß wie folgt anpassen:
    • Das Modul 009AFA im Modul Module Öffnen.
    • Den Datenbereich 045645 Öffnen.
    • Hier das DI 025544 und DI 056959 einfügen mit folgender Datenfeld-Konfiguration:
DI DF-Überschrift Drucktext Fenster DF-Verhalten DF-Höhe DF-Breite X-Pos. Ü Y-Pos. Ü X-Pos. F Y-Pos. F Symbol-ID
025544 @date_time(dd.MM.yy HH:mm:ss) 1 o 35 600 600 10 002008
056959 Gedruckt von: 1 o 1000 10 10 300 10 002008
    • Das DI 000022 auf Fenster 9 setzten und speichern.
Hinweise
  • Die Änderungen werden nach dem Neustarten der Session wirksam.
  • Ein individuleller Druckbereich muss unter Verwenden der neuen Variable @date_time(dd.MM.yy HH:mm:ss) im Feld Drucktext angepasst werden.

Unter DB 39.5.X wird im Modul Neuplanung keine Neuplanung, sondern nur eine Kapazitätsrechnung durchgeführt (behoben mit DB 39.5.7)

Im Modul Neuplanung aller Projekte wird keine Neuplanung, sondern nur eine Kapazitätsrechnung aller angezeigten Projekte durchgeführt.

  • Lösung:
    • Um dies zu beheben, muss der die Python-Datei start_tcalc.py unter /py/planta_de/ppms durch die nachfolgende ersetzt werden.

Falsche Prozentwerte in Modulen Meine Abteilung und Einplanungen (behoben mit DB 39.5.7)

Information

  • Die Voraussetzung für die nachfolgend beschriebenen Änderungen ist die Server-Version S 39.5.17
  • Durch die nachfolgenden Customizing-Änderungen können falsche Prozentwerte in Projektionsdatenfeldern korrigiert werden:
    • Im Gruppierungsbereich (im Datenbereichskopf ist der Parameter Gruppe aktiviert) des betroffenen Moduls muss folgendes vorgenommen werden:
      • Im betroffenen DI auf dem Unter-DI mit Funktion = W die Verdichtungsart = 5 setzen.
      • Im Wertebereich des Unter-DIs den folgenden Python-Code eintragen.
        def computeOutput(di): 
            rec = di.get_dtp_record()
            if rec:
                # using dtp for projections (has no mts)
                avail_cap = rec.summ_avail_cap.get_value()
                summ_planned = rec.summ_planned.get_value()
            else:
                # using mts for groupings (has no dtp)
                rec = di.get_dfs()[0].get_record()
                avail_cap = rec.summ_avail_cap.get_raw_value()
                summ_planned = rec.summ_planned.get_raw_value()
                
            if not avail_cap:
                return 0
                
            perc = (summ_planned / avail_cap) * 100
            return perc
            
        computeOutput.deps = ("DI002454", "DI002483")

  • Das Unter-DI mit Verdichtungsart = 5 mit allen seinen Referenz-DIs in den Datenbereich aufnehmen.

Beispiel

  • Im Modul Meine Abteilung ist Datenbereich DA050762 der Gruppierungsbereich. Diesen im Modul-Customizer öffnen.
  • Das betroffene Projektions-DI ist DI059506. Dieses im Modul Dataitems öffnen.
  • Das Unter-DI mit Funktion = W ist DI059759. Dieses ebenfalls im Modul Dataitems öffnen und im Parameter Verdichtungsart den Wert 5 eintragen.
  • Im Wertebereich des DI 059759 den oben angeführten Python-Code eintragen.
  • Das Unter-DI 059759 und seine Referenz-DIs DI002483 und DI002454 in den Datenbereich DA050762 aufnehmen und auf Fenster = 9 setzen.
  • Den Menüpunkt Tools -> PLANTA-Dienst neu starten (Bis S 39.5.20: Tools -> System-Customizing neu laden) betätigen (da es sich bei dieser Änderung um das System-Customizing handelt).

Hinweis

  • Die Vorgehensweise gilt auch für das Modul Einplanungen und für alle individuellen Module mit ähnlichen Konstruktionen (Projektionsdatenfelder mit Prozentwerten).
  • Passt man nicht alle betroffenen Module an, werden in den nicht angepassten Modulen Fehlermeldungen ausgegeben mit dem Hinweis auf die fehlenden DIs.
  • Nähere Informationen zum Customizen von Projektionen siehe im Kapitel Projektion im Topic Skalen.

Fehlermeldung Unable to typecast value <g> of type to NUMERIC beim Installieren der Datenbank DB 39.5.6 (behoben mit S 39.5.15)

Beim Installieren einer DB 39.5.6 (DB-Import) mit bestimmten Java-Umgebungen (z.B. bei einer Java-Version 1.7.0_71) tritt der folgende Fehler auf:

Performing DB import:
Disabling database objects that might get in the way, such as triggers and foreign key constraints... done, disabled 633 objects.
de.planta.server.database.DataTransferException: ERROR refreshing DT 411 / SQL table 'DT411'
at de.planta.server.database.DataImporter$ImportHandle.performTransfer(DataImporter.java:268) 
at de.planta.server.database.DataImporter$ImportHandle.performTransfer(DataImporter.java:123)
at de.planta.server.database.DataTransfer$TransferHandle.call(DataTransfer.java:101)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.dbunit.dataset.datatype.TypeCastException: Unable to typecast value <g> of type <java.lang.String> to NUMERIC 

  • Lösung: Neueste Java-Version verwenden

Der Fokus wechselt auf Meine Tätigkeiten, nachdem das Modul Abwesenheit aufgerufen wurde (behoben ab DB 39.5.7)

Nachdem aus dem Modul Abwesenheit im Abteilungsboard die Abwesenheit für eine bestimmte Ressource aufgerufen wird, wechselt der Fokus direkt ins Modul Meine Tätigkeiten.
  • Lösung: Das Makro von Modul Meine Tätigkeiten muss ausgetauscht werden.
    • Vorgehensweise
      • Im Modul Module Modul 009BJ3 öffnen.
      • Den Button Makro bearbeiten anklicken.
      • Im vorhandenen Makro nach der Funktion display_todays_tasks suchen und diese durch Folgendes ersetzen:
        def display_todays_tasks():
            todays_tasks_area_id = '000918'
            possible_children = []
            [possible_children.append(dac.get_name()) for dac in
            mod_obj.constants.get_customizing().get_children()]
            for constants_rec in mod_obj.constants.get_records():
                if constants_rec.no_id.get_raw_value() == todays_tasks_area_id:
                    for da_name in possible_children:
                        child_recs = constants_rec.get_children(da_name)
                        if len(child_recs) > 0:
                            child_recs[0].expand() 

Python-Fehlermeldung beim Kopieren von Modulen mit Modulvarianten unter MSSQL (behoben mit S 39.5.15)

Im Modul Module tritt eine Python-Fehlermeldung beim Kopieren von Modulen mit Modulvarianten auf. Dieser Fehler wurde lediglich unter MSSQL festgestellt.

Feld ohne Überschrift im Modul Prozessstatus (behoben mit DB 39.5.7)

Im Modul Prozessstatus wird eine Checkbox ohne Überschrift dargestellt (seit S 39.5.14).

  • Lösung:
    • Modul 0099V3 im Modul-Customizer Öffnen.
    • Datenbereich 043806 Öffnen.
    • für DI063594 im Parameter DF-Überschrift den folgenden Text eintragen: Platzhalter gesetzt
    • Speichern.

Inhalt des Feldes Kommentar Endtermine in Statusberichten enthält immer aktuellste Kommentare (behoben mit DB 39.5.0)

Die Statusberichte verwenden zur Ausgabe des Kommentars zu Endterminen das gleiche DI wie das Modul Status.

  • Lösung:
    • Modul 009A52 öffnen.
    • Datenbereich 044745 öffnen.
    • DI029191 durch DI029197 ersetzen.
    • Speichern.

Systemabsturz beim Klicken in eine leeren Listbox (behoben mit C 39.5.15)

Beim Öffnen einer Listbox, bei der keine Daten gefunden werden und für die im Customizer die Checkbox Feste Überschrift deaktiviert ist, erscheint das aufgeklappte Listbox-Fenster in grau. Klickt man in das graue Fenster, führt dies zu einem Systemabsturz.

Beispiel

Listbox.jpg

Python-Fehlermeldung beim Klick auf die Modul-ID im Modul Rollen (behoben mit DB 39.5.6)

Wird im Modul Rollen auf den Link in der Spalte Modul geklickt, erscheint eine Fehlermeldung.

  • Lösung:
    • Im Modul Module das Modul 009A6K öffnen.
    • Das Makro für das Modul ändern auf:
      from ppms import ppms
      #Macro module
      module_macro = ppms.get_macro_module()
      
      #Invoker module
      invoker_module = ppms.get_target_module()
      
      
      #Get module
      if hasattr(module_macro.get_invoker_rec(), 'startup_mod'):
          sub_mod_nr = module_macro.get_invoker_rec().startup_mod.get_text_value()
      else:
          sub_mod_nr = module_macro.get_invoker_rec().startup_module.get_text_value()
      
      values = []
      
      values.append(sub_mod_nr)
      
      #Set @L value
      invoker_module.set_new_L_var(4, values)
      
      #Open new mainmodule for submodule value
      mod_obj = invoker_module.open_module('000855')

In der Druckvorschau wird die Login-Zeit anstatt der Druckzeit angezeigt (behoben mit DB 39.5.7)

  • Lösung (ab C 39.5.13): Im Standard-Fußzeilen-Druckbereich DA045645 oder im individuell verwendeten Druckbereich das DI000022 Heutedatum durch das DI025581 Background ersetzen und im Parameter Drucktext (im Standard ausgeblendet, muss eingeblendet werden) folgende Variable eintragen: @date_time(dd.MM.yy HH:mm:ss

Unhandled Python Exception in wrapper method on_load bei der Statusberichtserstellung in S 39.5.14 (Oracle) (behoben mit S 39.5.15)

Beim Erstellen von Statusberichten unter Oracle kommt die folgende Fehlermeldung planta_de.ppms.ppms_.DatabaseError: 'java.sql.SQLException: ORA-01747: Ungültige Angabe für benutzer.tabelle.spalte, tabelle.spalte oder spalte\n

  • Ursache: Fehlerhafte SQL-Statements 000336 und 000312
  • Lösung: Bitte den Inhalt der oben genannten SQL-Statements durch den jeweils Folgenden ersetzen:
000336
SELECT DI000215,DI040837 FROM DT412
WHERE di000275=0 and di001700 <> 20
AND di000239='{0}' AND DI040837 is not NULL
000312
SELECT DISTINCT DI000215, (SELECT DI000215 FROM DT412 source_name WHERE 
                      DI000238=DT412.DI040837), 
                      (SELECT DI000239 FROM DT412 source_table WHERE DI000238=DT412.DI040837)
                      FROM DT412 
                      WHERE DT412.DI000239='{0}' AND DT412.DI040837 IS NOT NULL
                      AND DI040837!='AUTO' AND DI040837!='DATE' AND DI040837!='USER'
                      ORDER BY DT412.DI000215 asc

Unhandled Python Exception in wrapper method on_load bei der Statusberichtsfreigabe S 39.5.14 (behoben mit S 39.5.15)

Beim Freigeben von Statusberichten kommt die folgende Fehlermeldung planta_de.ppms.ppms.DatabaseError: "com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '}'._

  • Ursache: Fehlerhafte Python-Dateien create_report.py und project_rights.py
  • Lösung: Bitte den Inhalt der Dateien durch den jeweils folgenden ersetzen:

Modul Migrationspakete defekt (behoben mit DB 39.5.4)

Beim Ausführen von Migrationspaketen erscheint eine Python-Fehlermeldung
  • Ursache: die überarbeitete Version dieses Moduls wurde fälschlicherweise bereits in die Datenbank Version 39.5.3 integriert
  • Lösung:
    • Das Modul Migrationspakete 009BWQ kann in dieser Version nicht verwendet werden, stattdessen ist Modul 009CEP zu nutzen
    • hierzu muss der Python-Stand der Ordner py und migration im Server-Verzeichnis auf Changeset 47818 angehoben werden
    • ausserdem ist es notwendig "${WORKDIR}" in den Dateien planta_server.sh und yajsw/conf/common.conf in die Variable "PYTHONPATH" aufzunehmen

Python Exception beim Klicken von PLANTA project vs. Microsoft Project (behoben mit DB 39.5.3)

Bei Verwenden von DB 39.4.4.0 und Server 39.5.x erhält man beim Öffnen des Moduls Microsoft Project die folgende Fehlermeldung: Unhandled Python Exception in macro 009BK0 [....] IndexError: list index out of range

  • Lösung:
    • Im Modul Module Modul 009BK0 öffnen.
    • Den Button Makro bearbeiten klicken.
    • DIe folgenden Zeilen ersetzen:
    • Vorher:
      pr_id = ppms.get_target_module().get_current_L_var()[74][0]
      mod.set_new_L_var(74, [pr_id])
      Nachher:
      pr_id = ppms.get_target_module().get_current_L_var()[30][0]
      mod.set_new_L_var(30, [pr_id])
    • Speichern.

Python-Fehlermeldung beim Export nach Microsoft Project (behoben mit S 39.5.2)

Beim Export nach Microsoft Project wird eine Python-Fehlermeldung ausgegeben.
  • Ursache: Die Laufzeit eines Projekts ist länger als die des Basiskalenders.
  • Lösung: Im Modul Kalender die Laufzeit des Basiskalenders an die Laufzeit des Projekts anpassen.

Manuell angepasste Kosten-Rest von Kosten-Ressourcen werden nicht auf die Vorgänge übernommen (behoben mit DB 39.5.1)

Werden auf einem Vorgang bei einer Kosten-Ressource Kosten-Rest geplant und gerechnet, dann die Kosten-Rest manuell geändert, der Ist-Anfangstermin gesetzt und nochmal gerechnet, ist die Änderung der Kosten-Rest im gleichnamigen Feld auf dem Vorgang (DT463) nicht sichtbar, bei den Kosten-Gesamt jedoch schon.

  • Lösung:
    • Module Dataitems öffnen.
    • DI000698 eintragen
    • Im Feld WB-Art den Eintrag "PY" entfernen.
    • Speichern.

Bei benutzerdefinierten Skins ist jeder Text in Großbuchstaben (behoben mit DB 39.5.1)

Bei vom Benutzer erstellten Skins wird jeder Text in Großbuchstaben angezeigt.

  • Lösung:
    • Um ab sofort alle Skins korrekt anzulegen
      • Im Modul Module Modul 006556 öffnen.
      • Im Modul Datenbereiche den Datenbereich 026290 öffnen.
      • Im Datenbereich ein neues Datenfeld für DI025687 anlegen. Den Parameter Fenster mit dem Wert 9 und Parameter DF-Verhalten mit dem Wert i2 belegen. Zusätzlich im Parameter Standardwert den Wert @Y eintragen.
      • Speichern.
    • Um bereits bestehende Skin zusätzlich zu korrigieren
      • Das Modul Skins öffnen.
      • Das gewünschte Skin öffnen.
      • Den Customizing-Modus aktivieren.
      • Das Feld Kleinbuchstaben aus Fenster 9 einblenden.
      • Die Checkbox Kleinbuchstaben aktivieren.
      • Speichern.

Aufwände für Skillressourcen werden in Jahresscheiben nicht verdichtet (behoben mit DB 39.5.1)

Problem: Aufwände für Skillressourcen werden im alten Budget-Modul Budget MOD0099D in den Jahresscheiben des Bereichs Aufwandsbudget nicht verdichtet.
  • Ursache: Die Prozedur p_upd_kost_aufw_erl_akt ist fehlerhaft.
  • Umgehungslösung: Die Abfrage in der Prozedur wie folgt anpassen:

SELECT       
     di001001 AS                pr,
     di023062 AS                jahr,
     di001003 AS                ueb_pr,
     dt470.di029478 AS          koagrp,    

     ROUND(SUM(di001413)) AS        soll,
     ROUND(SUM(di001419)) AS        ist,
     ROUND(SUM(di001426)) AS        rest,
     ROUND(SUM(di001432)) AS        gesamt,    

     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001509 else 0 end)) AS        soll_aufw,
     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001510 else 0 end)) AS        ist_aufw,
     ROUND(SUM(case when DI003414 in ('1I','1E','5','2') then di001511 else 0 end)) AS        rest_aufw

   FROM dt472
   INNER JOIN dt461 ON (di001395 = di001001)  
   INNER JOIN DT467 ON (DI001517=DI001218)
   INNER JOIN DT470 ON (di001366 = di001518)
   INNER JOIN dt861 ON (di001395 = di023119 and di023062 = extract(YEAR FROM di001519))

   -- Positive buchungen

  WHERE dt472.di001510 + dt472.di001511  <> 0
  AND dt461.di001052 = '002190'
  GROUP BY di001001, di023062, di001003, di029478 

Beim Ändern des Status eines Projekts wird der Status des Teilprojekts nicht mitgeändert (behoben mit DB 39.5.0)

Beim Ändern des Wertes im Parameter Status im Modul Projektsteckbrief wird der Status für das Teilprojekt nicht mitgeändert. Nachträgliches Ändern vom Status im Teilprojekt ist nicht möglich.

Ab S 39.5.12

  • Lösung:
    • Dataitem 001042 im Modul Dataitems öffnen und dort den Wertebereich durch folgenden ersetzen:
      def checkInput(di, oldvalue):
          rec = di.get_dtp_record()
      
          #check pr is main pr
          if rec.pr_id.get_value() != rec.main_pr_id.get_value():
              ppms.ui_message_id("0835")
              return False
      
          return di.get_value() in [0, 1, 2, 9]
      
      checkInput.deps = ("DI001052",)
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id = rec.pr_id.get_value()
          project_state = di.get_value()
          main_pr_id = rec.main_pr_id.get_value()
      
          # check if project is loaded
          pr_loaded = rec.loaded.get_value()
          
          loaded_rec = ppms.search_record(461, [main_pr_id], [1044], True)
          if loaded_rec:
              main_pr_loaded = loaded_rec.loaded.get_value()
          else:
             main_pr_loaded = 0
      
          if project_state in [0, 2, 9] and pr_loaded == 1 and main_pr_loaded == 1:
              module = ppms.get_active_module()
              
              if not module:
                  # If we don't have a module context just forget about this
                  # Since we don't have a direct python API for calling tcalc and
                  # friends and we need to have a module context to open new modules
                  ppms.ui_message_id("0376")
                  return oldvalue
                  
              else:
                  ppms.ui_message_id('0923')
                  msg = ppms.msg_pop()
              
                  if msg.get_reply() == 1:
                      # Temporarily restore the old value so the tcalc filter will not ignore this project
                      di.set_value(oldvalue)
                      module.set_new_L_var(4, [pr_id])
                      
                      with ppms.echo_disabled():
                          tmod = module.open_module('009BU8')
                          tmod.menu(12)
                          tmod.menu(35)
                          tmod.menu(37)               
                          tmod.menu(49)  
                  else:
                      return oldvalue
                      
          if pr_id == main_pr_id:
              query = ppms.get_query("000271").format(main_pr_id)
              entire_project_structure = ppms.db_select(query)
              
              for sql_pr_id in entire_project_structure:
                  if sql_pr_id[0] != pr_id:
                      current_pr_rec = ppms.search_record(461, [sql_pr_id[0]], [1042], True)
                      current_pr_rec.project_state.set_value(project_state)
                      current_pr_rec.save(("project_state",))
      
          return project_state
      
      processInput.deps = ("DI001052", "DI001044")

Bis S 39.5.12

  • Lösung:
    • Dataitem 001042 im Modul Dataitems öffnen und dort den Wertebereich durch folgenden ersetzen:
      def checkInput(di, oldvalue):
          rec = di.get_dtp_record()
      
          #check pr is main pr
          if rec.pr_id.get_value() != rec.main_pr_id.get_value():
              ppms.ui_message_id("0835")
              return False
      
          return di.get_value() in [0, 1, 2, 9]
      
      checkInput.deps = ("DI001052",)
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id = rec.pr_id.get_value()
          project_state = di.get_value()
          main_pr_id = rec.main_pr_id.get_value()
      
          # check if project is loaded
          pr_loaded = rec.loaded.get_value()
          
          loaded_rec = ppms.search_record(461, [main_pr_id], [1044], True)
          if loaded_rec:
              main_pr_loaded = loaded_rec.loaded.get_value()
          else:
             main_pr_loaded = 0
      
          if project_state in [0, 2, 9] and pr_loaded == 1 and main_pr_loaded == 1:
              module = ppms.get_active_module()
              
              if not module:
                  # If we don't have a module context just forget about this
                  # Since we don't have a direct python API for calling tcalc and
                  # friends and we need to have a module context to open new modules
                  ppms.ui_message_id("0376")
                  return oldvalue
                  
              else:
                  ppms.ui_message_id('0923')
                  msg = ppms.msg_pop()
              
                  if msg.get_reply() == 1:
                      # Temporarily restore the old value so the tcalc filter will not ignore this project
                      di.set_value(oldvalue)
                      module.set_new_L_var(4, [pr_id])
                      
                      ppms.echo_off()
                      tmod = module.open_module('009BU8')
                      tmod.menu(12)
                      tmod.menu(35)
                      tmod.menu(37)               
                      tmod.menu(49)  
                      ppms.echo_on()
                  else:
                      return oldvalue
                      
          if pr_id == main_pr_id:
              query = ppms.get_query("000271").format(main_pr_id)
              entire_project_structure = ppms.db_select(query)
              
              for sql_pr_id in entire_project_structure:
                  if sql_pr_id[0] != pr_id:
                      current_pr_rec = ppms.search_record(461, [sql_pr_id[0]], [1042], True)
                      current_pr_rec.project_state.set_value(project_state)
                      current_pr_rec.save(("project_state",))
      
          return project_state
      
      processInput.deps = ("DI001052", "DI001044")

Python-Fehlermeldung im Dashboard (behoben mit DB 39.5.0)

Bei bestimmten Datenkonstellationen kann es im Modul Dashboard zu folgenden Python-Fehlermeldungen kommen:
Python error in value range DI059707 "current_report_ole_def_effort":computeOutput
<class 'TypeError'>:
argument must be string, not None

Python error in value range DI059708 "current_report_ole_def_costs":computeOutput
<class 'TypeError'>:
argument must be string, not None

  • Ursache: falsch konstruierter Wertebereich
  • Lösung: Im Wertebereich der DIs 059707 und 059708 die folgende Zeile ersetzen:
Vorher:
elif current_value < float(compare_value_2):
Nachher:
elif current_value <= float(compare_value_2):

Unhandled Python Exception in macro 009AVG beim Löschen von Zuordnungen im Portfolio (behoben mit DB 39.5.0)

Beim Löschen einer Projekt-, Vorhaben- oder Ideenzuordnung im Modul Portfolio, erscheint die folgende Fehlermeldung: Unhandled Python Exception in macro 009AVG [....] AttributeError: 'Module' has no attribute 'portfolio_id'

  • Lösung:
    • Im Modul Module Modul 0099FV öffnen.
    • DA 040996 öffnen und folgende Dataitems in den Datenbereich übernehmen: 023178, 023179, 023278 und 023119.
    • Für alle Datenfelder Fenster = 9 und DF-Optionen = Checked setzen und speichern.

Python-Fehlermeldung im Modul Indirekte Module (behoben mit S 39.5.14/DB 39.5.0)

Im Modul Indirekte Module erscheint beim Klick auf den Link im Feld MOD die Python-Fehlermeldung Python error in macro 0099CN.
  • Ursache: Fehler im Python-Makro
  • Lösung: Im Modul Module 0099CN eingeben und Klick auf die Schaltfläche Makrobearbeitung aufrufen und wie folgt vorgehen:
    mod_id = module_macro.get_invoker_rec().get_dtp_record().id.get_value()
    durch
    if hasattr(module_macro.get_invoker_rec().get_dtp_record(),'id'):
        mod_id = module_macro.get_invoker_rec().get_dtp_record().id.get_value()
    else:
        mod_id = module_macro.get_invoker_rec().get_dtp_record().module_id.get_value()
    austauschen

Im Einplanungsmodul werden Belastungen gerundet angezeigt (behoben mit DB 39.5.0)

In DB 39.4.4.0 im Modul Einplanungen werden Belastungen für Abteilungsressourcen gerundet angezeigt.
  • Unrsache
    • Es ist kein Format auf dem entsprechenden Feld hinterlegt.
  • Lösung:
    • DA050306 im Modul-Customizer öffnen.
    • Für DI001423 das Format 000065 in Spalte Format-ID hinterlegen.
    • Speichern.
  • Anmerkung:
    • Sollen in der Skala die Belastungswerte ebenfalls mit Nachkommastelle und nicht gerundet angezeigt werden, müssen die Formate der entsprechenden Projektionen ausgetauscht werden.

Fehlende Übersetzungen im Modul Data Dictionary (behoben mit DB 39.5.0)

In DB 39.4.4.0 fehlen im Kontextmenü des Moduls Data Dictionary einige Übersetzungen.
  • Ursache:
    • Es fehlen die Übersetzungen zu folgenden Modulbezeichnungen:
      • 0099RW Define Incarnation/Fetch Exit
      • 0099ZS Select Data Area
      • 0099ZV Include Data Items in Data Area
      • 0099ZR Include Data Items in Data Area
    • Zudem fehlt die folgende DF-Überschrift:
      • Im Datenbereich 031148 für DF 85626 Edit exit
  • Lösung:
    • Die fehlenden Überschriften- und Modulübersetzungen müssen manuell ergänzt werden.

Sortierung nach Projektcode stimmt nicht (behoben mit DB 39.5.0)

Im Modul Projekte stimmt die Sortierung nach Projektcode nicht.
  • Ursache: Customizing: Die Reihenfolge im Feld Sortierreihenfolge ist falsch eingestellt.
  • Lösung: Im Datenbereich 041023 Dynamische Gruppierung im Feld Sortierreihenfolge folgende Werte eintragen:
    • Für das Datenfeld 461: OLAP 1 - txt (DI029160) eine 3
    • Für das Datenfeld 461: OLAP 1 - Numerisch für Sortierung (DI057587) eine 1
    • Für das Datenfeld 461: OLAP 1 - 029129 (DI029133) eine 2

Beim Ändern des Bereichs für Bewertungsdaten im Modul Projektsteckbrief werden keine neuen Risikokriterien eingefügt (behoben mit DB 39.5.0)

Wenn im Modul Projektsteckbrief im Bereich Bewertungskriterien ein anderer Bereich ausgewählt wird, werden keine neuen Risikokriterien eingefügt.

  • Lösung:
    • Im Modul Dialogmeldungen eine neue Dialogmeldung anlegen:
      • Ausgabeart auf "1" stellen.
      • Dialogmeldung mit folgendem Text befüllen: "Es existieren bereits Bewertungskriterien für das aktuelle Projekt. Sollen diese gelöscht werden?"
      • Button-Art auf "3" stellen.
    • Dataitem 041680 im Modul Dataitems öffnen und dort den folgenden Wertebereich einfügen:
      from ppms.module_subclasses import portfolio_module
      from ppms import project_rights
      
      def processInput(di, oldvalue):
          rec = di.get_dtp_record()
          pr_id=rec.pr_id.get_value()
          
          
          vh_851=rec.get_children(851)
          vh_863=rec.get_children(863)
          if len(vh_851)+len(vh_863) > 0:
              ppms.ui_message_id("DIALOGMEDUNGS-ID") # Dieser Text muss durch die oben angelegte Dialogmeldungs-ID ausgetauscht werden.
              msg = ppms.msg_pop()
              if msg.get_reply() == 1:
                  for rec851 in vh_851: rec851.delete()
                  for rec863 in vh_863: rec863.delete()
                  rec.object_contrib_in.set_value(0)
                  rec.risk_value_in.set_value(0)
                  return di.get_value()
              else:
                  return oldvalue
          else:
              return di.get_value()
      
      processInput.deps = ("DI001001","DI022774","DI022781")

  • Im oberen Code die Dialogmeldungs-ID an der markierten Stelle mit der oben angelegten Dialogmeldung austauschen.
  • Die WB-Art zu "PY" ändern und speichern.

Fehlermeldung beim Abgeben von Statusberichten (behoben mit DB 39.5.0)

  • Beim Abgeben eines Statusberichtes kommt eine dieser Fehlermeldungen
Python error in macro XYZ ... ORA-00942: Tabelle oder View nicht vorhanden ....
Python error in macro XYZ... ORA-06550 ... PLS00103: Fand das Symbol '"' als eines der folgenden erwartet wurde ....
  • Ursache sind fehlende Rechte auf die zugrunde liegenden Materialized Views, die den falschen Owner (ungleich dem Schema Owner) haben. Dies entsteht hauptsächlich durch das Einspielen der Datenbank mit dem Oracle Legacy Import Tool imp.
  • Lösung:
    • Zur Datenbank verbinden als SYSDBA (zwingend), mit sqlplus oder Developer
    • Verifizieren, dass der View Owner ein anderer als der Schema Owner ist (im folgenden <your_database_user> mit dem Namen des betreffenden DB-Users ersetzen):
      SELECT * FROM SNAP_REFTIME$ WHERE SOWNER = '<your_database_user>'; -- or more generic: (SOWNER <> MOWNER)
      SELECT * FROM SNAP$ WHERE SOWNER = '<your_database_user>'; -- or more generic: (SOWNER <> MOWNER)* Zur Korrektur die folgenden drei Zeilen ausführen:UPDATE SNAP_REFTIME$ SET MOWNER=SOWNER WHERE SOWNER = '<your_database_user>';
      UPDATE SNAP$ SET MOWNER=SOWNER WHERE SOWNER = '<your_database_user>';
      COMMIT;

Fehlermeldung im Dashboard (behoben mit DB 39.5.0)

Im Dashboard wird im Chart der Meilensteine die Fehlermeldung expected string for parameter 'string' but got 'None Type' angezeigt.
  • Ursache: Die Kapazitätsrechnung wurde noch nicht durchgeführt oder konnte z.B. aufgrund eines Zyklus im Terminplan nicht komplett fertiggestellt werden.
  • Lösung: Die Kapazitätsrechnung (erneut) durchführen.

Schwarze Balken in Meine Tätigkeiten (behoben mit DB 39.5.0)

Im Modul Meine Tätigkeiten wird die alternierende Schattierung der Prozessschritte in Fenster 3 schwarz angezeigt.

Siehe auch: Customizing-FAQs

Anlegen von Filtern nicht möglich

Problem: In den Modulen Objektfilter und Portfolioauswertung, Scoring können keine Daten angelegt werden, da die automatische Nummer nicht gezogen wird.
  • Ursache: In der DT817 Filterklasse fehlen die Werte "1" (Multiprojektinfoboard) und "2" (PPPM-Infoboard)
  • Lösung: Im Modul Customizer Stammdaten Filterklassen die Werte "1" und "2" anlegen.

Loop bei der Kapazitätsrechnung (behoben mit 39.4.4.0)

Hat eine Ressource einen abweichenden zu BK Kalender und sind folgende Parameter gesetzt: Kalender ist aktiv=N, Arbeit (im Ressourcenkalender)=J, Arbeit (im BK-Kalender)=N, ensteht bei der Kapazitätsrechnung ein Loop.
  • Ursache: Fehlerhafte Parameter-Einstellungen
  • Lösung: Den Parameter Kalender ist aktiv auf J setzen (die Checkbox aktivieren).

Bekannte Probleme nach der Migration

Konvertierung von VH() in Wertebereichen zu SQL WB

  • Manche Wertebereiche beziehen sich auf Datentabellen, die nicht mehr existieren
    • Detailinformationen siehe Migrationsprotokoll-Datentabelle MIG_LOG
  • Manche VH-Wertebereiche arbeiten nicht unter Zuhilfenahme des Index (DI 000242)
    • Migrationsroutine erzeugt den korrigierten SQL-Wertebereich

Visuelle Darstellung

  • Datenfelder und Schaltflächen werden in 39 anders dargestellt als in 3.8
  • Schaltflächen werden gemäß dem Windows-Anzeigeschema dargestellt
    • In der Folge kann es bei migrierten Maskenbereichen zu Überlappungen von Datenfeldern und Schaltflächen kommen

Background-DIs in Überschriften

In festen Überschriften werden Background-DIs dargestellt.
  • Ursache: Hierbei handelt es sich um einen Update-Befehl, der eine Besonderheit bei I-Texten ist.
  • Lösung: Der Wert von (ALT+0160) muss auf das Überschrifts-DI gesetzt werden, wenn das DI gleich dem Background-DI ist und die Überschrift nicht gefüllt ist.
Topic attachments
I Attachment History Size Date Comment
Jpgjpg Listbox.jpg r1 7.4 K 2015-01-14 - 17:54 Systemabsturz beim Klicken in eine leeren Listbox
Zipzip Migrationspakete.zip r1 15.9 K 2018-08-10 - 11:38  
Sqlsql P_CALC_PERIODS.sql r1 11.6 K 2016-04-13 - 00:21  
Txttxt Perioden_korrigieren.py.txt r1 2.5 K 2016-04-13 - 00:18  
Jpgjpg Projektzuordnungloeschen.JPG r1 52.5 K 2015-01-15 - 14:41 Zuordnung in Portfolio löschen
Sqlsql StatementForEventTablesMSSQL.sql r1 2.1 K 2020-05-20 - 10:35  
Sqlsql StatementForEventTablesORACLE.sql r1 1.9 K 2020-05-20 - 10:46  
Zipzip WI25300_PortfolioImages.zip r1 5.5 K 2020-11-26 - 08:16  
Txttxt ZZZ_Icou.py.txt r1 1.8 K 2020-06-30 - 13:52  
Zipzip Zeiterfassung.zip r1 5.9 K 2022-02-02 - 10:49  
Zipzip alternative_migration_directory.zip r1 2698.2 K 2018-08-10 - 11:38  
Txttxt create_report.py.txt r1 28.6 K 2015-01-13 - 16:09 Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14
Txttxt load_creation.py.txt r1 14.6 K 2018-09-13 - 10:15  
Txttxt modules.py.txt r1 7.6 K 2020-06-30 - 13:47  
Txttxt period.py.txt r1 10.1 K 2018-05-11 - 06:40  
Txttxt project_rights.py.txt r1 30.6 K 2015-01-13 - 16:10 Fehlermeldungen bei der Statusberichtsfreigabe S 39.5.14
Zipzip py.zip r1 224.5 K 2015-10-13 - 17:49 Fehlermeldung bei Import von MSP-Dateien nach Server-Update ab S 39.5.17 (behoben ab DB 39.5.7)
Txttxt start_tcalc.py.txt r1 6.2 K 2016-04-11 - 22:37  
Txttxt update.py.txt r1 13.4 K 2020-06-30 - 13:52  
Txttxt work_flag_fix.py.txt r1 8.7 K 2018-05-11 - 06:41  

         PLANTA project









 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten
This site is powered by the TWiki collaboration platform Powered by Perl