- Skill ID
- secondsky/sap-skills/sap-abap
- Publisher
- secondsky
- Repository
- sap-skills
- Installs
- 0
- Files
- 32
- License
- GPL-3.0
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
secondsky/sap-skills/sap-abapInstalls these files- README.md
- SKILL.md
- agents/openai.yaml
- references/abap-dictionary.md
- references/abap-sql.md
- references/amdp.md
- references/authorization.md
- references/bits-bytes.md
- references/builtin-functions.md
- references/cds-views.md
- references/cloud-development.md
- references/constructor-expressions.md
- references/date-time.md
- references/design-patterns.md
- references/dynamic-programming.md
- references/exceptions.md
- references/generative-ai.md
- references/internal-tables.md
- references/numeric-operations.md
- references/object-orientation.md
- references/performance.md
- references/program-flow.md
- references/rap-eml.md
- references/released-classes.md
- references/sap-luw.md
- references/skill-reference-guide.md
- references/sql-hierarchies.md
- references/string-processing.md
- references/table-grouping.md
- references/unit-testing.md
- references/where-conditions.md
- references/xml-json.md
What this skill tells the agent
SAP ABAP Development Skill
Related Skills
- sap-abap-cds: Use when developing CDS views for ABAP-backed Fiori applications or defining data models with annotations
- sap-btp-cloud-platform: Use when working with ABAP Environment on BTP or deploying ABAP applications to the cloud
- sap-cap-capire: Use when connecting ABAP systems with CAP applications or integrating with OData services
- sap-fiori-tools: Use when building Fiori applications with ABAP backends or consuming OData services from ABAP systems
- sap-api-style: Use when documenting ABAP APIs or following SAP API documentation standards
When to Use This Skill
Use this skill when writing or reviewing ABAP code, modernizing classic ABAP to ABAP Cloud-compatible patterns, working with RAP or EML, implementing ABAP SQL, designing unit tests, or troubleshooting language/runtime behavior across supported ABAP releases.
Version Compatibility
This skill covers ABAP syntax from 7.40 SP08 through ABAP Cloud. Features requiring a higher release are annotated with inline comments in code examples using the format " [7.xx+] or noted in reference files. The table below summarizes the key version boundaries.
| Feature | 7.40 SP02 | 7.40 SP05 | 7.40 SP08 | 7.50 | 7.51 | 7.52 | 7.54 |
|---|---|---|---|---|---|---|---|
Inline declarations DATA(...) | x | x | x | x | x | x | x |
| Constructor operators (VALUE, NEW, CONV, COND, SWITCH, REF, EXACT, CAST) | x | x | x | x | x | x | x |
Table expressions itab[...] | x | x | x | x | x | x | x |
| String templates | x | x | x | x | x | x | x |
WITH EMPTY KEY | x | x | x | x | x | x | x |
line_exists(), line_index() | x | x | x | x | x | x | x |
ABAP SQL: @ host variables | x | x | x | x | x | x | |
| ABAP SQL: comma-separated lists | x | x | x | x | x | x | |
| ABAP SQL: SQL expressions in SELECT | x | x | x | x | x | x | |
CORRESPONDING operator | x | x | x | x | x | x | |
Table comprehensions (FOR) | x | x | x | x | x | x | |
LET expressions | x | x | x | x | x | x | |
REDUCE operator | x | x | x | x | x | ||
FILTER operator | x | x | x | x | x | ||
BASE addition | x | x | x | x | x | ||
LOOP AT ... GROUP BY | x | x | x | x | x | ||
ABAP SQL: dbtab~* in SELECT | x | x | x | x | x | ||
ABAP SQL: RIGHT OUTER JOIN | x | x | x | x | x | x | |
| CDS views with parameters | x | x | x | x | x | ||
| `FINAL(...)` inline declaration | x | x | x | x | |||
| Host expressions `@( expr )` | x | x | x | x | |||
| `UNION` in SELECT | x | x | x | x | |||
| `IS INSTANCE OF` / `CASE TYPE OF` | x | x | x | x | |||
| `int8` type | x | x | x | x | |||
| CDS table functions | x | x | x | x | |||
| CDS access control (implicit) | x | x | x | x | |||
| `$session.user/client/system_language` | x | x | x | x | |||
| Test seams (`TEST-SEAM`) | x | x | x | x | |||
| Common Table Expressions (`WITH`) | x | x | x | ||||
| `OFFSET` in SELECT | x | x | x | ||||
| `UPPER`/`LOWER` in CDS | x | x | x | ||||
| Enumerated types | x | x | x | ||||
| Internal tables as data source `FROM @itab` | x | x | |||||
| `WITH PRIVILEGED ACCESS` | x | x | |||||
| `utclong` type and functions | x |
On a 7.40 system: Replace any FINAL(...) with DATA(...), and avoid 7.50+ features marked in bold above. Most modern ABAP syntax (VALUE, NEW, CONV, inline declarations, table expressions, REDUCE, FILTER, GROUP BY) is available since 7.40 SP08.
Table of Contents
- Version Compatibility
- Quick Reference
- Bundled Resources
- Common Patterns
- Error Catalog
- Performance Tips
- Source Documentation
Quick Reference
Data Types and Declarations
" Elementary types
DATA num TYPE i VALUE 123.
DATA txt TYPE string VALUE `Hello`.
DATA flag TYPE abap_bool VALUE abap_true.
" Inline declarations
DATA(result) = some_method( ).
FINAL(immutable) = `constant value`. " [7.50+] Use DATA(...) on 7.40
" Structures
DATA: BEGIN OF struc,
id TYPE i,
name TYPE string,
END OF struc.
" Internal tables
DATA itab TYPE TABLE OF string WITH EMPTY KEY.
DATA sorted_tab TYPE SORTED TABLE OF struct WITH UNIQUE KEY id.
DATA hashed_tab TYPE HASHED TABLE OF struct WITH UNIQUE KEY id.Internal Tables - Essential Operations
" Create with VALUE
itab = VALUE #( ( col1 = 1 col2 = `a` )
( col1 = 2 col2 = `b` ) ).
" Read operations
DATA(line) = itab[ 1 ]. " By index
DATA(line2) = itab[ col1 = 1 ]. " By key
READ TABLE itab INTO wa INDEX 1.
READ TABLE itab ASSIGNING FIELD-SYMBOL(<fs>) WITH KEY col1 = 1.
" Modify operations
MODIFY TABLE itab FROM VALUE #( col1 = 1 col2 = `updated` ).
itab[ 1 ]-col2 = `changed`.
" Loop processing
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
<line>-col2 = to_upper( <line>-col2 ).
ENDLOOP.
" Delete
DELETE itab WHERE col1 > 5.
DELETE TABLE itab FROM VALUE #( col1 = 1 ).ABAP SQL Essentials
" SELECT into table
SELECT * FROM dbtab INTO TABLE @DATA(result_tab). " @ syntax: 7.40 SP05+
" SELECT with conditions
SELECT carrid, connid, fldate " comma syntax: 7.40 SP05+
FROM zdemo_abap_fli
WHERE carrid = 'LH'
INTO TABLE @DATA(flights).
" Aggregate functions
SELECT carrid, COUNT(*) AS cnt, AVG( price ) AS avg_price
FROM zdemo_abap_fli
GROUP BY carrid
INTO TABLE @DATA(stats).
" JOIN operations
SELECT a~carrid, a~connid, b~carrname
FROM zdemo_abap_fli AS a
INNER JOIN zdemo_abap_carr AS b ON a~carrid = b~carrid
INTO TABLE @DATA(joined).
" Modification statements
INSERT dbtab FROM @struc.
UPDATE dbtab FROM @struc.
MODIFY dbtab FROM TABLE @itab.
DELETE FROM dbtab WHERE condition.Constructor Expressions
" VALUE - structures and tables
DATA(struc) = VALUE struct_type( comp1 = 1 comp2 = `text` ).
DATA(itab) = VALUE itab_type( ( a = 1 ) ( a = 2 ) ( a = 3 ) ).
" NEW - create instances
DATA(dref) = NEW i( 123 ).
DATA(oref) = NEW zcl_my_class( param = value ).
" CORRESPONDING - structure/table mapping
target = CORRESPONDING #( source ).
target = CORRESPONDING #( source MAPPING target_field = source_field ).
" COND/SWITCH - conditional values
DATA(text) = COND string( WHEN flag = abap_true THEN `Yes` ELSE `No` ).
DATA(result) = SWITCH #( code WHEN 1 THEN `A` WHEN 2 THEN `B` ELSE `X` ).
" CONV - type conversion
DATA(dec) = CONV decfloat34( 1 / 3 ).
" FILTER - table filtering
DATA(filtered) = FILTER #( itab WHERE status = 'A' ).
" REDUCE - aggregation
DATA(sum) = REDUCE i( INIT s = 0 FOR wa IN itab NEXT s = s + wa-amount ).Object-Oriented ABAP
" Class definition
CLASS zcl_example DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
METHODS constructor IMPORTING iv_name TYPE string.
METHODS get_name RETURNING VALUE(rv_name) TYPE string.
CLASS-METHODS factory RETURNING VALUE(ro_instance) TYPE REF TO zcl_example.
PRIVATE SECTION.
DATA mv_name TYPE string.
ENDCLASS.
CLASS zcl_example IMPLEMENTATION.
METHOD constructor.
mv_name = iv_name.
ENDMETHOD.
METHOD get_name.
rv_name = mv_name.
ENDMETHOD.
METHOD factory.
ro_instance = NEW #( `Default` ).
ENDMETHOD.
ENDCLASS.
" Interface implementation
CLASS zcl_impl DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES zif_my_interface.
ENDCLASS.Exception Handling
TRY.
DATA(result) = risky_operation( ).
CATCH cx_sy_zerodivide INTO DATA(exc).
DATA(msg) = exc->get_text( ).
CATCH cx_root INTO DATA(any_exc).
" Handle any exception
CLEANUP.
" Cleanup code
ENDTRY.
" Raising exceptions
RAISE EXCEPTION TYPE zcx_my_exception
EXPORTING textid = zcx_my_exception=>error_occurred.
More from secondsky
Use this skill in a project
Open any RiverX project, search the Skills panel for secondsky/sap-skills/sap-abap, and install it in one click.
