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

SY-SUBRC ??

Former Member
0 Likes
2,902

Please tell me all about <b>SY-SUBRC</b>????

Thanks.

Regards.

Farooq

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,424

Hi farooq,

sy-subrc is one of the abap system field.ABAP system fields are always available in ABAP programs. The runtime system fills them according to context. They can then be used in programs to query the system status. System fields are variables but you should always treat them as though they were constants, and only read them. If you change their values, important information for the flow of the program may be lost. In exceptional circumstances, system fields may be overwritten in an ABAP program to control the system – for example, SY-LSIND (for navigating to a detail list).

SY-SUBRC

Return value set by the following ABAP statements. In general, a content of 0 means that the statement was executed without problems.

· ASSIGNsets SY-SUBRC to 0 if assignment to field symbol is possible, otherwise 4.

· ASSIGN dref->* sets SY-SUBRC to 0 if dereferencing is possible, otherwise 4.

· AUTHORITY-CHECK sets SY-SUBRC to 0 if the user has the necessary authorization, otherwise 4, 8, 12, 16, 24, 28, 32, or 36 depending on the cause.

· CALL DIALOG with USING sets SY-SUBRC to 0, if processing was successful, otherwise <>0.

· CALL FUNCTION sets SY-SUBRC according to the exception handling.

· CALL METHOD sets SY-SUBRC according to the exception handling.

· CALL SELECTION-SCREEN sets SY-SUBRC to 0 if the user chose Enter or Execute and 4 if the user chose Cancel.

· CALL TRANSACTION with USING sets SY-SUBRC to 0 if processing was successful, otherwise <>0.

· CATCH SYSTEM-EXCEPTIONS sets SY-SUBRC if there are runtime errors after the ENDCATCH statement. The value is specified in the program.

· COMMIT WORK sets SY-SUBRC to 0.

· COMMIT WORK AND WAIT sets SY-SUBRC to 0 if update was successful, otherwise <>0.

· COMMUNICATION INIT DESTINATION … RETURNCODE sets SY-SUBRC as specified.

· CONCATENATE sets SY-SUBRC to 0 if the result fits into target variable, otherwise 4.

· CREATE OBJECT sets SY-SUBRC if the exceptions of the instance constructor are handled.

· CREATE OBJECT in OLE2 sets SY-SUBRC to 0 if an external object was created, otherwise 1,2, 3 with different causes.

· DELETEsets SY-SUBRC to 0 if operation was successful, otherwise 4 or <> 0 depending on cause.

· DEMAND … MESSAGES INTO sets SY-SUBRC to 0 if a message table is empty, otherwise <> 0.

· DESCRIBE LIST sets SY-SUBRC to 0 if row or list exists, otherwise 4 or 8.

· EXEC SQL - ENDEXEC sets SY-SUBRC to 0 in almost all cases. Only if no set was read with FETCH is SY-SUBRC 4.

· FETCHsets SY-SUBRC to 0 if at least one row was read, otherwise 4.

· GENERATE SUBROUTINE POOL sets SY-SUBRC to 0 if generation was successful, otherwise 8.

· GET CURSOR sets SY-SUBRC to 0 if the cursor is correctly positioned, otherwise 4.

· GET PARAMETER sets SY-SUBRC to 0 if value found in SAP Memory, otherwise 4.

· IMPORTsets SY-SUBRC to 0 if import of data objects was successful, otherwise 4.

· INSERTsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· LOAD REPORT sets SY-SUBRC to 0 if operation was successful, otherwise 4 or 8 depending on cause.

· LOOPsets SY-SUBRC to 0 if loop over extract was passed at least once, otherwise 4.

· LOOP ATsets SY-SUBRC to 0 if loop over internal table was passed at least once, otherwise 4.

· MODIFYsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· MODIFY LINE sets SY-SUBRC to 0 if list row was changed, otherwise <> 0.

· MODIFYsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· OLE2 automation, bundled commands set SY-SUBRC to 0 if all were successfully executed, otherwise 1, 2, 3, 4 depending on cause.

· OPEN DATASET sets SY-SUBRC to 0 if the file was opened, otherwise 8.

· Open SQL commands set SY-SUBRC to 0 if operation was successful, otherwise <>0.

· OVERLAYsets SY-SUBRC to 0 if at least one character is overlayed, otherwise 4.

· READ DATASET sets SY-SUBRC to 0 if the read operation was successful, otherwise 4 or 8 depending on cause.

· READ LINE sets SY-SUBRC to 0 if list row exists, otherwise <> 0.

· READ TABLE sets SY-SUBRC to 0 if the table row was found, otherwise 2, 4, 8 depending on cause.

· REPLACEsets SY-SUBRC to 0 if search string could be replaced, otherwise <> 0.

· ROLLBACK WORK always sets SY-SUBRC to 0.

· SCROLLsets SY-SUBRC to 0 if scrolling in list successful, otherwise 4 or 8 depending on cause.

