| Docs Hilfe
  AppSource  
Docs  /  NVXGRL General Report Library  /  Bibliotheken

General Report Library [GRLGeneralReportLibraryNVX]


2023/10/09 • 13 Min. Lesedauer
Die Codeunit enthält allgemein verwendbare Funktionen

Allgemeine Funktionen

ProzedurnameBeschreibung
GetCompanyName(var CompanyInformation: Record "Company Information"): Text Kettet die Firmeninfos mit fixem Beistrich zusammen.
GetUserInfo(var SystemCreatedByGuid: Guid; var UserName: Text; var UserTelephone: Text; var UserEmail: Text) Die Funktion verwendet das Standard SystemCreatedBy Feld um die Benutzerinformationen zu liefern. Vollständiger Name -> kommt aus User Tabelle Telefonnummer und Emailadresse -> kommen aus User Setup Tabelle.
SetTotalLabels(var TotalInclVATText: Text; var TotalExclVATText: Text; CurrencyCode: Code[10]) Gibt die vordefinierten MwSt. Überschriften zurück. Incl VAT Label 'Total %1 gross', 'Gesamtbetrag %1 netto' Excl VAT Label 'Total %1 net' , 'Gesamtbetrag %1 brutto' Als Basis wurde die Funktion SetTotalLabels() in der Standard "Format Document" Codeunit verwendet.
GetTotalInclVATLabelsWithCurrencyCode(TotalInclVATText: Text; CurrencyCode: Code[10]): Text Vervollständigt und gibt ein freidefiniertes Betragslabel mit dem Währungscode zurück. Beim leeren Währungscode wird der Mandantenwährungscode der Fibu Einrichtung verwendet. Das Label soll den "... %1" Prozentwert enthalten. z.B.: TotalInclVATText -> "Gesamtbetrag %1" oder "Gesamtsumme %1" etc.
GetTotalExclVATLabelsWithCurrencyCode(TotalExclVATText: Text; CurrencyCode: Code[10]): Text Vervollständigt und gibt ein freidefiniertes Nettobetragslabel mit dem Währungscode zurück. Beim leeren Währungscode wird der Mandantenwährungscode der Fibu Einrichtung verwendet. Das Label soll den "... %1" Prozentwert enthalten. z.B.: TotalExclVATText -> "Nettobetrag %1" oder "Summe %1" etc.
SetSalesPersonPurchaser(var SalespersonPurchaser: Record "Salesperson/Purchaser"; SalesPersonPurchaseCode: Code[20]) Gibt den Datensatz „Verkäufer/Einkäufer“ zurück.
SetPaymentTerms(var PaymentTerms: Record "Payment Terms"; PaymentTermsCode: Code[10]; LanguageCode: Code[10]) Gibt den Datensatz „Zahlungsbedingungen“ zurück.
SetPaymentMethod(var PaymentMethod: Record "Payment Method"; PaymentMethodCode: Code[10]; LanguageCode: Code[10]) Gibt den Datensatz „Zahlungsform“ zurück.
SetShipmentMethod(var ShipmentMethod: Record "Shipment Method"; ShipmentMethodCode: Code[10]; LanguageCode: Code[10]) Gibt den Datensatz „Lieferbedingung“ zurück.
SetShippingAgentAndService( var ShippingAgent: Record "Shipping Agent"; ShippingAgentCode: Code[10]; var ShippingAgentService: Record "Shipping Agent Services"; ShippingAgentServiceCode: Code[10]) Gibt die folgenden Datensätze in einem Befehl zurück: Zusteller, Zusteller Transportart Shipping Agent, Shipping Agent Services
SetPaymentShipmentSalesPersonDocumentDetails( var PaymentTerms: Record "Payment Terms"; PaymentTermsCode: Code[10]; var PaymentMethod: Record "Payment Method"; PaymentMethodCode: Code[10]; var ShipmentMethod: Record "Shipment Method"; ShipmentMethodCode: Code[10]; var SalespersonPurchaser: Record "Salesperson/Purchaser"; SalesPersonPurchaseCode: Code[20]; LanguageCode: Code[10]) Gibt die folgenden Datensätze in einem Funktionsaufruf zurück: Zahlungsbedingungen, Zahlungsform, Lieferbedingung, Verkäufer/Einkäufer Payment Terms , Payment Method, Shipment Method, Salesperson/Purchaser
GetContactEmailPhone(ContactNo: Code[20]) Result: Text Gibt die Emailadresse und die Telefonnummer des Kontaktes zurück. Der Separator ist ein Schrägstrich.
GetContactEmail(ContactNo: Code[20]) Result: Text Gibt die Emailadresse des Kontaktes zurück.
GetContactPhoneContact(ContactNo: Code[20]) Result: Text Die Funktion gibt die Telefonnummer des Kontaktes zurück.
GetFullCompanyName: Text Die Funktion gibt den Name1 + Name2 der CompanyInformation Tabelle zurück.
GetCompanyTelephone: Text Die Funktion gibt die Telefonnummer der CompanyInformation Tabelle zurück. Format = Telefon Caption mit Doppelpunkt + Telefonnummer
GetCompanyFax: Text Die Funktion gibt die Faxnummer der CompanyInformation Tabelle zurück. Format = Fax Caption mit Doppelpunkt + Faxnummer
GetCompanyEmail: Text Die Funktion gibt die Emailadresse der CompanyInformation Tabelle zurück. Format = E-Mail Caption mit Doppelpunkt + E-Mailadresse
GetShortcutDimension1to8ValueName(ShortcutDimensionNo:Integer; DimSetID: Integer): Text Die Funktion gibt den ausgewählten Dimensionswert des Dimensionsposten zurück. ShortcutDimensionNo = "Shortcut Dimension 1 Code".."Shortcut Dimension 8 Code" aus GeneralLedgerSetup
GetNextPositionNumber(LineType: Integer; LineTypeNo: Code[20]; var PosNo: Integer; var IsHidePosNo: Boolean) Die Funktion gibt die nächste Positionsnummer der Belegzeile zurück. Mit der IsHidePosNo Variable kann man den Positionswert im Layout steuern (ein- bzw. ausblenden).
GetCompanyPostCodeCityCountryName(): Text Die Funktion gibt die Postleitzahl die Stadt und den Landnamen aus den Firmendaten zurück. Format = "PostCode City / CountryName"
GetCompanyNameAddressPostCodeCity(): Text Die Funktion gibt den kompletten Firmennamen - mit Schrägstrich - aus den Firmendaten zurück. Format = "Name / Address / PostCode City / CountryName"
GetCompanyPostCodeCity(): Text Die Funktion gibt die Postleitzahl und die Stadt aus den Firmendaten zurück. Format = "PostCode City"
GetFullCompanyAddressWithPipeSeparator(): Text Die Funktion gibt die Firmenadresse aus den Firmendaten zurück. Format = "Address | PostCode City | CountryName"
SetCurrencyCode(var CurrencyCode: Code[10]; DefaultCurrencyCode: Code[10]) Gibt den Währungscode als var Parameter zurück. DefaultCurrencyCode kann auch leer sein oder kann aus dem Report Header (mit dem "Currency Code") befüllt sein.
    
    add("Purchase Header")
    {
        column(CurrencyCode; CurrencyCode) { }
    }
    modify("Purchase Header")
    {
        trigger OnAfterAfterGetRecord()
        begin
            GeneralReportLibrary.SetCurrencyCode(CurrencyCode, "Purchase Header"."Currency Code");
        end;
    }
    
