Problem i kontekst
Niewielki, ale praktyczny komponent ABAP odpowiedzialny za zapis danych cennikowych do tabel Z z jednoczesnym archiwizowaniem historii zmian. Logika łączy walidację istniejących rekordów, aktualizację danych bieżących i kontrolowane utrzymywanie limitu wersji dla wybranej kombinacji kluczy biznesowych.
Co robi rozwiązanie
- zapisuje każdy przetwarzany rekord do tabeli archiwalnej,
- aktualizuje rekord bieżący, jeśli istnieje wpis dla tej samej kombinacji i daty,
- wstawia nowy rekord, jeśli dana wersja jeszcze nie istnieje,
- ogranicza liczbę przechowywanych aktywnych wersji dla tej samej kombinacji kluczy,
- zwraca proste podsumowanie operacji: insert, update, archive i błędy.
Architektura
flowchart TD
IN[Wejsciowa tabela danych] --> LOOP[Petla po rekordach]
LOOP --> ARCH[Zapis do tabeli archiwalnej]
LOOP --> CHK{Czy istnieje rekord dla tej samej daty?}
CHK -- Tak --> UPD[UPDATE rekordu biezacego]
CHK -- Nie --> LIM{Czy przekroczono limit aktywnych wersji?}
LIM -- Tak --> DEL[Usuniecie najstarszej wersji]
LIM -- Nie --> INS[INSERT nowej wersji]
DEL --> INS
UPD --> SUM[Podsumowanie operacji]
INS --> SUM
Dlaczego w portfolio
- pokazuje solidną, transakcyjną logikę backendową w ABAP,
- dobry przykład pracy na tabelach Z z historią zmian,
- ilustruje podejście do wersjonowania danych bez nadmiernej komplikacji architektury.
Ograniczenia materiału
- dostępny artefakt to wycinek logiki, a nie pełny program,
- brak pełnego kontekstu transakcji, ekranu i modelu importu danych,
- opis obejmuje tylko to, co wynika bezpośrednio z kodu.
Anonimizacja
- ukryto nazwy domenowe i znaczenie biznesowe konkretnych pól,
- pozostawiono jedynie wzorzec zapisu, aktualizacji i archiwizacji danych,
- nie ujawniono nazw klienta, procesu ani szczegółów wdrożenia.