Co to jest tabela wewnętrzna?
TABELA WEWNĘTRZNA służy do uzyskiwania danych ze stałej struktury do dynamicznego użytku w ABAP. Każdy wiersz w tabeli wewnętrznej ma taką samą strukturę pól. Głównym zastosowaniem tabel wewnętrznych jest przechowywanie i formatowanie danych z tabeli bazy danych w programie.
W tym samouczku dowiesz się:
- Co to jest tabela wewnętrzna?
- Co to jest obszar roboczy?
- Różnica między stołem wewnętrznym a miejscem do pracy?
- Rodzaje tabel wewnętrznych
- Tworzenie tabel wewnętrznych
- Wypełnianie tabel wewnętrznych
- Kopiowanie tabel wewnętrznych
- Czytanie wewnętrzne
- Usuwanie tabel wewnętrznych
Co to jest obszar roboczy?
Obszary robocze to pojedyncze wiersze danych. Powinny mieć ten sam format, co wszystkie tabele wewnętrzne. Służy do przetwarzania danych w wewnętrznej tabeli po jednym wierszu na raz.
Różnica między stołem wewnętrznym a miejscem do pracy?
Zdjęcie mówi więcej niż tysiąc słów :-)
Rodzaje tabel wewnętrznych
Istnieją dwa rodzaje tabel wewnętrznych.
- Stoły wewnętrzne z linią HEADER
- Stoły wewnętrzne bez linii HEADER.
Tabele wewnętrzne z linią nagłówka
- Tutaj system automatycznie tworzy obszar roboczy.
- Obszar roboczy ma ten sam typ danych, co tabela wewnętrzna.
- Ten obszar roboczy nazywany jest linią HEADER.
- To tutaj są wykonywane wszystkie zmiany lub dowolna akcja na zawartości tabeli. W rezultacie rekordy mogą być bezpośrednio wstawiane do tabeli lub bezpośrednio dostępne z tabeli wewnętrznej.
Tabele wewnętrzne bez linii nagłówka :
- Tutaj nie ma obszaru roboczego związanego ze stołem.
- Obszar roboczy ma być wyraźnie określony, kiedy musimy uzyskać dostęp do takich tabel.
- Dlatego nie można uzyskać bezpośredniego dostępu do tych tabel.
Tworzenie tabel wewnętrznych
Istnieje wiele sposobów tworzenia tabeli wewnętrznej. Przyjrzyjmy się im jeden po drugim - 1.
Używając instrukcji Type Utwórzmy
teraz wewnętrzną tabelę itab przy użyciu instrukcji TYPE.
Składnia to -
Rodzaje: początek wiersza,kolumna 1 typ I,kolumna2 typ I,koniec linii.
Przykład:
RODZAJE: początek wiersza,empno typ I,empname (20) typ c,koniec linii.
Instrukcja TYPES tworzy linię konstrukcyjną zgodnie z definicją.
Aby faktycznie utworzyć wewnętrzną tabelę itab, użyj następującego polecenia:
Pojawia się linia typu Data itab 10.
Tworzony jest wewnętrzny itab tabeli o strukturze line. Oprócz deklaracji struktury tabeli wewnętrznej, klauzula OCCURS definiuje również, ile wpisów tabeli jest utrzymywanych w pamięci głównej (w tym przypadku 10). Dodatkowe rekordy są zapisywane w obszarze stronicowania i mogą wpływać na wydajność 2.
Odwołanie się do innej tabeli
Możesz utworzyć wewnętrzną tabelę, odwołując się do istniejącej tabeli. Istniejąca tabela może być standardową tabelą SAP, tabelą Z lub inną tabelą wewnętrzną.
Składnia-
Data[z wierszem nagłówka].
Przykład-
DANE itab TYPE linia OCCURS 10 z wierszem nagłówka.
Tutaj wewnętrzna tabela itab jest tworzona z linii typu z wierszem nagłówka. Uwaga: opcja „z wierszem nagłówka” jest opcjonalna.
3. Odnosząc się do istniejącej
składni struktury -
DataLIKE występuje n [z linią nagłówka].
Przykład-
DANE itab LIKE sline WYSTĘPUJE 10.
Tutaj tworzona jest tabela itab mająca taką samą strukturę jak sline
4. Tworząc nową Strukturę
Stwórzmy teraz wewnętrzną tabelę z naszą własną strukturą. Tutaj tabela jest domyślnie tworzona z wierszem nagłówka .
Składnia -
Dane: pojawia się początek, ,…,Koniec .
Przykład -
Dane: Początek itab następuje 10,kolumna 1 typ I,kolumna2 (4) typ C,column3 jak mara-ernam,Koniec itab.
Tworzona jest wewnętrzna tabela itab
Wypełnianie tabel wewnętrznych
Po pomyślnym utworzeniu niektórych tabel wewnętrznych zobaczmy, jak zapełnimy je niektórymi rekordami. Istnieją różne metody wypełniania tabel 1. Dodawanie danych wiersz po wierszu Pierwszą dostępną metodą jest użycie instrukcji APPEND.Używając instrukcji APPEND, możemy albo dodać jedną linię z innego obszaru roboczego do wewnętrznej tabeli, albo możemy dodać jedną linię początkową do wewnętrznej tabeli…
Składnia -
DODAJ [Tutaj obszar roboczyDO / POCZĄTKOWA LINIA DO] .
Zmienna systemowa SY-TABIX zawiera indeks dołączanej linii.
Przykład:
Dane: Początek itab następuje 10,col1 typ C,col2 typ I,koniec itab.Dołącz pierwszą linię do itab.
Wyniki: '' '0'
Początkowe wiersze dodają do tabeli wiersz zainicjowany poprawną wartością dla swojego typu. Tutaj col1 to znak, a col2 to liczba całkowita. Następnie APPEND początkowa linia dodaje linię zainicjowaną w odniesieniu do typu danych kolumn, tj. Miejsce na kolumnę1 i 0 na kolumnę2. 2.Korzystanie z instrukcji COLLECT COLLECTjest inną formą instrukcji używaną do zapełniania tabel wewnętrznych. Ogólnie rzecz biorąc, COLLECT jest używany podczas wstawiania wierszy do wewnętrznej tabeli za pomocą unikalnego standardowego klucza.
Składnia-
ZBIERZ [DO] .
W przypadku tabel z nagłówkiem, opcja INTO jest pomijana. Załóżmy, że istnieje już wpis mający taki sam klucz jak ten, który próbujesz dodać, a następnie nowy wiersz nie jest dodawany do tabeli, ale pola numeryczne obu wpisów są dodawane i obecny jest tylko jeden wpis odpowiadający kluczowi . Wartość SY-TABIX jest zmieniana na wiersz pierwotnego wpisu. W przeciwnym razie COLLECT działa podobnie do APPEND, a SY-TABIX zawiera indeks przetwarzanej linii. 3 . Użycie instrukcji INSERT InstrukcjaINSERT dodaje wiersz / obszar roboczy do wewnętrznej tabeli. Możesz określić pozycję, w której ma zostać dodany nowy wiersz, używając klauzuli INDEX z instrukcją INSERT.
Składnia
INSERT [Tutaj obszar roboczyINTO / INITIAL LINE INTO] [index ].
Kopiowanie tabel wewnętrznych
Zawartość jednej tabeli wewnętrznej można skopiować do innej za pomocą instrukcji APPEND LINES lub INSERT LINES. Prostszym sposobem jest użycie kilku z poniższych składni.MOVETo .LUB = .
Te kopiują zawartość ITAB1 do ITAB2. W przypadku wewnętrznych tabel z nagłówkiem musimy użyć [] w celu odróżnienia od obszaru roboczego. Tak więc, aby skopiować zawartość tabel wewnętrznych z wierszem nagłówka, składnia wygląda następująco:
itab1 [] = itab2 [].
Przeczytaj tabele wewnętrzne
Jesteśmy teraz zaznajomieni z tworzeniem tabel wewnętrznych i wypełnianiem ich danymi. Zobaczymy teraz, jak faktycznie wykorzystujemy dane lub pobieramy dane z tabel wewnętrznych. 1. Używanie Loop -EndloopJednym ze sposobów uzyskiwania dostępu lub odczytywania wewnętrznej tabeli jest użycie LOOP-ENDLOOP.Składnia
LOOP AT[INTO ]… ENDLOOP.
Tutaj, kiedy powiesz LOOP AT ITABLE, wewnętrzna tabela ITABLE jest odczytywana wiersz po wierszu. Możesz uzyskać dostęp do wartości kolumn dla tej linii w dowolnej części struktury LOOP-ENDLOOP. Wartość SY-SUBRC jest ustawiana na 0 , nawet jeśli czytany jest tylko jeden rekord. 2. Używanie READInną metodą czytania wewnętrznej tabeli jest użycie instrukcji READ.
Składnia-
CZYTAJ TABELĘ[INTO ] INDEKS .
Ta instrukcja odczytuje bieżący wiersz lub wiersz określony przez indeks
Usuwanie tabel wewnętrznych
Istnieje wiele sposobów usuwania wierszy z wewnętrznej tabeli. 1. usuwanie linii w pętli.To najprostszy sposób usuwania linii.
Sytax
USUŃ.
Ta instrukcja działa tylko w pętli. Usuwa bieżącą linię. Możesz warunkowo usunąć wiersze w pętli, dodając klauzulę WHERE. 2. usuwanie wierszy za pomocą indeksu.
Służy do usuwania wiersza z tabeli wewnętrznej w dowolnym znanym indeksie.
Składnia
USUŃLinia z indeksemINDEKS .