GetTrackingSpecification(RecordVariant: Variant; var TempTrackingSpecBuffer: Record "Tracking Specification" temporary; var TrackingSpecCount: Integer) Die Funktion sammelt und gibt die Artikelverfolgungsdaten in der TempTrackingSpecBuffer Variable zurück. RecordVariant erkennt aktuell die folgenden Objekte: "Sales Header", "Return Shipment Header", "Purchase Header", "Sales Invoice Header", "Sales Cr.Memo Header", "Sales Shipment Header" Für "Return Shipment Header": die RetrieveTrackingReturnShipment() Funktion muss in einem EventHook eingebaut und ausgeführt werden. Initialisierung:
    
    modify(Header)
    {
        trigger OnAfterAfterGetRecord()
        begin
            GeneralReportLibrary.GetTrackingSpecification(Header, TempTrackingSpecBuffer, TrackingSpecCount1);
        end;
    }

    
Auswertung bzw. Vorbereitung fürs RDLC Layout:
    
    addbefore(AssemblyLine)
    {
        dataitem(HBRItemTrackingLine; "Integer")
        {
            DataItemTableView = SORTING(Number);

            column(TrackingSpecBufferLotNo; TempTrackingSpecBuffer."Lot No.") { }
            column(TrackingSpecBufferSerNo; TempTrackingSpecBuffer."Serial No.") { }
            column(TrackingSpecBufferQty; TempTrackingSpecBuffer."Quantity (Base)") { }
            column(TrackingSpecBufferUnitOfMeasure; TempTrackingSpecBuffer."Qty. per Unit of Measure") { }

            trigger OnPreDataItem()
            begin
                if TrackingSpecCount1 = 0 then
                    CurrReport.Break();

                TempTrackingSpecBuffer.SetCurrentKey("Source ID", "Source Type", "Source Subtype", "Source Batch Name", "Source Prod. Order Line", "Source Ref. No.");

                TempTrackingSpecBuffer.SetRange("Source Ref. No.", Line."Line No.");
                SetRange(Number, 1, TempTrackingSpecBuffer.Count());
            end;

            trigger OnAfterGetRecord()
            begin
                if Number = 1 then
                    TempTrackingSpecBuffer.FindSet()
                else
                    TempTrackingSpecBuffer.Next();
            end;
        }
    }
    
