Skip to main content
Skip table of contents

FindeWerktagInNTagen()


JS
//******************************************************************************
// Findet den Werktag in nDiff Tagen, Prüft, ob die auf dem Weg liegenden Daten
//  auf einen Feiertag, Samstag oder Sonntag fallen und überspringt diese
// @dDate:     dDatum:D    - Ausgangsdatum, ab welchem die Prüfung + n Tage startet
// @nDiff:     nDiff:N     - Anzahl Tage die geprüft werden
// @cTermMode: cTermMode:C - bestimmt Vorwärts- oder Rückwertsprüfung
// @oDM:       oDM:O       - Datenmodul als Container für DAB272, 
//                           welches im Hauptprogramm zerstört werden muss
// @Result: date
//******************************************************************************
function FindeWerktagInNTagen(dDate, nDiff, cTermMode, oDM)
| oDAB272, i |
   oDAB272             := MyGetTable(oDM, waDAB272, 'IND_DAB272'),
   oDAB272.CbIndexname := 'I_FEIERTAG_DAT',
   Result := dDate,
   i := 0,
   while i < nDiff do
      i++,
      if cTermMode = 'VORWAERTS' then
         Result += 1,
      else
         Result -= 1,
      endif,
                                                                                 writeln(dow(Result)),
      while oDAB272.CbFindKey({100, Formatdatetime('DD.MM.YY', Result)})
            or dow(Result) = 1
            or dow(Result) = 7 do                                                writeln(i, result),
         if cTermMode = 'VORWAERTS' then
            Result += 1,
         else
            Result -= 1,
         endif,
      end,
   end,
end,

Anwendungsbeispiel:

Versand am 29.7., Ankunft am übernächsten Werktag. Das wäre dann aber nicht etwa der 31.7, sondern der 2.8., weil Samstag und Sonntag dazwischen liegen.

JavaScript errors detected

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

If this problem persists, please contact our support.