Sie benötigen in Ihren GuiXT Scripten abhängig von einem Datum den Wochentag oder die Kalenderwoche.
Dies können sie grundsätzlich über SAP-RFC-Funktionsbausteine direkt ermitteln lassen. Falls sie jedoch keinen RFC-Zugriff auf Ihr SAP System haben, so könnten die untenstehenden Codings hilfreich sein:
Kalenderwoche bestimmen
//--------------------------------------------------------------------------------- // &V[mydate] is a given date in external format like dd.mm.yyyy or mm/dd/yyyy //--------------------------------------------------------------------------------- // GuiXT uses the following rules for handling dates in computations, or comparisons with < or >: // // (1) A date in one of the 6 external date formats is automatically converted to an absolute number // of days, before doing the calculation or comparison // // (2) If one adds or subtracts a number to/from a date, the result is formatted as a date again, using the // same date format as the given date // Get date in format dd.mm.yyyy, to avoid handling all different date formats Set V[reldate] "&V[mydate]" - "01.01.1000" Set V[date] "01.01.1000" + "&V[reldate]" Set V[year] "&V[date](7-10)" label compute_week // Get start of 1st week Set V[firstweek] "01.01.&V[year]" / 7 decimals=0 Set V[firstweek] "&V[firstweek]" * 7 // Get week number Set V[week] "&V[date]" * 1 Set V[week] "&V[week]" - "&V[firstweek]" Set V[week] "&V[week]" + 4 Set V[week] "&V[week]" / 7 decimals=0 // Last week of previous year? (can be 52 or 53) if V[week=0] Set V[year] "&V[year]" - 1 Set V[date] "31.12.&V[year]" goto compute_week endif // ... or first week of following year? if V[week=53] Set V[lastweek] "&V[firstweek]" + 364 if V[lastweek>28.12.&V[year]] Set V[year] "&V[year]" + 1 Set V[week] 1 endif endif //--------------------------------------------------------------------------------- // &V[year] &V[week] // are now the year and week corresponding to the given date &V[mydate] //---------------------------------------------------------------------------------
oder als Aufruf über den Funktionsbaustein DATE_GET_WEEK
Wochentag bestimmen
Set V[mydate] "24.12.2012" // Wochentag 1,2,3,... berechnen Set V[dt] "&V[mydate]" * 1 Set V[r] &V[dt] / 7 decimals= 0 Set V[r] &V[r] * 7 Set V[r] &V[dt] - &V[r] Set V[r] &V[r] + 4 // Beginnt mit Freitag Set V[weekday.1] "Freitag" Set V[weekday.2] "Samstag" Set V[weekday.3] "Sonntag" Set V[weekday.4] "Montag" Set V[weekday.5] "Dienstag" Set V[weekday.6] "Mittwoch" Set V[weekday.7] "Donnerstag" // Testausgabe Message "&V[weekday.&V[r]]"
Oder über den Funktionsbaustein DATE_COMPUTE_DAY_ENHANCED
Bestimmen von 1. Tag einer Kalenderwoche
// Testdaten Set V[week] 1 Set V[year] 2012 Set V[week1] "01.01.&V[year]" / 7 decimals= 0 Set V[week1] "&V[week1]" * 7 Set V[diff] "01.01.&V[year]" * 1 Set V[diff] &V[diff] - &V[week1] Set V[week] &V[week] * 7 Set V[diff] &V[week] - &V[diff] Set V[day] "01.01.&V[year]" + &V[diff] Set V[day] "&V[day]" - 7 Message "&V[day]"
Oder über den Funktionsbaustein WEEK_GET_FIRST_DAY
Alle hier aufgeführten Scripte wurden durch Herrn Rodé von der Synactive GmbH erstellt und uns freundlicherweise zur Verfügung gestellt.
Wie bei allen Tipps und Tricks geben wir keine Gewähr.