secondsky/sap-skillsGPL-3.032 files

Sap Abap

|

Specification
Skill ID
secondsky/sap-skills/sap-abap
Publisher
secondsky
Repository
sap-skills
Installs
0
Files
32
License
GPL-3.0
Synced
Sep 23, 2026
How to use it

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.

Feature7.40 SP027.40 SP057.40 SP087.507.517.527.54
Inline declarations DATA(...)xxxxxxx
Constructor operators (VALUE, NEW, CONV, COND, SWITCH, REF, EXACT, CAST)xxxxxxx
Table expressions itab[...]xxxxxxx
String templatesxxxxxxx
WITH EMPTY KEYxxxxxxx
line_exists(), line_index()xxxxxxx
ABAP SQL: @ host variablesxxxxxx
ABAP SQL: comma-separated listsxxxxxx
ABAP SQL: SQL expressions in SELECTxxxxxx
CORRESPONDING operatorxxxxxx
Table comprehensions (FOR)xxxxxx
LET expressionsxxxxxx
REDUCE operatorxxxxx
FILTER operatorxxxxx
BASE additionxxxxx
LOOP AT ... GROUP BYxxxxx
ABAP SQL: dbtab~* in SELECTxxxxx
ABAP SQL: RIGHT OUTER JOINxxxxxx
CDS views with parametersxxxxx
`FINAL(...)` inline declarationxxxx
Host expressions `@( expr )`xxxx
`UNION` in SELECTxxxx
`IS INSTANCE OF` / `CASE TYPE OF`xxxx
`int8` typexxxx
CDS table functionsxxxx
CDS access control (implicit)xxxx
`$session.user/client/system_language`xxxx
Test seams (`TEST-SEAM`)xxxx
Common Table Expressions (`WITH`)xxx
`OFFSET` in SELECTxxx
`UPPER`/`LOWER` in CDSxxx
Enumerated typesxxx
Internal tables as data source `FROM @itab`xx
`WITH PRIVILEGED ACCESS`xx
`utclong` type and functionsx

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.

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.

Use this skill