SQL Server administration and T-SQL development, Web Programming with ASP.NET, HTML5 and Javascript, Windows Phone 8 app development, SAP Smartforms and ABAP Programming, Windows 7, Visual Studio and MS Office software SAP ABAP Programming and HANA Database Tutorials
Development resources, articles, tutorials, samples, codes and tools for .Net, SQL Server, Windows, Windows Phone, SAP and ABAP, like SAP UI5, Screen Personas, etc.




CRM Companies List
Web Based CRM Software


Check Existence using ABAP SELECT

This ABAP tutorial shows how to check existence of data in SAP tables using ABAP SELECT statements In other words, ABAP programmers will find methods to check existency in ABAP using Select command. Of course, for internal tables ABAP developers can use SELECT SINGLE with TRANSPORTING NO FIELDS. Unfortunately if the SAP developer is dealing with database tables to check if a data exists or not requires other ways for solution.

In order to check existency of a data stored in database table in SAP system using ABAP SELECT statement is as follows.

In this existency check method, ABAP Select command is executed with Single and only mandt field is selected which is found on every table and it is stored into sy-mandt system variable.
Since mandt exists on every SAP table and sy-mandt is always available as a system variable, ABAP programmer does not have to define dummy local variables.
Besides sy-mandt system structure field value will not be changed with this Select Single statement since the data table mandt field values are same as sy-mandt value.

SELECT SINGLE mandt INTO sy-mandt FROM vbak WHERE vbeln = '0120000002'.
IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.

Although above code to check data existence in an ABAP database table is my favorite, the extended check for ABAP program will display following as an error in SLIN screen.

Do not change system fields.
Can be hidden using pragma ##WRITE_OK. Message Code UNR 0237

The error message shows also how to supress this extended check error. ABAP programmer can add the pragma ##WRITE_OK to exclude this code statement from error list.

SELECT SINGLE mandt INTO sy-mandt FROM vbak WHERE vbeln = '0120000002' ##WRITE_OK.
IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.

An other method is using the UP TO 1 ROWS. But ABAP developer has to use SELECT and ENDSELECT in order to compile and execute this existency check successfully.

Unfortunately this is not a preferred way for existency check in ABAP especially when compared with above existency check sample.

SELECT mandt INTO sy-mandt FROM vbak UP TO 1 ROWS WHERE vbeln = '0120000002'.
ENDSELECT.
IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.

Let's mention an other method where a workarea definition is required. This method is also not a good way to check if a row exists in table or not. Because the SELECT command transfers data from SAP database table into ABAP workarea structure which is not necessary.

TABLES vbak.
SELECT SINGLE * FROM vbak WHERE vbeln = '0120000002'.
* OR
DATA ls_vbak TYPE vbak.
SELECT SINGLE * FROM vbak INTO ls_vbak WHERE vbeln = '0120000002'.

IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.

Of course if your SAP system is 7.40 with the enhancements provided with 7.40 ABAP programmer can declare and create a local variable on the fly instead of creating a local structure as follows.

SELECT SINGLE mandt FROM vbak INTO @DATA(lv_mandt) WHERE vbeln = '0120000002'.
IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.

Again if ABAP developer apply the same enhancement of 7.40 for workarea creation, following ABAP code will be build to check existency of a data in SAP table.

SELECT SINGLE * FROM vbak INTO @DATA(ls_vbak) WHERE vbeln = '0120000002'.
IF sy-subrc = 0.
 WRITE:/ 'Exits'.
ELSE.
 WRITE:/ 'Do Not Exit'.
ENDIF.





SAP Tutorials

SAP Tutorial

SAP Forums

SAP Tools

SAP Transaction Codes Table