· SEARCHsets SY-SUBRC to 0 if search string was found, otherwise 4.

· SELECTsets SY-SUBRC to 0 if at least one row was read, otherwise 4 or even 8 with SELECT SINGLE FOR UPDATE.

· SET COUNTRY sets SY-SUBRC to 0 if country ID was found in table T005X, otherwise 4.

· SET BITsets SY-SUBRC to 0 if bit was set, otherwise <> 0.

· SET TITLEBAR sets SY-SUBRC to 0 if title exists, otherwise 4.

· SHIFT … UP TO sets SY-SUBRC to 0 if position was found in character string, otherwise 4.

· SPLITsets SY-SUBRC to 0 if size of target fields is sufficient, otherwise 4.

· UPDATEsets SY-SUBRC to 0 if operation successful, otherwise 4.

· WRITE … TO sets SY-SUBRC to 0 if assignment successful, otherwise 4.

With one exception the names and data types of the system fields are stored in the ABAP Dictionary in the SYST structure and realized as components of the predefined structure SY in ABAP programs

Regards,

Kumar

Please tell me all about <b>SY-SUBRC</b>????

Thanks.

Regards.

Farooq

10 REPLIES 10
Read only

Former Member
0 Likes
2,424

hi,

When executing a Query if the query returns any value

Sy-subrc is used

if SY-subrc EQ 0

there is a value

IF sy-subrc eq 4

there is no value

Cheers

Alfred

Read only

Former Member
0 Likes
2,424

If you want to check if a operation is successful or not you check the value of the variable SY-SUBRC.

It need not be SELECT alone.

If it is 0, then the operation is successful.

Regards,

Ravi

Note - Please mark all the helpful answers

Read only

Former Member
0 Likes
2,424

hi,

Return Value After ABAP Statements

Regards,

Santosh

Read only

Former Member
0 Likes
2,425

Hi farooq,

sy-subrc is one of the abap system field.ABAP system fields are always available in ABAP programs. The runtime system fills them according to context. They can then be used in programs to query the system status. System fields are variables but you should always treat them as though they were constants, and only read them. If you change their values, important information for the flow of the program may be lost. In exceptional circumstances, system fields may be overwritten in an ABAP program to control the system – for example, SY-LSIND (for navigating to a detail list).

SY-SUBRC

Return value set by the following ABAP statements. In general, a content of 0 means that the statement was executed without problems.

· ASSIGNsets SY-SUBRC to 0 if assignment to field symbol is possible, otherwise 4.

· ASSIGN dref->* sets SY-SUBRC to 0 if dereferencing is possible, otherwise 4.

· AUTHORITY-CHECK sets SY-SUBRC to 0 if the user has the necessary authorization, otherwise 4, 8, 12, 16, 24, 28, 32, or 36 depending on the cause.

· CALL DIALOG with USING sets SY-SUBRC to 0, if processing was successful, otherwise <>0.

· CALL FUNCTION sets SY-SUBRC according to the exception handling.

· CALL METHOD sets SY-SUBRC according to the exception handling.

· CALL SELECTION-SCREEN sets SY-SUBRC to 0 if the user chose Enter or Execute and 4 if the user chose Cancel.

· CALL TRANSACTION with USING sets SY-SUBRC to 0 if processing was successful, otherwise <>0.

· CATCH SYSTEM-EXCEPTIONS sets SY-SUBRC if there are runtime errors after the ENDCATCH statement. The value is specified in the program.

· COMMIT WORK sets SY-SUBRC to 0.

· COMMIT WORK AND WAIT sets SY-SUBRC to 0 if update was successful, otherwise <>0.

· COMMUNICATION INIT DESTINATION … RETURNCODE sets SY-SUBRC as specified.

· CONCATENATE sets SY-SUBRC to 0 if the result fits into target variable, otherwise 4.

· CREATE OBJECT sets SY-SUBRC if the exceptions of the instance constructor are handled.

· CREATE OBJECT in OLE2 sets SY-SUBRC to 0 if an external object was created, otherwise 1,2, 3 with different causes.

· DELETEsets SY-SUBRC to 0 if operation was successful, otherwise 4 or <> 0 depending on cause.

· DEMAND … MESSAGES INTO sets SY-SUBRC to 0 if a message table is empty, otherwise <> 0.

· DESCRIBE LIST sets SY-SUBRC to 0 if row or list exists, otherwise 4 or 8.

· EXEC SQL - ENDEXEC sets SY-SUBRC to 0 in almost all cases. Only if no set was read with FETCH is SY-SUBRC 4.

· FETCHsets SY-SUBRC to 0 if at least one row was read, otherwise 4.

· GENERATE SUBROUTINE POOL sets SY-SUBRC to 0 if generation was successful, otherwise 8.

· GET CURSOR sets SY-SUBRC to 0 if the cursor is correctly positioned, otherwise 4.

