on 10-21-2008 3:48 PM
how i can use a comman subroutine for different place.
i want to make a common subroutine for these two coding.
1----
data: v_date(2) type c,
v_month(4) type c,
v_year(4) type c.
select single eindt from eket
into w_eindt
where ebeln = is_ekko-ebeln.
v_year = w_eindt+0(4).
v_month = w_eindt+4(2).
v_date = w_eindt+6(2).
case v_month.
WHEN '01'.
v_month = 'JAN'.
WHEN '02'.
v_month = 'FEB'.
WHEN '03'.
v_month = 'MAR'.
WHEN '04'.
v_month = 'APR'.
WHEN '05'.
v_month = 'MAY'.
WHEN '06'.
v_month = 'JUN'.
WHEN '07'.
v_month = 'JUL'.
WHEN '08'.
v_month = 'AUG'.
WHEN '09'.
v_month = 'SEP'.
WHEN '10'.
v_month = 'OCT'.
WHEN '11'.
v_month = 'NOV'.
WHEN '12'.
v_month = 'DEC'.
WHEN OTHERS.
ENDCASE.
concatenate v_date v_month v_year into w_eindt1 SEPARATED BY '-' .
condense w_eindt1.
clear : v_year,
v_month,
v_date.
2----
data: v_date1(2) type c,
v_month1(4) type c,
v_year1(4) type c.
v_year1 = is_ekko-bedat+0(4).
v_month1 = is_ekko-bedat+4(2).
v_date1 = is_ekko-bedat+6(2).
case v_month1.
WHEN '01'.
v_month1 = 'JAN'.
WHEN '02'.
v_month1 = 'FEB'.
WHEN '03'.
v_month1 = 'MAR'.
WHEN '04'.
v_month1 = 'APR'.
WHEN '05'.
v_month1 = 'MAY'.
WHEN '06'.
v_month1 = 'JUN'.
WHEN '07'.
v_month1 = 'JUL'.
WHEN '08'.
v_month1 = 'AUG'.
WHEN '09'.
v_month1 = 'SEP'.
WHEN '10'.
v_month1 = 'OCT'.
WHEN '11'.
v_month1 = 'NOV'.
WHEN '12'.
v_month1 = 'DEC'.
WHEN OTHERS.
ENDCASE.
concatenate v_date1 v_month1 v_year1 into w_bedat SEPARATED BY '-' .
condense w_bedat.
clear : v_year1,
v_month1,
v_date1.
----
for 1st coding
I/P is like 22.10.2207
O/P is coming 22-AUG-2007
same for 2nd.
I/P is like 12.07.2005
O/P is coming 12-JUL-2005
i want a subroutine for these.
In your Smartforms,
Select the node Global Definition.
And than select the Form Routines tab.
Here, create your Subroutine (FORM).
FORM GET_DATE USING P_DATE TYPE D
CHANGING P_CHAR_DATE TYPE CHAR20.
* Put all your logic here
ENDFORM.
Now, wherever you have to print the date in the character format, create a Program Lines node and call the subroutine:
Like:
L_DATE = SY-DATUM.
PERFORM GET_DATE USING L_DATE CHANGING L_CHAR_DATE.
Regards,
Naimesh Patel
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Create the Below Function Module and Call it in your Program Line to convert the date Format.
FUNCTION Z_DATE_CONVERT_GLOBAL.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IDATE) TYPE SY-DATUM
*" EXPORTING
*" REFERENCE(DAY) TYPE C
*" REFERENCE(MONTH) TYPE C
*" REFERENCE(YEAR) TYPE C
*" REFERENCE(STEXT) TYPE T247-KTX
*" REFERENCE(LTEXT) TYPE T247-LTX
*" REFERENCE(USERDATE) TYPE C
*" REFERENCE(OUT_DATE) TYPE C
*" EXCEPTIONS
*" INPUT_DATE_IS_INITIAL
*" TEXT_FOR_MONTH_NOT_MAINTAINED
*"----------------------------------------------------------------------
* Date Formats For User Profiles
* 1 DD.MM.YYYY
* 2 MM/DD/YYYY
* 3 MM-DD-YYYY
* 4 YYYY.MM.DD
* 5 YYYY/MM/DD
* 6 YYYY-MM-DD
********************************************************************
TABLES : USR01, T247.
DATA: USRTYPE LIKE USR01-DATFM.
DATA: SEPARATOR(1) TYPE C.
IF IDATE IS INITIAL.
RAISE INPUT_DATE_IS_INITIAL.
ENDIF.
* GET THE DATE COMPONENTS
DAY = IDATE+6(2).
MONTH = IDATE+4(2).
YEAR = IDATE+0(4).
* READ THE TEXT FOR THE MONTH
SELECT SINGLE * FROM T247 WHERE SPRAS EQ SY-LANGU
AND MNR EQ MONTH.
IF SY-SUBRC EQ 0.
MOVE T247-KTX TO STEXT.
MOVE T247-LTX TO LTEXT.
ELSE.
RAISE TEXT_FOR_MONTH_NOT_MAINTAINED.
ENDIF.
* FOR CONVERTING TO THE DATE FORMAT OF THE USER PROFILE.
SELECT SINGLE DATFM FROM USR01 INTO USRTYPE
WHERE BNAME EQ SY-UNAME.
IF SY-SUBRC EQ 0.
CASE USRTYPE.
* when the user profile is****************************
* Date Formats For User Profiles
* 1 DD.MM.YYYY
* 2 MM/DD/YYYY
* 3 MM-DD-YYYY
* 4 YYYY.MM.DD
* 5 YYYY/MM/DD
* 6 YYYY-MM-DD
********************************************************************
WHEN '1'.
SEPARATOR = '.'.
CONCATENATE DAY MONTH YEAR INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
WHEN '2'.
SEPARATOR = '/'.
CONCATENATE MONTH DAY YEAR INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
WHEN '3'.
SEPARATOR = '-'.
CONCATENATE MONTH DAY YEAR INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
WHEN '4'.
SEPARATOR = '.'.
CONCATENATE YEAR MONTH DAY INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
WHEN '5'.
SEPARATOR = '/'.
CONCATENATE YEAR MONTH DAY INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
WHEN '6'.
SEPARATOR = '-'.
CONCATENATE YEAR MONTH DAY INTO USERDATE SEPARATED BY SEPARATOR.
CONCATENATE DAY LTEXT YEAR INTO OUT_DATE SEPARATED BY SPACE.
ENDCASE.
ELSE.
WRITE IDATE DD/MM/YYYY TO USERDATE.
ENDIF.
ENDFUNCTION.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Call your perform from the program lines and in the Global definitions you will find Form Routines go there and write your logic. pass right parameters at each time.
you can call performs in N no. of places.
Thanks,
Sree.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.