[Gelöst] Datenaktualisierung mit Reports

26. Februar 2010 14:21

Hallo,

ich habe einen Report der Daten in der Tabelle Sales Shipment Header aktualisiert.

In der Tabelle müssen 2 Felder aktualisiert werden. Sell-to County und Bill-to County

Da das durchlaufen aller Datensätze zu lange dauert habe ich die Tabelle zweimal als DataItem in den Report reingenommen und auf beide Felder einen Filter gesetzt.

DataItem..................Name...........................Filter
Sales Shipment Header | <Sales Shipment Header1> | SORTING(Sell-to County,Sell-to Country Code) WHERE(Sell-to Country Code=FILTER(DE),Sell-to County=FILTER(''))
Sales Shipment Header | <Sales Shipment Header2> | SORTING(Bill-to County,Bill-to Country Code) WHERE(Bill-to Country Code=FILTER(DE),Bill-to County=FILTER(''))

Ist die Vorgehensweise so richtig bzw. gibt es hierfür eine besser Möglichkeit?


Dann habe ich folgenden Code:

<Sales Shipment Header1> - OnAfterGetRecord()
Code:
IF "Sell-to County" = '' THEN BEGIN
  SalesShipmentHeader := "<Sales Shipment Header1>";
  IF Customer.GET("Sell-to Customer No.") THEN
    SalesShipmentHeader."Sell-to County" := Customer.County;
  IF SalesShipmentHeader. "Sell-to County" = '' THEN
     SalesShipmentHeader."Sell-to County" := 'UNKNOWN';
  SalesShipmentHeader.MODIFY;
END;



<Sales Shipment Header2> - OnAfterGetRecord()
Code:
IF "Bill-to County" = '' THEN BEGIN
  SalesShipmentHeader := "<Sales Shipment Header2>";
  IF Customer.GET("Bill-to Customer No.") THEN
    SalesShipmentHeader."Bill-to County" := Customer.County;
  IF SalesShipmentHeader. "Bill-to County" = '' THEN
     SalesShipmentHeader."Bill-to County" := 'UNKNOWN';
  SalesShipmentHeader.MODIFY;
END;


Wenn der Report durchgelaufen ist sollen am Ende alle Felder gefüllt sein. Entweder mit Customer.County oder mit 'UNKNOWN'

Ist der Code so richtig?

Mir kommt das alles so lang und so umständlich vor.

Danke für die Hilfe.
Zuletzt geändert von ralf5 am 26. Februar 2010 18:13, insgesamt 1-mal geändert.

Re: Datenaktualisierung mit Reports

26. Februar 2010 14:39

