Escalation & sending external Mail (outlook)
Hall, Jim
Jim.Hall at fortisalberta.com
Wed May 25 09:03:19 EDT 2005
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/20050525/720db38c/attachment.htm
More information about the SAP-WUG
mailing list