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