07-18-2007 10:18 AM
Hello Experts,
whenever a program is created, something like this is put into it
*&---------------------------------------------------------------------*
*& Report ZTEST1234
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST1234.
I need to find a way to edit this
ie make it something like this
*&---------------------------------------------------------------------*
*& Report ZTEST1234
*&
*&---------------------------------------------------------------------*
*& Author :
*& Date :
*& Purpose :
*-----------------------------------------------------------------------*
* Date Changed by Tag Description
*
*&---------------------------------------------------------------------*
REPORT ZTEST1234.
I have found a user-exit SEU00001 but it doesn't seem to get called at that point
07-19-2007 11:51 AM
Hi Kris,
Go to TCODE CMOD,
Create a new Project like ZSE38 as follows.
Check the 'Enhancements Assignments' Radio button, click create and add SEUED001 ( for Editor )
now SAVE, click on Components and select the User Exit that you want to use.
EXIT_SAPLS38E_001 <-- this is a function module.
inside this FM there is an INCLUDE program ZXSEUU08.
double click on it, when a warning message appears in the status bar below press ENTER
to create the program.
write the code you want inside this program. or add the following code.
DATA: it_code(256) TYPE c OCCURS 0.
DATA: wa_code like line of it_code.
DATA: it_new_code(256) TYPE c OCCURS 0.
DATA: lv_linecount TYPE i.
IF OPERATION = 'EDIT'.
read report program into it_code.
DESCRIBE TABLE it_code LINES lv_linecount.
IF lv_linecount LE 10.
read table it_code into wa_code index 5.
if wa_code(9) <> '*& Author'.
read table it_code into wa_code index 1.
append wa_code to it_new_code.
read table it_code into wa_code index 2.
append wa_code to it_new_code.
read table it_code into wa_code index 3.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Author :'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Date :' .
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Purpose :'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Date Changed by Tag Description'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
data: lv_firstline type i.
loop at it_code into wa_code from 4 to 8.
if wa_code = ''.
lv_firstline = sy-tabix.
endif.
endloop.
loop at it_code into wa_code from lv_firstline.
append wa_code to it_new_code.
endloop.
insert report program from it_new_code.
ENDIF.
ENDIF.
ENDIF.
After this, activate the include program.
then go back to CMOD transaction and activate the PROJECT that you've just created.
and you're ready to go........
Regards,
Samson Rodrigues.
07-18-2007 10:20 AM
07-18-2007 10:22 AM
Hi Roja,
because i want it to happen automatically for anyone who makes a program in the system
07-18-2007 11:25 AM
Hi,
U can do this by changing the setting of se38 t-code in its program by inserting different template in it.
Regards,
Ameet
07-18-2007 10:23 AM
Hai Kris,
Try with this, SEUED001.
<b>Please don't forget to reward if found helpfull</b>
Cheers,
Rakesh.
07-18-2007 10:37 AM
Hello Rakesh,
I checked out SEUED001 and the only exit code reached from there is 'EXIT_SAPLSEDTATTR_010'
these are the parameters of that function
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(PROGRAM) LIKE TRDIR-NAME
*" VALUE(OPERATION)
*" EXCEPTIONS
*" CANCELLED
*"----------------------------------------------------------------------
there is no table type paramter in which to insert / edit the required code
07-18-2007 10:41 AM
You can create something like this
Utilities --> More Utilities --> Edit Patterns --> Create Pattern
write the format here
now goto SE38,
press Ctrl+F6
chose the option Other Pattern --> Press F4 --> Chose the pattern and Hit Enter.
Regards
Gopi
07-18-2007 10:42 AM
Hi,
These many exits are there,
EXIT_SAPLEDITOR_001 - User Exit for $$ Editor (Dynamic Pattern
EXIT_SAPLEDITOR_002 - User's Own Function Codes for $$ Editor:
EXIT_SAPLLOCAL_EDT1_001 - User Exit for Editor (Dynamic Pattern)
EXIT_SAPLLOCAL_EDT1_002 - User's Own Function Code in ABAP E
EXIT_SAPLS38E_001 - Exit for ABAP Editor
EXIT_SAPMSEDT_001 - User Exit for Editor (Dynamic Patt
EXIT_SAPMSEDT_002 - User's Own Function Code in ABAP Editor
Cheers,
Rakesh.
07-18-2007 10:50 AM
Yes Rakesh.. i put breakpoints in all of them and only one was reached (as i posted earlier) during program creation
Gopi.. i want it to be automated and not done manually everytime
and it needs to get the name of the current program as well
07-18-2007 10:57 AM
Hello,
I think this EXIT_SAPLWBABAP_010 will do the job for you. Be sure that the project is active, then only it will hit in the break-point.
Regards,
Rakesh.
07-18-2007 11:14 AM
Rakesh,
If i use EXIT_SAPLWBABAP_010 then where do i put the
*& Author :
*& Date :
*& Purpose :
code ?
07-18-2007 11:28 AM
Hi Kris,
I can only give you information about exits. Regarding the coding point of view you have to try it. Please try with the exits i gave you,and check the internal tables available at the break point.
Sorry for the inconvenience.
<b>Reward all helpfull answers</b>
Regards,
Rakesh.
07-18-2007 10:39 AM
Take a look at this link:
http://www.sapsuperusers.com/forums/showthread.php?t=4869
(you must be registered at www.sapsuperusers.com to get access to it, sadly)
There Rich Harper, using information from Rob Dielemans and Matt G. from that site.
07-18-2007 10:53 AM
Hello Vicenç,
Unfortunately i am not a member of that site and for some reason i cannot even join it
Can you please paste whatever you found there over here
07-18-2007 11:35 AM
It's a loooong piece of text + code + images I cannot copy'n'paste easily. I will ask the site's owner to provide non-registered access to the Knowledge Corner the link belongs to.
<b>Rich's Knowledge Corner
0019 - Editor Patterns</b>
<u>Source Code Patterns.</u>
In the ABAP editor there is the functionality to insert code into your program using what is called a pattern. You use this functionality each time you insert a function call for example. This menu option is reached via the menu path SE38->Edit->Pattern
By entering a function module name, or selecting one of the other options SAP will automatically enter the correct code into your program enabling you to just "fill in the blanks".
One of the things that I do when I get to a new site is to enter my own program header and procedure headers as a pattern using the Pattern Editor (SE38->Utilities->More Utilities->Edit Pattern. You provide a pattern name (such as 'Header'), enter the text using SE38, save it and then use it. By selecting the 'Other Pattern' radio button in the pattern selection window shown above and entering your pattern name in the relevant field, the lines of text you have defined will be entered into your source code at the current cursor location.
This works well for static patterns, Ie patterns that do not have any variable text in them. However, Rob Dielemans (Rob) has sent in some code that allows you to define a dynamic pattern, again a header which automatically fills in various fields.
This has been tested in 4.6c, but not on any other versions although the pattern editor has been around since 3.1 so you might be lucky.....
Whilst this has been written to produce a program header, SAP when inserting a pattern looks for a function module that contains the name of your pattern followed by the string '_editor_exit'. This is then called allowing you to do whatever processing you require before returning any results back to the editor where they are dumped into your source code.
To implement this, create your pattern in the pattern editor as described above. The pattern should contain only one line of text:
[code]----
*$&$MUSTER
-
[/code]
The next thing to do is to create the function module that is called. Create a new function group first (because I can see this becoming extremely useful.....) and then insert a new function module into the group. This function module should have a single table parameter of structure 'ABAPSOURCE'.
Anything that you place in this table will be copied back to your own source.
Taking Robs example function, he is inserting the user name, department and a few other bits and bobs into the header:
[code]FUNCTION ZIPS_MODEL_HEADER_EDITOR_EXIT.
*"----
""Local interface:
*" TABLES
*" BUFFER STRUCTURE ABAPSOURCE
*"----
<DATA>
DATA: l_commentline1 LIKE LINE OF buffer,
l_commentline2 LIKE LINE OF buffer,
l_commentline3 LIKE LINE OF buffer,
l_firstname LIKE adrp-name_first,
l_lastname LIKE adrp-name_last,
l_function LIKE adcp-function,
l_department LIKE adcp-department,
l_datum(10).
<TABLES>
TABLES: usr21, "Assign user name address key
adrp, "Persons (central address administration)
adcp. "Person/Address assignment (central address administration)
*additional:, although using the comment charater '"', the system
converts it to '*'
CONCATENATE '"##############################'
'#########################################' INTO l_commentline1.
CONCATENATE '"----
'
'----
' INTO l_commentline2.
CONCATENATE '"=================================='
'=====================================' INTO l_commentline3.
buffer = l_commentline1.
APPEND buffer.
buffer = '* Report : '.
APPEND buffer.
buffer = '* Version : 1.00'.
APPEND buffer.
initialize first and last name, if not found in database
l_firstname = 'first name'.
l_lastname = 'last name'.
retrieval of first and last name in database
SELECT SINGLE * FROM usr21 WHERE bname = sy-uname.
IF sy-subrc = 0.
SELECT SINGLE * FROM adrp WHERE persnumber = usr21-persnumber.
IF sy-subrc = 0.
l_firstname = adrp-name_first.
l_lastname = adrp-name_last.
retrtieval of function and department of user
SELECT SINGLE * FROM adcp WHERE persnumber = usr21-persnumber.
IF sy-subrc = 0.
l_function = adcp-function.
l_department = adcp-department.
ENDIF.
ENDIF.
ENDIF.
CONCATENATE '* Author :' sy-uname' -' l_firstname l_lastname INTO
buffer SEPARATED BY space.
APPEND buffer.
CONCATENATE '* Function :' l_function
' Department :' l_department
INTO buffer SEPARATED BY space.
APPEND buffer.
WRITE sy-datum DD/MM/YYYY TO l_datum.
CONCATENATE '* Date : ' l_datum INTO buffer SEPARATED BY space.
APPEND buffer.
buffer = l_commentline2.
APPEND buffer.
buffer = '* Title : '.
APPEND buffer.
buffer = '* Purpose : '.
APPEND buffer.
buffer = '* Details : '.
APPEND buffer.
buffer = l_commentline3.
APPEND buffer.
buffer = '* Change History'.
APPEND buffer.
buffer = l_commentline2.
APPEND buffer.
buffer = '* Correction on version : 1.00'.
APPEND buffer.
buffer = '* New version : 1.01'.
APPEND buffer.
buffer = '* Author :'.
APPEND buffer.
buffer = '* Date :'.
APPEND buffer.
buffer = '* Reason :'.
APPEND buffer.
buffer = '* Change :'.
APPEND buffer.
buffer = l_commentline1.
APPEND buffer.
ENDFUNCTION.[/code]
Activate the function and away you go!
Entering the pattern name 'ZIPS_MODEL_HEADER' into the pattern name field produces the following output in the ABAP Editor:
[code]*#######################################################################
Report :
Version : 1.00
Author : BCUSER - Richard Harper
Function : ABAP Programmer Department : My Office
Date : 18.06.2004
*----
Title :
Purpose :
Details :
*=======================================================================
Change History
*----
Correction on version : 1.00
New version : 1.01
Author :
Date :
Reason :
Change :
*#######################################################################[/code]
Neat huh ??
Thanks Rob!
Further to this, Mattg has also been doing some research into editor patterns and has come up with the following:
If the pattern contains *$&$EXIT at the start of line 1, then a standard user exit is called.
The userexit enhancement is SEUED001, the component to change is EXIT_SAPLLOCAL_EDT1_001.
Now this allows you to add the code from before. This is the UE code;
[code]CASE KEYWORD.
WHEN 'MATTG_HEADER'.
PERFORM MATTG_HEADER TABLES BUFFER.
WHEN 'MATTG_HISTORY'.
CALL FUNCTION 'ZZMATT_HISTORY_EDITOR_EXIT'
TABLES
BUFFER = BUFFER.
ENDCASE.[/code]
Just the change the function call to a perform, as above, BUFFER has type ABAPSOURCE.
If you want to get the Transport Request information for the object you are editing try the following code;
[code] TABLES: E07T. "WBO and Transport: Short Texts for Requests/Tasks
DATA: WA_BUFFER TYPE ABAPSOURCE,
ORDERNUM LIKE E070-TRKORR,
L_PROGFIELD LIKE BDCDATA-FNAM.
FIELD-SYMBOLS: <TRDIR> LIKE TRDIR,
<TRKEY> LIKE TRKEY.
Additional:, although using the comment character '"', the system
converts it to '*'
CONCATENATE '"----
'
'----
*'
INTO L_COMMENTLINE2.
PERFORM GET_DEVELOPER_NAME USING SY-UNAME
CHANGING L_FIRSTNAME
L_LASTNAME
L_FUNCTION
L_DEPARTMENT.
WRITE SY-DATUM DD/MM/YYYY TO L_DATUM.
CONCATENATE '* Date:' L_DATUM
'Author:' SY-UNAME '-' L_FIRSTNAME L_LASTNAME
INTO WA_BUFFER SEPARATED BY SPACE.
IF WA_BUFFER+71(1) = SPACE.
WA_BUFFER+71(1) = '*'.
ENDIF.
APPEND WA_BUFFER TO BUFFER.
L_PROGFIELD = '(SAPLS38E)TRDIR'.
ASSIGN (L_PROGFIELD) TO <TRDIR>.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'RS_CORR_INSERT'
EXPORTING
OBJECT = <TRDIR>-NAME
OBJECT_CLASS = 'ABAP'
MODE = ' '
GLOBAL_LOCK = ' '
DEVCLASS = ' '
KORRNUM = ' '
AUTHOR = ' '
MASTER_LANGUAGE = ' '
GENFLAG = ' '
PROGRAM = ' '
OBJECT_CLASS_SUPPORTS_MA = ' '
EXTEND = ' '
IMPORTING
DEVCLASS =
KORRNUM = "Task number
ORDERNUM = ORDERNUM "Request number
NEW_CORR_ENTRY =
AUTHOR =
TRANSPORT_KEY =
NEW_EXTEND =
EXCEPTIONS
CANCELLED = 1
PERMISSION_FAILURE = 2
UNKNOWN_OBJECTCLASS = 3
OTHERS = 4
.
IF SY-SUBRC = 0.
IF NOT ORDERNUM IS INITIAL.
SELECT SINGLE * FROM E07T
WHERE TRKORR = ORDERNUM.
IF SY-SUBRC <> 0.
CLEAR E07T.
ENDIF.
CONCATENATE '*' ORDERNUM E07T-AS4TEXT
INTO WA_BUFFER SEPARATED BY SPACE.
ELSE.
L_PROGFIELD = '(SAPLS38E)TRANSPORT_KEY'.
ASSIGN (L_PROGFIELD) TO <TRKEY>.
CONCATENATE '* Development class;' <TRKEY>-DEVCLASS
'WYTK9&$&$' INTO WA_BUFFER SEPARATED BY SPACE.
ENDIF.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
L_PROGFIELD = '(SAPLS38E)TRANSPORT_KEY'.
ASSIGN (L_PROGFIELD) TO <TRKEY>.
CONCATENATE '* Development class;' <TRKEY>-DEVCLASS
'WYTK9&$&$' INTO WA_BUFFER SEPARATED BY SPACE.
ENDIF.
ELSE.
L_PROGFIELD = '(SAPLS38E)TRANSPORT_KEY'.
ASSIGN (L_PROGFIELD) TO <TRKEY>.
CONCATENATE '* Development class;' <TRKEY>-DEVCLASS
'WYTK9&$&$' INTO WA_BUFFER SEPARATED BY SPACE.
ENDIF.
IF WA_BUFFER+71(1) = SPACE.
WA_BUFFER+71(1) = '*'.
ENDIF.
APPEND WA_BUFFER TO BUFFER.
L_PROGFIELD = '(SAPLS38E)KORRNUM'.
ASSIGN (L_PROGFIELD) TO <KORRNUM>.
WA_BUFFER = '* Description: '.
WA_BUFFER+71(1) = '*'.
APPEND WA_BUFFER TO BUFFER.
CLEAR WA_BUFFER.
WA_BUFFER+00(1) = '*'.
WA_BUFFER+71(1) = '*'.
APPEND WA_BUFFER TO BUFFER.
APPEND WA_BUFFER TO BUFFER.
APPEND L_COMMENTLINE2 TO BUFFER.[/code]
The FORM GET_DEVELOPER_NAME is just the code from your existing example.
This is on a 4.6B system (patch level 7), so should be usable by most people.
<b>4.7 Enterprise</b>
This functionality is still available in 4.7, the modifications required to the function module have been sent in by jpb2001. The only change required is that the table BUFFER must be of type RSWSOURCET instead of ABAPSOURCE to cope with the extra line size allowed in Enterprise.
-
Remember, all the work was done by Rob Dielemans and MattG, compiled and tested by Richard Harper, from www.sapsuperusers.com
07-18-2007 12:44 PM
Hi,
Execute the following program in T-Code: SE38.
&----
*& Report ZTEMPLATE
*&
&----
Description: The purpose of the program is to generate a template file
depending on the user selections on the selection screen.
This will enable the uniformity in the documentation of
programs across the users in a project.
&----
REPORT Z_SLN_TEMPLATE
MESSAGE-ID PC.
----
Internal Tables
----
DATA: BEGIN OF ITAB OCCURS 0,
LINE(72),
END OF ITAB.
DATA: V_UNAME(40).
----
*Tables
----
TABLES:USR21.
----
Selection Screen
----
Program header
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE B1TIT.
Program Name
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T01.
PARAMETERS P_REPID LIKE SY-REPID DEFAULT 'ZXXXXXXX' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Line Size
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T02.
PARAMETERS P_LINSZ LIKE SY-LINSZ DEFAULT 80.
SELECTION-SCREEN END OF LINE.
Line Count
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T03.
PARAMETERS P_LINCT LIKE SY-LINCT DEFAULT 64.
SELECTION-SCREEN END OF LINE.
Message ID
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T04.
PARAMETERS P_MSGID LIKE T100A-ARBGB DEFAULT 'ZZ'.
SELECTION-SCREEN END OF LINE.
No Standard Page Header
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T05.
PARAMETERS: P_STDHD AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
Title
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T06.
PARAMETERS: P_TITLE(70) DEFAULT 'Test Program' LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF LINE.
Copyright
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T08.
PARAMETERS: P_CPRT(70) LOWER CASE
DEFAULT '@ copyright 2007 by Intelligroup Inc.'.
SELECTION-SCREEN END OF LINE.
User
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(26) B1T07.
PARAMETERS: P_UNAME(50) DEFAULT SY-UNAME LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
Sections
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE B2TIT.
Tables, Info Types & Type Pools
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_TSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(24) B2T01.
PARAMETERS P_OSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 30(24) B2T10.
PARAMETERS P_LSECT AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 57(23) B2T11.
SELECTION-SCREEN END OF LINE.
Constants, Variables & Structures
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_CSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(24) B2T02.
PARAMETERS P_VSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 30(24) B2T03.
PARAMETERS P_SSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 57(23) B2T04.
SELECTION-SCREEN END OF LINE.
Internal Tables, Ranges & Field Symbols
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_ISECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(24) B2T05.
PARAMETERS P_RSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 30(24) B2T06.
PARAMETERS P_FSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 57(23) B2T07.
SELECTION-SCREEN END OF LINE.
Field Groups, Selection Screen
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_GSECT AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(24) B2T08.
PARAMETERS P_PSECT AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 30(24) B2T09.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
Events
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE B3TIT.
Initialization & At Selection screen output
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_IEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T01.
PARAMETERS P_OEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T02.
SELECTION-SCREEN END OF LINE.
At Selection screen value request & At selection screen help request
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_VEVEN AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T03.
PARAMETERS P_HEVEN AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T04.
SELECTION-SCREEN END OF LINE.
At selection screen & Start of selection
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_SEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T05.
PARAMETERS P_GEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T06.
SELECTION-SCREEN END OF LINE.
End of selection & Top of page
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_PEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T07.
PARAMETERS P_TEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T08.
SELECTION-SCREEN END OF LINE.
End of page & At line selection
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_EEVEN AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T09.
PARAMETERS P_LEVEN AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T10.
SELECTION-SCREEN END OF LINE.
At user command & At PFn
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS P_UEVEN AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(35) B3T11.
PARAMETERS P_FEVEN AS CHECKBOX." DEFAULT 'X'.
SELECTION-SCREEN COMMENT 42(35) B3T12.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B3.
Formatting Options
SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE B4TIT.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_UPPER RADIOBUTTON GROUP OPT.
SELECTION-SCREEN COMMENT 3(15) B4T02.
PARAMETERS: P_LOWER RADIOBUTTON GROUP OPT DEFAULT 'X'.
SELECTION-SCREEN COMMENT 21(15) B4T03.
SELECTION-SCREEN COMMENT 39(29) B4T01.
PARAMETERS: P_CFILL TYPE C DEFAULT '-' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B4.
Download File Parameter
SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE B5TIT.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(15) B5T01.
PARAMETERS P_FNAME LIKE IBIPPARMS-PATH
DEFAULT 'C:\Template.TXT' OBLIGATORY.
SELECTION-SCREEN COMMENT 65(2) B5T03.
PARAMETERS P_OVERW AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 70(10) B5T02.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B5.
----
Initialization
----
INITIALIZATION.
Set Selection screen labels
PERFORM SET_LABEL_TEXTS.
----
At Selection screen on value request
----
File Lookup for PC File Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
PERFORM GET_PC_FILE CHANGING P_FNAME.
----
At selection Screen
----
AT SELECTION-SCREEN.
Validate Program name
PERFORM VALIDATE_PROGRAM_NAME.
Validate Message Class
PERFORM VALIDATE_MESSAGE_CLASS.
Validate PC File name
IF P_OVERW IS INITIAL.
PERFORM VALIDATE_PC_FILE.
ENDIF.
----
Start of selection
----
START-OF-SELECTION.
Populate Report Statement
PERFORM POPULATE_REPORT_HEADER.
Populate Program Documentation
PERFORM POPULATE_PROGRAM_DETAILS.
Populate sections
PERFORM POPULATE_SECTIONS.
Populate events
PERFORM POPULATE_EVENTS.
----
End of selection
----
END-OF-SELECTION.
Download Template
PERFORM DOWNLOAD_TEMPLATE.
IF SY-SUBRC EQ 0.
MESSAGE S011 WITH 'Template Downloaded to File'.
ELSE.
MESSAGE S011 WITH 'Unable download Template to File'.
ENDIF.
EXIT.
&----
*& Form POPULATE_REPORT_HEADER
&----
Populate Report Statement
----
FORM POPULATE_REPORT_HEADER.
Local Variable
DATA: V_CHAR(10) TYPE C. " For Converting INT to CHAR
Populating Report statement
CONCATENATE 'Report' P_REPID INTO ITAB-LINE SEPARATED BY ' '.
APPEND ITAB.
CLEAR ITAB.
Line Size
IF NOT P_LINSZ IS INITIAL.
WRITE P_LINSZ TO V_CHAR LEFT-JUSTIFIED.
CONCATENATE 'Line-size' V_CHAR INTO ITAB-LINE+7 SEPARATED BY ' '.
APPEND ITAB.
CLEAR ITAB.
ENDIF.
Line Count
IF NOT P_LINCT IS INITIAL.
WRITE P_LINCT TO V_CHAR LEFT-JUSTIFIED.
CONCATENATE 'Line-count' V_CHAR INTO ITAB-LINE+7 SEPARATED BY ' '.
APPEND ITAB.
CLEAR ITAB.
ENDIF.
Message ID
IF NOT P_MSGID IS INITIAL.
CONCATENATE 'Message-id' P_MSGID INTO ITAB-LINE+7 SEPARATED BY ' '.
APPEND ITAB.
CLEAR ITAB.
ENDIF.
No Standard Page Heading
IF NOT P_STDHD IS INITIAL.
ITAB-LINE+7 = 'No Standard Page Heading'.
APPEND ITAB.
CLEAR ITAB.
ENDIF.
End Last statement with '.'
DESCRIBE TABLE ITAB LINES SY-TABIX.
READ TABLE ITAB INDEX SY-TABIX.
CONCATENATE ITAB-LINE '.' INTO ITAB-LINE.
MODIFY ITAB INDEX SY-TABIX.
Check whether the template is required in uppercase
IF NOT P_UPPER IS INITIAL.
LOOP AT ITAB.
TRANSLATE ITAB TO UPPER CASE.
MODIFY ITAB.
ENDLOOP.
ENDIF.
ENDFORM. " POPULATE_REPORT_HEADER
&----
*& Form INSERT_HEADER
&----
Header comments
----
-->P_TEXT HEADER TEXT *
----
FORM INSERT_HEADER USING VALUE(P_TEXT) TYPE C.
PERFORM FORMAT_LINE.
IF NOT P_UPPER IS INITIAL.
TRANSLATE P_TEXT TO UPPER CASE.
ENDIF.
ITAB-LINE+0(1) = '*'.
ITAB-LINE+2 = P_TEXT.
ITAB-LINE+71(1) = '*'.
APPEND ITAB.
CLEAR ITAB.
PERFORM FORMAT_LINE.
ENDFORM. " INSERT_HEADER
&----
*& Form FORMAT_LINE
&----
Format Comment Line according to the user requirement
----
FORM FORMAT_LINE.
ITAB-LINE+0(1) = '*'.
ITAB-LINE+71(1) = '*'.
DO 70 TIMES.
ITAB-LINE+SY-INDEX(1) = P_CFILL.
ENDDO.
APPEND ITAB.
CLEAR ITAB.
ENDFORM. " FORMAT_LINE
&----
*& Form POPULATE_PROGRAM_DETAILS
&----
Populate Program Information
----
FORM POPULATE_PROGRAM_DETAILS.
Local Variable
DATA: V_DATE(10) TYPE C. " Convert Date to CHAR format
WRITE SY-DATUM TO V_DATE.
Program Details
CONCATENATE V_UNAME ' (Intelligroup)' INTO V_UNAME.
IF NOT P_CPRT IS INITIAL.
PERFORM INSERT_COPYRIGHT USING 'Copyright statement'.
ENDIF.
PERFORM INSERT_HEADER USING 'Program Details'.
PERFORM INSERT_LABEL USING: 'Program Name:' P_REPID,
'Date :' V_DATE,
'Author :' P_UNAME,
'Description :' P_TITLE,
'Transport No:' ' '.
Change Log
PERFORM INSERT_HEADER USING 'Change Log'.
PERFORM INSERT_LABEL USING: "'Change No :' ' ',
'Date :' ' ',
'Author :' ' ',
'Description :' ' ',
'Transport No:' ' '.
ENDFORM. " POPULATE_PROGRAM_DETAILS
&----
*& Form INSERT_LABEL
&----
Insert Labels
----
-->P_LABEL LABEL NAME *
-->P_VALUE LABEL VALUE *
----
FORM INSERT_LABEL USING VALUE(P_LABEL) TYPE C
P_VALUE TYPE C.
CONCATENATE '*' P_LABEL P_VALUE INTO ITAB-LINE SEPARATED BY ' '.
IF NOT P_UPPER IS INITIAL.
TRANSLATE ITAB-LINE TO UPPER CASE.
ENDIF.
APPEND ITAB.
CLEAR ITAB.
ENDFORM. " INSERT_LABEL
&----
*& Form SET_LABEL_TEXTS
&----
Set Selection screen Labels
----
FORM SET_LABEL_TEXTS.
PERFORM GET_USERNAME.
CONCATENATE P_UNAME ' (Intelligroup)' INTO P_UNAME.
B1TIT = 'Program'.
B1T01 = 'Program Name'.
B1T02 = 'Line Size'.
B1T03 = 'Line Count'.
B1T04 = 'Message Class'.
B1T05 = 'No Standard Page Heading'.
B1T06 = 'Program Title'.
B1T07 = 'Author'.
B1T08 = 'Copyright Statement'.
B2TIT = 'Sections'.
B2T01 = 'Tables'.
B2T02 = 'Constants'.
B2T03 = 'Variables'.
B2T04 = 'Structures'.
B2T05 = 'Internal Tables'.
B2T06 = 'Ranges'.
B2T07 = 'Field Symbols'.
B2T08 = 'Field Groups'.
B2T09 = 'Selection Screen'.
B2T10 = 'Info Types'.
B2T11 = 'Type Pools'.
B3TIT = 'Events'.
B3T01 = 'Initialization'.
B3T02 = 'At Selection Screen Output'.
B3T03 = 'At Selection Screen Value Request'.
B3T04 = 'At Selection Screen Help Request'.
B3T05 = 'At Selection Screen'.
B3T06 = 'Start of Selection'.
B3T07 = 'End of Selection'.
B3T08 = 'Top of Page'.
B3T09 = 'End of Page'.
B3T10 = 'At Line Selection'.
B3T11 = 'At User Command'.
B3T12 = 'At PFn'.
B4TIT = 'Comments in'.
B4T01 = 'Filler Character for Comments'.
B4T02 = 'Upper Case'.
B4T03 = 'Mixed Case'.
B5TIT = 'Download to File'.
B5T01 = 'PC Filename'.
B5T02 = 'Overwrite'.
B5T03 = ' '.
ENDFORM. " SET_LABEL_TEXTS
&----
*& Form POPULATE_SECTIONS
&----
Populate Sections
----
FORM POPULATE_SECTIONS.
Tables
IF NOT P_TSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Tables'.
PERFORM INSERT_DETAIL USING 'Tables: xxxx.' 0.
ENDIF.
Info Types
IF NOT P_OSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Infotypes'.
PERFORM INSERT_DETAIL USING 'Infotypes: xxxx.' 0.
ENDIF.
Type Pools
IF NOT P_LSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Type Pools'.
PERFORM INSERT_DETAIL USING 'Type-Pools: xxxx.' 0.
ENDIF.
Constants
IF NOT P_CSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Constants'.
PERFORM INSERT_DETAIL USING 'Constants: xxxx like yyyy.' 0.
ENDIF.
Variables
IF NOT P_VSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Variables'.
PERFORM INSERT_DETAIL USING 'Data: xxxx like yyyy.' 0.
ENDIF.
Structures
IF NOT P_SSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Structures'.
PERFORM INSERT_DETAIL USING 'Data: Begin of yyyy,' 0.
PERFORM INSERT_DETAIL USING ' End of xxxx.' 0.
ENDIF.
Internal Tables
IF NOT P_ISECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Internal Tables'.
PERFORM INSERT_DETAIL USING 'Data: Begin of yyyy occurs 0,' 0.
PERFORM INSERT_DETAIL USING ' End of xxxx.' 0.
ENDIF.
Ranges
IF NOT P_RSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Ranges'.
PERFORM INSERT_DETAIL USING 'Ranges: xxxx for yyyy.' 0.
ENDIF.
Field Symbols
IF NOT P_FSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Field Symbols'.
PERFORM INSERT_DETAIL USING 'Field-symbols: <fs_xxxx>.' 0.
ENDIF.
Field Groups
IF NOT P_GSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Field Groups'.
PERFORM INSERT_DETAIL USING 'Field-groups: xxxx.' 0.
ENDIF.
Selection Screen
IF NOT P_PSECT IS INITIAL.
PERFORM INSERT_HEADER USING 'Selection Screen'.
PERFORM INSERT_DETAIL USING :
'Selection-screen begin of block b1 with frame title xxxx.' 0,
' Select-options: xxxx for yyyy.' 0,
' Parameters: xxxx like yyyy.' 0,
'Selection-screen end of block b1.' 0.
ENDIF.
ENDFORM. " POPULATE_SECTIONS
&----
*& Form INSERT_DETAIL
&----
Insert Detail Line
----
-->P_TEXT DETAIL TEXT *
-->P_POSI POSITION *
----
FORM INSERT_DETAIL USING VALUE(P_TEXT) TYPE C
VALUE(P_POSI) TYPE I.
IF NOT P_UPPER IS INITIAL.
TRANSLATE P_TEXT TO UPPER CASE.
ENDIF.
ITAB-LINE+P_POSI = P_TEXT.
APPEND ITAB.
CLEAR ITAB.
ENDFORM. " INSERT_DETAIL
&----
*& Form POPULATE_EVENTS
&----
POPULATE EVENTS
----
FORM POPULATE_EVENTS.
PERFORM INSERT_EVENT USING: 'P_IEVEN', " Initialization
'P_OEVEN', " At Selection Screen Output
'P_VEVEN', " At Selection Screen Value
'P_HEVEN', " At Selection Screen Help
'P_SEVEN', " At Selection Screen
'P_GEVEN', " Start of Selection
'P_PEVEN', " End of Selection
'P_TEVEN', " Top Of Page
'P_EEVEN', " End of Page
'P_LEVEN', " At Line Selection
'P_UEVEN', " At User command
'P_FEVEN'. " At PFn
ENDFORM. " POPULATE_EVENTS
&----
*& Form INSERT_EVENT
&----
Insert Event
----
-->P_FIELD FIELD NAME *
----
FORM INSERT_EVENT USING VALUE(P_FIELD) TYPE C.
Field Symbol for storing the Field Name
FIELD-SYMBOLS: <FS_FLD>.
Assign field to Field symbol
ASSIGN (P_FIELD) TO <FS_FLD>.
If the field contains value insert respective event
IF NOT <FS_FLD> IS INITIAL.
CASE P_FIELD.
Initialization
WHEN 'P_IEVEN'.
PERFORM INSERT_HEADER USING 'Initialization'.
PERFORM INSERT_DETAIL USING 'Initialization.' 0.
At selection screen output
WHEN 'P_OEVEN'.
PERFORM INSERT_HEADER USING 'At Selection Screen Output'.
PERFORM INSERT_DETAIL USING 'At selection-screen output.' 0.
At selection screen value request
WHEN 'P_VEVEN'.
PERFORM INSERT_HEADER USING
'At Selection Screen On Value Request'.
PERFORM INSERT_DETAIL USING
'At selection-screen on value-request for xxxx.' 0.
At selection screen help request
WHEN 'P_HEVEN'.
PERFORM INSERT_HEADER USING
'At Selection Screen On Help Request'.
PERFORM INSERT_DETAIL USING
'At selection-screen on help-request for xxxx.' 0.
At selection screen
WHEN 'P_SEVEN'.
PERFORM INSERT_HEADER USING 'At Selection Screen'.
PERFORM INSERT_DETAIL USING 'At selection-screen.' 0.
Start of selection
WHEN 'P_GEVEN'.
PERFORM INSERT_HEADER USING 'Start Of Selection'.
PERFORM INSERT_DETAIL USING 'Start-of-selection.' 0.
End of selection
WHEN 'P_PEVEN'.
PERFORM INSERT_HEADER USING 'End Of Selection'.
PERFORM INSERT_DETAIL USING 'End-of-selection.' 0.
Top of page
WHEN 'P_TEVEN'.
PERFORM INSERT_HEADER USING 'Top Of Page'.
PERFORM INSERT_DETAIL USING 'Top-of-page.' 0.
End of page
WHEN 'P_EEVEN'.
PERFORM INSERT_HEADER USING 'End Of Page'.
PERFORM INSERT_DETAIL USING 'End-of-page.' 0.
At line selection
WHEN 'P_LEVEN'.
PERFORM INSERT_HEADER USING 'At Line Selection'.
PERFORM INSERT_DETAIL USING 'At line-selection.' 0.
At user command
WHEN 'P_UEVEN'.
PERFORM INSERT_HEADER USING 'At User Command'.
PERFORM INSERT_DETAIL USING 'At user-command.' 0.
At PFn
WHEN 'P_FEVEN'.
PERFORM INSERT_HEADER USING 'At Pfn'.
PERFORM INSERT_DETAIL USING 'At pfn.' 0.
ENDCASE.
ENDIF.
ENDFORM. " INSERT_EVENT
&----
*& Form VALIDATE_PROGRAM_NAME
&----
Validate Program Name
----
FORM VALIDATE_PROGRAM_NAME.
TABLES: TRDIR.
Check whether the program with the given name already exists
SELECT SINGLE NAME
INTO TRDIR-NAME
FROM TRDIR
WHERE NAME = P_REPID.
If program already exists display error
IF SY-SUBRC EQ 0.
MESSAGE E011 WITH 'Program Already Exists'.
ELSEIF P_REPID0(1) NE 'Z' AND P_REPID0(1) NE 'Y'.
MESSAGE E011 WITH 'Program Name has to start with Z or Y'.
ENDIF.
ENDFORM. " VALIDATE_PROGRAM_NAME
&----
*& Form VALIDATE_MESSAGE_CLASS
&----
Validate Message Class
----
FORM VALIDATE_MESSAGE_CLASS.
TABLES: T100A.
Check whether the message class exists
SELECT SINGLE ARBGB
INTO T100A-ARBGB
FROM T100A
WHERE ARBGB = P_MSGID.
If message class not available display error
IF SY-SUBRC NE 0.
MESSAGE E011 WITH 'Invalid Message Class'.
ENDIF.
ENDFORM. " VALIDATE_MESSAGE_CLASS
&----
*& Form VALIDATE_PC_FILE
&----
Validate Pc file name
----
FORM VALIDATE_PC_FILE.
Local Variables
DATA: L_RESULT. " Stores result of Function Module
Check whether PC File Exists
CALL FUNCTION 'WS_QUERY'
EXPORTING
ENVIRONMENT = ' '
FILENAME = P_FNAME
QUERY = 'FE'
WINID = ' '
IMPORTING
RETURN = L_RESULT
EXCEPTIONS
INV_QUERY = 1
NO_BATCH = 2
FRONTEND_ERROR = 3
OTHERS = 4.
If File already exists
IF L_RESULT EQ '1'.
MESSAGE E011 WITH 'PC File already Exists, Check file name'.
ENDIF.
ENDFORM. " VALIDATE_PC_FILE
----
Form GET_PC_FILE
----
Get PC File Name with Path
----
<--P_L_DFILE PC File Name Including Path
----
FORM GET_PC_FILE CHANGING P_L_DFILE LIKE IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_DFILE'
IMPORTING
FILE_NAME = P_L_DFILE
EXCEPTIONS
OTHERS = 1.
ENDFORM. " GET_PC_FILE
&----
*& Form DOWNLOAD_TEMPLATE
&----
Download template to PC File
----
FORM DOWNLOAD_TEMPLATE.
Local Variables.
DATA: L_FNAME LIKE RLGRAP-FILENAME.
L_FNAME = P_FNAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = L_FNAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC = 0.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
COMMANDLINE = L_FNAME
PROGRAM = 'NOTEPAD'
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
GUI_REFUSE_EXECUTE = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE I011 WITH 'Error in opening notepad'.
STOP.
ENDIF.
ENDIF.
ENDFORM. " DOWNLOAD_TEMPLATE
&----
*& Form INSERT_COPYRIGHT
&----
text
----
FORM INSERT_COPYRIGHT USING P_TEXT.
PERFORM FORMAT_LINE.
IF NOT P_UPPER IS INITIAL.
TRANSLATE P_TEXT TO UPPER CASE.
ENDIF.
ITAB-LINE+0(1) = '*'.
ITAB-LINE+2 = P_TEXT.
ITAB-LINE+71(1) = '*'.
APPEND ITAB.
CLEAR ITAB.
ITAB-LINE+0(1) = '*'.
ITAB-LINE+2 = P_CPRT.
ITAB-LINE+71(1) = '*'.
APPEND ITAB.
CLEAR ITAB.
PERFORM FORMAT_LINE.
ENDFORM. " INSERT_COPYRIGHT
&----
*& Form GET_USERNAME
&----
GET USERNAME
----
FORM GET_USERNAME.
CLEAR : V_UNAME,USR21.
DATA:V_FNAME(40),V_LNAME(40).
SELECT SINGLE * FROM USR21 WHERE BNAME = P_UNAME.
IF SY-SUBRC = 0.
SELECT SINGLE NAME_FIRST NAME_LAST INTO (V_FNAME,V_LNAME)
FROM ADRP
WHERE PERSNUMBER = USR21-PERSNUMBER.
IF SY-SUBRC NE 0.
P_UNAME = SY-UNAME.
ELSE.
CONCATENATE V_FNAME V_LNAME INTO P_UNAME SEPARATED BY SPACE.
ENDIF.
ENDIF.
ENDFORM. " GET_USERNAME
.
Regards,
Bhaskar
07-19-2007 7:26 AM
Vicenc, the program is useful but still requires one to go to the pattern option
The answer by Bhaskar is useful for generating a template into a text file and then copying that into a program
Whilst these are handy, it still does not meet my requirement properly
still waiting for the 10 point answer...
07-19-2007 11:51 AM
Hi Kris,
Go to TCODE CMOD,
Create a new Project like ZSE38 as follows.
Check the 'Enhancements Assignments' Radio button, click create and add SEUED001 ( for Editor )
now SAVE, click on Components and select the User Exit that you want to use.
EXIT_SAPLS38E_001 <-- this is a function module.
inside this FM there is an INCLUDE program ZXSEUU08.
double click on it, when a warning message appears in the status bar below press ENTER
to create the program.
write the code you want inside this program. or add the following code.
DATA: it_code(256) TYPE c OCCURS 0.
DATA: wa_code like line of it_code.
DATA: it_new_code(256) TYPE c OCCURS 0.
DATA: lv_linecount TYPE i.
IF OPERATION = 'EDIT'.
read report program into it_code.
DESCRIBE TABLE it_code LINES lv_linecount.
IF lv_linecount LE 10.
read table it_code into wa_code index 5.
if wa_code(9) <> '*& Author'.
read table it_code into wa_code index 1.
append wa_code to it_new_code.
read table it_code into wa_code index 2.
append wa_code to it_new_code.
read table it_code into wa_code index 3.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Author :'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Date :' .
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Purpose :'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*& Date Changed by Tag Description'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&'.
append wa_code to it_new_code.
clear wa_code.
wa_code = '*&---------------------------------------------------------------------*'.
append wa_code to it_new_code.
data: lv_firstline type i.
loop at it_code into wa_code from 4 to 8.
if wa_code = ''.
lv_firstline = sy-tabix.
endif.
endloop.
loop at it_code into wa_code from lv_firstline.
append wa_code to it_new_code.
endloop.
insert report program from it_new_code.
ENDIF.
ENDIF.
ENDIF.
After this, activate the include program.
then go back to CMOD transaction and activate the PROJECT that you've just created.
and you're ready to go........
Regards,
Samson Rodrigues.
07-19-2007 12:23 PM
Yes Samson,
that was the 10 point answer that i was looking for
thanks
05-28-2009 8:33 AM
The same requirement i am also doing. can please give me the details how you have solved this one.
i am able to get from SE38-> Pattern-> others->pattern name.
but i am trying to get this pattens directly when u entrerd into SE38 Straight away.
Regards, Sri
05-06-2011 7:14 AM
Hi Kris,
Do u find any solution for your requirement becoz that exit Function module ever call before that Text line editing code.
Regards,
Anuj jain
05-06-2011 8:16 AM