Ich würde nur einen Durchlauf machen
Code:
If "<Sales Shipment Header1>".GET(SalesShipmentHeader."No."  Then Begin
   IF "<Sales Shipment Header1>"."Sell-to County" = '' THEN BEGIN
      IF Customer.GET("<Sales Shipment Header1>"."Sell-to Customer No.") THEN
         "<Sales Shipment Header1>"."Sell-to County" := Customer.County;
  END;
  IF "<Sales Shipment Header1>"."Bill-to County" = '' THEN BEGIN
      IF Customer.GET("<Sales Shipment Header1>"."Sell-to Customer No.") THEN
         "<Sales Shipment Header1>"."Bill-to County" := Customer.County;
  END;
    IF "<Sales Shipment Header1>"."Sell-to County" = '' THEN
       "<Sales Shipment Header1>"."Sell-to County" := 'UNKNOWN';
    IF "<Sales Shipment Header1>"."Bill-to County" = '' THEN
       "<Sales Shipment Header1>"."Bill-to County" := 'UNKNOWN';
END;


mfg Michael

Re: Datenaktualisierung mit Reports

26. Februar 2010 14:52

Hallo,

If "<Sales Shipment Header1>".GET(SalesShipmentHeader."No." Then Begin

die Zeile verstehe ich nicht ? Warum bzw. Was macht die?

Ich würde nur einen Durchlauf machen


Nur einmal durchlaufen geht doch auch nicht wenn ich quasi eine ODER Abfrage mache.

Ich möchte ja die beiden Abfragen haben:
WHERE(Sell-to Country Code=FILTER(DE),Sell-to County=FILTER('')) ODER
WHERE(Bill-to Country Code=FILTER(DE),Bill-to County=FILTER(''))

Liege ich jetzt falsch?

Re: Datenaktualisierung mit Reports

26. Februar 2010 14:57

Um die Idee von Michael aufzugreifen:
nur noch ein DataItem SalesShipmentHeader, OHNE Filter auch irgendein County.
Dort im OnAfterGetRecord braucht man den DataItem-Namen auch nicht auszuschreiben:

Code:
IF ("Sell-to County" <> '') AND (Bill-to County" <> '') THEN
  CurrReport.SKIP;

IF "Sell-to County" = '' THEN BEGIN
  "Sell-to County" = 'UNKNOWN';
  IF Customer.GET("Sell-to Customer No.") THEN
    "Sell-to County" := Customer.County;
END;

IF "Bill-to County" = '' THEN BEGIN
  "Bill-to County" = 'UNKNOWN';
  IF Customer.GET("Bill-to Customer No.") THEN
    "Bill-to County" := Customer.County;
END;


Mann könnte den Fall übrigens auch ganz anders aufrollen:
Erst mal die beiden Feldern überall auf UNKNOWN setzen.
Der Report beginnt bei DataItem Customer, Filter auf County <> ''.
Für jeden gefundenen Debitor werden alle seine Lieferungen aktualisiert...

Re: Datenaktualisierung mit Reports

26. Februar 2010 15:44

Die Reports laufen jede Nacht und brauchen ca. 1,5 Stunden deshalb laufen einige anderen Jobs nachts nicht. Ich muss also die Laufzeit reduzieren.

Habt Ihr noch eine Idee?

Re: Datenaktualisierung mit Reports

26. Februar 2010 16:08

Weia. Wie viele Datensätze stehen denn in der Tabelle? Das müssen ja Millionen sein.

Und warum läuft das jede Nacht? Das muss man doch nur einmal machen und fortan darauf achten, dass das Feld County im Auftrag gefüllt ist.

Re: Datenaktualisierung mit Reports

26. Februar 2010 16:31

Im Moment werden Ca. 2 Mio Datensätze jede nacht durchlaufen. Es kommen täglich aber nur maximal 1000 dazu, also muss ich eigentlich auch nur in diesen 1000 aktualisieren.

Das Problem ist, dass unser ganzes System vermurkst ist. Ich wars net :-) Ich muß nur den mist wegschaufeln
bis wir unser neues System bekommen (von einem neuen Partner)

Naja, und wie immer, alles wird viel besser. :-?

Re: Datenaktualisierung mit Reports

26. Februar 2010 16:47

Ich habe mir eben mal testweise sowas Ähnliches gebaut, da schafft unser Server ca. 70000 SalesShipmentHeader pro Minute (im Netz ist es allerdings auch schon ruhig wegen des Wochenendes :-) ). Wenn er das Tempo beibehält, wären das in 90 Min 6 Millionen. Allerdings war das nur ein Durchgang über alle Datensätze. Ohne Filter und ohne alles, einfach drüber fegen, die beiden Counties vergleichen und einen Counter hochzählen, falls leer, sowie pro Datensatz einen Fortschrittsbalken aktualisieren, um ein paar Testbremsen zu haben.

Re: [Gelöst] Datenaktualisierung mit Reports

27. Februar 2010 23:07

Und was ist nun passiert, damit das gelöst ist ... ? :roll:

Re: [Gelöst] Datenaktualisierung mit Reports

1. März 2010 11:42

Na ja, ich habe die anderen Vorschläge geprüft. Diese dauern aber länger als meine Lösung. Gelöst ist es insofern, dass ich es so lasse wie ich es gemacht habe. Die Reports brauchen jetzt nur noch ca. 15 Minuten. Allerdings habe ich einen riesen Haufen Code. Ich denke immernoch, dass so wie ich das gemacht habe viel zu umständlich und auch zu Wartungsintensiv ist zumal der Code Irgendwie immer der Gleiche ist. Wenn jemand eine bessereLösung hat, mit weniger code und/oder beserer Geschwindigkeit, wäre ich wirklich sehr dankbar.

Hier habe ich den gesamten REPORT als Textdatei Exportiert:
Code:
OBJECT Report 50082 Batch Set County Posted Docs
{
  OBJECT-PROPERTIES
  {
    Date=01.03.10;
    Time=10:00:00;
    Modified=Yes;
    Version List=100225;
  }
  PROPERTIES
  {
    Permissions=TableData 110=rim,
                TableData 112=rim,
                TableData 114=rim;
    CaptionML=[DEU=Gebuchte Dokumente Bundesregion setzen;
               ENU=Batch Set County Posted Docs];
    UseReqForm=No;
    ProcessingOnly=Yes;
    OnPreReport=BEGIN
                  Window.OPEN(
                    ' Die Daten in der Tabelle #10############  werden aktualisiert.\\\\' +
                    ' Feld #11############# Datensatz#1####von#2####  @3@@@@@@@@@@@@@@@@@@\\' +
                    ' Feld #12############# Datensatz#4####von#5####  @6@@@@@@@@@@@@@@@@@@\\' +
                    ' Feld #13############# Datensatz#7####von#8####  @9@@@@@@@@@@@@@@@@@@\\' );

                  Window.UPDATE(11, "<Sales Shipment Header1>".FIELDCAPTION("Sell-to County"));
                  Window.UPDATE(12, "<Sales Shipment Header1>".FIELDCAPTION("Bill-to County"));
                  Window.UPDATE(13, "<Sales Shipment Header1>".FIELDCAPTION("Ship-to County"));

                  TimeStart := TIME;
                END;

    OnPostReport=BEGIN
                   MESSAGE('Time: %1', TIME - TimeStart);
                 END;

    OnHyperlink=BEGIN
                  Window.CLOSE;
                END;

  }
  DATAITEMS
  {
    { PROPERTIES
      {
        DataItemTable=Table110;
        DataItemTableView=SORTING(Sell-to County,Sell-to Country Code)
                          WHERE(Sell-to Country Code=FILTER(DE),
                                Sell-to County=FILTER(''));
        DataItemVarName=<Sales Shipment Header1>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(1, 0);
                          Window.UPDATE(2, 0);
                          Window.UPDATE(3, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Shipment Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(1, Counter);
                           Window.UPDATE(2, RecordCount);
                           Window.UPDATE(3, (Counter * Factor) DIV 1);

                           IF "Sell-to County" = '' THEN BEGIN
                             SalesShipmentHeader := "<Sales Shipment Header1>";
                             IF Customer.GET("Sell-to Customer No.") THEN
                               SalesShipmentHeader."Sell-to County" := Customer.County;
                             IF SalesShipmentHeader. "Sell-to County" = '' THEN
                                SalesShipmentHeader."Sell-to County" := 'UNKNOWN';
                             SalesShipmentHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table110;
        DataItemTableView=SORTING(Bill-to County,Bill-to Country Code)
                          WHERE(Bill-to Country Code=FILTER(DE),
                                Bill-to County=FILTER(''));
        DataItemVarName=<Sales Shipment Header2>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(4, 0);
                          Window.UPDATE(5, 0);
                          Window.UPDATE(6, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Shipment Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(4, Counter);
                           Window.UPDATE(5, RecordCount);
                           Window.UPDATE(6, (Counter * Factor) DIV 1);

                           IF "Bill-to County" = '' THEN BEGIN
                             SalesShipmentHeader := "<Sales Shipment Header2>";
                             IF Customer.GET("Bill-to Customer No.") THEN
                               SalesShipmentHeader."Bill-to County" := Customer.County;
                             IF SalesShipmentHeader. "Bill-to County" = '' THEN
                                SalesShipmentHeader."Bill-to County" := 'UNKNOWN';
                             SalesShipmentHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table110;
        DataItemTableView=SORTING(Ship-to County,Ship-to Country Code)
                          WHERE(Ship-to Country Code=FILTER(DE),
                                Ship-to County=FILTER(''));
        DataItemVarName=<Sales Shipment Header3>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(7, 0);
                          Window.UPDATE(8, 0);
                          Window.UPDATE(9, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Shipment Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(7, Counter);
                           Window.UPDATE(8, RecordCount);
                           Window.UPDATE(9, (Counter * Factor) DIV 1);

                           IF "Ship-to County" = '' THEN BEGIN
                             SalesShipmentHeader := "<Sales Shipment Header3>";
                             IF PostCodeRegionAlloc.GET("Ship-to Country Code","Ship-to Post Code","Ship-to City") THEN
                               SalesShipmentHeader."Ship-to County" := PostCodeRegionAlloc.County;
                             IF SalesShipmentHeader. "Ship-to County" = '' THEN
                               SalesShipmentHeader."Ship-to County" := 'UNKNOWN';
                             SalesShipmentHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table112;
        DataItemTableView=SORTING(Sell-to County,Sell-to Country Code)
                          WHERE(Sell-to Country Code=FILTER(DE),
                                Sell-to County=FILTER(''));
        DataItemVarName=<Sales Invoice Header1>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(1, 0);
                          Window.UPDATE(2, 0);
                          Window.UPDATE(3, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Invoice Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(1, Counter);
                           Window.UPDATE(2, RecordCount);
                           Window.UPDATE(3, (Counter * Factor) DIV 1);

                           IF "Sell-to County" = '' THEN BEGIN
                             SalesInvoiceHeader := "<Sales Invoice Header1>";
                             IF Customer.GET("Sell-to Customer No.") THEN
                               SalesInvoiceHeader."Sell-to County" := Customer.County;
                             IF SalesInvoiceHeader. "Sell-to County" = '' THEN
                                SalesInvoiceHeader."Sell-to County" := 'UNKNOWN';
                             SalesInvoiceHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table112;
        DataItemTableView=SORTING(Bill-to County,Bill-to Country Code)
                          WHERE(Bill-to Country Code=FILTER(DE),
                                Bill-to County=FILTER(''));
        DataItemVarName=<Sales Invoice Header2>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(4, 0);
                          Window.UPDATE(5, 0);
                          Window.UPDATE(6, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Invoice Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(4, Counter);
                           Window.UPDATE(5, RecordCount);
                           Window.UPDATE(6, (Counter * Factor) DIV 1);

                           IF "Bill-to County" = '' THEN BEGIN
                             SalesInvoiceHeader := "<Sales Invoice Header2>";
                             IF Customer.GET("Bill-to Customer No.") THEN
                               SalesInvoiceHeader."Bill-to County" := Customer.County;
                             IF SalesInvoiceHeader. "Bill-to County" = '' THEN
                                SalesInvoiceHeader."Bill-to County" := 'UNKNOWN';
                             SalesInvoiceHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table112;
        DataItemTableView=SORTING(Ship-to County,Ship-to Country Code)
                          WHERE(Ship-to Country Code=FILTER(DE),
                                Ship-to County=FILTER(''));
        DataItemVarName=<Sales Invoice Header3>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(7, 0);
                          Window.UPDATE(8, 0);
                          Window.UPDATE(9, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Invoice Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(7, Counter);
                           Window.UPDATE(8, RecordCount);
                           Window.UPDATE(9, (Counter * Factor) DIV 1);

                           IF "Ship-to County" = '' THEN BEGIN
                             SalesInvoiceHeader := "<Sales Invoice Header3>";
                             IF PostCodeRegionAlloc.GET("Ship-to Country Code","Ship-to Post Code","Ship-to City") THEN
                               SalesInvoiceHeader."Ship-to County" := PostCodeRegionAlloc.County;
                             IF SalesInvoiceHeader. "Ship-to County" = '' THEN
                               SalesInvoiceHeader."Ship-to County" := 'UNKNOWN';
                             SalesInvoiceHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table114;
        DataItemTableView=SORTING(Sell-to County,Sell-to Country Code)
                          WHERE(Sell-to Country Code=FILTER(DE),
                                Sell-to County=FILTER(''));
        DataItemVarName=<Sales Cr.Memo Header1>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(1, 0);
                          Window.UPDATE(2, 0);
                          Window.UPDATE(3, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Cr.Memo Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(1, Counter);
                           Window.UPDATE(2, RecordCount);
                           Window.UPDATE(3, (Counter * Factor) DIV 1);

                           IF "Sell-to County" = '' THEN BEGIN
                             SalesCrMemoHeader := "<Sales Cr.Memo Header1>";
                             IF Customer.GET("Sell-to Customer No.") THEN
                               SalesCrMemoHeader."Sell-to County" := Customer.County;
                             IF SalesCrMemoHeader. "Sell-to County" = '' THEN
                                SalesCrMemoHeader."Sell-to County" := 'UNKNOWN';
                             SalesCrMemoHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table114;
        DataItemTableView=SORTING(Bill-to County,Bill-to Country Code)
                          WHERE(Bill-to Country Code=FILTER(DE),
                                Bill-to County=FILTER(''));
        DataItemVarName=<Sales Cr.Memo Header2>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(4, 0);
                          Window.UPDATE(5, 0);
                          Window.UPDATE(6, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Cr.Memo Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(4, Counter);
                           Window.UPDATE(5, RecordCount);
                           Window.UPDATE(6, (Counter * Factor) DIV 1);

                           IF "Bill-to County" = '' THEN BEGIN
                             SalesCrMemoHeader := "<Sales Cr.Memo Header2>";
                             IF Customer.GET("Bill-to Customer No.") THEN
                               SalesCrMemoHeader."Bill-to County" := Customer.County;
                             IF SalesCrMemoHeader. "Bill-to County" = '' THEN
                                SalesCrMemoHeader."Bill-to County" := 'UNKNOWN';
                             SalesCrMemoHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
    { PROPERTIES
      {
        DataItemTable=Table114;
        DataItemTableView=SORTING(Ship-to County,Ship-to Country Code)
                          WHERE(Ship-to Country Code=FILTER(DE),
                                Ship-to County=FILTER(''));
        DataItemVarName=<Sales Cr.Memo Header3>;
        OnPreDataItem=BEGIN
                        Counter := 0;
                        RecordCount := COUNT;
                        IF RecordCount > 0 THEN BEGIN
                          Factor := 9999 / RecordCount;
                        END ELSE BEGIN
                          Window.UPDATE(7, 0);
                          Window.UPDATE(8, 0);
                          Window.UPDATE(9, 9999);
                        END;
                        Window.UPDATE(10, 'Sales Cr.Memo Header');
                      END;

        OnAfterGetRecord=BEGIN
                           Counter += 1;
                           Window.UPDATE(7, Counter);
                           Window.UPDATE(8, RecordCount);
                           Window.UPDATE(9, (Counter * Factor) DIV 1);

                           IF "Ship-to County" = '' THEN BEGIN
                             SalesCrMemoHeader := "<Sales Cr.Memo Header3>";
                             IF PostCodeRegionAlloc.GET("Ship-to Country Code","Ship-to Post Code","Ship-to City") THEN
                               SalesCrMemoHeader."Ship-to County" := PostCodeRegionAlloc.County;
                             IF SalesCrMemoHeader. "Ship-to County" = '' THEN
                               SalesCrMemoHeader."Ship-to County" := 'UNKNOWN';
                             SalesCrMemoHeader.MODIFY;
                           END;
                         END;

      }
      SECTIONS
      {
        { PROPERTIES
          {
            SectionType=Body;
            SectionWidth=12000;
            SectionHeight=846;
          }
          CONTROLS
          {
          }
           }
      }
       }
  }
  REQUESTFORM
  {
    PROPERTIES
    {
      Width=9020;
      Height=3410;
    }
    CONTROLS
    {
    }
  }
  CODE
  {
    VAR
      SalesShipmentHeader@1000000010 : Record 110;
      SalesInvoiceHeader@1000000012 : Record 112;
      SalesCrMemoHeader@1000000013 : Record 114;
      PostCodeRegionAlloc@1000000003 : Record 50088;
      Customer@1000000011 : Record 18;
      Window@1000000008 : Dialog;
      Factor@1000000002 : Decimal;
      Counter@1000000001 : Integer;
      RecordCount@1000000000 : Integer;
      TimeStart@1000000009 : Time;

    BEGIN
    {
      HV100225  RPB 01.03.10  Laufzeit optimiert
    }
    END.
  }
}



Danke für die Hilfe.