RetrieveTrackingReturnShipment(var TempTrackingSpecBuffer: Record "Tracking Specification" temporary; SourceID: Code[20]; var Found: Boolean) Die Prozedur erweitert die "Item Tracking Doc. Management" Codeunit und hilft beim Sammeln der Artikelverfolgungszeilen. Wenn diese Funktion im Hook ausgeführt wurde, findet die GetTrackingSpecification() Funktion die zugehörigen "Return Shipment Header" Artikelverfolgungsdaten.
    
    codeunit 50000 "AppEventHooksNVX"
    {
        var
            GeneralReportLibrary: Codeunit GRLGeneralReportLibraryNVX;

        [EventSubscriber(ObjectType::Codeunit, Codeunit::"Item Tracking Doc. Management", 'OnRetrieveDocumentItemTracking', '', true, true)]
        local procedure "ItemTrackingDocManagement_OnRetrieveDocumentItemTracking"
        (
            var TempTrackingSpecBuffer: Record "Tracking Specification";
            SourceID: Code[20];
            var Found: Boolean;
            SourceType: Integer;
            SourceSubType: Option;
            RetrieveAsmItemTracking: Boolean
        )
        begin
            case SourceType of
                Database::"Return Shipment Header":
                    GeneralReportLibrary.RetrieveTrackingReturnShipment(TempTrackingSpecBuffer, SourceID, Found);
            end;
        end;
    }
    
IsArrayDifferentCompareArray1: array[8] of Text[100]; CompareArray2: array[8] of Text[100]) Result: Boolean Die Funktion vergleicht zwei Array Variablen.
GetSalesPerson(var SalesPerson: Record "Salesperson/Purchaser"; SalespersonCode: Code[20]) Gibt den Datensatz der Tabelle „Verkäufer/Einkäufer“ zurück.
PrintReportToLocalOrNetworkPrinterWithCommit(ReportId: Integer; RecIdToPrint: RecordId) In BC ist es nicht möglich (in einer Webclient Session) Reports an einen eingerichteten Lokalen oder Netzwerk Drucker zu drucken. Über die Job Queue ist das schon möglich. Die Funktion macht nichts anderes, als dass sie den Report am in der Druckerauswahl eingerichteten Drucker ausdruckt.
    
    report 50000 "WarehouseRegisterNVX"
    {
        Caption = 'Warehouse Register', comment = 'DEU="Lagerplatzjournal"';
        DefaultLayout = RDLC;
        RDLCLayout = './src/layout/WarehouseRegisterNVX.rdlc';
        UsageCategory = Documents;

        dataset
        {
            dataitem(Header; "Warehouse Register")
            {
                DataItemTableView = sorting("No.");
                RequestFilterFields = "No.";
            ...

            }
        ...

        }

        trigger OnPostReport()
        var
            GeneralReportLibrary: Codeunit GRLGeneralReportLibraryNVX;
        begin
            if not CurrReport.Preview then
                GeneralReportLibrary.PrintReportToLocalOrNetworkPrinterWithCommit(Report::WarehouseRegisterNVX, Header.RecordId);
        end;
    }
    
ResetTotalValues(var TotalSubTotal: Decimal; var TotalInvDiscAmount: Decimal; var TotalAmount: Decimal; var TotalAmountVAT: Decimal; var TotalAmountInclVAT: Decimal) Setzt die Summenblockwerte des gebuchten Rechnungslayouts zurück. Indiv. Gesammtsumme Funktionalität für die Rechnung. Die Prozedur hängt mit der CalculateTotalValues() Funktion zusammen.
ResetTotalValues(var TotalWeight: Decimal; var TotalAmount: Decimal; var TotalAmountVAT: Decimal; var TotalAmountInclVAT: Decimal) Setzt die Summenblockwerte der Proforma Rechnung zurück. Indiv. Gesammtsumme Funktionalität für die Proforma Rechnung. Die Prozedur hängt mit der CalculateTotalValuesSalesProFormaInvoice() Funktion zusammen.
CalculateTotalValues(var SalesInvoiceLine: Record "Sales Invoice Line"; var TotalSubTotal: Decimal; var TotalInvDiscAmount: Decimal; var TotalAmount: Decimal; var TotalAmountVAT: Decimal; var TotalAmountInclVAT: Decimal) Addiert die Summenblockwerte des gebuchten Rechnungslayouts zusammen. Indiv. Gesammtsumme Funktionalität für die Rechnung. Die Prozedur hängt mit der ResetTotalValues() Funktion zusammen.
CalculateTotalValuesSalesProFormaInvoice(var SalesLine: Record "Sales Line"; var TotalWeight: Decimal; var TotalAmount: Decimal; var TotalAmountVAT: Decimal; var TotalAmountInclVAT: Decimal) Addiert die Summenblockwerte der Proforma Rechnung zusammen. Indiv. Gesammtsumme Funktionalität für die Proforma Rechnung. Die Prozedur hängt mit der zugehörigen ResetTotalValues() Funktion zusammen.
GetItemLederEntryNoFilter(DocumentNo: Code[20]; DocumentType: Enum "Item Ledger Document Type"; DocumentLineNo: Integer) Result: Text Die Funktion gibt einen Filterstring der Tabelle ItemLedgerEntry."Entry No." zurück. Beispiel Rückgabewert = "1|25|302|..."
GetCommaSeparatedAddressArray(AddressArray: array[8] of Text[100]; Number: Code[20]): Text Listet die Address Array Werte nacheinander - mit Beistrich Separator - auf. Format = "Array[1], Array[2], Array[3], Array[4], etc." Wenn der Paramter "Number" befüllt ist, ändert sich die Formatierung und die Adressinformationen werden in Klammern aufgelistet. Format = "Number (Array[1], Array[2], Array[3], Array[4], etc.)"
    
        add(Header)
        {
            column(CommaSeparatedSellToAddress; GeneralReportLibrary.GetCommaSeparatedAddressArray(AddressArray, Header."Sell-to Customer No.")) { }
        }

        var
            GeneralReportLibrary: Codeunit GRLGeneralReportLibraryNVX;
    
GetCountryRegionDescription(CountryRegionCode: Code[10]): Text Die Funktion gibt den vollständigen Namen des Landes zurück. Beim Holen wird die Mandantensprache [Language.GetUserLanguageCode()] berücksichtigt.

Formatierungsfunktionen - Umwandlung auf Text

ProzedurnameBeschreibung
FormatDateToTextDay2Month2Year4(InputDate: Date): Text Die Funktion wandelt das Inputdatum auf das DD.MM.YYYY Format um.
        
        reportextension 50000 "StandardSalesInvoiceExtNVX" extends "Standard Sales - Invoice"
        {
            RDLCLayout = './src/layout/StandardSalesInvoiceNVX.rdlc';
            dataset
            {
                add(Line)
                {
                    column(ShipmentDateCptn; GeneralReportLibrary.GetCaption(Enum::SFBCaptionLibraryNVX::ShipmentDate_Copy1)) { }
                    column(ShipmentDate; GeneralReportLibrary.FormatDateToTextDay2Month2Year4("Shipment Date")) { }
                }
            }

            var
                GeneralReportLibrary: Codeunit GRLGeneralReportLibraryNVX;
        }
        
        
FormatDateToTextDay2Month2Year2(InputDate: Date): Text Die Funktion wandelt das Inputdatum auf das DD.MM.YY Format um.
FormatDateToDayMonthTextYear4(InputDate: Date): Text Die Funktion wandelt das Inputdatum auf das DD.MonthText YYYY Format um.
FormatDateToXMLFormat(InputDate: Date): Text Die Funktion wandelt das Inputdatum auf das YYYY-MM-DD Format um.
FormatDecimalToAmountFormat(DecimalValue: Decimal; AutoFormatExpr: Text[80]) Result: Text Die Funktion wandelt den Dezimalwert auf das Standard AmountFormat um.
    
    report 321 "Vendor - Balance to Date"
    {
        DefaultLayout = RDLC;
        ...

        column(Amt; Format(Amt, 0, AutoFormat.ResolveAutoFormat("Auto Format"::AmountFormat, CurrencyCode))) { }
        column(CurrencyCode1; CurrencyCode) { }
        ...

        trigger OnAfterGetRecord()
        begin
            ...
            if PrintAmountInLCY then begin
                Amt := "Amount (LCY)";
                CurrencyCode := '';
            end else begin
                Amt := Amount;
                CurrencyCode := "Currency Code";
            end;
            if Amt = 0 then
                CurrReport.Skip();
        end;
        ...
    }
    
FormatLineDiscountStdandardFormatWithPercent(LineDiscountPercent: Decimal; IsShowMinus: Boolean): Text Die Funktion wandelt den Dezimalwert auf Textformat - mit einem Prozentzeichen am Ende - um. Wenn der "IsShowMinus" Parameter true ist, wird das Minuszeichen zu dem Rückgabewert hinzugefügt.
BeispielErgebnis
FormatLineDiscountStdandardFormatWithPercent(85,false)85 %
FormatLineDiscountStdandardFormatWithPercent(76.4,false)76,4 %
FormatLineDiscountStdandardFormatWithPercent(32.456,false)32,46 %
FormatLineDiscountStdandardFormatWithPercent(45.32,true)- 45,32 %

General Caption Library

