Fehlermeldungen in AX aussagekräftiger gestalten

Info, warning und error sind das täglich Brot des AX-Entwicklers. Schließlich kann er über diese Befehle dem Benutzer mitteilen, was er getan hat, zu tun hat oder nicht hätte tun sollen. Und dies erfolgt in der Regel mit einer mehr oder weniger aussagekräftigen Fehlermeldung. Unterstützen kann man diese auf einfache Art und Weise mit dem zusätzlichen Parameter sysInfoAction. Anbei einige Beispiele, wie man diesen einsetzen kann:

static void InfoWarningErrorExamples(Args _args)
{
    query query;
    CustTable CustTable;
    sysInfoAction_MenuFunction sysInfoAction_MenuFunction;
    ;

    // Öffnet ein Formular mit einer Auswahl an Datensätzen (über eine Query)
    // Zusätzlich kann man hier ein FormControl angeben, welches nach dem öffnen den Fokus erhält
    query = new query();
    query.addDataSource(tableNum(CustTable)).addRange(fieldNum(CustTable, AccountNum)).value('401*');
    info(   'Bitte überprüfen Sie, ob bei allen betroffenen Debitoren die selbe Debitorengruppe eingetragen ist',
             'APPLDOC://Tables/CustTable/CustGroup',
             sysInfoAction_FormRunQuery::newFormnameControlnameQuery(formStr(CustTable),'Posting_CustGroup', query));

    // Öffnet nur das Formular ohne einen bestimmten Datensatz auszuwählen, man kann aber den Names
    // eines FormControl angeben, welches den Fokus zu öffnenden Formular erhalten soll
    warning(   'Bitte überprüfen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe',
                'APPLDOC://Tables/CustTable/CustGroup',
                sysInfoAction_FormRun::newFormnameControlnameDesc(  formStr(CustTable),
                                                                    'Posting_CustGroup'
                                                                    'Debitorengruppe anzeigen'));

    // Öffnet das Formular mit einem bestimmten Datensatz und setzt den Fokus auf ein bestimmtes Feld
    CustTable = CustTable::find('4011');
    error(  'Bitte überprüfen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe',
            'APPLDOC://Tables/CustTable/CustGroup',
            sysInfoAction_TableField::newBufferField(CustTable, fieldNum(CustTable, custGroup)));


    // Öffnet ein Formular über die Angabe des entsprechenden MenuItems
    // Dabei kann ein Datensatz ausgewählt werden, welcher angezeigt werden soll
    // ACHTUNG: Funktioniert nicht bei allen Formularen (Tabellenrelationen werden benötigt)
    sysInfoAction_MenuFunction = new sysInfoAction_MenuFunction();
    sysInfoAction_MenuFunction.parmDataAreaId(curext());
    sysInfoAction_MenuFunction.parmMenuItemType(MenuItemType::Display);
    sysInfoAction_MenuFunction.parmMenuItemName(identifierStr(CustTable));
    sysInfoAction_MenuFunction.parmCallerBuffer(CustTable::find('4011'));

    info('Bitte überprüfen Sie die Stammdaten des Debitoren', '', sysInfoAction_MenuFunction);
}

Nachstehend die äquivalenten Befehle in AX 3.0.

static void InfoWarningErrorExamples(Args _args)
{
    query query;
    CustTable CustTable;

    sysInfoAction_FormRunQuery sysInfoAction_FormRunQuery;
    sysInfoAction_FormRun sysInfoAction_FormRun;
    sysInfoAction_TableField sysInfoAction_TableField;
    ;

    // Öffnet ein Formular mit einer Auswahl an Datensätzen (über eine Query)
    // Zusätzlich kann man hier ein FormControl angeben, welches nach dem öffnen den Fokus erhält
    query = new query();
    query.addDataSource(tableNum(CustTable)).addRange(fieldNum(CustTable, AccountNum)).value('401*');
    sysInfoAction_FormRunQuery = new sysInfoAction_FormRunQuery(formStr(CustTable),'Posting_CustGroup', query);
    info(   'Bitte überprüfen Sie, ob bei allen betroffenen Debitoren die selbe Debitorengruppe eingetragen ist',
             'APPLDOC://Tables/CustTable/CustGroup',
             sysInfoAction_FormRunQuery);

    // Öffnet nur das Formular ohne einen bestimmten Datensatz auszuwählen, man kann aber den Names
    // eines FormControl angeben, welches den Fokus zu öffnenden Formular erhalten soll
    sysInfoAction_FormRun = new sysInfoAction_FormRun(formStr(CustTable),
                                                      'Posting_CustGroup',
                                                      'Debitorengruppe anzeigen');
    warning(   'Bitte überprüfen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe',
                'APPLDOC://Tables/CustTable/CustGroup',
                sysInfoAction_FormRun);

    // Öffnet das Formular mit einem bestimmten Datensatz und setzt den Fokus auf ein bestimmtes Feld
    CustTable = CustTable::find('4011');
    sysInfoAction_TableField = new sysInfoAction_TableField(CustTable, fieldNum(CustTable, custGroup));
    error(  'Bitte überprüfen Sie die Einstellungen der am Debitoren hinterlegten Debitorengruppe',
            'APPLDOC://Tables/CustTable/CustGroup',
            sysInfoAction_TableField);
}

Aussehen tun solche Fehlermeldungen dann zum Beispiel wie folgt

Dieser Beitrag bezieht sich auf die Versionen:
Axapta 3.0, Dynamics AX 4.0, Dynamics AX 2009, Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu