Description of abap Program
How can I change the discription of my abap Program??
Greets Volker
Hi,
You can goto SE38 and provide your Program name and then choose attributes radio button and then press CHANGE button.
there you can change the description of the program.
Regds
Sivaparvathi
Please dont forget to reward points if helpful...
Edited by: Siva Parvathi on Dec 20, 2007 4:05 PM
Similar Messages
-
ABAP Program to Read Transports and Get Descriptions
Hello,
Does anyone out there have an abap program or know of one that will read transports with the technical names and give you the description of the objects, in order to make it easier to verify things in a transport?Hi,
there is a good weblog here about transport request program that write about usefull FMs.
Try this link
/people/uwe.schieferstein/blog/2009/01/07/multi-purpose-alv-list-programming
Bye
Andrea -
Termination occurred in the ABAP program "RK2APA00_POST" - in
Hi everybody...I have a cancelled job when run only in applications servers , I see a dump "message typeX" , but when job run in Central Instance not cancelled and finish ok.
The name Job is Zcupon and attach to continue dump info , sorry for extended but I want send all information possible.
know if you can add a file with the abstract and not have to paste the text of the dump, thanks for the help they can deliver.
Regards....Freddy Solar....
Errores tiempo ejec. MESSAGE_TYPE_X
Fecha y hora 18.11.2008 06:35:30
Texto breve
The current application triggered a termination with a short dump.
¿Qué ha sucedido?
The current application program detected a situation which really
should not occur. Therefore, a termination with a short dump was
triggered on purpose by the key word MESSAGE (type X).
Anál.errores
Short text of error message:
RFC_ERROR 4 Conversation 93690218 not found / CPIC-CALL: 'ThSA
Technical information about the message:
Message classe...... "KE"
Number.............. 628
Variable 1.......... "RFC_ERROR"
Variable 2.......... 4
Variable 3.......... "Conversation 93690218 not found / CPIC-CALL: 'ThSA"
Variable 4.......... " "
Last error logged in SAP kernel
Component............ "SAP-Gateway"
Place................ "SAP-Gateway on host SCPAPP1 / sapgw03"
Version.............. 2
Error code........... 728
Error text........... "Conversation 93690218 not found"
Description.......... " "
System call.......... " "
Module............... "gwxxrd.c"
Line................. 6156
The error reported by the operating system is:
Error number..... " "
Error text....... " "
Notas para corregir errores
Probably the only way to eliminate the error is to correct the program.
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
please use the following search criteria:
"RK2APA00_POST" "MESSAGE_TYPE_X"
If you cannot solve the problem yourself, please send the
following documents to SAP:
1. A hard copy print describing the problem.
To obtain this, select the "Print" function on the current screen.
2. A suitable hardcopy prinout of the system log.
To obtain this, call the system log with Transaction SM21
and select the "Print" function to print out the relevant
part.
3. If the programs are your own programs or modified SAP programs,
supply the source code.
To do this, you can either use the "PRINT" command in the editor or
print the programs using the report RSINCL00.
4. Details regarding the conditions under which the error occurred
or which actions and input led to the error.
Entorno sistema
SAP-Release 700
Application server... "SCPAPP1"
Network address...... "10.1.40.130"
Operating system..... "Windows NT"
Release.............. "5.2"
Hardware type........ "4x AMD64 Level"
Character length.... 16 Bits
Pointer length....... 64 Bits
Work process number.. 3
Shortdump setting.... "full"
Database server... "BALTICO"
Database type..... "DB400"
Database name..... "SCP"
Database user ID.. "R3SCPDATA"
Char.set.... "C"
SAP kernel....... 700
created (date)... "Jun 30 2008 00:10:07"
create on........ "NT 5.2 3790 Service Pack 1 x86 MS VC++ 14.00"
Database version. "DB4_53"
Patch level. 167
Patch text.. " "
Database............. "V5R3, V5R4, V6R1"
SAP database version. 700
Operating system..... "Windows NT 5.0, Windows NT 5.1, Windows NT 5.2, Windows
NT 6.0"
Memory consumption
Roll.... 16192
EM...... 159213920
Heap.... 0
Page.... 5660672
MM Used. 145143664
MM Free. 5680112
Usuario y transacción
Client.............. 400
User................ "ZUSRTARJETAS"
Language key........ "S"
Transaction......... " "
Program............. "RK2APA00_POST"
Screen.............. "SAPMSSY0 1000"
Screen line......... 6
Info posición de cancelación
Termination occurred in the ABAP program "RK2APA00_POST" - in
"INSERT_CE4_FLUSH_BUFFERS".
The main program was "ZVI_CUPON ".
In the source code you have the termination point in line 100
of the (Include) program "RKEVRK2A_POST_COMMIT__FIX".
The program "RK2APA00_POST" was started as a background job.
Job Name....... "ZCUPON"
Job Initiator.. "ZUSRTARJETAS"
Job Number..... 02044200
Detalle código fuente
Lín.
Txt.fte.
70
subrc = sy-subrc.
71
CLEAR: g_t_ce4a_dbbuf[], g_t_ce4_dbbuf[].
72
73
case subrc.
74
when 1.
75
Records were to be inserted into the acct.ref. table CE4xxxx_ACCT
76
but the acct. reference numbers were already occupied. Most likely
77
This problem is due to a explicit or implicit change to the
78
number range COPA_OBJ (subobject is the operating concern)
79
e.g. caused by illegally transporting the contents of CO-PA
80
transaction data table contents (CE4xxxx / CE4xxxx_ACCT).
81
Please check OSS for notes with keywords RKEVRK2A_POST, KF216
82
and CE4XXXX_ACCT. If you do not find any applicable notes please
83
log an OSS message.
84
MESSAGE x216(kf) WITH gc_ce4acct_name.
85
86
when 2.
87
Records were to be inserted into the segment table CE4xxxx
88
but the segment numbers were already occupied. Most likely
89
This problem is due to a explicit or implicit change to the
90
number range COPA_OBJ (subobject is the operating concern)
91
e.g. caused by illegally transporting the contents of CO-PA
92
transaction data table contents (CE4xxxx).
93
Please check OSS for notes with keywords RKEVRK2A_POST, KF203
94
and CE4XXXX. If you do not find any applicable notes please
95
log an OSS message.
96
MESSAGE x203(kf).
97
98
when 3 or 4.
99
Communication error in RFC-Call
>>>>>
message x628(ke) with 'RFC_ERROR' subrc msg_text.
101
102
endcase.
103
104
ENDFORM.
105
Edited by: freddy solar on Jan 2, 2009 8:39 PMHi,
it looks like you have some problem with RFC. It stopped on the following line:
* Communication error in RFC-Call
message x628(ke) with 'RFC_ERROR' subrc msg_text.
Ask your basis guy to check it. The job on application server tried to connect to the central instance and it failed. The job run on central instance does not need to make any RFC call. Hence there is no problem in this case.
Regards -
ABAP program "SAPLCNTL" in "CHECK_OO": MESSAGE_TYPE_X
Hi,
I have a problem with a program with ALV-list. Sometimes it terminates with a dump. I can not reproduce the dumps and I can not find the reason for it. I do not know, if it only terminates on some clients.
In the program the alv table is refreshed with CL_GUI_ALV_GRID=>REFRESH_TABLE_DISPLAY. After this there is also a statement CALL METHOD cl_gui_cfw=>flush.
Can anyone help?
Kindly regards
Frank
Runtime Error MESSAGE_TYPE_X
Date and Time 11.11.2008 11:24:28
ShrtText
The current application triggered a termination with a short dump.
What happened?
The current application program detected a situation which really
should not occur. Therefore, a termination with a short dump was
triggered on purpose by the key word MESSAGE (type X).
What can you do?
Print out the error message (using the "Print" function)
and make a note of the actions and input that caused the
error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
termination messages, especially those beyond their normal deletion
date.
is especially useful if you want to keep a particular message.
Error analysis
Short text of error message:
Control Framework: Invalid Processing of ABAP Object Control
Technical information about the message:
Diagnosis
You want to edit a control created with ABAP objects techniques
(class-based Control Framework) using a function module (function
module-based Control Framework). The system does not support this.
The Class ID of the control is SAP.DataProvider.1.
System response
The transaction is terminated.
Procedure
Contact the person responsible for the SAP System.
Message classe...... "DC"
Number.............. 007
Variable 1.......... "SAP.DataProvider.1"
Variable 2.......... " "
Variable 3.......... " "
Variable 4.......... " "
Variable 3.......... " "
Variable 4.......... " "
How to correct the error
Probably the only way to eliminate the error is to correct the program.
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
"MESSAGE_TYPE_X" C
"SAPLCNTL" or "LCNTLF01"
"CHECK_OO"
If you cannot solve the problem yourself and you wish to send
an error message to SAP, include the following documents:
1. A printout of the problem description (short dump)
To obtain this, select in the current display "System->List->
Save->Local File (unconverted)".
2. A suitable printout of the system log
To obtain this, call the system log through transaction SM21.
Limit the time interval to 10 minutes before and 5 minutes
after the short dump. In the display, then select the function
"System->List->Save->Local File (unconverted)".
3. If the programs are your own programs or modified SAP programs,
supply the source code.
To do this, select the Editor function "Further Utilities->
Upload/Download->Download".
4. Details regarding the conditions under which the error occurred
or which actions and input led to the error.
System environment
SAP Release.............. "640"
Application server....... "gl3ap4"
Network address.......... "194.69.46.206"
Operating system......... "AIX"
Release.................. "5.3"
Hardware type............ "00C2809E4C00"
Character length......... 16 Bits
Pointer length........... 64 Bits
Work process number...... 8
Short dump setting....... "full"
Database server.......... "glince215"
Database type............ "ORACLE"
Database name............ "GL3"
Database owner........... "SAPSR3"
Character set............ "C"
SAP kernel............... "640"
Created on............... "Feb 18 2008 23:36:16"
Created in............... "AIX 1 5 00538A4A4C00"
Database version......... "OCI_920 "
Patch level.............. "221"
Patch text............... " "
Supported environment....
Database................. "ORACLE 9.2.0.*.*, ORACLE 10.1.0.*.*, ORACLE
10.2.0.*.*"
SAP database version..... "640"
Operating system......... "AIX 1 5, AIX 2 5, AIX 3 5, AIX 1 6"
Memory usage.............
Roll..................... 16192
EM....................... 16759424
Heap..................... 0
Page..................... 139264
MM Used.................. 4672968
MM Free.................. 3703952
SAP Release.............. "640"
User and Transaction
Client.............. 001
User................ "PB754"
Language key........ "D"
Transaction......... "ZVLA "
Program............. "SAPLCNTL"
Screen.............. "ZTCOCKPT 2000"
Screen line......... 4
Information on where terminated
The termination occurred in the ABAP program "SAPLCNTL" in "CHECK_OO".
The main program was "ZTCOCKPT ".
The termination occurred in line 178 of the source code of the (Include)
program "LCNTLF01"
of the source code of program "LCNTLF01" (when calling the editor 1780).
Source Code Extract
Line SourceCde
148 *---------------------------------------------------------------------*
149 * FORM %_CONTROL_DISPATCH *
150 *---------------------------------------------------------------------*
151 *
152 *---------------------------------------------------------------------*
153 * --> OKCODE *
154 *---------------------------------------------------------------------*
155 FORM %_CONTROL_DISPATCH.
156 * CALL FUNCTION 'CONTROL_DISPATCH'
157 * EXPORTING
158 * FCODE = SY-UCOMM
159 * EXCEPTIONS
160 * CB_NOT_FOUND = 1
161 * OTHERS = 2.
162 ENDFORM.
163
164 FORM REGISTERGLOBALOCXEVENT
165 USING SHELLID TYPE I EVENT TYPE I.
166 CALL METHOD OF CL_GUI_OBJECT=>H_GUI 'RegisterGlobalOCXevent'
167 NO FLUSH
168 EXPORTING #1 = SHELLID
169 #2 = EVENT.
170 ENDFORM.
171
172 form check_OO using p_handle type cntl_handle.
173 * check sy-uname = 'KSCHMIDT'.
174 call method cl_gui_cfw=>get_subscriber_by_id
175 exporting shellid = p_handle-shellid
176 exceptions others = 1.
177 if sy-subrc = 0.
>>>>> message X007 with p_handle-clsid.
179 endif.
180
181 endform.
182
183 form check_oo_2 using p_shellid type i.
184 data l_handle type cntl_handle.
185 * check sy-uname = 'KSCHMIDT'.
186 call method cl_gui_cfw=>get_subscriber_by_id
187 exporting shellid = p_shellid
188 exceptions others = 1.
189 if sy-subrc = 0.
190 call function 'CNTH_HANDLE_BY_SHELLID'
191 exporting shellid = p_shellid
192 importing h_control = l_handle
193 exceptions others = 1.
194 message X007 with l_handle-clsid.
195 endif.
196 endform.
Contents of system fields
Name Val.
SY-SUBRC 0
SY-INDEX 0
SY-TABIX 12
SY-DBCNT 1
SY-FDPOS 1
SY-LSIND 0
SY-PAGNO 0
SY-LINNO 1
SY-COLNO 1
SY-PFKEY STAT2000
SY-UCOMM NSEL
SY-TITLE ZTCOCKPT Cockpit: Transporte Aufträge Lieferungen
SY-MSGTY X
SY-MSGID DC
SY-MSGNO 007
SY-MSGV1 SAP.DataProvider.1
SY-MSGV2
SY-MSGV3
SY-MSGV4
Active Calls/Events
No. Ty. Program Include Line
Name
11 FORM SAPLCNTL LCNTLF01 178
CHECK_OO
10 FUNCTION SAPLCNTL LCNTLU13 16
CONTROL_DESTROY
9 FUNCTION SAPLCNDP LCNDPU07 22
DP_DESTROY
8 FUNCTION SAPLCNDP LCNDPU10 103
DP_CONTROL_ASSIGN_TABLE
7 METHOD CL_GUI_ALV_GRID_BASE==========CP CL_GUI_ALV_GRID_BASE==========CM01U 37
CL_GUI_ALV_GRID_BASE=>SET_TOOLBAR_BUTTONS
6 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM01M 52
CL_GUI_ALV_GRID=>SET_TOOLBAR
5 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM01P 432
CL_GUI_ALV_GRID=>SOFT_REFRESH_TABLE_DISPLAY
4 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM00T 116
CL_GUI_ALV_GRID=>REFRESH_TABLE_DISPLAY
3 MODULE (PBO) ZTCOCKPT ZTCOCKPT 652
PBO_ALV_2000
2 FORM ZTCOCKPT ZTCOCKPT 167
ALVAUSGABE
1 EVENT ZTCOCKPT ZTCOCKPT_INC 213
START-OF-SELECTION
Chosen variables
Name
Val.
No. 11 Ty. FORM
Name CHECK_OO
SY-REPID
SAPLCNTL
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
5454445422222222222222222222222222222222
310C3E4C00000000000000000000000000000000
%_VIASELSCR
0
4
P_HANDLE-SHELLID
128
0008
0000
BS_CENTER
768
0000
0030
%_DUMMY$$
0000
0000
2222
0000
FONT_ITALIC
1
0000
0001
SY-SUBRC
0
0000
0000
SY-XFORM
XAB_READ
000000000000000000000000000000
000000000000000000000000000000
544554442222222222222222222222
812F25140000000000000000000000
SY-MSGID
DC
00000000000000000000
00000000000000000000
44222222222222222222
43000000000000000000
SS_SIMPLE
11
0000
000B
SS_BLACKRECT
4
0000
0004
SPACE
0
0
2
0
SY-MSGNO
007
000
000
333
007
SY-MSGV1
SAP.DataProvider.1
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
54524676576766672322222222222222222222222222222222
310E414102F69452E100000000000000000000000000000000
P_HANDLE-CLSID
SAP.DataProvider.1
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
5452467657676667232222222222222222222222222222222222222222222222222222
310E414102F69452E10000000000000000000000000000000000000000000000000000
SY-MSGV2
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
SY-MSGV3
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
SY-MSGV4
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
22222222222222222222222222222222222222222222222222
00000000000000000000000000000000000000000000000000
No. 10 Ty. FUNCTION
Name CONTROL_DESTROY
NO_FLUSH
X
0
0
5
8
H_CONTROL
OBJHOLE2## 7263 ####
00000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444443FF222222222222222222222222222222222223333222222222222222222222222222222222222222080022
F2A8FC52FF000000000000000000000000000000000007263000000000000000000000000000000000000000000A00
BS_DEFPUSHBUTTON
1
0000
0001
BS_LEFT
256
0000
0010
THIS_DUMMY_VALUE
0
0000
0000
BS_PUSHBUTTON
0
0000
0000
H_CONTROL-OBJ+16(4)
-1
FFFF
FFFF
SYST-REPID
SAPLCNTL
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
5454445422222222222222222222222222222222
310C3E4C00000000000000000000000000000000
H_CONTROL-HANDLE_TYPE
NO_OC
0000000000
0000000000
4454422222
EFFF300000
CNTL_TYPE_OCX
OCX
0000000000
0000000000
4452222222
F380000000
CNTL_TRUE
1
0000
0001
IS_ITSAC_767A497173BF11D28BB
0
0
2
0
AC_EXPORTS_4E238C5273BF11D28BB
Table[initial]
AC_EXPO_WA_4E238C5273BF11D28BB
000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2222222222222222222222222222222233333333322222222222222222222222222222222222222222222222222222
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
No. 9 Ty. FUNCTION
Name DP_DESTROY
H_DP
OBJHOLE2## 7263 ####
00000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444443FF222222222222222222222222222222222223333222222222222222222222222222222222222222080022
F2A8FC52FF000000000000000000000000000000000007263000000000000000000000000000000000000000000A00
G_STRETCH_UNICODE_COLS_VALID
X
0
0
5
8
%_DUMMY$$
0000
0000
2222
0000
SY-SUBRC
0
0000
0000
SYST-REPID
SAPLCNDP
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
5454444522222222222222222222222222222222
310C3E4000000000000000000000000000000000Hi Frank,
I doubt it is related to function 'LVC_FIELDCATALOG_MERGE' since the current SAP help documentation talks about using this function for the purpose that I'm sure you are using it. The short dump states that the problem is caused by the use of an "old" function-module-based control framework function combined with the class-based OO CFW.
Diagnosis
You want to edit a control created with ABAP objects techniques
(class-based Control Framework) using a function module (function
module-based Control Framework). The system does not support this.
If you look at the call sequence in the short dump, function module 'CONTROL_DESTROY' is being called (which then calls function 'CHECK_OO' from which the error is sent). Function module 'CONTROL_DESTROY' is in function group CNTL which is part of the "old" function-module-based CFW.
Since the 'CONTROL_DESTROY' function is ultimately called as a result of your Z-program legitimately calling the standard SAP method CL_GUI_ALV_GRID=>REFRESH_TABLE_DISPLAY, I'd say you might want to consider opening a customer message with SAP providing as much detail and background as possible. But before you bother to do that (or while you are waiting to hear back from SAP) you may want to double-check your Z-program to make sure you aren't calling some other function modules from function groups CNTL or CNT0 (the "old" CFW function modules).
I've included just the call sequence from your short dump here for easier reference. Notice the order of the calls from 1 to 11, ending with functions 'CONTROL_DESTROY' and 'CHECK_OO'. I think 'CONTROL_DESTROY' may be causing the problem (??):
Active Calls/Events
No. Ty. Program Include Line
Name
11 FORM SAPLCNTL LCNTLF01 178
CHECK_OO
10 FUNCTION SAPLCNTL LCNTLU13 16
CONTROL_DESTROY
9 FUNCTION SAPLCNDP LCNDPU07 22
DP_DESTROY
8 FUNCTION SAPLCNDP LCNDPU10 103
DP_CONTROL_ASSIGN_TABLE
7 METHOD CL_GUI_ALV_GRID_BASE==========CP CL_GUI_ALV_GRID_BASE==========CM01U 37
CL_GUI_ALV_GRID_BASE=>SET_TOOLBAR_BUTTONS
6 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM01M 52
CL_GUI_ALV_GRID=>SET_TOOLBAR
5 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM01P 432
CL_GUI_ALV_GRID=>SOFT_REFRESH_TABLE_DISPLAY
4 METHOD CL_GUI_ALV_GRID===============CP CL_GUI_ALV_GRID===============CM00T 116
CL_GUI_ALV_GRID=>REFRESH_TABLE_DISPLAY
3 MODULE (PBO) ZTCOCKPT ZTCOCKPT 652
PBO_ALV_2000
2 FORM ZTCOCKPT ZTCOCKPT 167
ALVAUSGABE
1 EVENT ZTCOCKPT ZTCOCKPT_INC 213
START-OF-SELECTION
Regards,
Jamie
P.S. Please report back here if you find a solution (or if SAP finds one as a result of your customer message). -
How to read data from an excel using abap program?
Hi
I have to write an abap program to read the contents of ms excel across various
sheets. Can any one help me regarding this
Thanks in advance
SatishHai Satish,
<b>You save all your Excel sheets as Text Tab Delimited.</b>
And then for each teext file can be uploaded into your daabase table.
See the Report that i have done.
REPORT Z_UPLOAD_TO_DATABASE_TABLE.
TABLES:
ZDETMAST. " Database table to be uploaded
Data declaration of the structure to hold ZDETMAST(zdetcode) data *
DATA:
BEGIN OF FS_ZDETMAST,
CNT(3) TYPE C, " Client
DETCODE(15) TYPE C, " Det Code
DETCAT(1) TYPE C, " Det category
DETTYPE(2) TYPE N, " Det type
DETDESC(30) TYPE C, " Det description
PFLAG(1) TYPE C, " Det Flag
TOTALDR(10) TYPE C, " Total DR
TOTALCR(10) TYPE C, " Total CR
END OF FS_ZDETMAST.
Internal table to hold ZDETMAST(zdetcode) data *
DATA:
T_ZDETMAST LIKE STANDARD TABLE OF FS_ZDETMAST.
Function Module to upload ZDETMAST Data
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'D:/ZDETMAST_2.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = 'DAT'
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = T_ZDETMAST
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. " IF SY-SUBRC <> 0.
LOOP AT T_ZDETMAST INTO FS_ZDETMAST.
WRITE:
/ FS_ZDETMAST-CNT,
FS_ZDETMAST-DETCODE,
FS_ZDETMAST-DETCAT,
FS_ZDETMAST-DETTYPE,
FS_ZDETMAST-DETDESC,
FS_ZDETMAST-PFLAG,
FS_ZDETMAST-TOTALDR,
FS_ZDETMAST-TOTALCR.
ENDLOOP. " LOOP AT T_ZDETMAST ...
LOOP AT T_ZDETMAST INTO ZDETMAST.
IF SY-TABIX GE 2.
INSERT ZDETMAST.
DELETE ZDETMAST.
ENDIF. " IF SY-TABIX EQ 2
ENDLOOP. " LOOP AT T_ZDETMAST
Hope this helps you a lot.
<b>You can also use ALSM_EXCEL_TO_INTERNAL_TABLE FM to have excel data in ITAB AND THEN YOU CAN INSERT DATA INTO DATABASE TABLE.</b>
<b>Reward points if it helps you.</b>
Regds,
Rama chary.Pammi -
How to capture an Odata XML inside an ABAP program ?
Hi Colleagues,
I have a scenario where I need to capture the Odata XML inside an ABAP program.
Problem Description:
1. Log into U3F Client 100 system.
2. Goto Transaction 'SPRO'.
3. Click on 'SAP Reference IMG'.
4. Select SAP Netweaver - Gateway - OData channel - Administration - Maintain Services.
5. Select any service from the Service catalog.
6. Click on 'Call Browser' button.
Now, my requirement is to capture the XML which gets displayed on the web browser into an ABAP program but I am unable to do so. Kindly, provide us the solution.
Best Regards,
NareshHi,
Check this example
[http://help.sap.com/saphelp_nwpi71/helpdata/en/1f/93163f9959a808e10000000a114084/content.htm|http://help.sap.com/saphelp_nwpi71/helpdata/en/1f/93163f9959a808e10000000a114084/content.htm]
Regards,
Ivan -
How to get the decision key in abap program
Hi guys.
I have a user decision workflow that have two options: Accept or Reject. This options has some type of id, right? Like '0001', '0002', right?
How i get this ids decisions through a abap program.
I need to know this because i have to pass this id to a Z Function Model.
Thanks!The result is found in the workitem container in the '_RESULT' or '_WI_RESULT' elements, you can use the SAP_WAPI_READ_CONTAINER function module to read the data (read the element from the simple container returned table).
CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'
EXPORTING
workitem_id = im_wi_id
TABLES
simple_container = lt_container
READ TABLE lt_container WITH KEY element = '_WI_RESULT' into ls_container.
If you what to get the possible decisions description you can use the SAP_WAPI_DECISION_READ function module,
CALL FUNCTION 'SAP_WAPI_DECISION_READ'
EXPORTING
workitem_id = im_wi_id
TABLES
alternatives = lt_alts. -
Error:Dataflows abap program
Hi,
Dataservices 4.2
Sql server 2008
SAP (4.6
I make a migration of dataservices 11.5 towards 4.2 on new waiter.
when I try to execute my dataflow abap, I have this message error :
error:"RFC Call Receive error<Function/BODS/ABAP_RUB:RFC_ABAP_EXCEPTION( PROGRAM_DOES_NOT_EXIT)aucun numéro de pager n'est généré pour cette adresse
I have make install on the Server SAP 2 functions ( K900187.R22 and R900187.R22) which allowed me to import my SAP tables on the datastore and
reading the data.
I use "execute preloaded " option for execute my dataflows
since migration the dataflows abap do not function any more
it would have installations or configuration has to make on the Server SAP
Somebody has an idea
Thanks youDear Marie,
You will have to have to import the new ABAP Program group "BODS/BOS" which you can find in the local install folder...
Here are some details:
Installing Functions on the SAP Server
SAP BusinessObjects Data Services provides functions that support the use of the ABAP, BAPI, and
IDoc interfaces on SAP servers. You will need some or all of these functions in the normal operation
of the software in an SAP environment. These functions perform such operations as dynamically loading
and executing ABAP programs from Data Services, efficiently running preloaded ABAP programs,
allowing for seamless metadata browsing and importing from SAP servers, and reporting the status of
running jobs. Some of these functions read data from SAP NetWeaver BW sources.
You must upload the provided functions to your SAP server in a production environment. It is
recommended that you always upload the functions to your SAP server whether you are in a
development, test, or production environment. The functions provide seamless integration between
Data Services and SAP servers.
The default installation places two function module files for SAP servers in the ...\Data
Services\Admin\R3_Functions\transport directory. You then upload these files to SAP servers
using the SAP Correction and Transport System (CTS) or manually. Using CTS allows for version
control as the functions evolve across releases.
The installation provides two versions of transport files (depending on the server version you are using)
to install the functions on the SAP server. To obtain the names of the latest transport files for installing
or upgrading these SAP server functions, see the readme.txt file
And I've found those files and text files in the local install folder....in:
Program Files\SAP BusinessObjects\Data Services\admin\R3_Functions
(that's where I've installed it).
There you'll find some descriptive txt as how to proceed.
After installing, it might happen that the executing user is missing some authorizations.
Here my authorizations team helped me by tracing the user and then adding the necessary rights.
Sure hope this will help you.
Notes to check:
see SAP Note 1919255
Note 1916294 -
Download/Upload ABAP Programs, screens, texts, etc
Hi Experts,
Is there any standard program or any tool by which we can download/ upload ABAP programs, sapscripts, Screens, text-elements, Webdynpro for ABAP applications to a local file????
The Download to local server option in SE38 just gives a text copy of program without any screens, text eleemnts, etc which is not as per my requirement.
Points will be rewarded.
Regards,
Mansi.use This
REPORT ZDOWNLOAD.
*& Report ZDOWNLAOD
I N F O R M A T I O N *
Module :
FUNCTIONAL :
Developer :
Functional Spec# :
Date Of Creation :
Transport Request# :
Program NAME :
Transaction Code :
DEVELOPMENT CLASS :
DESCRIPTION :
Change History
FUNCTIONAL :
Developer :
Functional Spec# :
Date Of Change :
Transport Request# :
Change DESCRIPTION :
*======================================================================================================================
Direct Download Enterprise version 1.3.1.
THIS SOFTWARE IS FOR PERSONAL USE ONLY.
THIS PROGRAM IS FREEWARE AND IS PROVIDED ON AN AS-IS BASIS WITHOUT WARRANTY OF ANY KIND.
THE PROVIDER SPECIFICALLY DISCLAIMS ANY OTHER WARRANTY, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY
OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL THE PROVIDER BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, SPECIAL OR INCIDENTAL DAMAGES, EVEN IF PROVIDER
HAS BEEN ADVISED BY CLIENT OF THE POSSIBILITY OF SUCH POTENTIAL LOSS OR DAMAGE.
CLIENT AGREES TO HOLD PROVIDER HARMLESS FROM AND AGAINST ANY AND ALL CLAIMS, LOSSES, LIABILITIES AND EXPENSES. BY
INSTALLING OR RUNNING THIS PROGRAM YOU ARE AGREEING TO THE TERMS AND CONDITONS STATED ABOVE.
PROGRAM DESCRIPTION & USE
Allows a user to download programs, Functions, DD definitions, etc to the presentation server. This version searches
recursively for nested includes and function modules, and allows you to download the resulting code as standard text
or HTML web pages within a suitable directory structure.
You can either search by object name, using wildcards if you wish, or a combination of Author and object name. If
you want all objects returned for a particular author then select the author name and choose the most suitable
radiobutton. All objects will be returned if the fields to the right hand side of the radiobutton are left completely
blank.
Compatible with R/3 Enterprise only, for older versions of SAP you will need Direct Download version 5.xx.
This version removes the programming limitations imposed by developing across SAP releases 3 to 4.6.
In order to be able to download files to the SAP server you must first set up a logical filepath within transaction
'FILE', or use an existing one. You must also create a external operating system command in SM69 called ZMKDIR. This
will then be used to create any directories needed on the SAP server
This program is intended to allow a person to keep a visual representation of a program for backup purposes only as
has not been designed to allow programs to be uploaded to SAP systems.
author : E.G.Mellodew
program cont
SAP Tables
TABLES: TRDIR, SEOCLASS, TFDIR, ENLFDIR, DD02L.
Types
text element structure
TYPES: TTEXTTABLE LIKE TEXTPOOL.
GUI titles
TYPES: TGUITITLE LIKE D347T.
Message classes
TYPES: BEGIN OF TMESSAGE,
ARBGB LIKE T100-ARBGB,
STEXT LIKE T100A-STEXT,
MSGNR LIKE T100-MSGNR,
TEXT LIKE T100-TEXT,
END OF TMESSAGE.
Screen flow.
TYPES: BEGIN OF TSCREENFLOW,
SCREEN LIKE D020S-DNUM,
CODE LIKE D022S-LINE,
END OF TSCREENFLOW.
Holds a table\structure definition
TYPES: BEGIN OF TDICTTABLESTRUCTURE,
FIELDNAME LIKE DD03L-FIELDNAME,
POSITION LIKE DD03L-POSITION,
KEYFLAG LIKE DD03L-KEYFLAG,
ROLLNAME LIKE DD03L-ROLLNAME,
DOMNAME LIKE DD03L-DOMNAME,
DATATYPE LIKE DD03L-DATATYPE,
LENG LIKE DD03L-LENG,
DDTEXT LIKE DD04T-DDTEXT,
END OF TDICTTABLESTRUCTURE.
Holds a tables attributes + its definition
TYPES: BEGIN OF TDICTTABLE,
TABLENAME LIKE DD03L-TABNAME,
TABLETITLE LIKE DD02T-DDTEXT,
ISTRUCTURE TYPE TDICTTABLESTRUCTURE OCCURS 0,
END OF TDICTTABLE.
Include program names
TYPES: BEGIN OF TINCLUDE,
INCLUDENAME LIKE TRDIR-NAME,
INCLUDETITLE LIKE TFTIT-STEXT,
END OF TINCLUDE.
Exception class texts
TYPES: BEGIN OF TCONCEPT,
CONSTNAME TYPE STRING,
CONCEPT TYPE SOTR_CONC,
END OF TCONCEPT.
Method
TYPES: BEGIN OF TMETHOD,
CMPNAME LIKE VSEOMETHOD-CMPNAME,
DESCRIPT LIKE VSEOMETHOD-DESCRIPT,
EXPOSURE LIKE VSEOMETHOD-EXPOSURE,
METHODKEY TYPE STRING,
END OF TMETHOD.
Class
TYPES: BEGIN OF TCLASS,
SCANNED(1),
CLSNAME LIKE VSEOCLASS-CLSNAME,
DESCRIPT LIKE VSEOCLASS-DESCRIPT,
MSG_ID LIKE VSEOCLASS-MSG_ID,
EXPOSURE LIKE VSEOCLASS-EXPOSURE,
STATE LIKE VSEOCLASS-STATE,
CLSFINAL LIKE VSEOCLASS-CLSFINAL,
R3RELEASE LIKE VSEOCLASS-R3RELEASE,
IMETHODS TYPE TMETHOD OCCURS 0,
IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
IMESSAGES TYPE TMESSAGE OCCURS 0,
ICONCEPTS TYPE TCONCEPT OCCURS 0,
TEXTELEMENTKEY TYPE STRING,
PUBLICCLASSKEY TYPE STRING,
PRIVATECLASSKEY TYPE STRING,
PROTECTEDCLASSKEY TYPE STRING,
TYPESCLASSKEY TYPE STRING,
EXCEPTIONCLASS TYPE I,
END OF TCLASS.
function modules
TYPES: BEGIN OF TFUNCTION,
FUNCTIONNAME LIKE TFDIR-FUNCNAME,
FUNCTIONGROUP LIKE ENLFDIR-AREA,
INCLUDENUMBER LIKE TFDIR-INCLUDE,
FUNCTIONMAININCLUDE LIKE TFDIR-FUNCNAME,
FUNCTIONTITLE LIKE TFTIT-STEXT,
TOPINCLUDENAME LIKE TFDIR-FUNCNAME,
PROGNAME LIKE TFDIR-PNAME,
PROGRAMLINKNAME LIKE TFDIR-PNAME,
MESSAGECLASS LIKE T100-ARBGB,
ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
ISELECTIONTEXTS TYPE TTEXTTABLE OCCURS 0,
IMESSAGES TYPE TMESSAGE OCCURS 0,
IINCLUDES TYPE TINCLUDE OCCURS 0,
IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
IGUITITLE TYPE TGUITITLE OCCURS 0,
ISCREENFLOW TYPE TSCREENFLOW OCCURS 0,
END OF TFUNCTION.
TYPES: BEGIN OF TPROGRAM,
PROGNAME LIKE TRDIR-NAME,
PROGRAMTITLE LIKE TFTIT-STEXT,
SUBC LIKE TRDIR-SUBC,
MESSAGECLASS LIKE T100-ARBGB,
IMESSAGES TYPE TMESSAGE OCCURS 0,
ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
ISELECTIONTEXTS TYPE TTEXTTABLE OCCURS 0,
IGUITITLE TYPE TGUITITLE OCCURS 0,
ISCREENFLOW TYPE TSCREENFLOW OCCURS 0,
IINCLUDES TYPE TINCLUDE OCCURS 0,
IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
END OF TPROGRAM.
Internal tables
Dictionary object
DATA: IDICTIONARY TYPE STANDARD TABLE OF TDICTTABLE WITH HEADER LINE.
Function modules.
DATA: IFUNCTIONS TYPE STANDARD TABLE OF TFUNCTION WITH HEADER LINE.
Tree display structure.
DATA: ITREEDISPLAY TYPE STANDARD TABLE OF SNODETEXT WITH HEADER LINE.
Message class data
DATA: IMESSAGES TYPE STANDARD TABLE OF TMESSAGE WITH HEADER LINE.
Holds a single message class an all of its messages
DATA: ISINGLEMESSAGECLASS TYPE STANDARD TABLE OF TMESSAGE WITH HEADER LINE.
Holds program related data
DATA: IPROGRAMS TYPE STANDARD TABLE OF TPROGRAM WITH HEADER LINE.
Classes
DATA: ICLASSES TYPE STANDARD TABLE OF TCLASS WITH HEADER LINE.
Table of paths created on the SAP server
DATA: ISERVERPATHS TYPE STANDARD TABLE OF STRING WITH HEADER LINE.
Table prototypes
DATA: DUMIDICTSTRUCTURE TYPE STANDARD TABLE OF TDICTTABLESTRUCTURE.
DATA: DUMITEXTTAB TYPE STANDARD TABLE OF TTEXTTABLE.
DATA: DUMIINCLUDES TYPE STANDARD TABLE OF TINCLUDE.
DATA: DUMIHTML TYPE STANDARD TABLE OF STRING.
DATA: DUMIHEADER TYPE STANDARD TABLE OF STRING .
DATA: DUMISCREEN TYPE STANDARD TABLE OF TSCREENFLOW .
DATA: DUMIGUITITLE TYPE STANDARD TABLE OF TGUITITLE.
DATA: DUMIMETHODS TYPE STANDARD TABLE OF TMETHOD.
DATA: DUMICONCEPTS TYPE STANDARD TABLE OF TCONCEPT.
Global objects
DATA: OBJFILE TYPE REF TO CL_GUI_FRONTEND_SERVICES.
DATA: OBJRUNTIMEERROR TYPE REF TO CX_ROOT.
Constants
CONSTANTS: VERSIONNO TYPE STRING VALUE '1.3.1'.
CONSTANTS: TABLES TYPE STRING VALUE 'TABLES'.
CONSTANTS: TABLE TYPE STRING VALUE 'TABLE'.
CONSTANTS: LIKE TYPE STRING VALUE 'LIKE'.
CONSTANTS: TYPE TYPE STRING VALUE 'TYPE'.
CONSTANTS: TYPEREFTO TYPE STRING VALUE 'TYPE REF TO'.
CONSTANTS: STRUCTURE TYPE STRING VALUE 'STRUCTURE'.
CONSTANTS: LOWSTRUCTURE TYPE STRING VALUE 'structure'.
CONSTANTS: OCCURS TYPE STRING VALUE 'OCCURS'.
CONSTANTS: FUNCTION TYPE STRING VALUE 'FUNCTION'.
CONSTANTS: CALLFUNCTION TYPE STRING VALUE ' CALL FUNCTION'.
CONSTANTS: MESSAGE TYPE STRING VALUE 'MESSAGE'.
CONSTANTS: INCLUDE TYPE STRING VALUE 'INCLUDE'.
CONSTANTS: LOWINCLUDE TYPE STRING VALUE 'include'.
CONSTANTS: DESTINATION TYPE STRING VALUE 'DESTINATION'.
CONSTANTS: IS_TABLE TYPE STRING VALUE 'T'.
CONSTANTS: IS_PROGRAM TYPE STRING VALUE 'P'.
CONSTANTS: IS_SCREEN TYPE STRING VALUE 'S'.
CONSTANTS: IS_GUITITLE TYPE STRING VALUE 'G'.
CONSTANTS: IS_DOCUMENTATION TYPE STRING VALUE 'D'.
CONSTANTS: IS_MESSAGECLASS TYPE STRING VALUE 'MC'.
CONSTANTS: IS_FUNCTION TYPE STRING VALUE 'F'.
CONSTANTS: IS_CLASS TYPE STRING VALUE 'C'.
CONSTANTS: IS_METHOD TYPE STRING VALUE 'M'.
CONSTANTS: ASTERIX TYPE STRING VALUE '*'.
CONSTANTS: COMMA TYPE STRING VALUE ','.
CONSTANTS: PERIOD TYPE STRING VALUE '.'.
CONSTANTS: DASH TYPE STRING VALUE '-'.
CONSTANTS: TRUE TYPE I VALUE 1.
CONSTANTS: FALSE TYPE I VALUE 0.
CONSTANTS: LT TYPE STRING VALUE '<'.
CONSTANTS: GT TYPE STRING VALUE '>'.
CONSTANTS: UNIX TYPE STRING VALUE 'UNIX'.
CONSTANTS: NON_UNIX TYPE STRING VALUE 'not UNIX'.
CONSTANTS: BACKGROUND_COLOUR TYPE STRING VALUE '#FFFFE0'.
CONSTANTS: COLOUR_WHITE TYPE STRING VALUE '#FFFFFF'.
CONSTANTS: COLOUR_BLACK TYPE STRING VALUE '#000000'.
CONSTANTS: COLOUR_YELLOW TYPE STRING VALUE '#FFFF00'.
CONSTANTS: COMMENT_COLOUR TYPE STRING VALUE '#0000FF'.
CONSTANTS: HTMLEXTENSION TYPE STRING VALUE 'html'.
CONSTANTS: TEXTEXTENSION TYPE STRING VALUE 'txt'.
Global variables
DATA: STATUSBARMESSAGE(100).
DATA: FORCEDEXIT TYPE I VALUE 0.
DATA: STARTTIME LIKE SY-UZEIT.
DATA: RUNTIME LIKE SY-UZEIT.
DATA: DOWNLOADFILEEXTENSION TYPE STRING.
DATA: DOWNLOADFOLDER TYPE STRING.
DATA: SERVERSLASHSEPARATOR TYPE STRING.
DATA: FRONTENDSLASHSEPARATOR TYPE STRING.
DATA: SLASHSEPARATORTOUSE TYPE STRING.
DATA: SERVERFILESYSTEM TYPE FILESYS_D.
DATA: SERVERFOLDER TYPE STRING.
DATA: FRONTENDOPSYSTEM TYPE STRING.
DATA: SERVEROPSYSTEM TYPE STRING.
DATA: CUSTOMERNAMESPACE TYPE STRING.
RANGES: SOPROGRAMNAME FOR TRDIR-NAME.
RANGES: SOAUTHOR FOR USR02-BNAME.
RANGES: SOTABLENAMES FOR DD02L-TABNAME.
RANGES: SOFUNCTIONNAME FOR TFDIR-FUNCNAME.
RANGES: SOCLASSNAME FOR VSEOCLASS-CLSNAME.
RANGES: SOFUNCTIONGROUP FOR ENLFDIR-AREA.
FIELD-SYMBOLS: <WADICTSTRUCT> TYPE TDICTTABLE.
Selection screen declaration
Author
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TBLOCK1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(23) TAUTH.
PARAMETERS: PAUTH LIKE USR02-BNAME MEMORY ID MAUTH.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(36) TPMOD.
PARAMETERS: PMOD AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
Local objects
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(36) T$TMP.
PARAMETERS: P$TMP AS CHECKBOX DEFAULT ''.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TBLOCK2.
Tables
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RTABLE RADIOBUTTON GROUP R1.
SELECTION-SCREEN COMMENT 5(15) TRTABLE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) TPTABLE.
SELECT-OPTIONS: SOTABLE FOR DD02L-TABNAME.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(79) TTNOTE.
SELECTION-SCREEN END OF LINE.
Message classes
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RMESS RADIOBUTTON GROUP R1.
SELECTION-SCREEN COMMENT 5(18) TPMES.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(18) TMNAME.
PARAMETERS: PMNAME LIKE T100-ARBGB MEMORY ID MMNAME.
SELECTION-SCREEN END OF LINE.
Function modules
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RFUNC RADIOBUTTON GROUP R1.
SELECTION-SCREEN COMMENT 5(30) TRFUNC.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) TPFNAME.
SELECT-OPTIONS: SOFNAME FOR TFDIR-FUNCNAME.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) TFGROUP.
SELECT-OPTIONS: SOFGROUP FOR ENLFDIR-AREA.
SELECTION-SCREEN END OF LINE.
Classes
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RCLASS RADIOBUTTON GROUP R1.
SELECTION-SCREEN COMMENT 5(30) TRCLASS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) TPCNAME.
SELECT-OPTIONS: SOCLASS FOR SEOCLASS-CLSNAME.
SELECTION-SCREEN END OF LINE.
Programs / includes
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: RPROG RADIOBUTTON GROUP R1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(18) TPROG.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 10(15) TRPNAME.
SELECT-OPTIONS: SOPROG FOR TRDIR-NAME.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
Language
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) TMLANG.
PARAMETERS: PMLANG LIKE T100-SPRSL DEFAULT 'EN'.
SELECTION-SCREEN END OF LINE.
Package
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) TPACK.
PARAMETERS: PPACK LIKE TADIV-DEVCLASS MEMORY ID MPACK.
SELECTION-SCREEN END OF LINE.
Customer objects
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(27) TCUST.
PARAMETERS: PCUST AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN COMMENT 32(25) TNRANGE.
PARAMETERS: PCNAME TYPE NAMESPACE MEMORY ID MNAMESPACE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B2.
Additional things to download.
SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TBLOCK3.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPTEXT.
PARAMETERS: PTEXT AS CHECKBOX DEFAULT 'X' MEMORY ID MTEXT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TMESS.
PARAMETERS: PMESS AS CHECKBOX DEFAULT 'X' MEMORY ID MMESS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPINC.
PARAMETERS: PINC AS CHECKBOX DEFAULT 'X' MEMORY ID MINC.
SELECTION-SCREEN COMMENT 40(20) TRECC.
PARAMETERS: PRECI AS CHECKBOX DEFAULT 'X' MEMORY ID MRECI.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPFUNC.
PARAMETERS: PFUNC AS CHECKBOX DEFAULT 'X' MEMORY ID MFUNC.
SELECTION-SCREEN COMMENT 40(20) TRECF.
PARAMETERS: PRECF AS CHECKBOX DEFAULT 'X' MEMORY ID MRECF.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TDOC.
PARAMETERS: PDOC AS CHECKBOX DEFAULT 'X' MEMORY ID MDOC.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPSCR.
PARAMETERS: PSCR AS CHECKBOX DEFAULT 'X' MEMORY ID MSCR.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPDICT.
PARAMETERS: PDICT AS CHECKBOX DEFAULT 'X' MEMORY ID MDICT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TSORTT.
PARAMETERS: PSORTT AS CHECKBOX DEFAULT ' ' MEMORY ID MSORTT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B3.
File details
SELECTION-SCREEN: BEGIN OF BLOCK B4 WITH FRAME TITLE TBLOCK4.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TPHTML.
PARAMETERS: PHTML RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(29) TCOMM.
PARAMETERS: PCOMM AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(29) TBACK.
PARAMETERS: PBACK AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TPTXT.
PARAMETERS: PTXT RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
Download to SAP server
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) TSERV.
PARAMETERS: PSERV RADIOBUTTON GROUP G2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 8(20) TSPATH.
PARAMETERS: PLOGICAL LIKE FILENAME-FILEINTERN MEMORY ID MLOGICAL.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN COMMENT /28(60) TSDPATH.
Download to PC
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) TPC.
PARAMETERS: PPC RADIOBUTTON GROUP G2 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 8(20) TPPATH.
PARAMETERS: PFOLDER LIKE RLGRAP-FILENAME MEMORY ID MFOLDER.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B4.
Display options
SELECTION-SCREEN: BEGIN OF BLOCK B5 WITH FRAME TITLE TBLOCK5.
Display final report
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TREP.
PARAMETERS: PREP AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
Display progress messages
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(33) TPROMESS.
PARAMETERS: PPROMESS AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B5.
Display a directory picker window
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PFOLDER.
DATA: OBJFILE TYPE REF TO CL_GUI_FRONTEND_SERVICES.
DATA: PICKEDFOLDER TYPE STRING.
DATA: INITIALFOLDER TYPE STRING.
IF SY-BATCH IS INITIAL.
CREATE OBJECT OBJFILE.
IF NOT PFOLDER IS INITIAL.
INITIALFOLDER = PFOLDER.
ELSE.
OBJFILE->GET_TEMP_DIRECTORY( CHANGING TEMP_DIR = INITIALFOLDER
EXCEPTIONS CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3 ).
ENDIF.
OBJFILE->DIRECTORY_BROWSE( EXPORTING INITIAL_FOLDER = INITIALFOLDER
CHANGING SELECTED_FOLDER = PICKEDFOLDER
EXCEPTIONS CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3 ).
IF SY-SUBRC = 0.
PFOLDER = PICKEDFOLDER.
ELSE.
WRITE: / 'An error has occured picking a folder'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN.
CASE 'X'.
WHEN PPC.
IF PFOLDER IS INITIAL.
User must enter a path to save to
MESSAGE E000(OO) WITH 'You must enter a file path'.
ENDIF.
WHEN PSERV.
IF PLOGICAL IS INITIAL.
User must enter a logical path to save to
MESSAGE E000(OO) WITH 'You must enter a logical file name'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN ON PLOGICAL.
IF NOT PSERV IS INITIAL.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
LOGICAL_FILENAME = PLOGICAL
IMPORTING
FILE_NAME = SERVERFOLDER
EXCEPTIONS
FILE_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
IF SERVERFOLDER IS INITIAL.
MESSAGE E000(OO) WITH 'No file path returned from logical filename'.
ELSE.
Path to display on the selection screen
TSDPATH = SERVERFOLDER.
Remove the trailing slash off the path as the subroutine buildFilename will add an extra one
SHIFT SERVERFOLDER RIGHT DELETING TRAILING SERVERSLASHSEPARATOR.
SHIFT SERVERFOLDER LEFT DELETING LEADING SPACE.
ENDIF.
ELSE.
MESSAGE E000(OO) WITH 'Logical filename does not exist'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOPROG-LOW.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'PROG'
OBJECT_NAME = SOPROG-LOW
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOPROG-LOW
EXCEPTIONS
CANCEL = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOPROG-HIGH.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'PROG'
OBJECT_NAME = SOPROG-HIGH
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOPROG-HIGH
EXCEPTIONS
CANCEL = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOCLASS-LOW.
CALL FUNCTION 'F4_DD_ALLTYPES'
EXPORTING
OBJECT = SOCLASS-LOW
SUPPRESS_SELECTION = 'X'
DISPLAY_ONLY = ''
ONLY_TYPES_FOR_CLIFS = 'X'
IMPORTING
RESULT = SOCLASS-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOCLASS-HIGH.
CALL FUNCTION 'F4_DD_ALLTYPES'
EXPORTING
OBJECT = SOCLASS-HIGH
SUPPRESS_SELECTION = 'X'
DISPLAY_ONLY = ''
ONLY_TYPES_FOR_CLIFS = 'X'
IMPORTING
RESULT = SOCLASS-HIGH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFNAME-LOW.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'FUNC'
OBJECT_NAME = SOFNAME-LOW
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOFNAME-LOW
EXCEPTIONS
CANCEL = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFNAME-HIGH.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'FUNC'
OBJECT_NAME = SOFNAME-HIGH
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOFNAME-HIGH
EXCEPTIONS
CANCEL = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFGROUP-LOW.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'FUGR'
OBJECT_NAME = SOFGROUP-LOW
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOFGROUP-LOW
EXCEPTIONS
CANCEL = 1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFGROUP-HIGH.
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
EXPORTING
OBJECT_TYPE = 'FUGR'
OBJECT_NAME = SOFGROUP-HIGH
SUPPRESS_SELECTION = 'X'
USE_ALV_GRID = ''
WITHOUT_PERSONAL_LIST = ''
IMPORTING
OBJECT_NAME_SELECTED = SOFGROUP-HIGH
EXCEPTIONS
CANCEL = 1.
initialisation
INITIALIZATION.
Parameter screen texts.
TBLOCK1 = 'Author (Optional)'.
T$TMP = 'Programs only: include local objects'.
TBLOCK2 = 'Objects to download'.
TBLOCK3 = 'Additional downloads for programs, function modules and classes'.
TBLOCK4 = 'Download parameters'.
TBLOCK5 = 'Display options'.
TAUTH = 'Author name'.
TPMOD = 'Include programs modified by author'.
TCUST = 'Only customer objects'.
TNRANGE = 'Alt customer name range'.
TRTABLE = 'Tables / Structures'.
TPTABLE = 'Table name'.
TTNOTE = 'Note: tables are stored under the username of the last person who modified them'.
TRFUNC = 'Function modules'.
TPFNAME = 'Function name'.
TFGROUP = 'Function group'.
TRCLASS = 'Classes'.
TPCNAME = 'Class name'.
TMESS = 'Message class'.
TMNAME = 'Class name'.
TMLANG = 'Language'.
TPROG = 'Programs'.
TRPNAME = 'Program name'.
TPACK = 'Package'.
TPTXT = 'Text document'.
TPHTML = 'HTML document'.
TCOMM = 'Highlight comments'.
TBACK = 'Include background colour'.
TPTEXT = 'Text elements'.
TPINC = 'Include programs'.
TRECC = 'Recursive search'.
TPPATH = 'File path'.
TSPATH = 'Logical file name'.
TPMES = 'Message classes'.
TPFUNC = 'Function modules'.
TDOC = 'Function module documentation'.
TRECF = 'Recursive search'.
TPSCR = 'Screens'.
TPDICT = 'Dictionary structures'.
TSORTT = 'Sort table fields alphabetically'.
TSERV = 'Download to server'.
TPC = 'Download to PC'.
TREP = 'Display download report'.
TPROMESS = 'Display progress messages'.
Determine the frontend operating system type.
IF SY-BATCH IS INITIAL.
PERFORM DETERMINEFRONTENDOPSYSTEM USING FRONTENDSLASHSEPARATOR FRONTENDOPSYSTEM.
ENDIF.
PERFORM DETERMINESERVEROPSYSTEM USING SERVERSLASHSEPARATOR SERVERFILESYSTEM SERVEROPSYSTEM.
Determine if the external command exists. If it doesn't then disable the server input field
PERFORM FINDEXTERNALCOMMAND.
start-of-selection.
START-OF-SELECTION.
PERFORM CHECKCOMBOBOXES.
PERFORM FILLSELECTIONRANGES.
STARTTIME = SY-UZEIT.
Don't display status messages if we are running in the background
IF NOT SY-BATCH IS INITIAL.
PPROMESS = ''.
ENDIF.
Fool the HTML routines to stop them hyperlinking anything with a space in them
IF PCNAME IS INITIAL.
CUSTOMERNAMESPACE = '^'.
ELSE.
CUSTOMERNAMESPACE = PCNAME.
ENDIF.
Determine which operating slash and download directory to use
CASE 'X'.
WHEN PPC.
SLASHSEPARATORTOUSE = FRONTENDSLASHSEPARATOR.
DOWNLOADFOLDER = PFOLDER.
WHEN PSERV.
SLASHSEPARATORTOUSE = SERVERSLASHSEPARATOR.
DOWNLOADFOLDER = SERVERFOLDER.
ENDCASE.
Main program flow.
CASE 'X'.
Select tables
WHEN RTABLE.
PERFORM RETRIEVETABLES USING IDICTIONARY[]
SOTABLENAMES[]
SOAUTHOR[].
Select message classes tables
WHEN RMESS.
PERFORM RETRIEVEMESSAGECLASS USING IMESSAGES[]
SOAUTHOR[] "Author
PMNAME "Message class name
PMLANG "Message class language
PMOD. "Modified by author
Select function modules
WHEN RFUNC.
PERFORM RETRIEVEFUNCTIONS USING SOFUNCTIONNAME[] "Function name
SOFUNCTIONGROUP[] "Function group
IFUNCTIONS[] "Found functions
SOAUTHOR[] "Author
PTEXT "Get text elements
PSCR "Get screens
PCUST "Customer data only
CUSTOMERNAMESPACE. "Customer name range
LOOP AT IFUNCTIONS.
Find Dict structures, messages, functions, includes etc.
PERFORM SCANFORADDITIONALFUNCSTUFF USING IFUNCTIONS[]
PRECI "Search for includes recursively
PRECF "Search for functions recursively
PINC "Search for includes
PFUNC "Search for functions
PDICT "search for dictionary objects
PMESS "Search for messages
PCUST "Customer data only
CUSTOMERNAMESPACE. "Customer name range
ENDLOOP.
Select Classes
WHEN RCLASS.
PERFORM RETRIEVECLASSES USING ICLASSES[]
IFUNCTIONS[]
SOCLASSNAME[] "Class name
SOAUTHOR[] "Author
CUSTOMERNAMESPACE "Customer name range
PMOD "Also modified by author
PCUST "Customer object only
PMESS "Find messages
PTEXT "Text Elements
PDICT "Dictionary structures
PFUNC "Get functions
PINC "Get includes
PRECF "Search recursively for functions
PRECI "Search recursively for includes
'X' "Search recursively for classes
PMLANG. "Language
LOOP AT IFUNCTIONS.
Find Dict structures, messages, functions, includes etc.
PERFORM SCANFORADDITIONALFUNCSTUFF USING IFUNCTIONS[]
PRECI "Search for includes recursively
PRECF "Search for functions recursively
PINC "Search for includes
PFUNC "Search for functions
PDICT "search for dictionary objects
PMESS "Search for messages
PCUST "Customer data only
CUSTOMERNAMESPACE. "Customer name range
ENDLOOP.
Select programs
WHEN RPROG.
PERFORM RETRIEVEPROGRAMS USING IPROGRAMS[]
IFUNCTIONS[]
SOPROGRAMNAME[] "Program name
SOAUTHOR[] "Author
CUSTOMERNAMESPACE "Customer name range
PMOD "Also modified by author
PCUST "Customer object only
PMESS "Find messages
PTEXT "Text Elements
PDICT "Dictionay structures
PFUNC "Get functions
PINC "Get includes
PSCR "Get screens
PRECF "Search recursively for functions
PRECI "Search recursively for includes
P$TMP "local objects
PPACK. "Package
ENDCASE.
end-of-selection
END-OF-SELECTION.
IF FORCEDEXIT = 0.
Set the file extension and output type of the file
IF PTXT IS INITIAL.
DOWNLOADFILEEXTENSION = HTMLEXTENSION.
ELSE.
DOWNLOADFILEEXTENSION = TEXTEXTENSION.
ENDIF.
Decide what to download
CASE 'X'.
Download tables
WHEN RTABLE.
IF NOT ( IDICTIONARY[] IS INITIAL ).
PERFORM DOWNLOADDDSTRUCTURES USING IDICTIONARY[]
DOWNLOADFOLDER
HTMLEXTENSION
SPACE
PSORTT
SLASHSEPARATORTOUSE
PSERV
PPROMESS.
Free up any memory used for caching HTML versions of tables
LOOP AT IDICTIONARY.
FREE MEMORY ID IDICTIONARY-TABLENAME.
ENDLOOP.
Display donwload report
IF NOT PREP IS INITIAL.
GET TIME.
RUNTIME = SY-UZEIT - STARTTIME.
PERFORM FILLTREENODETABLES USING IDICTIONARY[]
ITREEDISPLAY[]
RUNTIME.
ENDIF.
CLEAR IDICTIONARY[].
ENDIF.
Download message class
WHEN RMESS.
IF NOT ( IMESSAGES[] IS INITIAL ).
SORT IMESSAGES ASCENDING BY ARBGB MSGNR.
LOOP AT IMESSAGES.
APPEND IMESSAGES TO ISINGLEMESSAGECLASS.
AT END OF ARBGB.
PERFORM DOWNLOADMESSAGECLASS USING ISINGLEMESSAGECLASS[]
IMESSAGES-ARBGB
DOWNLOADFOLDER
DOWNLOADFILEEXTENSION
PHTML
SPACE
PCOMM
CUSTOMERNAMESPACE
PINC
PDICT
PMESS
SLASHSEPARATORTOUSE
PSERV
PPROMESS.
CLEAR ISINGLEMESSAGECLASS[].
ENDAT.
ENDLOOP.
Display download report
IF NOT PREP IS INITIAL.
GET TIME.
RUNTIME = SY-UZEIT - STARTTIME.
PERFORM FILLTREENODEMESSAGES USING IMESSAGES[]
ITREEDISPLAY[]
RUNTIME.
ENDIF.
CLEAR IMESSAGES[].
ENDIF.
Download functions
WHEN RFUNC.
IF NOT ( IFUNCTIONS[] IS INITIAL ).
PERFORM DOWNLOADFUNCTIONS USING IFUNCTIONS[]
DOWNLOADFOLDER
DOWNLOADFILEEXTENSION
SPACE
PDOC
PHTML
PCOMM
-
Passing data from abap-program to mssql database table thro native sql
Hi,
To pass the data from abap-program to mssql server,i have created database connection through dbco t.code.
now i am trying to get connection thro native sql but am not able to get it .Am working in ECC 5.0.
Could anyone help me on this.Did i miss anything?
i have tried Native-sql like this.
DATA: CON_NAME LIKE DBCON-CON_NAME VALUE 'BIW'.
EXEC SQL.
CONNECT TO :con_name AS 'C1'
ENDEXEC.
Thanks in advance.Hi,
Trying to do the same here, only using Oracle DB.
DATA: dbc TYPE DBCON_NAME VALUE 'BI'
TRY.
EXEC SQL.
CONNECT TO :dbc
ENDEXEC.
IF sy-subrc NE 0.
RAISE EXCEPTION TYPE cx_sy_native_sql_error.
ENDIF.
CATCH cx_sy_native_sql_error INTO oref_native_sql_error.
sql_emsg = oref_native_sql_error->get_text( ).
MESSAGE sql_emsg TYPE 'I'.
ENDTRY.
I keep getting the message 'Native SQL exception has occured' (because of the RAISE statement, I wonder how we can get a meaningfull error description).
Of course this can be a result of a number of network issues, so I'm trying to resolve this together with my BC admin.
I suggest the same to you..
In the meantime, if anyone can help out, it will be appreciated.
Regards,
SD -
Read DB2 tables from ABAP program
Hi All,
I have a requirement to read a DB2 table(in our landscape) from the ABAP program. I appreciate any pointers.
Thanks,
Kiran.Connecting to an External database from SAP
Step 1: Create an entry for the External database in DBCON table using Trxn: DBCA.
Table: DBCON (Description of Database Connections)
Field Name Description Value (For: E.g.:)
CON_NAME Logical name for a database RAJ
DBMS Database system MSS
USER_NAME Database user <username>
PASSWORD Password for setting up the connection to the database <pwd>/<pwd>
CON_ENV Database-specific information for a database connection MSSQL_SERVER=depotserver MSSQL_DBNAME=HOF_INDORE
DB_RECO Availability type for an open database connect
Step 2: Now you can write code to connect to the external database
Your Sample code can be something like this
FUNCTION-POOL z_houston. "MESSAGE-ID ..
DATA: BEGIN OF wa,
c_locid(3),
c_locname(50),
c_locstate(5),
END OF wa.
FUNCTION z_houston_connect.
""Local interface:
EXEC SQL.
CONNECT TO 'RAJ' AS 'V'
ENDEXEC.
EXEC SQL.
SET CONNECTION 'V'
ENDEXEC.
*- Get the data from MS-SQL Server
EXEC SQL.
open C1 for
select
loc_id,
loc_name,
loc_state
from ho_loc_mast
ENDEXEC.
DO.
EXEC SQL.
FETCH NEXT C1 into :wa-c_locid, :wa-c_locname, :wa-c_locstate
ENDEXEC.
IF sy-subrc = 0.
PERFORM loop_output.
ELSE.
EXIT.
ENDIF.
ENDDO.
EXEC SQL.
CLOSE C1
ENDEXEC.
ENDFUNCTION.
*& Form LOOP_OUTPUT
Output
FORM loop_output .
WRITE: /5 wa-c_locid, 10 wa-c_locname, 65 wa-c_locstate.
CLEAR wa.
ENDFORM. " LOOP_OUTPUT -
hi all,
i need to design flow chart for checking for a program whether it satifies the abap coding standards or not. who to do it. if possible send me graphical representations [flow charts] or links to find programming standards.
some of my requirements in that folw chart are
1. how to recognize a blank space in a given program,
2. how to recognize a comment,
3. how to check wheteher a keyword is used or not,
4. how to identify the ' :' symbol
thanks & regards,
suresh babu aluri.plz go through this documementaion,
i think its helpful.
ABAP Programming StandardsContents
1. Objective 5
2. Naming Conventions 5
2.1 Codes for naming conventions 5
2.1.1 Module Codes 5
2.1.2 Free text 6
2.2 Naming Convention of Development Objects 6
2.2.1 Package 6
2.2.2 Executable Program 6
2.2.3 BSP Application 7
2.2.4 Logical Database 8
2.2.5 SAP Scripts /Smartforms 9
2.2.6 Idocs 9
2.2.7 Transaction Code 10
2.2.8 Function Groups 10
2.2.9 Dictionary Objects 11
2.2.10 Message Class 11
2.2.11 Enhancement Projects (User Exits) 11
2.2.12 LSMW Objects 12
2.2.13 Classes 12
2.2.14 BOR Object Types 13
2.2.15 Screen / Transaction Variants 13
2.2.16 Area Menu 13
2.3 Naming of Sub-Objects 13
2.3.1 Program Sub-Objects 13
2.3.2 SAP Script /Smartform sub-objects 14
3. General Programming Guidelines 14
3.1 Modification Logs 14
3.2 Program Organization 15
3.2.1 Executable Programs 15
3.2.2 Dialog Programs 15
3.3 Package 15
3.3.1 Adding Components to existing objects 15
3.3.2 Creation of New Objects 15
3.4 Program Messages 15
3.4.1 Adding Messages to existing landscapes 15
3.4.2 Creation of New Objects 16
3.5 Dictionary Objects 16
4. Structure of ABAP Programs 16
4.1 Type 16
4.2 Status 18
4.3 Authority Check 18
4.4 Program Structure 19
4.4.1 Declaration data for global data, classes and selection screens 19
4.4.2 Container for Processing Blocks 19
4.4.3 Calling Processing Blocks 20
4.5 Screen Flow Logic (Dialog Programs) 20
4.5.1 Place the AT EXIT COMMAND at the beginning of the flow logic. 20
4.5.2 Use FIELD and CHAIN statements to keep fields in error open for correction. 20
4.6 Main Program 20
4.6.1 Events 20
5. General Coding Standards 21
5.1 One command per line 21
5.2 Indented Source Code 21
5.3 Extended Syntax Check 21
5.4 Reusability and Modularity 21
5.5 Text Handling 21
5.6 Usage of System Variables 22
5.7 Chaining Statements 22
5.8 Common Routines 22
5.9 Dialog Messages 22
5.10 Function Keys 23
5.11 Enqueuing and Dequeuing Data Objects 23
5.12 Error Handling (SY-SUBRC) 23
5.13 General Conventions and Hints 24
5.14 Parameters in Sub-Routines 24
6. Performance Standards 25
6.1 General Tips on Performance Tuning 25
6.1.1 Avoid Redundant code 25
6.1.2 Subroutine Usage 25
6.1.3 Case vs. Nested IF 25
6.1.4 Using the MOVE Statement 25
6.1.5 SELECT Queries 25
6.1.6 Using the READ statement 27
6.1.7 Hashed table 27
6.1.8 Transporting 28
6.1.9 Using LDB 28
6.1.10 Append Lines of 28
6.1.11 Use WHILE 28
6.1.12 DELETE <itab> WHERE 28
6.1.13 Using WHERE clause in LOOP .ENDLOOP 28
1. Objective
The objective of this document is to describe general programming guidelines, methodologies, Naming conventions and performance guidelines for all the programs developed for SAP Project.
2. Naming Conventions
This chapter describes the naming conventions to be followed for naming the programming objects for SAP project.
2.1 Codes for naming conventions
The variable portion of naming convention is given with Code ID given in angle brackets(<>). Use the following tables for replacing code IDs with codes in the object naming.
2.1.1 Module Codes
Code ID: mm
Code Description
FI Finance
CO Controlling Module
MM Materials Management
PP Production Planning
SD Sales & Distribution
QM Quality Management
PM Plant Maintenance
IM Inventory Management
WM Warehouse Management
BC Basis Module
BW Business Warehouse
WF Workflows (Master Data Management)
HR Human Resources
EBP EBP
PS Project Systems
PCP Synpro: Product Costing
PAP Synpro: COPA
DP APO : Demand Planning
SP APO : Supply Network Planning
DS APO : Production Planning & Detailed Scheduling
AT APO : Global ATP
TP APO : Transportation Planning/Vehicle Scheduling
CI Core Interface
LC Live Cache
2.1.2 Free text
Code ID: ffff
Developer should replace ffff with meaningful text. The text can be multiple words separated by underscore.
2.2 Naming Convention of Development Objects
2.2.1 Package
Naming Convention: Z<mm>_<ffff>.
Notes:
1. Replace <mm> with Module codes given in section 2.1.1 above.
2. Replace <ffff> with the sub-landscape of the Module that this Message Class caters to as illustrated in examples below.
3. The maximum permissible length for development class is 30 characters
Examples:
Dev. Class Description
ZFI_AR FI: Account Receivables
ZCO_CCA CO: Cost Center Accounting
2.2.2 Executable Program
Naming Convention: Z<mm>_<ffff>.
Notes:
1. Replace <mm> with module codes given in section 2.1.1 above.
2. Replace <ffff> with meaningful text as illustrated in examples below.
3. The maximum permissible length for program name is 30 characters. However, the name should be restricted to 25 characters to accommodate appropriate Include naming as described in 2.2.2.
Examples:
Program Name Description
ZFI_VAT_RET FI: Report for VAT Return
ZMM_AUTO_GR MM: Automated Goods Receipt
ZSD_XX_STCK_SHORTAGE SD: Stock shortage report for stock allocation
2.2.2.1 Includes for executable programs
Naming Convention: Z<mm>_<ffff>_<Inn>.
Notes:
1. All includes of executable program will be prefixed by Z, followed by the same program name as described in 2.2.2 above.
2. Replace <Inn> with include type and sequence number. Use the following table for includes.
Include Type ID Description
TOP Top Include.
Fnn Subroutine pool (Forms)
Inn PAI Modules
Onn PBO Modules
Xnn Other Includes
The maximum permissible length for Include name is 30 characters.
Examples:
Include Name Main Program Name Description
ZFI_VAT_RET_TOP ZFI_VAT_RET FI: Report for VAT Return Top Include
ZFI_VAT_RET_F01 ZFI_VAT_RET FI: Report for VAT Return Forms
ZMM_AUTO_GR_TOP ZMM_FR_AUTO_GR MM: Automated Goods Receipt Top include
ZMM_AUTO_GR_F01 ZMM_FR_AUTO_GR MM: Automated Goods Receipt Forms
2.2.3 BSP Application
2.2.3.1 Main Application
Naming Convention: BSP Applications shall follow the same Naming Convention as Executable Programs i.e. Z<mm>_<ffff>.
Notes:
1. Replace <mm> with module codes given in section 2.1.1 above.
2. Replace <ffff> with meaningful text as illustrated in examples below.
2.2.3.2 Pages & Controllers
Naming Convention: <ffff>
Notes:
1. Replace <ffff> with meaningful text, that adequately describes the function of the page/controller
2.2.3.3 Theme
Naming Convention: Z_<ffff>.
Notes:
1. Replace <ffff> with meaningful text
2.2.3.4 Mime Objects:
Naming Convention: <ffff>
1. A MIME Object can be logo for the company.
2. Replace <ffff> with meaningful text, that adequately describes the function of the MIME objects
2.2.3.5 Controller and Handler Classes:
See section Classes (Section 2.2.133)
2.2.3.6 BSP Extension
Naming Convention: Z_<ffff>
Notes:
1. Replace <ffff> with meaningful text
2.2.3.7 BSP Layout elements id
Label: lb_fffff
Input field: if_fffff
Button: b_fffff
Text Edit: te_fffff
Text View: tv_fffff
Radio button Group: rbg_fffff
Radio button: rb_fffff
Check Box Group: cbg_fffff
Check Box cb_fffff
Tray tr_fffff
Tabstrip ts_fffff
Tableview tab_fffff
1. Replace <fffff> with meaningful text
2.2.4 Logical Database
Naming Convention: Z<mm>_<ffff>.
Notes:
1. Replace <mm> with module codes given in section 2.1.1 above.
2. Replace <ffff> with meaningful text
3. The maximum permissible length for LDB name is 20 characters. However, the name should be restricted to 15 characters to accommodate appropriate Include naming
4. LDB Program and LDB Program Includes shall follow the naming convention Auto-Generated by SAP
2.2.5 SAP Scripts /Smartforms
Naming Convention: ZF<mm>_<ffff>.
Notes:
1. Replace <mm> with module codes given in section 2.1.1 above.
2. Replace <ffff> with meaningful text as illustrated in examples below.
Examples:
Form Name Description
ZFFI_EMP_CONF Employee Confirmation Letter
ZFFI_ANN_TO Annual Turnover Letter To Customers and Vendors
2.2.6 Idocs
2.2.6.1 Idoc Types
Basic Type :
Naming Convention : ZB<FFFF>NN
Notes:
1.Replace <NN> with sequence number.
3. Replace <ffff> with meaningful text.
Extension Type : ZX<Basic type name>_NN
Notes:
1. Replace <NN> with sequence number .
2.2.6.2 Message Types
Naming Convention : ZM<mm><ffff>.
Notes :
1. Replace <mm> with module codes given in section 2.1.1 above.
2. Replace <ffff> with meaningful text .
2.2.6.3 Process Code
Naming Convention : Z<ffff>.
Notes :
1. Replace <ffff> with meaningful text ..
2.2.6.4 IDOC Segments
Naming Convention : Z1<ffff>.
Notes :
1.Replace <ffff> with meaningful text as illustrated in examples below.
2.2.7 Transaction Code
Notes:
1. The tcode name is provided by SAP TIN The Developer must write a mail to SAP Tin asking for the T-Code name with a filled form.
The form can be found at :
2.2.8 Function Groups
Naming Convention: Z<mm><ffff>
Notes:
1. Replace <mm> with relevant module code as given above
2. Replace <ffff> with meaningful text.
2.2.8.1 Function Group Include Programs
Naming Convention: LZ<Function Group><Inn>.
Notes:
1. All includes of Function Group program will be prefixed by LZ, followed by the Function Group name
2. Replace <Inn> with include type and sequence number. Use the values from the table given in 2.2.2.1
Examples:
Include Name Function Group Name Description
SAPLZMMPURCHASING ZMMPURCHASING F.Group-Purchasing: Main Program
LZMMPURCHASINGO01 ZMMPURCHASING F.Group-Purchasing: PBO
LZMMPURCHASINGI01 ZMMPURCHASING F.Group-Purchasing: PAI
LZMMPURCHASINGF01 ZMMPURCHASING F.Group-Purchasing: Forms
LZMMPURCHASINGTOP ZMMPURCHASING F.Group-Purchasing: Data Declarations
2.2.8.2 Function Modules
2.2.8.2.1 Normal Function Modules
Convention: Z_<mm>_<ffff>.
Notes:
1. Replace <mm> with relevant module code as given above.
2. Replace <ffff> with meaningful text.
2.2.8.2.2 IDOC Function Modules
Convention: Z_IDOC_<mode>_<msg type>.
Notes:
1. Replace <mode> with INPUT or OUTPUT depending on whether the function processes incoming or outgoing IDOC.
2. Replace <msg type> with the IDOC message type.
2.2.9 Dictionary Objects
Tables: Z<mm><ffff>
Structures: ZS<mm><ffff>
Views: ZV<mm><ffff>
Data Element: ZDE<mm><ffff>
Domain: ZDO<mm><ffff>
Table Type: ZTT<mm><ffff>
Type Group: Z<ffff>
Search Help: ZSH<mm><ffff>
Lock Object: EZ<mm><ffff>
Notes:
1. Replace <mm> with module code given above.
2. Replace <ffff> with meaningful text.
2.2.10 Message Class
Naming Convention: Z<mm>_<ffff>.
Notes:
1. Replace <mm> with Module codes given in section 2.1.1 above.
2. Replace <ffff> with the sub-landscape of the Module that this Message Class caters to as illustrated in examples below.
3. The maximum permissible length for development class is 30 characters
Examples:
Msg. Class Description
ZFI_AR FI: Account Receivables
ZCO_CCA CO: Cost Center Accounting
2.2.11 Enhancement Projects (User Exits)
Convention: Z<XX><nn>.
Notes:
1. XX is the application area code e.g. for sales it is SD etc.
2. 'nn' is one up number for one application area. It starts with 001.
3. Maximum length of the Project name is 8.
Example: The name of the SD enhancement project can be ZSD001.
2.2.12 LSMW Objects
2.2.12.1 Project
Naming Convention: ZM_<ffff>.
Notes:
1. 1. Replace <ffff> with meaningful text
2. The maximum permissible length for Project name is 16 characters. But please limit it to 12.
Example : ZM_VENDOR
2.2.12.2 SubProject
Naming Convention: ZM_<ffff>_<n>.
Notes:
Suffix Project name with a running sequence no.
Example : ZM_VENDOR_1
2.2.12.3 Object
Naming Convention: ZM_<ffff>_<n><n>.
Notes:
Suffix Subproject name with a running sequence no.
Example : ZM_VENDOR_11
2.2.13 Classes
Naming Convention: ZCL_[IM/DF/BSPCO/BSPHN/BADI]_<ffff>.
1. IM: Implementation Class;
DF: Definition Class
BSPCO: BSP Controller class
BSPHN: BSP Handler class
BADI : BADI implementation
2. Replace <ffff> with meaningful text: In case of Implementation classes, it should preferably be the same as that of the Definition Class
3. Example:
IMPLEMENTATION Class: ZCL_IM_REBATE_SETTL
DEFINITION: ZCL_DF_REBATE_SETTL
2.2.14 BOR Object Types
Object Convention Example
Supertype Z<ffff> ZLVAPPL
SubType Z<SuperType><nn> ZZLVAPPL01
Program <Subtype> ZZLVAPPL01
1. Replace <nn> with a running 2 digit serial Number
2. Replace <ffff> with meaningful text
2.2.15 Screen / Transaction Variants
Naming Convention: <tcode>_<ffff>
Where:
1. Replace <tcode> with the t-code that will be assigned to this Variant
2. Replace ffff with a meaningful text
E.g.:
For an SE16 variant for table KONA that will be used by T-Code Z_CH_SD_001:
Z_CH_SD_001_KONA
2.2.16 Area Menu
Naming Convention: Z<mm>_<Main Menu>_<Sub Menu> <ffff>
Where:
1. Replace <mm> with the Module code
2. Followed by the hierarchical position of the immediate parent of this Area Menu
3. Followed by a Meaningful text for this Menu
E.g.:
ZSD
ZSD_TAB
ZSD_TAB_VIEW
ZSD_TAB_UPDT
Notes:
1. Clusters of Transactions should be introduced as Sub-Menus rather than as Folders
2. As a gradual process, the current Clusters that exist as Folders should also be replaced with Sub-Menus
2.3 Naming of Sub-Objects
2.3.1 Program Sub-Objects
Naming of all the internal components of a program will be consistent across the project.
Naming Convention: <Prefix>ffff.
Notes:
1. Replace <Prefix> with the component prefix values given in the table below.
Program Component Prefixed by
Program Constants C_
Global Variables W_
Types Definition T_
Global Structures WA_
Global Internal Tables I_
Select-Options SO_
Parameters PO_
Table Type TT_
Field Symbols FS_
Ranges R_
Local Constants LC_
Local Variables L_
Local Static Variables LS_
Local Internal Tables LI_
Local Work Area LWA_
Local Range LR_
Field Groups FG_
Container CO_
Macro MA_
Important: The Same sequence as above must be followed in the Data declaration part of all the ABAP/4 programs.
2.3.2 SAP Script /Smartform sub-objects
Naming of all the internal components of a SAPScript/SmartForm shall follow the same convention as for Programs (2.2.2), with the addition of the Field Label on the FRS. E.g. if the FRS has labeled a field for Sales Order Number as Field 27 on the Layout, the variable name should be W_27_VBELN.
3. General Programming Guidelines
3.1 Modification Logs
At the top of every ABAP Object Modified by a Developer, there should be a Modification Log Every Line Created/Changed by the developer should be Identifiable by the TR Number.
ABAP Patterns: Following Patterns should be used for Uniform ModLogs:
Nature of Change Pattern to Use
New Development ZZNEWPROG
In-Line Logs ZZLINE
Modification Logs at the Top of Object ZZMODLOG
3.2 Program Organization
All the programs will be organized as described below.
3.2.1 Executable Programs
TOP Include: For global data declarations
Form Include: For definition of all the FORMs.
3.2.2 Dialog Programs
TOP Include: For global data declarations
Form Include: For definition of all the FORMs.
PBO Include: Include for PBO Modules
PAI Include: Include for PAI Modules
3.3 Package
All the related objects within a sub-module of SAP will be developed under a single Package.
3.3.1 Adding Components to existing objects
When adding new workbench components to existing Objects, the same Package will be used as has been used for the existing Components
3.3.2 Creation of New Objects
When creating new Objects or new Sub-lanscapes, Packages used should have the Naming convention as in Section 2 Above
3.4 Program Messages
All the messages within a sub-module of SAP will be grouped under a single Message Class.
3.4.1 Adding Messages to existing landscapes
When adding new messages for existing Objects, the same Message Class will be used as has been used for the existing Objects
3.4.2 Creation of New Objects
When creating new Objects or new Sub-landscapes, Message classes used should have the Naming convention as in Section 2 Above
3.5 Dictionary Objects
Whenever you create a Z table in system always include MANDT field as the first field, except when the table contains client independent data. Also create the table with attribute Data Class as USER.
4. Structure of ABAP Programs
4.1 Type
When an ABAP program is run, its processing blocks are called. ABAP programs are controlled from outside the program itself by the processors in the current work process. For the purposes of program flow, we can summarize the screen processor and ABAP processor into the ABAP runtime environment. The runtime environment controls screens and ABAP processing blocks. It contains a range of special control patterns that call screens and processing blocks in certain orders. These sections are also called processors. When a ABAP program is run, the control passes between various processors.
In the R/3 System, there are various types of ABAP program. The program type determines the basic technical attributes of the program, and must be set when created. The main difference between the different program types is the way in which the runtime environment calls its processing blocks.
When an application program is run, it must at least call the first processing block from outside the program, that is, from the runtime environment. This processing block can then either call further processing blocks or return control to the runtime environment. When an ABAP program is started, the runtime environment starts a processor (dependent on the program type), which calls the first ABAP processing block.
The following program types are relevant to application programming:
Type 1
Type 1 programs have the important characteristic that they do not have to be controlled using user-defined screens. Instead, they are controlled by the runtime environment, which calls a series of processing blocks (and selection screens and lists where necessary) in a fixed sequence. User actions on screens can then trigger further processing blocks.
Type M
The most important technical attribute of a type M program is that it can only be controlled using screen flow logic and run via a transaction code which is linked to the program and one of its screens (initial screen).
ABAP programs with type M contain the dialog modules belonging to the various screens. They are therefore known as module pools.
Type F
Type F programs are containers for function modules, and cannot be started using a transaction code or by entering their name directly.
Type F programs are known as function groups. Function modules may only be programmed in function groups. The Function Builder is a tool in the ABAP Workbench that is used to create function groups and function modules. Apart from function modules, function groups can contain global data declarations and subroutines. These are visible to all function modules in the group. They can also contain event blocks for screens in function modules.
Type K
Type K programs are containers for global classes in ABAP Objects. Type K programs are known as class definitions. The Class Builder is a tool in the ABAP Workbench that can be used to create class definitions.
Type J
Type J programs are containers for global interface in ABAP Objects. Type J programs are known as interface definitions and are created in the Class Builder.
Type I
Type I programs - called includes - are a means of dividing up program code into smaller, more manageable units. The coding of an include program can be inserted at any point in another ABAP program using the INCLUDE statement. There is no technical relationship between include programs and processing blocks. Includes are more suitable for logical programming units, such as data declarations, or sets of similar processing blocks. The ABAP Workbench has a mechanism for automatically dividing up module pools and function groups into include programs.
4.2 Status
P = SAP standard production program
K = Customer production program
S = System program
T = Test program
Application
Categorize the program according to the purpose it fulfills.
4.3 Authority Check
Authority checks will be carried out as given in the respective FRSs.
4.4 Program Structure
ABAP programs are responsible for data processing within the individual dialog steps (ie. events) of an application program. This means that the program cannot be constructed as a single sequential unit, but must be divided into sections that can be assigned to the individual dialog steps. To meet this requirement, ABAP programs should have a modular structure. Each module is called a processing block. A processing block consists of a set of ABAP statements. When a program is run, effectively a series of processing blocks is called. Therefore, they should not be nested but modularized.
Each ABAP program consists of the following two parts:
4.4.1 Declaration data for global data, classes and selection screens
The first part of an ABAP program is the declaration part for global data, classes, and selection screens. This consists of:
All declaration statements for global data. Global data is visible in all internal processing blocks and should be defined using declarative statements that appear before the first processing block, in dialog modules, or in event blocks. Local data should not be declared in dialog modules or event blocks.
All selection screen definitions.
All local class definitions (CLASS DEFINITION statement). Local classes are part of ABAP Objects, the object-oriented extension of ABAP.
Declaration statements which occur in procedures (methods, subroutines, function modules) form the declaration part for local data in those processing blocks. This data is only visible within the procedure in which it is declared.
4.4.2 Container for Processing Blocks
The second part of an ABAP program contains all of the processing blocks for the program. The following types of processing blocks are allowed:
1. Dialog modules (no local data area)
2. Event blocks (no local data area)
3. Procedures (methods, subroutines and function modules with their own local data area).
Whereas dialog modules and procedures are enclosed in the ABAP keywords which define them, event blocks are introduced with event keywords and concluded implicitly by the beginning of the next processing block.
All ABAP statements (except declarative statements in the declaration part of the program) are part of a processing block. Non-declarative ABAP statements, which occur between the declaration of global data and a processing block are automatically assigned to the START-OF-SELECTION processing block.
4.4.3 Calling Processing Blocks
Processing blocks can be called from either the ABAP program or using ABAP commands which are themselves part of a processing block. Dialog modules and event blocks are called from outside the ABAP program. Procedures are called using ABAP statements in ABAP programs.
Calling event blocks is different from calling other processing blocks for the following reasons:
An event block call is triggered by an event. User actions on selection screens and lists, and the runtime environment trigger events that can be processed in ABAP programs. Define event blocks for the events that the program needs to react to (whereas a subroutine call, for example, must have a corresponding subroutine). This ensures that while an ABAP program may react to a particular event, it is not forced to do so.
4.5 Screen Flow Logic (Dialog Programs)
4.5.1 Place the AT EXIT COMMAND at the beginning of the flow logic.
Example:
PROCESS AFTER INPUT
MODULE EXIT_1170 AT EXIT-COMMAND.
MODULE PAINT_1170.
4.5.2 Use FIELD and CHAIN statements to keep fields in error open for correction.
Example:
PROCESS AFTER INPUT.
MODULE EXIT_1170 AT EXIT-COMMAND.
CHAIN.
FIELD BTCH1170-JOBNAME.
FIELD BTCH1170-USERNAME.
FIELD BTCH1170-FROM_DATE.
FIELD BTCH1170-FROM_TIME.
MODULE PAINT_1170.
ENDCHAIN.
4.6 Main Program
4.6.1 Events
The Program MUST NOT be coded without the use of Proper Coding blocks
Initializations
Top-of-page during line-selection
At Selection-Screen
At Line-Selection
At User-Command
At Pfn
Start-Of-Selection
Top-Of-Page
Get
End-Of-Page
End-Of-Selection
NOTE: The coding for each event should be logically split into forms (subroutines). That is to say, each event will comprise mostly of PERFORM statements.
5. General Coding Standards
5.1 One command per line
Each ABAP/4 command consists of a sentence ending with a period. Multiple commands can be on one line; however, as a standard start each new command on a new line. This will allow for easier deleting, commenting, and debugging.
5.2 Indented Source Code
The ABAP/4 editor has a "Pretty Printer" command to indent by 2 positions specific lines of code and add subroutine comments. Event keywords are typically not indented.
5.3 Extended Syntax Check
Extended Program Check (EPC) to be done on each object to make sure the code is Syntactically correct. There should be no Error/warning messages in the code.
5.4 Reusability and Modularity
If a block of code is executed more than once, it should be placed in a subroutine at the bottom of the code. This makes the code more readable, requires less indentation, and is easier to debug since the debugger can jump through an entire subroutine via a PF key. Also, when possible parameters should be passed to and from subroutines to make the purpose easier to understand and reduce the need for global variables. Always document the purpose of each parameter.
5.5 Text Handling
Text elements must be used to display any text messages.
5.6 Usage of System Variables
The system variables should be used wherever possible. The SY-SUBRC is to be checked after any function call, selection operation, etc.
5.7 Chaining Statements
Consecutive sentences with an identical beginning shall be combined into a chained statement.
Example:
Instead of the statements
MOVE SY-MANDT TO D00001-MANDT.
MOVE SY-LANGU TO D00001-SPRAS.
A chained statement shall be used
MOVE:
SY-MANDT TO D00001-MANDT,
SY-LANGU TO D00001-SPRAS,
SY-UNAME TO D00001-BNAME.
5.8 Common Routines
Standard sub-routines should be implemented as FUNCTION's rather than a FORM (ie. SUBROUTINE). A FUNCTION is easier to maintain and can be easily tested without a calling program. Standard SAP function modules are also available and the function library should be used to check if function modules already exist for a function that needs to be performed i.e.POPUP_TO_CONFIRM_LOSS_OF_DATA etc.
Includes can also be created for re-usable or common code e.g. common data declaration statements.
5.9 Dialog Messages
Dialogue messages are stored in table T100. Programmers shall check to see if an appropriate message exists before adding a new message. Programs shall use the message-id which corresponds to the SAP module that the program most relates to.
5.10 Function Keys
PF-keys should be programmed to execute functions where required. SAP Standard function keys should be used where appropriate. The most commonly used buttons should be displayed as pushbuttons in the application toolbar.
5.11 Enqueuing and Dequeuing Data Objects
All database objects being processed by a program, for purposes other than for display, shall be enqueued before such processing is executed. If the enqueue is unsuccessful, then a message shall be returned stating why the enqueue was unsuccessful.
Enqueue and Dequeue objects should be created via the data dictionary.
5.12 Error Handling (SY-SUBRC)
Return codes shall always be checked immediately after an event which returns a code.
Eg. Function calls, Select statements, Updates etc.
The value of SY-SUBRC is 0 when successful and generally produces a value of 4 when unsuccessful (there are a few exceptions).
Therefore, rather check SY-SUBRC with:
IF SY-SUBRC <> 0
than with
IF SY-SUBRC = 4 (which is redundant and makes the system do a double check)
Error messages displayed to the user must be clear and descriptive.
Remember to group related / dependant steps together and to Rollback all changes for steps in that group should any one of them fail, thus maintaining the integrity of the system.
Check whether an Error Log, (file), must be produced by your program and if so check on the format of the file.
If any Error Logging is done to a custom table in the database then make sure this table is maintained and monitored correctly. (Dev. Note)
Transaction SE91 provides the facility to create and utilize messages in their appropriate message class. Elaborate on the message if necessary, using the long text documentation for that message number.
5.13 General Conventions and Hints
There should be NO hard coding of values in programs easy maintainability
For amounts, use the CURRENCY command in write statements to automatically convert fields into their correct decimal format. The currency specified in the write statement is treated as a key for the table TCURX. If no entry exists for the currency specified, the system assumes two decimal places.
For quantities, use the UNIT command in write statements to automatically convert fields into their correct decimal format. The contents of the unit specified are used on table T006. If no entry exists for the unit specified, the formatting has no effect.
Use the LIKE statement as often as possible to declare DATA variables instead of an explicit TYPE declarations.
Try to use the INCLUDE statement with standard SAP structures and tables for your structures and internal tables where possible. If you use the include statement to include other program components in your code then document what those components are, what they do and how to use them.
Try to make use of standard SAP Function Modules wherever possible rather than building your own. Use the pull down functionality in transaction SE37 to find suitable standard function modules.
Make use of the SAP PATTERN tool to automatically insert the standard code for:
CALL FUNCTION
MESSAGE ID
SELECT*FROM
PERFORM
AUTHORITY-CHECK
WRITE
CASE
CALL DIALOG
The standard date format to use is DD/MM/YYYY. (Dev. Note)
The standard time format to use is HH:MM:SS.
5.14 Parameters in Sub-Routines
Naming convention for Parameters in subroutine is P_
6. Performance Standards
6.1 General Tips on Performance Tuning
6.1.1 Avoid Redundant code
Avoid leaving "dead" code in the program. Comment out variables that are not referenced and code that is not executed. To analyze the program, use the Program Analysis function in SE38 -> Utilities -> Program Analysis.
6.1.2 Subroutine Usage
For good modularization, the decision of whether or not to execute a subroutine should be made before the subroutine is called.
Example:
IF f1 NE 0.
PERFORM sub1.
ENDIF.
FORM sub1.
ENDFORM.
6.1.3 Case vs. Nested IF
When testing fields "equal to" something, one can use either the nested IF or the CASE statement. The CASE is better for two reasons. It is easier to read and after about five nested IFs the performance of the CASE is more efficient.
6.1.4 Using the MOVE Statement
When records a and b have the exact same structure, it is more efficient to MOVE a TO b than to MOVE-CORRESPONDING a TO b.
6.1.5 SELECT Queries
The performance of any ABAP program mainly depends on the ABAP Queries used in it. More optimum the queries , better the performance. Take care of the points mentioned nin the following sections while writing any ABAP queries.
6.1.5.1 Using all the keys in SELECT statement
When using the SELECT statement, study the key and always provide as much of the left-most part of the key as possible. The SELECT * command is to be avoided everywhere.
6.1.5.2 Fetching Single Record
If the entire key can be qualified, code a SELECT SINGLE not just a SELECT. If all the keys are not available, we should use SELECT UPTO 1 ROWS if we are interested only in the first record.
6.1.5.3 Avoid SELECT-ENDSELECT
Selecting data into an internal table using an array fetch versus a SELECT-ENDELECT loop will give at least a 2x performance improvement. After the data has been put into the internal data, then row-level processing can be done.
Example:
select ... from table <..>
into <itab>
where ...
loop at <itab>
<do the row-level processing here>
endloop.
6.1.5.4 Using Indexs
Use indexes wherever possible. Tune the Query so that optimum Indexing will happen.
6.1.5.5 Provide all the keys
Give as many keys as possible in the WHERE clause to optimize the database fetching. Use the Index fields in the first position to optimize performance.
6.1.5.6 Avoid INTO CORRESPONDING
Avoid using INTO CORESPONDING FIELDS of Table. Instead, explicitly mention the fields. Else, The Table Fields should be in the same sequence as the selection
6.1.5.7 SELECT statement inside LOOP
Do not write SELECT statements inside the loop. Instead, use the FOR ALL ENTRIES Command
Before using FOR ALL ENTRIES command, check that the
1. Corresponding Internal table is not empty. If the Internal table is empty, the statement will select ALL the entries in the Database
2. The Internal table is sorted by the Filed used in the Where Clause: This makes selection faster
6.1.5.8 Nested SELECT statement
Avoid Using nested SELECT statements. Instead, make use of different internal tables to fetch the data, and Use Nested LOOPS to read them.
6.1.5.9 Select Distinct
Whenever its possible avoid SELECT DISTINCT, instead select data into internal table, sort and use DELETE ADJACENT DUPLICATES
6.1.5.10 Use of OR in Where Clause
Do not use OR when selecting data from DB table using an index because The optimizer generally stops if the WHERE condition contains an OR expression.
e.g.
Instead of
SELECT * FROM spfli WHERE carrid = LH
AND (cityfrom = FRANKFURT OR
city from = NEWYORK)
Use
SELECT * FROM spfli WHERE (carrid = LH AND cityfrom = FRANKFURT)
OR (carrid = LH AND cityfrom = NEWYORK).
6.1.5.11 Order By
ORDER BY will Bypass buffer. So, performance will decrease. If you want to sort data, it is efficient to SORT them in INTERNAL TABLE rather than using ORDER BY. Only use an ORDER BY in your SELECT if the order matches the index, which should be used.
6.1.6 Using the READ statement
When reading a single record in an internal table, the READ TABLE WITH KEY is not a direct READ. The table needs to be sorted by the Key fields and the command READ TABLE WITH KEY BINARY SEARCH is to be used.
6.1.7 Hashed table
If the number of entries in the Internal Table is high then use Hashed Table with Keys to access the table.
6.1.8 Transporting
With READ or MODIFY Statements use TRANSPORTING
6.1.9 Using LDB
In order to improve performance in case of an LDB, individual tables can be excluded from selection. Under the section Table Selection in the Documentation of LDB the fields with proper description has been given those fields can be set in the application report at the time of INITIALIZATION or at the START OF SELECTION. This can enhance the performance.
6.1.10 Append Lines of
Whenever it is possible use APPEND LINES OF to append the internal Tables instead of using loop and then APPEND Statement.
6.1.11 Use WHILE
Use WHILE instead of a DO+EXIT-construction, as WHILE is easier to understand and faster to execute
6.1.12 DELETE <itab> WHERE
Use DELETE <itab> WHERE for deleting records from an internal table.
e.g.
Instead of
LOOP AT <itab> WHERE <field> = 0001
DELETE <itab>.
ENDLOOP.
Use
DELETE <itab> WHERE <field> = 0001.
6.1.13 Using WHERE clause in LOOP .ENDLOOP
Use:
Sort ITAB by NAME.
Loop at itab where name EQ SY-UNAME
Endloop.
Instead Of:
Read itab with key name = SY-UNAME.
L_tabix = sy-tabix.
Loop at itab from l_tabix.
If name eq bijoy
Endif.
Endloop. -
Hi Experts,
I got below error when checking an ABAP program, which was generated in maintaining datasouce with RSA6.
Description:
Type Group RSFH
In Unicode programs, the "-" character canot appear in names, as it does here in the name "RSFH_C_TFMETHODE-TEST".
Any input will be very appreciated.
Thanks,
BillHi
It should be Warning Message, not an error i think.. Which Version of SAP you are working...
Still you can Execute the Program, as if its only Warning..
You can see that in the Attributes of the Program..
If it has a Program name , then goto SE38 -> give program name -> select Attributes Radio button.-> display....
You can see that is unicode enabled or not....
\[removed by moderator\]
Edited by: Jan Stallkamp on Jul 9, 2008 8:27 AM -
Finding User Exists in an ABAP program
**How to findout where there is an exit are there in the ABAP Programs.
Thankyou for your time in giving the answers.
Bhaskar.use cmod /smod transaction..
below is demo code to find BADI n user exits for a transaction ( u can go to se93 and create a transaction for ur report program) and then execute this piece of code -
reward if helpfull
TABLES : TSTC,
TADIR,
MODSAPT,
MODACT,
TRDIR,
TFDIR,
ENLFDIR,
SXS_ATTRT ,
TSTCT.
DATA : JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA : FIELD1(30).
DATA : V_DEVCLASS LIKE TADIR-DEVCLASS.
PARAMETERS : P_TCODE LIKE TSTC-TCODE,
P_PGMNA LIKE TSTC-PGMNA .
DATA wa_tadir type tadir.
START-OF-SELECTION.
IF NOT P_TCODE IS INITIAL.
SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
ELSEIF NOT P_PGMNA IS INITIAL.
TSTC-PGMNA = P_PGMNA.
ENDIF.
IF SY-SUBRC EQ 0.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'PROG'
AND OBJ_NAME = TSTC-PGMNA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
IF SY-SUBRC NE 0.
SELECT SINGLE * FROM TRDIR
WHERE NAME = TSTC-PGMNA.
IF TRDIR-SUBC EQ 'F'.
SELECT SINGLE * FROM TFDIR
WHERE PNAME = TSTC-PGMNA.
SELECT SINGLE * FROM ENLFDIR
WHERE FUNCNAME = TFDIR-FUNCNAME.
SELECT SINGLE * FROM TADIR
WHERE PGMID = 'R3TR'
AND OBJECT = 'FUGR'
AND OBJ_NAME EQ ENLFDIR-AREA.
MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
ENDIF.
ENDIF.
SELECT * FROM TADIR INTO TABLE JTAB
WHERE PGMID = 'R3TR'
AND OBJECT in ('SMOD', 'SXSD')
AND DEVCLASS = V_DEVCLASS.
SELECT SINGLE * FROM TSTCT
WHERE SPRSL EQ SY-LANGU
AND TCODE EQ P_TCODE.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) P_TCODE,
45(50) TSTCT-TTEXT.
SKIP.
IF NOT JTAB[] IS INITIAL.
WRITE:/(105) SY-ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
Sorting the internal Table
sort jtab by OBJECT.
data : wf_txt(60) type c,
wf_smod type i ,
wf_badi type i ,
wf_object2(30) type C.
clear : wf_smod, wf_badi , wf_object2.
Get the total SMOD.
LOOP AT JTAB into wa_tadir.
at first.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 'Enhancement/ Business Add-in',
41 SY-VLINE ,
42 'Description',
105 SY-VLINE.
WRITE:/(105) SY-ULINE.
endat.
clear wf_txt.
at new object.
if wa_tadir-object = 'SMOD'.
wf_object2 = 'Enhancement' .
elseif wa_tadir-object = 'SXSD'.
wf_object2 = ' Business Add-in'.
endif.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 SY-VLINE,
2 wf_object2,
105 SY-VLINE.
endat.
case wa_tadir-object.
when 'SMOD'.
wf_smod = wf_smod + 1.
SELECT SINGLE MODTEXT into wf_txt
FROM MODSAPT
WHERE SPRSL = SY-LANGU
AND NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
when 'SXSD'.
For BADis
wf_badi = wf_badi + 1 .
select single TEXT into wf_txt
from SXS_ATTRT
where sprsl = sy-langu
and EXIT_NAME = wa_tadir-OBJ_NAME.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
endcase.
WRITE:/1 SY-VLINE,
2 wa_tadir-OBJ_NAME hotspot on,
41 SY-VLINE ,
42 wf_txt,
105 SY-VLINE.
AT END OF object.
write : /(105) sy-ULINE.
ENDAT.
ENDLOOP.
WRITE:/(105) SY-ULINE.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No.of Exits:' , wf_smod.
WRITE:/ 'No.of BADis:' , wf_badi.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
data : wf_object type tadir-object.
clear wf_object.
GET CURSOR FIELD FIELD1.
CHECK FIELD1(8) EQ 'WA_TADIR'.
read table jtab with key obj_name = sy-lisel+1(20).
move jtab-object to wf_object.
case wf_object.
when 'SMOD'.
SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
when 'SXSD'.
SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
CALL TRANSACTION 'SE1 ' AND SKIP FIRST SCREEN.
endcase. -
Hello,
I have a report that gives me the following DUMP when I run it through a JOB, I want an expert to help me see why the error:
¿Qué ha sucedido?
Error in the ABAP Application Program
The current ABAP program "SAPLKKBL" had to be terminated because it has
come across a statement that unfortunately cannot be executed.
¿Qué puede hacer?
Note down which actions and inputs caused the error.
To process the problem further, contact you SAP system
administrator.
Using Transaction ST22 for ABAP Dump Analysis, you can look
at and manage termination messages, and you can also
keep them for a long time.
Anál.errores
You attempted to access an unassigned field symbol
(data segment 121).
This error may occur if
- You address a typed field symbol before it has been set with
ASSIGN
- You address a field symbol that pointed to the line of an
internal table that was deleted
- You address a field symbol that was previously reset using
UNASSIGN or that pointed to a local field that no
longer exists
- You address a global function interface, although the
respective function module is not active - that is, is
not in the list of active calls. The list of active calls
can be taken from this short dump.
Notas para corregir errores
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"GETWA_NOT_ASSIGNED" " "
"SAPLKKBL" or "LKKBLF99"
"GEN_FIELD_OUT2"
If you cannot solve the problem yourself and want to send an error
notification to SAP, include the following information:
1. The description of the current problem (short dump)
To save the description, choose "System->List->Save->Local File
(Unconverted)".
2. Corresponding system log
Display the system log by calling transaction SM21.
Restrict the time interval to 10 minutes before and five minutes
after the short dump. Then choose "System->List->Save->Local File
(Unconverted)".
3. If the problem occurs in a problem of your own or a modified SAP
program: The source code of the program
In the editor, choose "Utilities->More
Utilities->Upload/Download->Download".
4. Details about the conditions under which the error occurred or which
actions and input led to the error.
The line gives me the error is:
when 030.
if gs_out_flags-slave ne 'X'.
assign .
gs_fc = gs_mfc30.
else.
Thank you...Hello,
The program when run on line no problem, runs fine, the problem is when running in the background ...
And if Z is a program...
Thank
Maybe you are looking for
-
Where's the suggestion box?
I've read a lot of these posts and other discussions on line about ATV. Initially, lots of people thought ATV should have a DVD player or a larger disk drive or whatever. After using the box since the day after it became available, I humbly offer the
-
Intermittent bounce backs and non receiving of emails
Lately I has discovered that some people in various parts of the world have been sending me emails and I never get the emails. So other friends have been get bounce back emails when they send to my .mac. I have been having so many problems with .mac
-
Hi I have a FIXED file format like this a1a1a1a11000b1b1b1c1c1c1d1d1 x1x1x10010y1y1y1z1z1z1 a2a2a2a2a2a2a2a21000b2b2bc2c2c2d2d2 x2x2x20010y2y2y2z2z2z2 how to comfigure my adpter please help me regards Sowmya
-
ITunes is only sharing one way...how do I get it to share 2-way?
My primary computer is a iMac G4 800, running 10.4.8, with iTunes 7.1. My secondary computer is a iMac G3 500, running 10.3.9, with iTunes 7.1. A brief overview of my network: cable modem to router1. From router 1 to: computer1(PC), computer2(iMac G3
-
In FBl5n (after accounting process) exchange rate gets change
Dear Experts , I am facing issue regarding in FBl5n (after accounting process) exchange rate gets change. Due to this, there is a difference in billing amount. According to the KBA 1481328, If there is a manual entry in the sales order field VBKD-K