Die General Caption Library besteht aus verschiedenen Enumwerten die für Reports Captions zurückliefern.

ProzedurnameBeschreibung
GetCaption(Caption: Enum GRLGeneralCaptionLibraryNVX): Text[250] Die Funktion liefert zu dem Enum das als Parameter mitgegeben wird, die Caption als Text.
GetCaption(Caption: Enum GRLGeneralCaptionLibraryNVX; isGetCaptionWithColon: Boolean): Text[250] Die Funktion liefert zu dem Enum das als Parameter mitgegeben wird, die Caption als Text. Wenn der Parameter "isGetCaptionWithColon" true ist, wird der Rückgabewert mit Doppelpunkt zurückgegeben.

Aktualisierte und erweiterte DSS Funktionalität

CrLf(): Text[10] Gibt die CR und LC Charaktere zurück.
Chr(Character: Char): Text Gibt einen Charakter im Text Format zurück.
AddValueToArray(var HeaderInfoArrCaption: array[12] of Text[250]; var HeaderInfoArrValue: array[12] of Text[250]; var i: Integer; Delimiter: Integer; Caption: Text; TextValue: Text) AddValueToArray() Funktion aus den DSS Belegen.
GetDocumentFooter(var CompanyInfoArr1: array[8] of Text[250]; var CompanyInfoArr2: array[8] of Text[250]; var CompanyInfoArr3: array[8] of Text[250]; CompanyAddress: array[8] of Text[250]; CompanyInformation: Record "Company Information"; IsFooterPictureHasValue: Boolean) Befüllt und gibt die "CompanyInfoArray1", "CompanyInfoArray2" und "CompanyInfoArray3" Arrays zurück.
CollectDataFooter(var DataFooter: Text; CompanyInfoArr1: array[8] of Text[250]; CompanyInfoArr2: array[8] of Text[250]; CompanyInfoArr3: array[8] of Text[250]) Befüllt und gibt das "DataFooter" Array zurück.
AppendDataValueText(var DataValueText: Text; NextValue: Text) Fügt einen neuen Wert (als nächste Zeile) zu "DataValueText" hinzu.
GetCompanyAddress(RespCenterCode: Code[10]; var ResponsibilityCenter: Record "Responsibility Center"; var CompanyInformation: Record "Company Information"; var CompanyAddress: array[8] of Text[100]) Gibt den Zuständigkeitseinheitencode und das "CompanyAddress" Array zurück.
GetDataFooter(var DataFooter: Text; var CompanyInformation: Record "Company Information"; RespCenterCode: Code[10]; IsFooterPictureHasValue: Boolean) Befüllt und gibt den DataFooter Text im RDLC Layout Format zurück. Auf der RDLC Seite: Code.GLRSetDataFooter(Fields!DataFooter.Value, 1) Code.GLRGetDataFooter(1,1), Code.GLRGetDataFooter(2,1) ect.

Verwendung der "Name/Value Buffer" Lösung

Diese Funktionalität bietet eine dynamische Lösung um die Header Daten zu befüllen. Hier gibt es die Möglichkeit mehrere Infoblöcke zu definieren und zu befüllen. Die Darstellung der befüllten Werte auf der RDLC Seite ist mit Tablix Objekt möglich.

