Hva er et internt bord?
INTERNTABELL brukes til å innhente data fra en fast struktur for dynamisk bruk i ABAP. Hver linje i den interne tabellen har samme feltstruktur. Hovedbruken for interne tabeller er for lagring og formatering av data fra en databasetabell i et program.
I denne opplæringen lærer du:
- Hva er et internt bord?
- Hva er et arbeidsområde?
- Forskjellen mellom internt bord og et arbeidsområde?
- Typer av interne tabeller
- Opprette interne tabeller
- Befolker interne tabeller
- Kopiere interne tabeller
- Lesing Internt
- Slette interne tabeller
Hva er et arbeidsområde?
Arbeidsområder er enkle rader med data. De skal ha samme format som noen av de interne tabellene. Den brukes til å behandle dataene i en intern tabell en linje om gangen.
Forskjellen mellom internt bord og et arbeidsområde?
Et bilde sier tusen ord :-)
Typer av interne tabeller
Det er to typer interne bord.
- Interne bord med HEADER-linje
- Interne bord uten HEADER-linje.
Interne bord med topplinje
- Her oppretter systemet automatisk arbeidsområdet.
- Arbeidsområdet har samme datatype som intern tabell.
- Dette arbeidsområdet kalles HEADER-linjen.
- Det er her at alle endringene eller noe av handlingen på innholdet i tabellen er gjort. Som et resultat av dette, kan poster settes direkte inn i tabellen eller nås direkte fra den interne tabellen.
Interne tabeller uten overskrift :
- Her er det ikke noe arbeidsområde knyttet til tabellen.
- Arbeidsområdet skal spesifiseres spesifikt når vi trenger tilgang til slike tabeller.
- Derfor er disse tabellene ikke tilgjengelige direkte.
Opprette interne tabeller
Det er mange måter å lage en intern tabell på. La oss se på dem en etter en - 1.
Ved å
bruke typeforklaringen La oss nå lage en intern tabell der den bruker TYPE-setningen.
Syntaksen er -
Typer: begynnelse av linjen,kolonne1 type I,kolonne2 type I,slutten av linjen.
Eksempel:
TYPER: begynnelsen av linjen,empno type I,empname (20) type c,slutten av linjen.
TYPES-setningen oppretter en strukturlinje som definert.
For å lage en intern tabell, bruk følgende kommando-
Datalinjens typelinje forekommer 10.
En intern tabell-itab opprettes med linjestrukturen. I tillegg til å erklære strukturen til en intern tabell, definerer OCCURS-paragrafen også hvor mange tabelloppføringer som opprettholdes i hovedlagringen (i dette tilfellet 10). Ekstra poster skrives ut til personsøkerområdet og kan påvirke ytelsen
2. Ved å henvise til en annen tabell
Du kan opprette en intern tabell ved å referere til en eksisterende tabell. Den eksisterende tabellen kan være en standard SAP-tabell, en Z-tabell eller en annen intern tabell.
Syntaks-
Data[med overskrift].
Eksempel-
DATA itab TYPE-linjen OCCURS 10 med topptekstlinje.
Her opprettes en intern tabell itab av typelinjen med en headerlinje. Vær oppmerksom på "med topplinja" er valgfritt
3.By henviser til eksisterende struktur
Syntax-
DataLIKE forekommer n [med overskriftslinje].
Eksempel-
DATA itab LIKE sline OCCURS 10.
Her opprettes en tabell-itab med samme struktur som sline
4. Ved å lage en ny struktur
La oss nå lage en intern tabell med en egen struktur. Her er tabellen opprettet med en overskriftslinje, som standard .
Syntaks -
Data: Start avforekommer , ,…,Slutt på .
Eksempel -
Data: Start av itab forekommer 10,kolonne1 type I,kolonne2 (4) type C,kolonne3 som mara-ernam,Slutten på ITAB.
Intern tabell itab opprettes
Befolker interne tabeller
Nå som vi har opprettet noen interne tabeller, la oss se hvordan vi fyller dem med noen poster. Det er forskjellige metoder som er tilgjengelige for å fylle ut tabeller 1. Legg til data linje for linje Den første tilgjengelige metoden er bruken av APPEND-setningen.Ved å bruke APPEND-setningen kan vi enten legge til en linje fra et annet arbeidsområde til den interne tabellen, eller vi kan legge til en første linje til den interne tabellen ...
Syntaks -
LEGG TIL [Her er arbeidsområdetTIL / INITIAL LINE TO] .
Systemvariabelen SY-TABIX inneholder indeksen til den vedlagte linjen.
Eksempel:
Data: Start av itab forekommer 10,col1 type C,col2 type I,slutten på itab.Legg til første linje til itab.
Resultater: '' '0'
Innledende linjer legger til en linje initialisert med riktig verdi for sin type i tabellen. Her er col1 et tegn og col2 er et helt tall. TILLEG deretter initiallinjen, legger til en linje initialisert med hensyn til datatypen til kolonnene, dvs. plass for col1 og 0 for col2. 2.Bruk av COLLECT-setningCOLLECT er en annen form for uttalelse som brukes til å fylle ut de interne tabellene. Generelt brukes COLLECT mens du setter inn linjer i et internt bord med unik standardnøkkel.
Syntaks-
SAMLER [INTO] .
Tilfelle av tabeller med overskrift, INTO-alternativet er utelatt. Anta at det allerede er en oppføring som har den samme nøkkelen som den du prøver å legge til, så blir ikke en ny linje lagt til i tabellen, men de numeriske feltene i begge oppføringene blir lagt til og bare en oppføring som tilsvarer nøkkelen er til stede . Verdien på SY-TABIX endres til raden i den opprinnelige oppføringen. Else COLLECT fungerer som APPEND og SY-TABIX inneholder indeksen til den behandlede linjen. 3 . Bruke INSERT-setningINSERT-setning legger til en linje / arbeidsområde i den interne tabellen. Du kan spesifisere posisjonen der den nye linjen skal legges til ved å bruke INDEX-setningen med INSERT-setningen.
Syntaks
INSERT [Her settes arbeidsområdetINTO / INITIAL LINE INTO] [index ].
Kopiere interne tabeller
Innholdet i en intern tabell kan kopieres til en annen ved å bruke setningen APPEND LINES eller INSERT LINES. En enklere måte er å bruke mange av følgende syntakser.FLYTTTil .ELLER = .
Disse kopierer innholdet av ITAB1 til ITAB2. I tilfelle interne tabeller med overskriftslinje må vi bruke [] for å skille fra arbeidsområdet. Så, for å kopiere innholdet i interne tabeller med overskrift, blir syntaksen,
itab1 [] = itab2 [].
Les interne tabeller
Vi er nå kjent med å lage interne tabeller og fylle dem med data. Vi får nå se hvordan vi faktisk bruker dataene eller henter dataene fra de interne tabellene. 1. Bruke Loop -EndloopEn av måtene å få tilgang til eller lese den interne tabellen er å bruke LOOP-ENDLOOP.Syntaks
LOOP AT[INTO ]… ENDLOOP.
Her når du sier LOOP AT ITABLE, så leses den interne tabellen ITABLE linje for linje. Du kan få tilgang til verdiene til kolonnene for den linjen under hvilken som helst del av LOOP-ENDLOOP-strukturen. Verdien til SY-SUBRC er satt til 0 , selv om bare en post blir lest. 2. Bruke READDen andre metoden for å lese den interne tabellen er å bruke READ-setningen.
Syntaks-
LES TABELL[IN ] INDEX .
Denne erklæringen leser gjeldende linje eller linje som spesifisert av indeks
Slette interne tabeller
Det er mange måter å slette linjer fra en intern tabell. 1.Slette linjer i en løkke.Dette er den enkleste måten å slette linjer på.
Sytax
SLETT.
Denne uttalelsen fungerer bare i en løkke. Den sletter den nåværende linjen. Du kan slette linjene i en løkke betinget ved å legge til WHERE-setningen. 2.Slette linjer ved hjelp av indeksen.
Dette brukes til å slette en linje fra den interne tabellen ved hvilken som helst kunnskapsindeks.
Syntaks
SLETTLinjen med indeksenINDEKS .