Skip to main content
Skip table of contents

Tutorial: Modul-Customizing (Level 3)

Informationen

Aufgabe 1

Ziel

  • Im Testmodul wird ein Feld als Link definiert.
    • Wird dieser betätigt, erscheint eine Dialogmeldung.
      • Wird diese mit Ja bestätigt, wird ein weiteres Modul aufgerufen, in dem alle markierten Projekte angezeigt werden.
      • Wird diese mit Nein bestätigt, wird das Projekt, in dem der Link betätigt wurde, markiert.

Schritt 1: Vorbereitung

Informationen

  • Für diese Aufgabe muss ein weiteres Modul gecustomized werden (Vorgehensweise wie im Modul-Workflow:Level 1 beschrieben):
    • Modultitel: Projektdatenblatt
    • einen Datenbereich mit den folgenden Datenfeldern und Einstellungen wie im Modul-Workflow:Level 1 beschrieben anlegen und dem Modul zuordnen:
      • DDI: 001001 Projekt-ID
      • DI001001 Projekt-ID und DI000690 Projektbezeichnung
      • Auf dem Datenfeld Projekt-ID in Filtern von @L30 hinterlegen.
    • ein Makro einfügen, das innerhalb der Python-Funktion on_initial_focus() filtert (Vorgehensweise siehe hier)
  • Zusätzlich im Datenbereich Projekt des Moduls Testmodul das Filterkriterium 4811 aus dem Feld Filtern von entfernen.

Schritt 2: Erstellen eines Makro-Moduls zum Modulaufruf

Ziele

  • Erstellen eines Makro-Moduls, das das Projektdatenblatt aufruft
  • Hinterlegen dieses Makro-Moduls auf einem Datenfeld im Modul Testmodul

Hinterlegen des Moduls Projektdatenblatt in den globalen Einstellungen

Vorgehensweise

  • Das Modul Globale Einstellungen aufrufen
    • Customizer → Stammdaten → Globale Einstellungen aufrufen oder
    • im Panel Module den Reiter (das Untermodul) Globale Einstellungen aktivieren.
  • Für das Modul Projektdatenblatt eine neue globale Einstellung anlegen und eine Python-ID hinterlegen:
    • Einfügen → Globale Einstellungen aus dem Kontextmenü auswählen.
    • In der Listbox Klasse die gewünschte Klasse auswählen, hier Modul-ID.
    • Im Feld Alpha (120) die Modul-ID des Projektdatenblatts eintragen.
    • Im Feld Python-ID eine Python-ID, z.B. pr_datasheet, definieren.
    • Speichern.

Anlegen des Makro-Moduls

Vorgehensweise

  • Ein Makro-Modul (Modul mit Klasse = 6) anlegen.
  • Durch Klick auf die Schaltfläche Python-Makrobearbeitung aufrufen den Python-Editor öffnen. Es wird automatisch ein Template einkopiert.
    • Dieses Template ist für Module mit Klasse = 4 vorgesehen, es kann daher gelöscht werden.
  • Folgendes Makro hinterlegen:
    • Bitte beachten: Der Eintrag Python_ID_Projektdatenblatt muss mit dem Wert aus dem Feld Python-ID der neu angelegten globalen Einstellung des Projektdatenblatts ersetzt werden.
PY
#Um die Modul-ID aus den globalen Einstellungen auslesen zu koennen 
#muss das Python-Modul global_setting importiert werden.
from ppms.global_setting import get_global_setting_value

# Definition des Modul-Objekts
mod_obj = ppms.get_target_module()

# Definition der Modul-ID. Diese wird mit Hilfe der selbst definierten Python-ID 
# aus den globalen Einstellungen ausgelesen.
target_mod_id = get_global_setting_value("Python_ID_Projektdatenblatt", 'alpha120')

#Auslesen der Projekt-ID des Datensatzes auf dem der Link aufgerufen wird
pr_id = ppms.get_context_df().get_record().get_df("pr_id").get_raw_value()

