# ABAP-tuki Maguyva-palvelussa: luokkagraafit SAP-räätälöinneille

Canonical source: https://maguyva.ai/fi/languages/abap

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva tukee ABAPia AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat kartoittaa SAP-räätälöintien luokat, rajapinnat, uudelleenmäärittelyt ja poikkeukset.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .abap
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- SAP-tiimit, jotka säilyttävät omaa ABAP-koodia Gitissä `.abap`-lähdetiedostoina ja joiden on ymmärrettävä se ennen migraatiota tai clean core -katselmointia.
- Olio-ohjelmoidut ABAP-ympäristöt, joissa luokkahierarkiat, rajapinnat ja uudelleenmäärittelyt kätkevät, mikä toteutus oikeasti suoritetaan.
- Agenttiavusteiset vaikutusanalyysit, joissa kysymys kuuluu: "mikä hajoaa, jos tämä luokka muuttuu?"

## Agenttien työnkulut

- Kartoittaa, mitkä luokat perivät kantaluokan ja mitkä metodit ne määrittelevät uudelleen.
- Löytää kaikki rajapinnan toteuttavat luokat ennen kuin sen metodien allekirjoituksia muutetaan.
- Jäljittää, missä poikkeusluokka nostetaan ja missä se otetaan kiinni.

## Miksi ABAP kannattaa kartoittaa ennen muutoksia

Räätälöity ABAP kantaa usein vuosikymmenten liiketoimintasääntöjä. Koodi on paikoin olio-ohjelmoitua ja paikoin proseduraalista, ja perintä- ja rajapintarakenne ratkaisee, mikä metodi suoritetaan. Sitä ei näe lukemalla luokan kerrallaan.

Maguyva antaa agentille ensin luokkagraafin, joten muutossuunnitelma lähtee siitä, mikä luokasta riippuu, eikä arvauksesta.

## Mitä Maguyva poimii ABAPista

Maguyva jäsentää `.abap`-lähdekoodin omalla ABAP-kieliopilla. Symboleihin kuuluvat luokkien määrittelyt ja toteutukset, rajapinnat, metodien esittelyt ja toteutukset sekä `FORM`-rutiinit.

Graafi tallentaa suhteet, joista ABAP-kehittäjät välittävät:

- Periytyminen lauseesta `CLASS ... INHERITING FROM`.
- Rajapinnan toteutus lauseesta `INTERFACES`.
- Ylikirjoitukset lauseesta `METHODS ... REDEFINITION`.
- Poikkeukset lauseista `RAISE EXCEPTION` ja `CATCH`.
- Metodikutsut (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), tyyppiviittaukset lauseista `TYPE` ja `TYPE REF TO` sekä julkisen osion metodien viennit omalle luokalleen kohdistettuina.
- Luvut, kirjoitukset ja ohjausvuo (`IF`, `CASE`, `LOOP`, `TRY`) metodien rungoissa.

## Esimerkkikehotteita agenteille

- "Mitkä luokat perivät luokan `zcl_order_base`, ja mitkä sen metodeista ne määrittelevät uudelleen?" (`find_symbol`, sitten `dependency_search` incoming)
- "Missä `zcx_pricing_error` nostetaan, ja kuka ottaa sen kiinni?" (`dependency_search`)
- "Tiivistä, miten toimituksen luontiprosessi kulkee raportista pysyvyysluokkaan." (`get_task_context`)

## Tunnetut rajoitukset

- Nykyinen ABAP-kielioppi ei jäsennä Open SQL:ää (`SELECT ... FROM ... INTO`), lausetta `EXEC SQL` eikä lausetta `AUTHORITY-CHECK`, joten SQL:n kautta tehdyt taululuvut eivät vielä ole graafin kaaria. Käytä taulujen nimille työkalua `text_pattern_search`.
- `INTERFACES`-lausekkeet ovat toteutussuhteita eivätkä tuonteja. Rakenteellisessa haussa tuonneiksi valitaan vain `INCLUDE`-lauseet.
- Maguyva indeksoi ABAP-koodia, joka on Git-repositoriossa `.abap`-tiedostoina. Se ei muodosta yhteyttä SAP-järjestelmään.

## Seuraavat vaiheet

Yhdistä repositorio [pikaoppaan](/fi/docs/quickstart) avulla ja tarkista sitten tukimatriisi [yhteensopivuussivulta](/fi/docs/compatibility). Muita vanhoja ympäristöjä varten katso [COBOL-opas](/fi/languages/cobol).

## Moottorin yksityiskohdat

- ABAP jäsennetään omalla kieliopilla. Luokat, rajapinnat, metodien esittelyt ja toteutukset sekä `FORM`-rutiinit ovat symboleja.
- Graafi tallentaa periytymisen lauseesta `INHERITING FROM`, toteutukset lauseesta `INTERFACES`, ylikirjoitukset lauseesta `REDEFINITION`, lauseet `RAISE EXCEPTION` ja `CATCH` sekä kutsut kuten `obj->m( )` ja `cls=>m( )`.
- Nykyinen kielioppi ei jäsennä Open SQL:ää eikä lauseita `EXEC SQL` ja `AUTHORITY-CHECK`, joten SQL:n kautta tehdyt taululuvut eivät vielä ole graafin kaaria.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Käytä sitä luokan, rajapinnan tai metodin nimellä, kun tarvitset määrittelyn ja viittaukset.
- `dependency_search`: Käytä ennen muutosta incoming-läpikäyntiä kantaluokkaan tai rajapintaan löytääksesi aliluokat, toteutukset ja kutsujat.
- `text_pattern_search`: Käytä sitä tietokantataulujen nimiin ja SQL-lauseisiin, joita graafi ei vielä kata.
