← Back to projects

SAP / ABAPCommercial (anonymized)

ABAP: wersjonowanie i archiwizacja cenników

Komponent ABAP zapisujący dane cennikowe do tabel Z z archiwizacją historii zmian i kontrolowanym limitem aktywnych wersji per klucz biznesowy.

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.