sap-abap
Comprehensive ABAP development skill for SAP systems. Use when writing ABAP code, working with internal tables, structures, ABAP SQL, object-oriented programming, RAP (RESTful Application Programming Model), CDS views, EML statements, ABAP Cloud development, string processing, dynamic programming, RTTI/RTTC, field symbols, data references, exception handling, or ABAP unit testing. Covers both classic ABAP and modern ABAP for Cloud Development patterns.
DeepseekModel
Curated skill
Quality Excellent · 78
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=secondsky-sap-skills-plugins-sap-abap-skills-sap-abap-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name sap-abap description Comprehensive ABAP development skill for SAP systems. Use when writing ABAP code, working with internal tables, structures, ABAP SQL, object-oriented programming, RAP (RESTful Application Programming Model), CDS views, EML statements, ABAP Cloud development, string processing, dynamic programming, RTTI/RTTC, field symbols, data references, exception handling, or ABAP unit testing. Covers both classic ABAP and modern ABAP for Cloud Development patterns. license GPL-3.0 metadata {"maintainer":"Eduard Jiglau","maintainer_email":"hello@sap-ai-skills.com","website":"https://sap-ai-skills.com","version":"2.4.1","last_verified":"2026-04-02","abap_release":"7.40 SP08+ / 7.50+ / ABAP Cloud","sources":["https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm","https://github.com/SAP-samples/abap-cheat-sheets"]} 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. " With COND/SWITCH DATA(val) = COND #( WHEN valid THEN result ELSE THROW zcx_my_exception( ) ). String Processing " Concatenation DATA(full) = first && ` ` && last. txt &&= ` appended`. " String templates DATA(msg) = |Name: { name }, Date: { date DATE = ISO }|. " Functions DATA(upper) = to_upper( text ). DATA(len) = strlen( text ). DATA(found) = find( val = text sub = `search` ). DATA(replaced) = replace( val = text sub = `old` with = `new` occ = 0 ). DATA(parts) = segment( val = text index = 2 sep = `,` ). " FIND/REPLACE statements FIND ALL OCCURRENCES OF pattern IN text RESULTS DATA(matches). REPLACE ALL OCCURRENCES OF old IN text WITH new. Dynamic Programming " Field symbols FIELD-SYMBOLS <fs> TYPE any. ASSIGN struct-component TO <fs>. ASSIGN struct-(comp_name) TO <fs>. " Dynamic component " Data references DATA dref TYPE REF TO data. dref = REF #( variable ). CREATE DATA dref TYPE (type_name). dref->* = value. " RTTI - Get type information DATA(tdo) = cl_abap_typedescr=>describe_by_data( dobj ). DATA(components) = CAST cl_abap_structdescr( tdo )->components. " RTTC - Create types dynamically DATA(elem_type) = cl_abap_elemdescr=>get_string( ). CREATE DATA dref TYPE HANDLE elem_type. Bundled Resources This skill includes 28 comprehensive reference files covering all aspects of ABAP development: Related Skills sap-abap-cds : For CDS view development and ABAP Cloud data modeling sap-btp-cloud-platform : For ABAP Environment setup and BTP deployment sap-cap-capire : For CAP service integration and ABAP system connections sap-fiori-tools : For Fiori application development with ABAP backends sap-api-style : For API documentation standards and best practices Quick Access Reference Guide : references/skill-reference-guide.md - Complete guide to all reference files Internal Tables : references/internal-tables.md - Complete table operations ABAP SQL : references/abap-sql.md - Comprehensive SQL reference Object Orientation : references/object-orientation.md - Classes and interfaces Development Topics references/constructor-expressions.md - VALUE, NEW, COND, REDUCE references/rap-eml.md - RAP and EML operations references/cds-views.md - CDS view development references/string-processing.md - String functions and regex references/unit-testing.md - ABAP Unit framework references/performance.md - Optimization techniques ... and 18 more specialized references Common Patterns Safe Table Access (Avoid Exceptions) " Using VALUE with OPTIONAL DATA(line) = VALUE #( itab[ key = value ] OPTIONAL ). " Using VALUE with DEFAULT DATA(line) = VALUE #( itab[ 1 ] DEFAULT VALUE #( ) ). " Check before access IF line_exists( itab[ key = value ] ). DATA(line) = itab[ key = value ]. ENDIF. Functional Method Chaining DATA(result) = NEW zcl_builder( ) ->set_name( `Test` ) ->set_value( 123 ) ->build( ).
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.