Date1+5 working day = new date.
Hi all ,
I have once date field .and want to add 5 working day in that and calculate new date
i.e date1+5 working day = new date.
How i can do the same
thanx
First of all pass the dates
like pass date to this Fm and check whether it is a working day or not .
<b>
DATE_CHECK_WORKINGDAY</b>
if sy-subrc eq 0 ""---> working day
then add that date to date1 -->
else
increment the date and again call the fm in the perform routine ..
endif .
u need to set a counter for 5 working days to make this count and skip the perform .
2. Use this Fm and some code logic will solve ur query .
3. Remember before using this Fm try to know the calender id for that specific country .
Regards,
Vijay.
Similar Messages
-
Calculate x working days before date
Dear experts,
I am trying to find a date that is x working days before another.
Is that a function module about this?
Thank you in advance,
RoxaniHi Roxani,
You can use FM END_TIME_DETERMINE.
There:
- Insert in duration the number of days that you want to subtract with the minus sign (ex: -1 for previous working day)
- Also, insert your factory calendar that you want to be the source of your working days.
- And, of course, the desired starting date.
Hope that helps!
Kind regards,
Garcia -
Forms Developer Day - New Dates
Two new Forms Upgrade to the Web developer days in running in Africa this month. For more details visit http://www.oracle.com/technology/products/forms/index.html
Regards
Grant Ronald
Forms Product Managementrepost
-
Calculation of no. of working days (per Factory Cal) between 2 date chars
This question could be considered to be in continuation of a previous post called "Working days of month with factory calendar"
I have two date Characteristics: say Date1 and Date2. I need to find the number of working days between them based on the factory calendar.
(And yes we have already defined the default factory calendar in IMG under 'General Reporting settings' ).
The previous post proposed the following:
1) Convert date1 into factorydate (standard functionmodule)
2) Convert date2 into factorydate (standard functionmodule)
Perform date1 - date2 to get number of working days.
I agree that there is a std function module to convert cal date to factory date called: 'DATE_CONVERT_TO_FACTORYDATE'
But what are the steps for calling the conversion? Should I create a new Formula variable of 'Customer Exit type' give it a name and define the Function module in CMOD? But then how do I attach the formula variable to the date characteristic. Note that my infoobjects are Chars so I cannot do date1- date2 in the query as is possible with keyfigures!
Please help! (my version is BW 3.0)
Thanks
NareshHi,
For the above scenario when you need to calculate date 1 - date 2. we can't build a new formulae or calculated KF directly because those are the chars.
So we need make chars to act as KF through Formulae with replacement path.
create a formulae variable on those 2 Date chars with Processing type as replaccement then those 2 Dates can be avilable to build a formulae as ur requirement.
Let me know if you need any more information.
Thanks,
Raju -
To find the no of working days b/w given date
Hi ABAP Experts,
Here i have one requirement .
table is tfacs
in this table i want to know the no of working days b/w the given date. Here i have attached my code .pls go through it and do me needful.
TABLES : tfacs,vbrk.
DATA: BEGIN OF ty_tfacs OCCURS 0,
ident TYPE tfacs-ident,
jahr TYPE tfacs-jahr,
mon01 TYPE tfacs-mon01,
mon02 TYPE tfacs-mon02,
mon03 TYPE tfacs-mon03,
mon04 TYPE tfacs-mon04,
mon05 TYPE tfacs-mon05,
mon06 TYPE tfacs-mon06,
mon07 TYPE tfacs-mon07,
mon08 TYPE tfacs-mon08,
mon09 TYPE tfacs-mon09,
mon10 TYPE tfacs-mon10,
mon11 TYPE tfacs-mon11,
mon12 TYPE tfacs-mon12,
basis TYPE tfacs-basis,
fenum TYPE tfacs-fenum,
wenum TYPE tfacs-wenum,
load TYPE tfacs-load,
string1(31) TYPE c,
string2(31) TYPE c,
string3(31) TYPE c,
string4(31) TYPE c,
string5(31) TYPE c,
string6(31) TYPE c,
string7(31) TYPE c,
string8(31) TYPE c,
string9(31) TYPE c,
string10(31) TYPE c,
string11(31) TYPE c,
string12(31) TYPE c,
uk(31) TYPE c,
total1 TYPE i,
total2 TYPE i,
total3 TYPE i,
total4 TYPE i,
total5 TYPE i,
total6 TYPE i,
total7 TYPE i,
total8 TYPE i,
total9 TYPE i,
total10 TYPE i,
total11 TYPE i,
total12 TYPE i,
END OF ty_tfacs.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_jahr FOR tfacs-jahr MODIF ID b1.
SELECT-OPTIONS : mon FOR tfacs-mon01 MODIF ID b1.
SELECT-OPTIONS : s_month FOR vbrk-erdat MODIF ID b2.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME.
PARAMETERS r1 RADIOBUTTON GROUP c DEFAULT 'X' USER-COMMAND flag .
PARAMETERS r2 RADIOBUTTON GROUP c .
SELECTION-SCREEN END OF BLOCK b.
INITIALIZATION
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
IF r1 NE space.
LOOP AT SCREEN.
IF screen-group1 EQ 'B2'.
screen-output = 1.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF screen-group1 EQ 'B1'.
screen-output = 1.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
start - of - selection
start-of-selection.
IF r1 = 'X'.
PERFORM get-data.
PERFORM display-data.
ENDIF.
& form get-data
text
--> p1 text
<-- p2 text
form get-data .
DATA : total1 TYPE i.
SELECT * FROM tfacs INTO TABLE ty_tfacs
WHERE ident EQ 'IN'
AND jahr IN s_jahr.
LOOP AT ty_tfacs WHERE ident = 'IN'.
IF sy-subrc EQ 0.
PERFORM get_string USING ty_tfacs-string1
ty_tfacs-mon01
ty_tfacs-total1.
PERFORM get_string USING ty_tfacs-string2
ty_tfacs-mon02
ty_tfacs-total2.
PERFORM get_string USING ty_tfacs-string3
ty_tfacs-mon03
ty_tfacs-total3.
PERFORM get_string USING ty_tfacs-string4
ty_tfacs-mon04
ty_tfacs-total4.
PERFORM get_string USING ty_tfacs-string5
ty_tfacs-mon05
ty_tfacs-total5.
PERFORM get_string USING ty_tfacs-string6
ty_tfacs-mon06
ty_tfacs-total6.
PERFORM get_string USING ty_tfacs-string7
ty_tfacs-mon07
ty_tfacs-total7.
PERFORM get_string USING ty_tfacs-string8
ty_tfacs-mon08
ty_tfacs-total8.
PERFORM get_string USING ty_tfacs-string9
ty_tfacs-mon09
ty_tfacs-total9.
PERFORM get_string USING ty_tfacs-string10
ty_tfacs-mon10
ty_tfacs-total10.
PERFORM get_string USING ty_tfacs-string11
ty_tfacs-mon11
ty_tfacs-total11.
PERFORM get_string USING ty_tfacs-string12
ty_tfacs-mon12
ty_tfacs-total12.
ENDIF.
ty_tfacs-uk = ty_tfacs-total1 + ty_tfacs-total2
+ ty_tfacs-total3 + ty_tfacs-total4
+ ty_tfacs-total5 + ty_tfacs-total6
+ ty_tfacs-total7 + ty_tfacs-total8
+ ty_tfacs-total9 + ty_tfacs-total10
+ ty_tfacs-total11 + ty_tfacs-total12.
MODIFY ty_tfacs TRANSPORTING total1 total2 total3
total4 total5 total6
total7 total8 total9
total10 total11 total12
uk.
ENDLOOP.
PERFORM write1-data USING 'COU' 'YEAR' 'MONTH01'
'MONTH02' 'MONTH03' 'MONTH04'
'MONTH05' 'MONTH06' 'MONTH07'
'MONTH08' 'MONTH09' 'MONTH10'
'MONTH11' 'MONTH12' 'TOTAL WDAYS' .
LOOP AT ty_tfacs.
PERFORM write1-data USING ty_tfacs-ident ty_tfacs-jahr
ty_tfacs-total1 ty_tfacs-total2
ty_tfacs-total3 ty_tfacs-total4
ty_tfacs-total5 ty_tfacs-total6
ty_tfacs-total7 ty_tfacs-total8
ty_tfacs-total9 ty_tfacs-total10
ty_tfacs-total11 ty_tfacs-total12
ty_tfacs-uk.
ENDLOOP.
ENDFORM. " get-data
TOP-OF-PAGE.
FORMAT COLOR 5 ON.
WRITE :/10 'COUNTRY',
20 'YEARS',
35 'MON01',
45 'MON02',
55 'MON03',
65 'MON04',
75 'MON05',
85 'MON06',
95 'MON07',
105 'MON08',
115 'MON09',
125 'MON10',
135 'MON11',
145 'MON12',
170 'total wdays'.
FORMAT COLOR OFF.
WRITE :/ SY-ULINE.
*& Form display-data
text
--> p1 text
<-- p2 text
FORM display-data .
LOOP AT ty_tfacs.
WRITE :/10 ty_tfacs-ident,
20 ty_tfacs-jahr,
30 ty_tfacs-total1,
40 ty_tfacs-total2,
50 ty_tfacs-total3,
60 ty_tfacs-total4,
70 ty_tfacs-total5,
80 ty_tfacs-total6,
90 ty_tfacs-total7,
100 ty_tfacs-total8,
110 ty_tfacs-total9,
120 ty_tfacs-total10,
130 ty_tfacs-total11,
140 ty_tfacs-total12,
150 ty_tfacs-uk.
ENDLOOP.
ENDFORM. " display-data
*& form get_string
text
-->p_0250 text
-->p_0251 text
-->p_0252 text
form get_string using p_0250 " month
p_0251 " string
p_0252. " total
p_0250 = p_0251. " move month to string
TRANSLATE p_0250 USING '0 ' . " translate
CONDENSE p_0250 NO-GAPS. " condense
p_0252 = STRLEN( p_0250 ). " pass length of string to total
ENDFORM. " get_string
***& Form write1-data
text
-->P_0306 text
-->P_0307 text
-->P_0308 text
-->P_0309 text
-->P_0310 text
-->P_0311 text
-->P_0312 text
-->P_0313 text
-->P_0314 text
-->P_0315 text
-->P_0316 text
-->P_0317 text
-->P_0318 text
-->P_0319 text
-->P_0320 text
*form write1-data using p_0306
p_0307
p_0308
p_0309
p_0310
p_0311
p_0312
p_0313
p_0314
p_0315
p_0316
p_0317
p_0318
p_0319
p_0320.
*WRITE :/ p_0306,
p_0307,
p_0308 left-justified,
p_0309 left-justified,
p_0310 left-justified,
p_0311 left-justified,
p_0312 left-justified,
p_0313 left-justified,
p_0314 left-justified,
p_0315 left-justified,
p_0316 left-justified,
p_0317 left-justified,
p_0318 left-justified,
p_0319 left-justified,
p_0320 left-justified.
*ENDFORM. " write1-data
from this report what i am getting is year and its 12 months but my requirement is i will give date using select options and i should get the total no of working days in b/w this date.Use the following code to find no of working days b/w given date. Use the correct factory_calendar_id in the function module. L_DAYS will display the required result:
PARAMETERS: p_date1 TYPE sydatum,
p_date2 TYPE sydatum.
DATA: date1 LIKE scal-date,
date2 LIKE scal-date,
correction LIKE scal-indicator,
calendar LIKE scal-fcalid,
factorydate1 LIKE scal-facdate,
workday1 LIKE scal-indicator,
factorydate2 LIKE scal-facdate,
workday2 LIKE scal-indicator,
l_days TYPE scal-facdate.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
date = p_date1
correct_option = '+'
factory_calendar_id = 'US'
IMPORTING
date = date1
factorydate = factorydate1
workingday_indicator = workday1
EXCEPTIONS
correct_option_invalid = 1
date_after_range = 2
date_before_range = 3
date_invalid = 4
factory_calendar_not_found = 5.
IF sy-subrc = 0.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
date = p_date2
correct_option = '+'
factory_calendar_id = 'US'
IMPORTING
date = date2
factorydate = factorydate2
workingday_indicator = workday2
EXCEPTIONS
correct_option_invalid = 1
date_after_range = 2
date_before_range = 3
date_invalid = 4
factory_calendar_not_found = 5.
IF sy-subrc = 0.
l_days = factorydate2 - factorydate1.
WRITE: / l_days.
ENDIF.
ENDIF. -
Working days between two date fields and Changing Factory Calendar
Hi,
I have to calculate working days between two date fields excluding the weekends and public holidays for Switzerland.
I have written the routine using factory calender and its working fine except for two problems now:
1. If any one of the date field is empty then teh rsult should be zero.
2. And the below code is working from 1996 but my cleints wants it to work for years before 1996 as well.
I also tried to change the Start date in SCAL for factory calendar but it says enter values between 1995 to 2020.
I am new to ABAP. Please help me how i can achieve these for below code.
DATA: IT_HOLIDAYS type TABLE OF ISCAL_DAY,
IS_HOLIDAYS TYPE ISCAL_DAY.
DATA: T_DATE TYPE SY-DATUM,
P_DATE TYPE SY-DATUM.
DATA : X_DATE(4) TYPE C.
DATA: CNT TYPE I.
REFRESH : IT_HOLIDAYS.
CLEAR : IT_HOLIDAYS.
T_DATE = SOURCE_FIELDS-/BIC/ZCCCHP812.
P_DATE = SOURCE_FIELDS-/BIC/ZCCCHP810.
CALL FUNCTION 'HOLIDAY_GET'
EXPORTING
HOLIDAY_CALENDAR = 'CH'
FACTORY_CALENDAR = 'CH'
DATE_FROM = P_DATE
DATE_TO = T_DATE
TABLES
HOLIDAYS = IT_HOLIDAYS
EXCEPTIONS
FACTORY_CALENDAR_NOT_FOUND = 1
HOLIDAY_CALENDAR_NOT_FOUND = 2
DATE_HAS_INVALID_FORMAT = 3
DATE_INCONSISTENCY = 4
OTHERS = 5.
DESCRIBE TABLE IT_HOLIDAYS LINES CNT.
X_DATE = T_DATE - P_DATE - CNT.
RESULT = X_DATE.
Please help
Regards
Zabina
Edited by: Syed786 on Nov 2, 2011 9:15 AMHi Zabina,
Try this function module 'DURATION_DETERMINE'.
Give the factory calendar and unit as DAY
With regards,
Rajesh -
Sales order schedule date is a (working) day before Scheduled ship date
In MRP/MPS planning, the forecast consumption is occuring for all sales orders at a date (sales order schedule date) which is always a working day before the Scheduled Ship Date (SSD). What is the logic?
Time fences are not used.
E.g. Sales order is scheduled to ship (SSD) on 30th Nov, in forecast set > Forecast items > Consumptiion > Detail, the sales order schedule date is a day before SSD.Hi,
This is a complex issue; best solution is by using APO/GATP.
If not, then in ERP only, the second best is:
1) Work with assembly processing in SO, meaning that a production/planned order is automatically created in the customer order during order creation.
2) Then, after the order is created it is scheduled, and the delivery date proposal is based on that.
3) Now you can check in the order that there are no capacity overloads, and all capacity required to produce on the proposed date is available. If yes, you're done. If not, it gets a bit complex, since you actualy need to switch to capacity planning, do capacity leveling and dispatch (PP), and the you get a new feasible schedule proposal based on that.
APO/GATP could do all that automatically!
Regards,
Mario -
How to enter a new Date and Time each day in a Numbers Spreadsheet...
Hi... I have finally decided to move away from Excel and really give Numbers a shot... I have an application where each day I first enter the current date and time into a particular cell of a new row and then I enter some data in cells adjacent (in the same row) as that entered date-time. Then the next day I want to again enter the (new) current date and time and add more data next to that new date-time and so forth day after day... You can't use something as simple as =NOW() because then everyday, ALL of the date-times would change to the current time... Nope, now what I want... I just want to be able to EASILY and QUICKLY enter the current date-time value in one call and then have that specific value stay there forever... In Excel, this is accomplished with the keyboard shortcuts of
<cntl> followed by a semicolon (;) for the date
then enter a single space (for separation of date versus time) followed last by
<command> followed again by a semicolon...
So all together that is,
<cntl><;><sp><command><;>
and that puts something like
4/10/2010 9:49:00 AM
in a single cell...
That's what I now want to be able to do in Numbers...
How do I do that??? Do I use the menubar item "Insert Date and Time" and if so, how exactly do I get the current time to show up in the chosen cell??? With formatting??? Is there a keyboard shortcut method like the one I mentioned that works for Excel?? I've perused the manual and though I found lots on date-time, I didn't see how to do specifically what I want to do... I likely just missed it as surely it must be easy to do...
Any feedback would be much appreciated... thanks... bob...Badunit wrote:
The result of running that script is "UI Enabled = TRUE".
I have cells named by the header values.
This may be the problem.
The script is an old one which deciphered only the letter+digit cell references.
Here is a new version which works with every kind of cell reference.
--[SCRIPT insertDateTime]
Enregistrer le script en tant que Script : insertDateTime.scpt
déplacer l'application créée dans le dossier
<VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:Applications:Numbers:
Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
Placez le curseur dans la cellule qui doit recevoir la date_heure
menu Scripts > Numbers > insertDateTime
La cellule pointée reçoit la date_heure.
L'aide du Finder explique:
L'Utilitaire AppleScript permet d'activer le Menu des scripts :
Ouvrez l'Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
Cochez la case "Afficher le menu des scripts dans la barre de menus".
+++++++
Save the script as a Script : insertDateTime.scpt
Move the newly created application into the folder:
<startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
Put the cursor in the cell which must receive the date_time.
menu Scripts > Numbers > insertDateTime
The pointed cell receives the current date_time.
The Finder's Help explains:
To make the Script menu appear:
Open the AppleScript utility located in Applications/AppleScript.
Select the "Show Script Menu in menu bar" checkbox.
Yvan KOENIG (VALLAURIS, France)
2009/03/01
2010/04/11 is now able to treat every kind of cell references
property theApp : "Numbers"
--=====
on run
set {dName, sName, tName, rname, rowNum1, colNum1, rowNum2, colNum2} to my getSelParams()
my doYourDuty(colNum1, rowNum1, tName, sName, dName)
end run
--=====
on doYourDuty(c, r, t, s, d) (*
c = columnIndex
r = rowIndex
t = table's name
s = sheet's name
d = document's name *)
local cdt
set cdt to my cleanThisDate(current date) (* the new date_time as a clean date_time *)
tell application "Numbers" to tell document d to tell sheet s to tell table t
set value of cell r of column c to cdt as text
end tell -- application …
end doYourDuty
--=====
on cleanThisDate(dt)
(* ugly code but once I got date_time with milliseconds so if necessary, I drop them *)
local l
set l to my decoupe(dt as text, ":")
if (count of l) > 3 then set dt to date (my recolle(items 1 thru 3 of l, ":"))
return dt
end cleanThisDate
--=====
on getSelParams()
local r_Name, t_Name, s_Name, d_Name, col_Num1, row_Num1, col_Num2, row_Num2
set {d_Name, s_Name, t_Name, r_Name} to my getSelection()
if r_Name is missing value then
if my parleAnglais() then
error "No selected cells"
else
error "Il n'y a pas de cellule sélectionnée !"
end if
end if
set two_Names to my decoupe(r_Name, ":")
set {row_Num1, col_Num1} to my decipher(item 1 of two_Names, d_Name, s_Name, t_Name)
if item 2 of two_Names = item 1 of two_Names then
set {row_Num2, col_Num2} to {row_Num1, col_Num1}
else
set {row_Num2, col_Num2} to my decipher(item 2 of two_Names, d_Name, s_Name, t_Name)
end if
return {d_Name, s_Name, t_Name, r_Name, row_Num1, col_Num1, row_Num2, col_Num2}
end getSelParams
--=====
set {rowNumber, columnNumber} to my decipher(cellRef,docName,sheetName,tableName)
apply to named row or named column !
on decipher(n, d, s, t)
tell application "Numbers" to tell document d to tell sheet s to tell table t to return {address of row of cell n, address of column of cell n}
end decipher
--=====
set { d_Name, s_Name, t_Name, r_Name} to my getSelection()
on getSelection()
local _, theRange, theTable, theSheet, theDoc, errMsg, errNum
tell application "Numbers" to tell document 1
repeat with i from 1 to the count of sheets
tell sheet i
set x to the count of tables
if x > 0 then
repeat with y from 1 to x
try
(selection range of table y) as text
on error errMsg number errNum
set {_, theRange, _, theTable, _, theSheet, _, theDoc} to my decoupe(errMsg, quote)
return {theDoc, theSheet, theTable, theRange}
end try
end repeat -- y
end if -- x>0
end tell -- sheet
end repeat -- i
end tell -- document
return {missing value, missing value, missing value, missing value}
end getSelection
--=====
on decoupe(t, d)
local l
set AppleScript's text item delimiters to d
set l to text items of t
set AppleScript's text item delimiters to ""
return l
end decoupe
--=====
on parleAnglais()
local z
try
tell application theApp to set z to localized string "Cancel"
on error
set z to "Cancel"
end try
return (z is not "Annuler")
end parleAnglais
--=====
--[/SCRIPT]
It's available on my idisk :
<http://public.me.com/koenigyvan>
Download :
For_iWork:iWork '09:for_Numbers09:insertDateTime.zip
Yvan KOENIG (VALLAURIS, France) dimanche 11 avril 2010 14:16:41 -
Add working days to a date excluding weekends and holidays
Hi there,
I need to write a function that will take a specified date and number of days to add as input parameters, and return the working day based on the number of days to add parameter, excluding weekends and any holidays held in a holiday table.
Here is my function so far -
CREATE OR REPLACE FUNCTION f_add_work_days(pd_date IN DATE
,pn_add_days IN PLS_INTEGER) RETURN DATE IS
pd_in_date DATE := pd_date;
ld_next_holiday DATE;
ln_days_left PLS_INTEGER := pn_add_days;
CURSOR cu_holiday(pn_date IN ge740.holdte%TYPE) IS
SELECT pck_utility.f_dtcnv(g.holdte)
FROM ge740 g
WHERE g.holdte >= pn_date
AND g.maint <> 'D'
ORDER BY g.holdte ASC;
BEGIN
OPEN cu_holiday(pck_utility.f_dtcnv(pd_in_date));
FETCH cu_holiday
INTO ld_next_holiday;
CLOSE cu_holiday;
LOOP
IF ln_days_left = 0 THEN
EXIT;
END IF;
pd_in_date := pd_in_date + 1;
IF pd_in_date > ld_next_holiday THEN
OPEN cu_holiday(pck_utility.f_dtcnv(pd_in_date));
FETCH cu_holiday
INTO ld_next_holiday;
CLOSE cu_holiday;
END IF;
CASE
WHEN TO_CHAR(pd_in_date
,'fmDAY') = 'SATURDAY' THEN
pd_in_date := pd_in_date + 2;
ln_days_left := ln_days_left - 1;
WHEN TO_CHAR(pd_in_date
,'fmDAY') = 'SUNDAY' THEN
pd_in_date := pd_in_date + 1;
ln_days_left := ln_days_left - 1;
WHEN pd_in_date = ld_next_holiday THEN
pd_in_date := pd_in_date + 1;
ln_days_left := ln_days_left - 1;
ELSE
ln_days_left := ln_days_left - 1;
END CASE;
END LOOP;
RETURN(pd_in_date);
END f_add_work_days;
I think there is something wrong/missing in the logic as I can't get it to cater for say a double bank holiday(25/26th Dec - if the input parameters are 24/12/2007 and 2, which should return the 28th but returns the 26th!!).
I'm relatively new to PL/SQL and Oracle, so any help, advice, ideas would be greatly appreciated!
thanks in advancesmth like
SQL> with holidays as (select to_date('10.06.2007','dd.mm.yyyy') h_dt from dual),
2 par as (select to_date('08.06.2007','dd.mm.yyyy') dt, 2 add_days from dual)
3 --
4 select min(dt) needed_date
5 from (select p.*,
6 h.*,
7 mod(to_char(dt, 'j'), 7),
8 sum(decode(mod(to_char(dt, 'j'), 7), 5, 0, 6, 0, 1)+--get rid of sat and sun
9 nvl2(h_dt, -1, 0)--check if the day is holiday
10 ) over(order by dt) s
11 from (select dt + level dt, add_days
12 from par
13 connect by level <= 100) p,
14 holidays h
15 where h_dt(+) = dt
16 order by 1)
17 where add_days = s
18 /
NEEDED_DATE
13.06.2007
SQL> ?
Message was edited by:
Volder
PS What Oracle version are you on? -
Get working day of month for specific date
Hi,
I need to get the working day of a month for a specific date. For example: Which working day is the 15th of september 2005...
Is there any function module, I could use?
Cheers ArneHI arne,
1. DATE_CHECK_WORKINGDAY
This is the FM.
2. Along with that u will have to use some logic.
3. Just copy paste in new program
(it will help in the logic)
<b>It will list out
all the working days
between two given dates</b>
REPORT abc.
data : num type i.
parameters : frdate type sy-datum default '20051216'.
parameters : todate type sy-datum default '20051221'.
perform getinfo using frdate todate changing num.
break-point.
*& Form getinfo
text
FORM getinfo USING fromdate todate CHANGING numofdays type i.
DATA : d TYPE sy-datum.
d = fromdate - 1.
DO.
d = d + 1.
IF d > todate.
EXIT.
endif.
CALL FUNCTION 'DATE_CHECK_WORKINGDAY'
EXPORTING
date = d
factory_calendar_id = '01'
message_type = 'I'
EXCEPTIONS
date_after_range = 1
date_before_range = 2
date_invalid = 3
date_no_workingday = 4
factory_calendar_not_found = 5
message_type_invalid = 6
OTHERS = 7.
IF sy-subrc = 0.
numofdays = numofdays + 1.
write :/ d.
ENDIF.
ENDDO.
ENDFORM. "getinfo
regards,
amit m. -
Billing date of 2nd/4th saturday getting pushed to next working day.
whenever my client trying to create bill of service order, bills on 2nd/4th saturday, the billing date is getting pushed to next working day. I checked their calender, they have maintained 2nd/4th saturday as holiday in holiday calender. However the validity is only till 2009. But the bills are getting still getting pushed. Am not too keen on using validation, please help.
Hi,
Are they creating invoices thru back ground ( using batch job ) ? in this case in the holiday calendar 2n'd and 4'th saturday is holiday, so the system is proposing new work day. you have to check all the three calendars once again let me know.
Thanks,
Chandu. -
Sales Order confirmed date in work days
Is there a way to change configuration so a Saler Order will confirm based on the Factory Calendar??
I created a new Order Type (VOV8) but see no option to change from calendar days to work days.
Bascially, I need the sales order confirmation date to be based on work days and not calendar days.
Is this possible???Hi,
Sales Order is created for particular Sales Area i.e. SO + DC + Div. And Sales Org. is the highest org unit in SD.
At Sales Organizational level you maintain Sales Org calendar and not factory calendar.
Factory Calendar is basically used at plant level which comes under MM module.
So, by SAP std practice i dont think it will be possible..............
Or you can do one thing that is,........maintain the same sales org calendar as factory calendar..........so i think it will help you....
But can you elaborate you point so that we can understand properly.............
regards,
Sagar -
Function Module for Date/ Time difference in Working Days
Hi all,
Are there any function modules which will calculate the difference between a date AND time, but in working days?
I can use the FIMA_DAYS_BETWEEN_TWO_DATES_2 FM for the dates, but I need to include times in this as well.
This is for situations where the 'starting date' is a non-working day, and the 'end date' is a working day. In this situation I need to take all the hours and minutes into account, which happened on the working day. To give an example -
Start date: 04.07.2010 (Sunday - Non working day)
Start time: 21:12:36
End date: 05.07.2010 (Monday - Working day)
End time: 04:47:24
I realise there is a Time option in this function module, but when I test it, it doesn't seem to be returning the desired results (returns 0 for days and time). I am using '5' as the I_STGMETH and 'GB' as the I_SKALID.
I need a calcuation which will return the time, post midnight on the working day - in this example, 4 hours, 47 minutes (seconds are optional!).
Can anyone help? - can I still use FIMA_DAYS_BETWEEN_TWO_DATES_2 but with different parameters?
Thanks
Mischa
Edited by: Mischa Gulseven on Jul 20, 2010 10:40 AMHi,
Thanks but this FM does not seem to account for working days.
For example, if I use:
DATE1 04.07.2010 (non working day)
TIME1 04:00:00
DATE2 05.07.2010 (working day)
TIME2 21:00:00
It will give the following results -
DATEDIFF 1
TIMEDIFF 17
EARLIEST 1
I don't want to account for the non-working day so the result I actually want would be to calculate from midnight on 05.07 to 21:00 on 05.07 which should be 21 hours.
I suspect I probably need to include the STGMETH and the factory calendar somewhere in the FM?
Does such a FM exist, or could anyone help me with some ABAP for this?
thanks
Mischa -
'Get All New Data Request by Request' option not working Between DSO n Cube
Hi BI's..
Could anyone please tell me why the option ' Get one Request only' and 'Get All New Data Request by Request' is not working in DTP between Standard DSO and InfoCube.
Scenario:
I have done the data load by Yearwise say FY 2000 to FY 2009 in Infopackage and load it to Write-optimised DSO (10 requests) and again load Request by request to Standard DSO and activate each request. I have selected the option in DTP's to 'Get All New Data Request by Request' and its working fine between WDSO and SDSO. But not working between Cube and SDSO. While Execute DTP its taking as a single request from SDSO to Cube.( 10 request to single request).
Regards,
Sari.Hi,
How does your DTP setting looks like from below options ? It should be change log, assuming you are not deleting change log data.
Delta Init. Extraction from...
- Active Table (with archive)
- Active Table (without archive)
- Archive ( full extraction only)
- Change Log
Also if you want to enable deltas, please do not delete change log. That could create issue while further update from DSO.
Hope that helps.
Regards
Mr Kapadia
*Assigning points is the way to say thanks* -
Working day to factory calendar date
Hello Experts,
I wish to get the factory calendar date, specific to a factory calendar, based on a working day.
Basically, if i pass say 4, then i want to get the date for the 4th working day based on a specific factory calendar.
Can someone throw some light on possible function module that i can use in BW ?
ThanksThat's what I was giving you, you give the working day and the factory calendar and you get the date, or you can use this function and you can do it the other way:
(Unless I'm completely missing your point here...)
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
CORRECT_OPTION = '+'
DATE = G_WORKAREA3-CREATEDON
FACTORY_CALENDAR_ID = L_S_PLANT-FACTCAL_ID
IMPORTING
* DATE =
FACTORYDATE = L_FCDATE
EXCEPTIONS
CALENDAR_BUFFER_NOT_LOADABLE = 1
CORRECT_OPTION_INVALID = 2
DATE_AFTER_RANGE = 3
DATE_BEFORE_RANGE = 4
DATE_INVALID = 5
FACTORY_CALENDAR_NOT_FOUND = 6
OTHERS = 7.
ENDIF.
Maybe you are looking for
-
IPhone 4 not showing up in wifi
Hi, I just replaced my router with a new Linksys E2000. For some reason it's not showing up in my iPhone. My computer works fine and I can stream with Vudu. Any suggestions on why it's not showing up on the iPhone? Thanks, Jerry
-
[Beginner Oracle 10g on Solaris 10]Script Root.sh asking road
Hello, Need help please, Iam near the end of my installation Oracle 10g on Solaris 10, Oracle installer ask me to execute Root.sh, he ask me a path, suggesting me this road /usr/local/bin The message is Enter the full pathname of the local bin direct
-
Unable to Erase Authorization- Please Try Again After Some Time
Hi, I am using a mac and I have tried to deauthorize adobe with the command shift D key; however, it keeps saying "unable to erase authorization please try after some time" I have tried after some time and it still isn't working! I'm going crazy. Can
-
Hello All, I am newly join in IT company (Name don't want to specify) . They have putted me in a consolidate project in which I do have to work on IDOC,ALE and EDI object. yet in my career with SAP ABAP I haven't work on the above mention terms
-
HI , In ECC i found BI Content is not installed. Can any one tell me is there any need to install ? if we wont install what are effects we will go through. Explain on this............. Regards Kavitha