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