Related Articles and Tutorials(http://www.kodyaz.com/sap-abap/check-existence-in-abap-select.aspx)
Call Function Module using RFC Destination in ABAP
Export SAP Data to Fixed Length Text File
ABAP Tutorial for SET and GET PARAMETER ID Command
ABAP Tutorial - SAP Split and ABAP Split String Function
ABAP Shared Memory Objects Tutorial with Sample ABAP Code
SAP Code Inspector for ABAP Break-Point Statement
CALL_FUNCTION_NOT_FOUND ABAP Run Time Error
Check Existence using ABAP SELECT
Create Business Object in SAP
Delete All Data from SAP Database Table
Prevent DYNPRO_SEND_IN_BACKGROUND Error in Background Process
How to Execute SAP Program in Background Task
How to Find Internal Table Row Count in ABAP
How to Upload Data to SAP from Excel File using alsm_excel_to_internal_table Function Module
ABAP - Create Hierarchy Tree List using rs_tree_construct, rs_tree_list_display and snodetext
ABAP Tutorial - ABAP String Split Example Code
Upload Data from Excel File in ABAP using TEXT_CONVERT_XLS_TO_SAP
How to Debug Popup Screen in ABAP
ABAP LOOP Statement with At New and At End
Export Table Contents into Text File and Download File
SAP Code Inspector: Select-Statement can be Transformed
Create CL_GUI_ALV_GRID ALV Grid Column Header using ABAP Data Element
How to Create SAPScript Text using SO10 Transaction Code
ALV Grid Color - Table Row Background Color in ALV List
SAP ABAP Tutorial - ALV Grid Example with cl_gui_alv_grid and Screen Painter
SAP Smartforms - How to Call Smartform within ABAP Program
SAP Tutorial - Convert Spool Request to PDF File using RSTXPDFT4 ABAP Report
Set Default Single Values List for SAP Selection Screen Parameter
ABAP Debugging using Log Point and Break Point
ABAP RegEx for ABAP Regular Expression to fetch Date from String
ABAP Runtime Error ST22 Transaction using Short Dump Analysis
ABAP Try Catch for exception is neither caught Code Inspector Error
Add Year, Month or Day to Date Variable in ABAP using RP_CALC_DATE_IN_INTERVAL
Read Address Data using FM ADDR_GET instead of Querying ADRC Table
ABAP Authority-Check Object For User Other Than Current
How to Spell Numbers using ABAP Spell_Amount Function Module
Convert the table using the Database Utility (SE14)
Convert Sales Unit into Text using Function Module in Target Language
Create SAP Dynamic Variant using Date Calculation
Create SAP Transaction to Maintain ABAP Table using SM30
Database Hint Pseudo-Comment for SAP Code Inspector
Delete Entries in NAST Table using RSCLNAST ABAP Program
Dynamic Programming using Field Symbols in ABAP Reports
Execute ABAP Program Automatically After Transport Request Import
Get Fullname of SAP user using Function Module in ABAP Program
How to Find User Exits in ABAP Codes of SAP Transaction
Read Integer and Decimals of a Numeric Value in ABAP Programming
Move Minus Sign from Right to Left of Negative Number in SAP Smartform
Primary key change not permitted for value table
Read Pricing Condition Text using ABAP in SAP Sales Document Output
Read Text Symbols in Specific Language using ABAP RS_TEXTPOOL_READ
How to find string length using STRLEN ABAP string function
Code Inspector: Unsecure use of FOR ALL ENTRIES
Function module is not released for the Internet
Get SAP Document Flow using SD_DOCUMENT_FLOW_GET ABAP Function Module
Search and Find SAP Transaction Code using SE93 or SEARCH_SAP_MENU
SAP Code Inspector Error: Select For Cluster Table Without Order By
ABAP Select Statement using Space instead of Null or Initial
ABAP CONVT_NO_NUMBER Error on SP01 due SP01_WARN Parameter
ABAP Submit Report to Run Another ABAP Program within Code
Transport Variants of an ABAP Program into Workbench Request
TVAP Item Category and SAP Table TVAPT for Text Translations
Update Multiple Variables in ABAP Select Single Statement
Find Number of Rows Selected in ABAP SELECT Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Switch ABAP Variable Value with Translate using Mask
Switch ABAP Variable Value with Translate using Mask
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement
Activate Fixed Point Arithmetic Flag for Open SQL Statement


Copyright © 2004 - 2017 Eralper YILMAZ. All rights reserved.
Community Server by Telligent Systems