ProzedurnameBeschreibung
PrepareNameValueBuffer(var NameValueBuffer: Record "Name/Value Buffer" temporary) Löscht bzw. initialisiert die temporäre Buffertabelle.
AppendNameValueBuffer(var NameValueBuffer: Record "Name/Value Buffer" temporary; Name: Text; Value: Text; NameFontWeight: Enum GRLFontWeightNVX; ValueFontWeight: Enum GRLFontWeightNVX) Fügt einen neuen Datensatz zum "NameValueBuffer" Record hinzu.
GetDefaultFontWeight() FontWeight: Enum GRLFontWeightNVX Gibt die FontWeight::Default Option zurück.
GetNormalFontWeight() FontWeight: Enum GRLFontWeightNVX Gibt die FontWeight::Normal Option zurück.
GetLightFontWeight() FontWeight: Enum GRLFontWeightNVX Gibt die FontWeight::Light Option zurück.
GetBoldFontWeight() FontWeight: Enum GRLFontWeightNVX Gibt die FontWeight::Bold Option zurück.
1. Definition der zugehörigen "Name/Value Buffer" DataItems. Mit den Spalten *HeaderNameFontWeight und *HeaderValueFontWeight ist es möglich die FontWeight Liste in den Visual Studio Properties zu definieren.
addafter("Header DataItem")
{
    dataitem(LeftHeader; "Name/Value Buffer")
    {
        DataItemTableView = SORTING(ID);
        UseTemporary = true;
        column(LeftHeaderName; Name) { }
        column(LeftHeaderValue; Value) { }
        column(LeftHeaderNameFontWeight; format(GRLNameFontWeightNVX)) { }
        column(LeftHeaderValueFontWeight; format(GRLValueFontWeightNVX)) { }
    }

    dataitem(RightHeader; "Name/Value Buffer")
    {
        DataItemTableView = SORTING(ID);
        UseTemporary = true;
        column(RightHeaderName; Name) { }
        column(RightHeaderValue; Value) { }
        column(RightHeaderNameFontWeight; format(GRLNameFontWeightNVX)) { }
        column(RightHeaderValueFontWeight; format(GRLValueFontWeightNVX)) { }
    }
}
2. Eigene Funktion im Report für das Befüllen der Buffertabelle:
var
    GeneralReportLibrary: Codeunit GRLGeneralReportLibraryNVX;
...

local procedure FillLeftHeader(var LeftHeader: Record "Name/Value Buffer" temporary; var Header: Record "Sales Invoice Header")
begin
    GeneralReportLibrary.PrepareNameValueBuffer(NameValueBuffer);

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, Header.FieldCaption("Bill-to Customer No."), Header."Bill-to Customer No.", 
        GeneralReportLibrary.GetBoldFontWeight(), GeneralReportLibrary.GetBoldFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, Header.FieldCaption("External Document No."), Header."External Document No.", 
        GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, Header.GetCustomerVATRegistrationNumberLbl(), Header.GetCustomerVATRegistrationNumber(), 
        GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, InvNoLbl, Header."No.", 
        GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, Header.FieldCaption("Order No."), Header."Order No.", 
        GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(
        LeftHeader, Header.FieldCaption("Posting Date"), GeneralReportLibrary.FormatDateToTextDay2Month2Year4(Header."Posting Date"), 
        GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    GeneralReportLibrary.AppendNameValueBuffer(LeftHeader, Header.FieldCaption("Document Date"), GeneralReportLibrary.FormatDateToTextDay2Month2Year4(Header."Document Date"), GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());
    GeneralReportLibrary.AppendNameValueBuffer(LeftHeader, Header.FieldCaption("Due Date"), GeneralReportLibrary.FormatDateToTextDay2Month2Year4(Header."Due Date"), GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());
    GeneralReportLibrary.AppendNameValueBuffer(LeftHeader, PaymentTermsDescLbl, PaymentTerms.Description, GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());
    GeneralReportLibrary.AppendNameValueBuffer(LeftHeader, PaymentMethodDescLbl, PaymentMethod.Description, GeneralReportLibrary.GetDefaultFontWeight(), GeneralReportLibrary.GetDefaultFontWeight());

    ...
end;
3. Funktionsaufruf am OnAfterGetRecord() Trigger:
modify(Header)
{
	trigger OnAfterAfterGetRecord()
	begin
		FillLeftHeader(LeftHeader, Header);
		FillRightHeader(RightHeader, Header);

        ...
	end;
}
4. Einbauen ins RDLC Layout:


Feedback senden für
DE|EN Impressum