· GET PARAMETER sets SY-SUBRC to 0 if value found in SAP Memory, otherwise 4.

· IMPORTsets SY-SUBRC to 0 if import of data objects was successful, otherwise 4.

· INSERTsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· LOAD REPORT sets SY-SUBRC to 0 if operation was successful, otherwise 4 or 8 depending on cause.

· LOOPsets SY-SUBRC to 0 if loop over extract was passed at least once, otherwise 4.

· LOOP ATsets SY-SUBRC to 0 if loop over internal table was passed at least once, otherwise 4.

· MODIFYsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· MODIFY LINE sets SY-SUBRC to 0 if list row was changed, otherwise <> 0.

· MODIFYsets SY-SUBRC to 0 if operation was successful, otherwise 4.

· OLE2 automation, bundled commands set SY-SUBRC to 0 if all were successfully executed, otherwise 1, 2, 3, 4 depending on cause.

· OPEN DATASET sets SY-SUBRC to 0 if the file was opened, otherwise 8.

· Open SQL commands set SY-SUBRC to 0 if operation was successful, otherwise <>0.

· OVERLAYsets SY-SUBRC to 0 if at least one character is overlayed, otherwise 4.

· READ DATASET sets SY-SUBRC to 0 if the read operation was successful, otherwise 4 or 8 depending on cause.

· READ LINE sets SY-SUBRC to 0 if list row exists, otherwise <> 0.

· READ TABLE sets SY-SUBRC to 0 if the table row was found, otherwise 2, 4, 8 depending on cause.

· REPLACEsets SY-SUBRC to 0 if search string could be replaced, otherwise <> 0.

· ROLLBACK WORK always sets SY-SUBRC to 0.

· SCROLLsets SY-SUBRC to 0 if scrolling in list successful, otherwise 4 or 8 depending on cause.

· SEARCHsets SY-SUBRC to 0 if search string was found, otherwise 4.

· SELECTsets SY-SUBRC to 0 if at least one row was read, otherwise 4 or even 8 with SELECT SINGLE FOR UPDATE.

· SET COUNTRY sets SY-SUBRC to 0 if country ID was found in table T005X, otherwise 4.

· SET BITsets SY-SUBRC to 0 if bit was set, otherwise <> 0.

· SET TITLEBAR sets SY-SUBRC to 0 if title exists, otherwise 4.

· SHIFT … UP TO sets SY-SUBRC to 0 if position was found in character string, otherwise 4.

· SPLITsets SY-SUBRC to 0 if size of target fields is sufficient, otherwise 4.

· UPDATEsets SY-SUBRC to 0 if operation successful, otherwise 4.

· WRITE … TO sets SY-SUBRC to 0 if assignment successful, otherwise 4.

With one exception the names and data types of the system fields are stored in the ABAP Dictionary in the SYST structure and realized as components of the predefined structure SY in ABAP programs

Regards,

Kumar

Read only

Former Member
0 Likes
2,424

HI,

Sy-subrc is a System field which will return a code, using this Return value we can say that the action is success or failed.

Nomally is this returns '0', then the statment is success, if this return '2', then is partially success(That means fail), if this return '4' or '8' then this fail.

some keywords like CONDENCE, TRANSLATE, and TRANSFER will not retunr the SY-SUBRC

Regards

Sudheer

Read only

former_member404244
Active Contributor
0 Likes
2,424

Hi,

if sy-subrc eq 0.

then value is present and the select query is successful..

if sy-subrc eq 4.

there is no value and select query is failed

One more thing is that as per ravi it neednot to be a select query always.

sometimes we wil chek for Function modules also.So it will be better to call as Return Value After ABAP Statements

Read only

Former Member
0 Likes
2,424

Hi Hussian,

SY-SUBRC is nothing but "Return Value, Return Value After ABAP Statements".

you can find that in SYST table.

This is just for checking.

if sy-subrc = 0. means you have sucess records

if sy-subrc = 4 means its an error.

Thanks

Vikranth Khimavath

Read only

Former Member
0 Likes
2,424

Hi Farooq,

SY-SUBRC is the system return parameter that SAP provides for all actions like Select, Read, the outcome of a Function module etc.

In general, if the SY-SUBRC = 0, then that action has been performed successfully.

If SY-SUBRC > 0 then, the system has raised an exception.

Usually to check the correctness of steps in custom programs, we determine the SY-SUBRC to ensure we can proceed further or need to raise an exception.

Trust this helps. Do mark points if helpful.

Best Regards,

Biju

Read only

Former Member
0 Likes
2,424

Hi

To know whether the given transaction is success or not you will use SY-SUBRC system field. This field returns 0 if the transaction is success, else it will return other number based on the error.

Please award the points to suitable answers and close the thread if your question is answered.

Regards

Haritha.

Read only

Former Member
0 Likes
2,424

hi,

Return value set by the following ABAP statements.

In general, a content of 0 means that the statement was executed without problems otherwise 4.

shan