Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

PERFORM IN SCRIPTS

Former Member
0 Likes
628

i want to pass on 2 date values to a Function module and inreturn i need the total numberr of days between those 2 dates.

My function module name is HR_AUPBS_MONTH_DAY.

Pls provide me the code..its urgent?

Rgds

Giri

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
600

Hi,

/: PERFORM DATE IN PROGRAM ZDATE
/: USING &DATE1&
/: USING &DATE21&
/: CHANGING &YEAR&
/: CHANGING &MONTH&
/: CHANGING &DATE&
/: ENDPERFORM

<b>In program ZDATE,</b>

form Date tables intab structure itcsy
                 outab structure itcsy.

DATA: L_DATE_1 TYPE SY-DATUM,
      L_DATE_2 TYPE SY-DATUM.
DATA: L_YEAR(2),
      L_MONTH(2),
      L_DATE(2).

read table intab with key name = 'DATE1'.
if sy-subrc = 0.
L_DATE_1 = intab-value.
ENDIF.

read table intab with key name = 'DATE2'.
if sy-subrc = 0.
L_DATE_2 = intab-value.
ENDIF.

CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = L_DATE_1
END_DA = L_DATE_2
IMPORTING
NO_YEAR = L_YEAR
NO_MONTH = L_MONTH
NO_DAY = L_DAY
* NO_CAL_DAY = CAL_DAY.

CLEAR OUTTAB.
READ TABLE OUTAB WITH KEY NAME = 'YEAR'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_YEAR.
modify outab index sy-tabix.
ENDIF.

READ TABLE OUTAB WITH KEY NAME = 'MONTH'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_MONTH.
modify outab index sy-tabix.
ENDIF.

READ TABLE OUTAB WITH KEY NAME = 'DATE'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_DATE.
modify outab index sy-tabix.
ENDIF.

copy and paste this code, this will work, in the Script, DATE, MONTH and Year will be avilable ...

Regards

Sudheer

5 REPLIES 5
Read only

anversha_s
Active Contributor
0 Likes
600

hi,

there is no need of any FM for this, just substract it .

Data: datehigh type sy-datum,

datelow type sy-datum.

data: diff type i.

datehigh = sy-datum.

datelow = sy-datum - 100.

diff = datehigh - datelow.

write: diff.

rgds

anver

Read only

Former Member
0 Likes
600

Hi ramada,

Y would you need a fm for that?

v_days = date2 - date1. " will do the same for you.

If you still want to use the fm:

here is the code:

CALL FUNCTION 'HR_AUPBS_MONTH_DAY'

EXPORTING

BEG_DA = P_BEGDA

END_DA = P_ENDDA

IMPORTING

NO_YEAR = P_NO_YEAR

NO_MONTH = P_NO_MON

NO_DAY = P_NO_DAY

NO_CAL_DAY = P_CAL_DAY.

Read only

Former Member
0 Likes
600

HI,

Sample code which is similar to your requirement

Write the following lines of code in your driver program(ZTESTPDF)


 FORM INCR_NUM TABLES INTAB STRUCTURE ITCSY
                     OUTAB STRUCTURE ITCSY.
 
DATA: V_DATE LIKE SY-DATUM , V_CHAR(10) TYPE C.
    READ TABLE OUTAB WITH KEY NAME = 'GV'.
    IF SY-SUBRC = 0.
      V_DATE = SY-DATUM + 1.
      CONCATENATE V_DATE+4(2) V_DATE+6(2) V_DATE+0(4) INTO V_CHAR
      SEPARATED BY '.'.
      OUTAB-VALUE = V_CHAR.
      CONDENSE OUTAB-VALUE.
      MODIFY OUTAB INDEX SY-TABIX.
  ENDIF.
ENDFORM.




write these lines in your script.

/:   DEFINE &AB& TYPE I,                        
/:          &GV&                                
/:   &AB& = 1                                   
/:   PERFORM INCR_NUM IN PROGRAM ZTESTPDF       
/:                      USING &AB&              
/:                      CHANGING &GV&           
/:                      TABLES INPUT_TABLE      
/:                            OUTPUT_TABLE      
/:   ENDPERFORM                                 

Regards,

sailaja.

Read only

Former Member
0 Likes
600

Hi,

lv_days = date1 - date2 .

write lv_days.

Regards

amole

Read only

Former Member
0 Likes
601

Hi,

/: PERFORM DATE IN PROGRAM ZDATE
/: USING &DATE1&
/: USING &DATE21&
/: CHANGING &YEAR&
/: CHANGING &MONTH&
/: CHANGING &DATE&
/: ENDPERFORM

<b>In program ZDATE,</b>

form Date tables intab structure itcsy
                 outab structure itcsy.

DATA: L_DATE_1 TYPE SY-DATUM,
      L_DATE_2 TYPE SY-DATUM.
DATA: L_YEAR(2),
      L_MONTH(2),
      L_DATE(2).

read table intab with key name = 'DATE1'.
if sy-subrc = 0.
L_DATE_1 = intab-value.
ENDIF.

read table intab with key name = 'DATE2'.
if sy-subrc = 0.
L_DATE_2 = intab-value.
ENDIF.

CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = L_DATE_1
END_DA = L_DATE_2
IMPORTING
NO_YEAR = L_YEAR
NO_MONTH = L_MONTH
NO_DAY = L_DAY
* NO_CAL_DAY = CAL_DAY.

CLEAR OUTTAB.
READ TABLE OUTAB WITH KEY NAME = 'YEAR'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_YEAR.
modify outab index sy-tabix.
ENDIF.

READ TABLE OUTAB WITH KEY NAME = 'MONTH'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_MONTH.
modify outab index sy-tabix.
ENDIF.

READ TABLE OUTAB WITH KEY NAME = 'DATE'.
IF SY-SUBRC = 0.
OUTAB-VALUE = L_DATE.
modify outab index sy-tabix.
ENDIF.

copy and paste this code, this will work, in the Script, DATE, MONTH and Year will be avilable ...

Regards

Sudheer