Escalation & sending external Mail (outlook)
Dart, Jocelyn
jocelyn.dart at sap.com
Fri May 27 00:57:08 EDT 2005
Wow Jim!
What a lot of work you went to... an impressive bit of calculating.
However you could have saved some time by using the standard factory
calendar config and function module END_TIME_DETERMINE.
If you want to know whether a day is a working day or not the function
module DAY_ATTRIBUTES_GET is another good one to know.
Might save you some work next time...
Regards,
Jocelyn
________________________________
From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu]
On Behalf Of Hall, Jim
Sent: Wednesday,25 May 2005 11:03 PM
To: sap-wug at mit.edu
Subject: RE: Escalation & sending external Mail (outlook)
Gopi:
I have a method, with a function module that I use to calculate
a wait of 5 working days.
Here is the method info and the function module.
Hope it helps
Jim Hall
Systems Analyst
Fortis Alberta Inc.
Information Technology
BEGIN_METHOD ZCALC5WORKDAYS CHANGING CONTAINER.
DATA:
TIME LIKE SYST-UZEIT,
DATE LIKE SYST-DATUM.
Data: w_date type syst-datum,
W_WORKDAYS TYPE PA2001-ABWTG.
GEt time.
TIME = SY-UZEIT.
W_DATE = SY-DATUM + 7.
DO.
CALL FUNCTION 'Z_CALENDAR_CALCULATE_DAYS'
EXPORTING
IDENT = 'CA'
START_DATE = SY-DATUM
END_DATE = W_DATE
IMPORTING
WORKDAYS = W_WORKDAYS.
IF W_WORKDAYS => 6.
EXIT.
ENDIF.
W_DATE = W_DATE + 1.
ENDDO.
DATE = W_DATE.
SWC_SET_ELEMENT CONTAINER 'Time' TIME.
SWC_SET_ELEMENT CONTAINER 'Date' DATE.
END_METHOD.
Function module is as follows
FUNCTION Z_CALENDAR_CALCULATE_DAYS.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(IDENT) LIKE TFACD-IDENT
*" VALUE(START_DATE) LIKE SY-DATUM
*" VALUE(END_DATE) LIKE SY-DATUM
*" EXPORTING
*" VALUE(WORKDAYS) LIKE PA2001-ABWTG
*" VALUE(HOLIDAYS) LIKE PA2001-ABWTG
*" EXCEPTIONS
*" INVALID_RANGE
*" CALENDAR_RANGE_NOT_FOUND
*"----------------------------------------------------------------------
*$*$-------------------------------------------------------------------*
*$*$ Function Module calculates the number of Workdays and the
number *
*$*$ of holidays for the specified calendar within the period
provided *
*$*$-------------------------------------------------------------------*
RANGES: LR_JAHR FOR TFACS-JAHR.
FIELD-SYMBOLS: <MONTH>.
DATA: LT_TFACS LIKE TFACS OCCURS 0 WITH HEADER LINE,
L_START_MONTH(2) TYPE N,
L_START_YEAR(4) TYPE N,
L_START_DAY(2) TYPE N,
L_END_MONTH(2) TYPE N,
L_END_YEAR(4) TYPE N,
L_END_DAY(2) TYPE N,
L_START_FLD TYPE I,
L_END_FLD TYPE I,
L_TIMES TYPE I,
L_MONTH(2) TYPE N,
L_NUM_DAYS TYPE I,
L_DAY TYPE I.
IF START_DATE > END_DATE.
RAISE INVALID_RANGE.
ENDIF.
* Determine the years for the specified period
MOVE: 'I' TO LR_JAHR-SIGN,
'BTW' TO LR_JAHR-OPTION.
WRITE START_DATE+0(4) TO LR_JAHR-LOW.
IF START_DATE+0(4) NE END_DATE+0(4).
WRITE END_DATE+0(4) TO LR_JAHR-HIGH.
ELSE.
WRITE START_DATE+0(4) TO LR_JAHR-HIGH.
ENDIF.
APPEND LR_JAHR.
* Get the entries for the specified Calendar/Years
SELECT * INTO TABLE LT_TFACS
FROM TFACS
WHERE IDENT EQ IDENT
AND JAHR IN LR_JAHR.
IF SY-SUBRC NE 0.
RAISE CALENDAR_RANGE_NOT_FOUND.
ENDIF.
* Separate Dates into Component Parts
WRITE: START_DATE+0(4) TO L_START_YEAR,
START_DATE+4(2) TO L_START_MONTH,
START_DATE+6(2) TO L_START_DAY,
END_DATE+0(4) TO L_END_YEAR,
END_DATE+4(2) TO L_END_MONTH,
END_DATE+6(2) TO L_END_DAY.
* For each year retrieved within TFACS, calculate the number of
days
* per month (for the specified period).
LOOP AT LT_TFACS.
IF LT_TFACS-JAHR EQ L_START_YEAR.
L_START_FLD = L_START_MONTH + 2.
ELSE.
L_START_FLD = 3.
ENDIF.
IF LT_TFACS-JAHR EQ L_END_YEAR.
L_END_FLD = L_END_MONTH + 2.
ELSE.
L_END_FLD = 14.
ENDIF.
L_TIMES = L_END_FLD - L_START_FLD + 1.
DO L_TIMES TIMES.
* Get current Month
ASSIGN COMPONENT L_START_FLD OF STRUCTURE LT_TFACS TO
<MONTH>.
ADD 1 TO L_START_FLD.
L_MONTH = L_START_FLD - 3.
* <month> now contains the factory calendar for the current
month
* When start and End date fall in same month
IF ( LT_TFACS-JAHR EQ L_START_YEAR ) AND
( LT_TFACS-JAHR EQ L_END_YEAR ) AND
( L_MONTH EQ L_START_MONTH ) AND
( L_MONTH EQ L_END_MONTH ).
L_NUM_DAYS = ( STRLEN( <MONTH> ) - L_START_DAY ) -
( STRLEN( <MONTH> ) - L_END_DAY ) + 1.
L_DAY = L_START_DAY - 1.
* When current month is the same as the start month
ELSEIF ( LT_TFACS-JAHR EQ L_START_YEAR ) AND
( L_MONTH EQ L_START_MONTH ).
L_NUM_DAYS = STRLEN( <MONTH> ) - L_START_DAY + 1.
L_DAY = L_START_DAY - 1.
* When current month is the same as the end month
ELSEIF ( LT_TFACS-JAHR EQ L_END_YEAR ) AND
( L_MONTH EQ L_END_MONTH ).
L_NUM_DAYS = L_END_DAY.
L_DAY = 0.
* For all other Months
ELSE.
L_NUM_DAYS = STRLEN( <MONTH> ).
L_DAY = 0.
ENDIF.
PERFORM CALCULATE_DAYS USING L_NUM_DAYS
L_DAY
<MONTH>
CHANGING WORKDAYS
HOLIDAYS.
ENDDO.
ENDLOOP.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form CALCULATE_DAYS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_NUM_DAYS text
*
* -->P_START_DAY text
*
* -->P_MONTH text
*
* <--P_WORKDAYS text
*
* <--P_HOLIDAYS text
*
*----------------------------------------------------------------------*
FORM CALCULATE_DAYS USING P_NUM_DAYS TYPE I
P_START_DAY TYPE I
P_MONTH LIKE TFACS-MON01
CHANGING P_WORKDAYS LIKE PA2001-ABWTG
P_HOLIDAYS LIKE PA2001-ABWTG.
DATA: L_X(1),
L_START_DAY TYPE I.
MOVE P_START_DAY TO L_START_DAY.
DO P_NUM_DAYS TIMES.
MOVE P_MONTH+L_START_DAY(1) TO L_X.
IF L_X EQ '1'.
ADD 1 TO P_WORKDAYS.
ELSEIF L_X EQ '0'.
ADD 1 TO P_HOLIDAYS.
ENDIF.
ADD 1 TO L_START_DAY.
ENDDO.
ENDFORM. " CALCULATE_DAYS
________________________________
From: sap-wug-bounces at mit.edu [mailto:sap-wug-bounces at mit.edu]
On Behalf Of Gopinath Addepalli Prasad
Sent: May 24, 2005 10:38 PM
To: sap-wug at mit.edu
Subject: Escalation & sending external Mail (outlook)
Hi,
Could any one tell me how to find the day as a working day
for giving reminder to the
approver to approve ?
Could any one tell me how to send the external mail
(outlook) from the task approved to request creator..?
Thier help is greatly appriciated.
Regards,
Gopi.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.mit.edu/pipermail/sap-wug/attachments/20050527/a968752d/attachment.htm
More information about the SAP-WUG
mailing list