Übung – Anweisungen für die Datenmanipulation verwenden

Abgeschlossen

Sie sind Entwickler für CRONUS International Ltd. Sie haben gelernt, wie Anweisungen für die Datenmanipulation in AL verwendet werden, und möchten diese neue Fähigkeit nun in der Entwicklungsumgebung üben. Sie möchten Finanzbuchhaltungs-/Eintragsdatensätze in eine bestimmte Tabelle exportieren. Der Debitor muss diese Aufgabe und Quellcode durchführen, damit Sie einen Überblick über die Gesamtbeträge nach Debitor und Quellcode erhalten.

Aufgaben

  • Erstellen Sie eine neue AL-Erweiterung.

  • Erstellen Sie eine neue Tabelle.

  • Erstellen Sie eine Seite, die mit der Tabelle verknüpft ist.

  • Erstellen Sie eine Codeunit, um Daten aus verschiedenen Tabellen in die neu erstellte Tabelle zu kopieren.

Schritte

  1. Erstellen Sie in Visual Studio Code in dem Projekt, das Sie vorher in diesem Lernpfad erstellt haben, einen neuen Ordner mit dem Namen: CustomerOverview

  2. Erstellen Sie im Ordner CustomerOverview alle in den nächsten Schritten erwähnten neuen .al-Dateien.

  3. Wählen Sie Datei > Neue Datei aus, und speichern Sie diese Datei anschließend durch Auswahl von Datei > Speichern. Geben Sie der Datei den Namen CustomerOverview.Table.al.

  4. Erstellen Sie eine neue Tabelle in dieser Datei, indem Sie Codeausschnitte verwenden. Geben Sie ttable ein, und drücken Sie dann die TAB-Taste.

  5. Ändern Sie die ID in 50120 und name in Customer Overview.

  6. Legen Sie die Eigenschaft DataClassification auf CustomerContent und die Eigenschaft Caption auf Customer Overview fest.

  7. Entfernen Sie das Feld MyField.

  8. Erstellen Sie die folgenden Felder. Sie können den Ausschnitt tfield verwenden.

    Feldnr. Feldname Datentyp Länge
    1 Entry No. Integer
    2 Customer No. Code 20
    3 Customer Name Text 100
    4 Source Code Code 20
    5 Amount Decimal
    6 LastRunDate DateTime
  9. Legen Sie die Eigenschaft DataClassification für jedes Feld in der Tabelle auf CustomerContent fest.

  10. Legen Sie die Eigenschaft Caption für jedes Feld in der Tabelle fest.

  11. Legen Sie den Primärschlüssel auf Lfd. Nr. fest.

  12. Entfernen Sie den Abschnitt Globale Variablen.

  13. Entfernen Sie die Tabellentrigger.

  14. Ihre Datei ähnelt jetzt diesem Codeblock:

    table 50120 "Customer Overview"
    {
        DataClassification = CustomerContent;
        Caption = 'Customer Overview';
    
        fields
        {
            field(1; "Entry No."; Integer)
            {
                DataClassification = CustomerContent;
                Caption = 'Entry No.';
            }
            field(2; "Customer No."; code[20])
            {
                DataClassification = CustomerContent;
                Caption = 'Customer No.';
            }
            field(3; "Customer Name"; Text[100])
            {
                DataClassification = CustomerContent;
                Caption = 'Customer Name';
            }
            field(4; "Source Code"; Code[20])
            {
                DataClassification = CustomerContent;
                Caption = 'Source Code';
            }
            field(5; "Amount"; Decimal)
            {
                DataClassification = CustomerContent;
                Caption = 'Amount';
            }
            field(6; "LastRunDate"; DateTime)
            {
                DataClassification = CustomerContent;
                Caption = 'LastRunDate';
            }
        }
    
        keys
        {
            key(Pk; "Entry No.")
            {
                Clustered = true;
            }
        }
    }
    
  15. Erstellen Sie eine neue Datei mit dem Namen: CustomerOverviewList.Page.al.

  16. Erstellen Sie in dieser Datei eine neue Seite, indem Sie Codeausschnitte verwenden. Geben Sie tpage ein, und drücken Sie dann die TAB-Taste.

  17. Ändern Sie die ID in 50120 und name in Customer Overview List.

  18. Legen Sie die Eigenschaft SourceTable auf Customer Overview und die Eigenschaft Caption auf Customer Overview List fest.

  19. Legen Sie die Eigenschaft PageType auf List und die Eigenschaft UsageCategory auf Lists fest. Überprüfen Sie, ob die Eigenschaft ApplicationArea auf All gesetzt ist.

  20. Legen Sie die Eigenschaft Editable auf false fest.

  21. Stellen Sie sicher, dass im Layoutabschnitt ein Bereich content erstellt wurde. Falls nicht, erstellen Sie einen Bereich mit dem Namen content.

  22. Ändern Sie den Namen des Repeaters in General.

  23. Fügen Sie alle Felder der zuvor erstellten Tabelle Customer Overview im Repeater hinzu.

  24. Stellen Sie sicher, dass die Eigenschaft ApplicationArea für alle Felder auf der Seite auf All gesetzt ist.

  25. Fügen Sie auf der Seite allen Feldern aussagekräftige QuickInfos hinzu.

  26. Entfernen Sie den Bereich factboxes.

  27. Entfernen Sie den Aktionsbereich.

  28. Ihre Datei ähnelt jetzt diesem Codeblock:

    page 50120 "Customer Overview List"
    {
        PageType = List;
        ApplicationArea = All;
        UsageCategory = Lists;
        SourceTable = "Customer Overview";
        Caption = 'Customer Overview List';
        Editable = false;
    
        layout
        {
            area(Content)
            {
                repeater(General)
                {
    
                    field("Entry No."; Rec."Entry No.")
                    {
                        ToolTip = 'Specifies the value of the Entry No. field.';
                        ApplicationArea = All;
                    }
                    field("Customer No."; Rec."Customer No.")
                    {
                        ToolTip = 'Specifies the value of the Customer No. field.';
                        ApplicationArea = All;
                    }
                    field("Customer Name"; Rec."Customer Name")
                    {
                        ToolTip = 'Specifies the value of the Customer Name field.';
                        ApplicationArea = All;
                    }
                    field("Source Code"; Rec."Source Code")
                    {
                        ToolTip = 'Specifies the value of the Source Code field.';
                        ApplicationArea = All;
                    }
                    field(Amount; Rec.Amount)
                    {
                        ToolTip = 'Specifies the value of the Amount field.';
                        ApplicationArea = All;
                    }
                    field(LastRunDate; Rec.LastRunDate)
                    {
                        ToolTip = 'Specifies the value of the LastRunDate field.';
                        ApplicationArea = All;
                    }
                }
            }
        }
    }
    
  29. Erstellen Sie eine neue Datei mit dem Namen: CustomerOverviewMgmt.CodeUnit.al.

  30. Erstellen Sie eine neue Codeunit in dieser Datei, indem Sie Codeausschnitte verwenden. Geben Sie tcodeunit ein, und drücken Sie dann die TAB-Taste.

  31. Ändern Sie die ID in 50120 und name in Customer Overview Mgmt.

  32. Fügen Sie die folgenden globalen Variablen hinzu.

    Name Datentyp Untertyp
    CustomerOverview Datensatz Debitorenübersicht
    Debitor Datensatz Debitor
    SourceCode Datensatz Quellcode
    GLEntry Datensatz Sachposten
    NextEntryNo Integer
  33. Fügen Sie im OnRun-Trigger den folgenden Code hinzu.

    Clear(SourceCode);
    Clear(CustomerOverview);
    Clear(GLEntry);
    
    if CustomerOverview.FindLast() then
        NextEntryNo := CustomerOverview."Entry No." + 1
    else
        NextEntryNo := 1;
    
    if SourceCode.FindSet() then
        repeat
            if Customer.FindSet() then
                repeat
                    GLEntry.SetRange("Source Type", GLEntry."Source Type"::Customer);
                    GLEntry.SetRange("Source Code", SourceCode.Code);
                    GLEntry.SetRange("Source No.", Customer."No.");
                    if GLEntry.FindSet() then begin
                        GLEntry.CalcSums(GLEntry.Amount);
                        CustomerOverview."Entry No." := NextEntryNo;
                        CustomerOverview."Customer No." := Customer."No.";
                        CustomerOverview."Customer Name" := Customer.Name;
                        CustomerOverview."Source Code" := SourceCode.Code;
                        CustomerOverview.Amount := GLEntry.Amount;
                        CustomerOverview.LastRunDate := CurrentDateTime();
                        CustomerOverview.Insert();
                        NextEntryNo += 1;
                    end;
                until Customer.Next() = 0;
        until SourceCode.Next() = 0
    
  34. Öffnen Sie die Datei CustomerOverviewList.Page.al.

  35. Fügen Sie der Seite einen Bereich actions hinzu.

  36. Fügen im Bereich actions einen Abschnitt Processing hinzu.

  37. Fügen im Abschnitt Processing eine Aktion hinzu.

  38. Ändern Sie den Namen der Aktivität in Import Records, und legen Sie dann die folgenden Eigenschaften für die Aktivität fest:

    • Caption: Import Records

    • Image: Import

    • ApplicationArea: All

  39. Erstellen Sie im Trigger OnAction eine lokale Variable.

    Name Datentyp Untertyp
    UpdateCustomerOverview Codeunit Customer Overview Mgmt
  40. Rufen Sie die Codeunit RunTrigger aus dem OnAction-Trigger auf.

  41. Ihre Datei ähnelt jetzt diesem Codeblock:

    page 50120 "Customer Overview List"
    {
        PageType = List;
        ApplicationArea = All;
        UsageCategory = Lists;
        SourceTable = "Customer Overview";
        Caption = 'Customer Overview List';
        Editable = false;
    
        layout
        {
            area(Content)
            {
                repeater(General)
                {
    
                    field("Entry No."; Rec."Entry No.")
                    {
                        ToolTip = 'Specifies the value of the Entry No. field.';
                        ApplicationArea = All;
                    }
                    field("Customer No."; Rec."Customer No.")
                    {
                        ToolTip = 'Specifies the value of the Customer No. field.';
                        ApplicationArea = All;
                    }
                    field("Customer Name"; Rec."Customer Name")
                    {
                        ToolTip = 'Specifies the value of the Customer Name field.';
                        ApplicationArea = All;
                    }
                    field("Source Code"; Rec."Source Code")
                    {
                        ToolTip = 'Specifies the value of the Source Code field.';
                        ApplicationArea = All;
                    }
                    field(Amount; Rec.Amount)
                    {
                        ToolTip = 'Specifies the value of the Amount field.';
                        ApplicationArea = All;
                    }
                    field(LastRunDate; Rec.LastRunDate)
                    {
                        ToolTip = 'Specifies the value of the LastRunDate field.';
                        ApplicationArea = All;
                    }
                }
            }
        }
        actions
        {
            area(Processing)
            {
                action("Import Records ")
                {
                    Caption = 'Import Records';
                    ToolTip = 'Import Records';
                    ApplicationArea = All;
                    Image = Import;
    
                    trigger OnAction()
                    var
                        CustomerOverviewMgmt: Codeunit "Customer Overview Mgmt";
                    begin
                        CustomerOverviewMgmt.Run();
                    end;
                }
            }
        }
    }
    
  42. Öffnen Sie die Datei launch.json im Ordner .vscode. Legen Sie die Einstellung startupObjectId auf 50120 und startupObjectType auf Page fest.

  43. Veröffentlichen Sie Ihre Erweiterung in der Sandbox. Wählen Sie Anzeigen > Befehlspalette... (STRG+UMSCHALT+P) aus.

  44. Geben Sie AL: Publish in das Suchfeld ein (oder drücken Sie die F5-Taste), und wählen Sie dann den Befehl aus der Liste aus.

  45. Überprüfen Sie, ob die Microsoft Dynamics 365 Business Central-Anwendung gestartet und die Seite Customer Overview List angezeigt wird.

  46. Testen Sie Ihre Erweiterung, indem Sie die Aktivität Import Records auswählen.