# Variable L30 fuer das Modul, das aufgerufen wird, setzen
mod_obj.set_new_L_var(30, [pr_id])

#Modul aufrufen
mod_obj.open_module(target_mod_id)
  • Speichern

Tipps

  • Statt
PY
pr_id = ppms.get_context_df().get_record().get_df("pr_id").get_raw_value()
  • kann auch die (etwas kürzere) Zeile verwendet werden:
PY
pr_id = ppms.get_context_df().get_record().pr_id.get_raw_value()
  • Ist der Link auf dem Datenfeld, das ausgelesen werden soll (in diesem Fall: wenn man den Link auf das Feld Projekt-ID customized, kann auch folgende Zeile zum Auslesen verwendet werden:
PY
pr_id = ppms.get_context_df().get_raw_value()

Link definieren

Vorgehensweise

  • Im Modul Testmodul (Datenbereich Projekt) das DI Projektbezeichnung als Link definieren (DF-Verhalten = e4) und im Datenfeld Aktions-ID die ID des neu erstellten Makro-Moduls hinterlegen.
  • Speichern.

Modul testen

Vorgehensweise

  • Das Modul Testmodul starten.
  • Klick auf die Projektbezeichnung eines Projekts: Das Modul Projektdatenblatt wird geöffnet und das Projekt, auf dem der Link betätigt wurde, wird angezeigt.

Schritt 3: Einbauen einer Dialogmeldung

Ziel

  • Bevor das Projektdatenblatt gestartet wird, soll die folgende Dialogmeldung erscheinen: Wollen Sie dieses Projekt wirklich bearbeiten?
    • Bestätigt der Anwender die Meldung mit Ja: Öffnet sich das Modul Projektdatenblatt.
    • Bestätigt der Anwender die Meldung mit Nein: Wird der Projekt-Datensatz des gewählten Projekts markiert.

Dialogmeldung anlegen

Vorgehensweise

  • Customizer → Stammdaten → Dialogmeldungen aufrufen.
  • Über die rechte Maustaste Einfügen → Dialogmeldung eine neue Dialogmeldungszeile einfügen.
  • Im Feld Dialogmeldung Wollen Sie dieses Projekt wirklich bearbeiten? eintragen.
  • Im Feld Ausgabeart 1 auswählen.
  • In den Feldern Default Button = 1 und Button-Art = 3 auswählen.
  • Speichern

Hinterlegen der Dialogmeldungs-ID in den globalen Einstellungen

Vorgehensweise

  • Das Modul Globale Einstellungen aufrufen
    • Customizer → Stammdaten → Globale Einstellungen aufrufen oder
    • im Panel Module den Reiter (das Untermodul) Globale Einstellungen aktivieren.
  • Für die Dialogmeldung eine neue globale Einstellung anlegen und eine Python-ID hinterlegen:
    • Einfügen → Globale Einstellungen aus dem Kontextmenü auswählen.
    • In der Listbox Klasse die gewünschte Klasse auswählen, hier Dialogmeldungs-ID .
    • Im Feld Alpha (120) die Dialogmeldungs-ID eintragen.
    • Im Feld Python-ID eine Python-ID, z. B. pr_msg_box, definieren.
    • Speichern.

Makro des Makro-Moduls anpassen

Vorgehensweise

  • Das Makro des Makro-Moduls im Python-Editor öffnen und wie folgt anpassen
    • Bitte beachten:
      • Der Eintrag Python_ID_Projektdatenblatt muss mit dem Wert aus dem Feld Python-ID der globalen Einstellung des Projektdatenblatts ersetzt werden.
      • Der Eintrag Python_ID_Dialogmeldung muss mit dem Wert aus dem Feld Python-ID der neu angelegten globalen Einstellung der Dialogmeldung ersetzt werden.
PY
from ppms.global_setting import get_global_setting_value
mod_obj = ppms.get_target_module()

# Definition der Modul-ID und der Dialogmeldungs-ID
target_mod_id = get_global_setting_value("Python_ID_Projektdatenblatt", 'alpha120')
dialog_id = get_global_setting_value("Python_ID_Dialogmeldung", 'alpha120')
 
pr_id = ppms.get_context_df().get_record().get_df("pr_id").get_raw_value()

mod_obj.set_new_L_var(30, [pr_id])

# Ausgabe der Dialogmeldung
ppms.ui_message_id(dialog_id)

# Klickt der Anwender auf "Ja" ("if"), wird das Modul aufgerufen, 
# sonst ("else") wird der Datensatz markiert.
if ppms.msg_pop().get_reply() == 1:
    mod_obj.open_module(target_mod_id)
else:
    ppms.get_context_df().get_record().mark()

Modul testen

Vorgehensweise

  • Das Modul Testmodul starten.
  • Klick auf die Projektbezeichnung eines Projekts
  • Die Dialogmeldung Wollen Sie dieses Projekt wirklich bearbeiten? wird angezeigt.
    • Klickt man auf Ja, wird das Projektdatenblatt geöffnet und das Projekt, auf dem der Link betätigt wurde, wird angezeigt.
    • Klickt man auf Nein, wird das Projekt, auf dem der Link betätigt wurde, markiert.

Schritt 4: Anzeige aller markierten Projekte

Ziel

  • Alle markierten Projekte sollen im Modul Projektdatenblatt angezeigt werden
  • Falls kein Projekt markiert wurde, soll das Projekt auf dem der Link betätigt wurde angezeigt werden.

Makro des Makro-Moduls anpassen

Vorgehensweise

  • Das Makro des Makro-Moduls im Python-Editor öffnen und wie folgt anpassen
    • Bitte beachten:
      • Der Eintrag Python_ID_Projektdatenblatt muss mit dem Wert aus dem Feld Python-ID der globalen Einstellung des Projektdatenblatts ersetzt werden.
      • Der Eintrag Python_ID_Dialogmeldung muss mit dem Wert aus dem Feld Python-ID der neu angelegten globalen Einstellung der Dialogmeldung ersetzt werden.
PY
from ppms.global_setting import get_global_setting_value
mod_obj = ppms.get_target_module()

target_mod_id = get_global_setting_value("Python_ID_Projektdatenblatt", 'alpha120')
dialog_id = get_global_setting_value("Python_ID_Dialogmeldung", 'alpha120')

#Definition einer Liste der markierten Datensaetze im Projektdatenbereich
#Ist kein Datensatz markiert, ist diese Liste leer
marked_records = ppms.get_context_df().get_record().get_da().get_marked_records()

#Definition einer neuen leeren Liste
project_list=[]

# Ist in der Liste "marked_records" mindestens ein Datensatz vorhanden, wird fuer jeden Datensatz in der 
# Liste "marked_records" die Projekt-ID ausgelesen und in die Liste "project_list" geschrieben. 
# Zusaetzlich wird die Projekt-ID des Datensatzes, auf dem der Link aktiviert wurde, in die 
# Liste geschrieben.
if len(marked_records) > 0:
    for record in marked_records:
        cur_pr_id = record.pr_id.get_raw_value()
        project_list.append(cur_pr_id)
    project_list.append(ppms.get_context_df().get_record().pr_id.get_raw_value())

# Ist die Liste "marked_records" leer, wird die Projekt-ID des Datensatzes, auf dem der Link aktiviert 
# wurde, in die Liste geschrieben.
else:
    project_list.append(ppms.get_context_df().get_record().pr_id.get_raw_value())

mod_obj.set_new_L_var(30, project_list)

ppms.ui_message_id(dialog_id)

if ppms.msg_pop().get_reply() == 1:
    mod_obj.open_module(target_mod_id)
else:
    ppms.get_context_df().get_record().mark()

Modul testen

Vorgehensweise

  • Das Modul Testmodul starten.
  • Mehrere Projekte markieren und Klick auf die Projektbezeichnung eines Projekts
  • Die Dialogmeldung Wollen Sie dieses Projekt wirklich bearbeiten? wird angezeigt.
    • Klickt man auf Ja, wird das Projektdatenblatt geöffnet und alle markierten Projekt und das Projekt, auf dem der Link betätigt wurde, werden angezeigt.
    • Klickt man auf Nein, wird das Projekt, auf dem der Link betätigt wurde, markiert.

Aufgabe 2

Ziele

  • Zusätzlich soll aus dem Modul Testmodul das Vorgangsdatenblatt geöffnet werden, in dem alle Meilensteine des Projekts, auf dem der Link betätigt wurde, angezeigt werden.
  • Dieses Modul soll hinter dem Projektdatenblatt geöffnet werden.

Hinweis

  • Diese Aufgabe baut auf Aufgabe 1 auf.

Schritt 1: Vorbereitung

Information

  • Für diese Aufgabe muss ein weiteres Modul gecustomized werden (Vorgehensweise wie im Modul-Workflow:Level 1 beschrieben):
    • Modultitel: Vorgangsdatenblatt
    • einen Datenbereich mit den folgenden Datenfeldern und Einstellungen wie im Modul-Workflow:Level 1 beschrieben anlegen und dem Modul zuordnen:
      • DDI: 001098 Vorgangs-ID
      • 001098 Vorgangs-ID und 000807 Vorgangsbezeichnung
      • Auf dem Datenfeld Vorgangs-ID in Filtern von @L11 hinterlegen.
    • ein Makro einfügen, das innerhalb der Python-Funktion on_initial_focus() filtert (siehe hier)

Schritt 2: Aufruf des Vorgangsdatenblatts

Hinterlegen des Vorgangsdatenblatts in den globalen Einstellungen

Vorgehensweise

  • Das Modul Globale Einstellungen aufrufen
    • Customizer → Stammdaten → Globale Einstellungen aufrufen oder im Panel Module den Reiter (das Untermodul) Globale Einstellungen aktivieren.
  • Für das Modul Vorgangsdatenblatt eine neue globale Einstellung anlegen und eine Python-ID hinterlegen:
    • Einfügen → Globale Einstellungen aus dem Kontextmenü auswählen.
    • In der Listbox Klasse die gewünschte Klasse auswählen, hier Modul-ID.
    • Im Feld Alpha (120) die Modul-ID des Vorgangsdatenblatts eintragen.
    • Im Feld Python-ID eine Python-ID, z. B. task_datasheet, definieren.
    • Speichern.

Anpassen des Makro-Moduls

Vorgehensweise

  • Das Makro des Makro-Moduls im Python-Editor öffnen und wie folgt anpassen.
    • Bitte beachten:
      • Der Eintrag Python_ID_Projektdatenblatt muss mit dem Wert aus dem Feld Python-ID der globalen Einstellung des Projektdatenblatts ersetzt werden.
      • Der Eintrag Python_ID_Dialogmeldung muss mit dem Wert aus dem Feld Python-ID der neu angelegten globalen Einstellung der Dialogmeldung ersetzt werden.
      • Der Eintrag Python_ID_Vorgangsdatenblatt muss mit dem Wert aus dem Feld Python-ID der globalen Einstellung des Vorgangsdatenblatts ersetzt werden.
PY
from ppms.global_setting import get_global_setting_value

mod_obj = ppms.get_target_module()

# Definition der Modul-IDs und der Dialogmeldungs-ID
target_mod_id = get_global_setting_value("Python_ID_Projektdatenblatt", 'alpha120')
dialog_id = get_global_setting_value("Python_ID_Dialogmeldung", 'alpha120')
target_task_mod_id = get_global_setting_value("Python_ID_Vorgangsdatenblatt", 'alpha120') 

marked_records = ppms.get_context_df().get_record().get_da().get_marked_records()

pr_id = ppms.get_context_df().get_record().pr_id.get_raw_value()

pr_list = [pr_id]

if len(marked_records) > 0:
    for record in marked_records:
        cur_pr_id = record.pr_id.get_raw_value()
        pr_list.append(cur_pr_id)

mod_obj.set_new_L_var(30, pr_list)

ppms.ui_message_id(dialog_id)

if ppms.msg_pop().get_reply() == 1:
    pr_mod_obj = mod_obj.open_module(target_mod_id, forced_status=1)
    # Oeffnen des Vorgangsdatenblattes
    task_mod_obj = pr_mod_obj.open_module(target_task_mod_id, forced_status=2, dock_to_module = pr_mod_obj.get_uid(), foreground=0, focus=0)
    # Ausfuehren der Methode "get_tasks" mit dem Uebergabeparameter "pr_id" 
    # Diese Methode wird im naechsten Modul im Vorgangsdatenblatt definiert.
    task_mod_obj.get_tasks(pr_id)
else:
    ppms.get_context_df().get_record().mark()

Makro im Vorgangsdatenblatt ändern

Ziel

  • Die Meilensteine des Projekts, das über den Link aufgerufen wird, sollen angezeigt werden.

Details

  • Hierfür wird eine Methode get_tasks definiert, die die Vorgänge des übergebenen Projekts mit Meilenstein = 2 in eine Liste (task_list) schreibt.
  • Diese Liste wird in die Listenvariable @L11 geschrieben.

Vorgehensweise

  • Im Modul SQL-Statements einen neuen Datensatz anlegen und das Statement benennen. Anschließend untergeordnet einen SQL-Prozedurcode mit dem folgenden SQL-Statement anlegen: Select DI001098 FROM DT463 WHERE DI001097='{0}' AND DI006786='{1}'
  • Das Makro im Vorgangsdatenblatt wie folgt ändern:
    • Bitte beachten: Der Eintrag SQL-Statement-ID muss mit dem Wert aus dem Feld Statement des neu angelegten Statements ersetzt werden.
PY
# Definition der Methode get_tasks
def get_tasks(pr_id):
    value=2
    sql_query=ppms.get_query("SQL-Statement-ID").format(pr_id,value)
    sql_query_result = ppms.db_select(sql_query)
    task_list=[]
    for record in sql_query_result:
        task_list.append(record[0])

    mod_obj.set_current_L_var(11, task_list)


mod_obj = ppms.get_target_module()

def on_load():
    # Stellt die Methode "get_tasks" dem Modulobjekt zur Verfuegung
    mod_obj.get_tasks = get_tasks

def on_initial_focus():
    mod_obj.menu(12)

def on_focus():
    pass

def on_reset():
    on_initial_focus()

def on_before_mv_switch(old_mv, new_mv):
    pass

def on_after_mv_switch(old_mv, new_mv):
    pass

Modul testen

Vorgehensweise

  • Das Modul Testmodul starten.
  • Mehrere Projekte markieren und auf die Projektbezeichnung eines Projekts klicken.
  • Die Dialogmeldung Wollen Sie dieses Projekt wirklich bearbeiten? wird angezeigt.
    • Klickt man auf Ja:
      • Das Projektdatenblatt wird geöffnet und alle markierten Projekte und das Projekt, auf dem der Link betätigt wurde, werden angezeigt.
      • Zusätzlich wird das Vorgangsdatenblatt hinter dem Projektdatenblatt angezeigt. In diesem Modul werden die Meilensteine des Projekts, auf dem der Link betätigt wurde, angezeigt.
    • Klickt man auf Nein wird das Projekt, auf dem der Link betätigt wurde, markiert.
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.