Interne tabellen

het gegevenstype van een interne tabel wordt volledig gespecificeerd door het regeltype, de sleutel en het tabeltype.

Regeltype

het regeltype van een interne tabel kan elk gegevenstype zijn. Het gegevenstype van een interne tabel is normaal gesproken een structuur. Elke component van de structuur is een kolom in de interne tabel. Het regeltype kan echter ook elementair of een andere interne tabel zijn.

sleutel

de sleutel identificeert tabelrijen. Er zijn twee soorten sleutels voor interne tabellen – de standaardsleutel en een door de gebruiker gedefinieerde sleutel. U kunt opgeven of de sleutel uniek of niet-uniek moet zijn. Interne tabellen met een unieke sleutel kunnen geen dubbele invoer bevatten. De uniciteit hangt af van de tabeltoegang methode.

in tabellen met een gestructureerd rijtype wordt de standaardsleutel gevormd uit alle kolommen van het tekentype van de interne tabel. Als een tabel een elementair regeltype heeft, is de standaardsleutel de gehele regel. De standaardsleutel van een interne tabel waarvan het regeltype een interne tabel is, de standaardsleutel is leeg. Bij tabellen met een niet-gestructureerd rijtype bestaat de standaardsleutel uit de hele rij. Als het rijtype ook een tabel is, wordt een lege sleutel gedefinieerd.

de door de gebruiker gedefinieerde sleutel kan alle kolommen van de interne tabel bevatten die zelf geen interne tabel zijn en geen interne tabellen bevatten. Referenties zijn toegestaan als tabeltoetsen. Interne tabellen met een door de gebruiker gedefinieerde sleutel worden sleuteltabellen genoemd. Wanneer u de sleutel definieert, is de volgorde van de sleutelvelden significant. U moet dit onthouden, bijvoorbeeld, als u van plan bent om de tabel te sorteren op basis van de sleutel.

Tabeltype

het tabeltype bepaalt hoe ABAP toegang krijgt tot afzonderlijke tabelingangen. Interne tabellen kunnen in drie typen worden onderverdeeld:

standaardtabellen hebben een interne lineaire index. Vanaf een bepaalde grootte omhoog, worden de indexen van interne tabellen beheerd als bomen. In dit geval neemt de overhead van de indexadministratie toe in logaritmische en niet lineaire relatie met het aantal lijnen. Het systeem kan toegang krijgen tot records met behulp van de tabelindex of de sleutel. De responstijd voor sleuteltoegang is evenredig met het aantal items in de tabel. De sleutel van een standaardtabel is altijd niet-uniek. U kunt geen unieke sleutel opgeven. Dit betekent dat standaard tabellen altijd zeer snel kunnen worden ingevuld, omdat het systeem niet hoeft te controleren of er al bestaande vermeldingen zijn.

gesorteerde tabellen worden altijd gesorteerd op de sleutel opgeslagen. Ze hebben ook een interne index. Het systeem kan toegang krijgen tot records met behulp van de tabelindex of de sleutel. De responstijd voor sleuteltoegang is logaritmisch evenredig met het aantal tabelitems, omdat het systeem een binaire zoekopdracht gebruikt. De sleutel van een gesorteerde tabel kan uniek of niet-uniek zijn. Wanneer u de tabel definieert, moet u opgeven of de sleutel uniek of niet-uniek moet zijn. Standaardtabellen en gesorteerde tabellen zijn algemeen bekend als indextabellen.

gehashte tabellen hebben geen lineaire index. U kunt alleen toegang krijgen tot een gehashte tabel met behulp van de sleutel. De responstijd is onafhankelijk van het aantal tabelitems en is constant, aangezien het systeem toegang heeft tot de tabelitems met behulp van een hash-algoritme. De sleutel van een gehashte tafel moet uniek zijn. Wanneer u de tabel definieert, moet u de sleutel als uniek opgeven.

algemene interne tabellen

in tegenstelling tot andere lokale gegevenstypen in programma ‘ s, hoeft u het gegevenstype van een interne tabel niet volledig op te geven. In plaats daarvan kunt u een algemene constructie opgeven, dat wil zeggen dat de sleutel of sleutel en regeltype van een intern tabelgegevenstype niet gespecificeerd kunnen blijven. U kunt algemene interne tabellen gebruiken om de typen veldsymbolen en de interfaceparameters van procedures op te geven . U kunt ze niet gebruiken om gegevensobjecten te declareren.

Leave a Reply