SAP ABAP - przegląd Open SQL
Otwarty SQL wskazuje podzbiór instrukcji ABAP, które umożliwiają bezpośredni dostęp do danych w centralnej bazie danych aktualnego AS ABAP. Instrukcje Open SQL odwzorowują funkcjonalność języka przetwarzania danych SQL w ABAP, która jest obsługiwana przez wszystkie systemy baz danych.
Instrukcje Open SQL są konwertowane na SQL specyficzny dla bazy danych w interfejsie Open SQL interfejsu bazy danych. Następnie są przesyłane do systemu bazy danych i wykonywane. Instrukcje Open SQL mogą służyć do uzyskiwania dostępu do tabel bazy danych zadeklarowanych w słowniku ABAP. Dostęp do centralnej bazy danych AS ABAP jest dostępny domyślnie, a także dostęp do innych baz danych jest możliwy poprzez dodatkowe połączenia z bazą danych.
Za każdym razem, gdy którakolwiek z tych instrukcji jest używana w programie ABAP, ważne jest, aby sprawdzić, czy wykonana akcja powiodła się. Jeśli ktoś próbuje wstawić rekord do tabeli bazy danych i nie jest wstawiony poprawnie, bardzo ważne jest, aby wiedzieć, aby można było podjąć odpowiednią akcję w programie. Można to zrobić za pomocą pola systemowego, które zostało już użyte, czyli SY-SUBRC. Gdy instrukcja zostanie wykonana pomyślnie, pole SY-SUBRC będzie zawierać wartość 0, więc można to sprawdzić i kontynuować program, jeśli się pojawi.
Instrukcja DATA służy do deklarowania obszaru roboczego. Nazwijmy to „wa_customers1”. Zamiast deklarować jeden typ danych, można zadeklarować kilka pól tworzących tabelę. Najłatwiej to zrobić, używając instrukcji LIKE.
Instrukcja INSERT
Obszar roboczy wa_customers1 jest tutaj zadeklarowany JAK tabela ZCUSTOMERS1, przyjmując tę samą strukturę, ale sam nie staje się tabelą. W tym obszarze roboczym można przechowywać tylko jeden rekord. Po zadeklarowaniu instrukcji INSERT można użyć do wstawienia obszaru roboczego i przechowywanego przez niego rekordu do tabeli. Kod w tym miejscu będzie miał postać „WSTAWIĆ KLIENTÓW1 OD wa_customers1”.
Obszar roboczy musi być wypełniony danymi. Użyj nazw pól z tabeli ZCUSTOMERS1. Można to zrobić poprzez nawigację do przodu, dwukrotne kliknięcie nazwy tabeli w kodzie lub otwarcie nowej sesji i użycie transakcji SE11. Pola tabeli można następnie skopiować i wkleić do edytora ABAP.
Poniżej znajduje się fragment kodu -
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100006'.
wa_customers1-name = 'DAVE'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19931017'.
INSERT ZCUSTOMERS1 FROM wa_customers1.
Instrukcja CHECK może być następnie używana w następujący sposób. Oznacza to, że jeśli rekord zostanie wstawiony poprawnie, system to poinformuje. Jeśli nie, zostanie wyświetlony kod SY-SUBRC, który nie będzie równy zeru. Poniżej znajduje się fragment kodu -
IF SY-SUBRC = 0.
WRITE 'Record Inserted Successfully'.
ELSE.
WRITE: 'The return code is ', SY-SUBRC.
ENDIF.
Sprawdź program, zapisz, aktywuj kod, a następnie przetestuj go. W oknie wyjściowym powinien pojawić się komunikat „Wstawiono rekord pomyślnie”.
Instrukcja CLEAR
Instrukcja CLEAR umożliwia wyczyszczenie pola lub zmiennej w celu wstawienia w jego miejsce nowych danych, umożliwiając ich ponowne wykorzystanie. Instrukcja CLEAR jest zwykle używana w programach i pozwala na wielokrotne użycie istniejących pól.
W poprzednim fragmencie kodu struktura obszaru roboczego została wypełniona danymi, aby utworzyć nowy rekord, który zostanie wstawiony do tabeli ZCUSTOMERS1, a następnie zostanie przeprowadzona weryfikacja. Jeśli chcemy wstawić nowy rekord, należy użyć instrukcji CLEAR, aby następnie można było go ponownie wypełnić nowymi danymi.
Instrukcja UPDATE
Jeśli chcesz zaktualizować jeden lub więcej istniejących rekordów w tabeli w tym samym czasie, użyj instrukcji UPDATE. Podobnie jak w przypadku instrukcji INSERT, deklarowany jest obszar roboczy, wypełniony nowymi danymi, które są następnie umieszczane w rekordzie podczas wykonywania programu. Rekord utworzony wcześniej za pomocą instrukcji INSERT zostanie tutaj zaktualizowany. Po prostu edytuj tekst przechowywany w polach NAZWA i TYTUŁ. Następnie w nowym wierszu używana jest ta sama struktura, co w przypadku instrukcji INSERT, tym razem przy użyciu instrukcji UPDATE, jak pokazano w poniższym fragmencie kodu -
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100006'.
wa_customers1-name = 'RICHARD'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19931017'.
UPDATE ZCUSTOMERS1 FROM wa_customers1.
Po wykonaniu instrukcji UPDATE można wyświetlić przeglądarkę danych w słowniku ABAP, aby sprawdzić, czy rekord został pomyślnie zaktualizowany.
Instrukcja MODIFY
Instrukcja MODIFY może być traktowana jako połączenie instrukcji INSERT i UPDATE. Można go użyć do wstawienia nowego rekordu lub zmodyfikowania istniejącego rekordu. Podąża za podobną składnią do poprzednich dwóch instrukcji w modyfikowaniu rekordu na podstawie danych wprowadzonych do obszaru roboczego.
Po wykonaniu tej instrukcji kluczowe pola zostaną porównane z polami w tabeli. Jeśli rekord z tymi wartościami pól kluczy już istnieje, zostanie zaktualizowany. Jeśli nie, zostanie utworzony nowy rekord.
Poniżej znajduje się fragment kodu do tworzenia nowego rekordu -
CLEAR wa_customers1.
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100007'.
wa_customers1-name = 'RALPH'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19910921'.
MODIFY ZCUSTOMERS1 FROM wa_customers1.
W tym przykładzie użyto instrukcji CLEAR, aby w obszarze roboczym można było umieścić nowy wpis, a następnie dodać klienta (numer) 100007. Ponieważ jest to nowa, unikalna wartość pola klucza, zostanie wstawiony nowy rekord i przeprowadzona zostanie kolejna weryfikacja.
Po wykonaniu tej czynności i wyświetleniu danych w przeglądarce danych zostanie utworzony nowy rekord dla numeru klienta 100007 (RALPH).
Powyższy kod generuje następujące dane wyjściowe (zawartość tabeli) -