1. Home
  2. DevOps
  3. SAP tables

SAP tables: categories, key tables and internal tables

How SAP describes and stores its data in the ABAP Dictionary, what each table category means, what changed in SAP S/4HANA, the tables you reach for every week, and how internal tables work in ABAP.

  • SE11
  • ABAP Dictionary
  • SAP S/4HANA
  • ABAP internal tables

What is an SAP table?

Every SAP table is defined once, in the ABAP Dictionary (transaction SE11). For a transparent table, the dictionary definition and the table on the database share the same name and the same fields, so the dictionary is also the map of the database.

Every table has a primary key. In client-dependent tables the first key field is the client (MANDT, or RCLNT in the Universal Journal), which keeps each client's data apart in one database.

A field has no type of its own: it points to a data element (meaning, labels, F1 help), which points to a domain (type, length, allowed values). That chain is why the same company code field looks and behaves the same on every screen.

Business data falls into three groups: master data (cost centers, materials, business partners), transaction data (documents and their line items) and customizing (company codes, document types). Knowing the group tells you where to look and who maintains it.

From domain to table

Four dictionary objects stand behind every column you see in SE16N. The company code is the classic example.

  1. 1 · DomainBUKRSTechnical type CHAR 4, with table T001 as its value table.
  2. 2 · Data elementBUKRSThe meaning: labels "Company Code", F1 documentation, and the domain it uses.
  3. 3 · FieldBKPF-BUKRSA column of a table. ACDOCA-RBUKRS uses the same data element under another name.
  4. 4 · TableBKPFKey MANDT, BUKRS, BELNR, GJAHR, plus technical settings and a delivery class.

Other dictionary objects you will meet

  • Structure

    Fields with no data on the database. Used for interfaces and screens, and included in tables, like ACDOC_SI_00 inside ACDOCA.

  • Table type

    The global definition of an internal table: row type, table category and key, reusable in any program.

  • Check table and foreign key

    A field's allowed values come from another table's key: BUKRS is checked against T001. This is how SAP models relationships.

  • Text table

    Language-dependent texts kept apart, with SPRAS in the key: SKAT for SKA1, CSKT for CSKS, MAKT for MARA.

  • Views

    Database, projection, maintenance and help views, defined in SE11. Maintenance views let SM30 edit related customizing tables together.

  • CDS view entity

    Views written in ABAP Core Data Services, in ABAP Development Tools. The data model behind Fiori apps and ABAP Cloud, such as I_JournalEntryItem.

  • Search help

    The F4 list of values for a field, with its own selection fields and result list.

  • Lock object

    Logical locks (enqueue) so two users cannot change the same record at the same time.

Table categories

The table category says whether a physical table exists for a dictionary definition, and how it is stored on the database. You see it in SE11 next to the table name, and in field TABCLASS of table DD02L.

  • Transparent table

    TRANSP
    Own table on the database

    One database table per dictionary table, with the same name and fields. All business data and most customizing live here, and any SQL tool can read it.

    Examples: BKPF, CSKS, ACDOCA, MATDOC

  • Structure

    INTTAB
    No data on the database

    Defines the interface between programs, or between screens and programs. It can be included in tables and other structures.

    Examples: BAPIRET2, ACDOC_SI_00

  • Append structure

    APPEND
    Adds fields to a table

    Fields that belong to another table or structure but are a separate object in correction management, so you can add customer fields (ZZ or YY) without a modification.

    Example: an append on MARA with ZZ fields

  • Pooled table

    POOL
    Shared table pool · converted in S/4HANA

    Many small tables stored in one table pool: the pool's key is the table name plus the record key, and the other fields are compressed in one column. Used for control data such as screen sequences and program parameters.

    Readable only through the SAP kernel, with no joins

  • Cluster table

    CLUSTER
    Shared table cluster · converted in S/4HANA

    Several tables that share part of their key stored in one table cluster, with the rows of one object packed into one physical record. Fast to read a whole document, impossible to aggregate in the database.

    Examples in SAP ECC: BSEG in cluster RFBLG, KONV in KOCLU

  • Generated view structure

    VIEW
    No data on the database

    A structure the system generates for a view when it is activated, used as the interface to the runtime environment. You do not usually see it in the dictionary.

    Created and changed by the system only

Pooled and cluster tables in SAP S/4HANA

Pool and cluster data is compressed by the SAP kernel in its own format, so the database cannot compute on it. On the way to SAP HANA these tables are converted to transparent tables (declustering and depooling, SAP Note 1892354). BSEG is a transparent table in SAP S/4HANA; KONV gave way to the new pricing table PRCD_ELEMENTS.

Before a migration

List the remaining pool and cluster tables from DD02L (TABCLASS = POOL or CLUSTER) and DD06L. SAP KBA 2634739 has the steps.

Delivery class and technical settings

Two attributes decide how a table behaves in client copies, transports and upgrades, and how the database stores and buffers it.

Delivery class (SE11 › Delivery and Maintenance)
ClassWhat the table holdsExample
AApplication data: master and transaction dataBKPF, CSKS
CCustomizing, maintained only by the customerT001
LTemporary data, delivered empty—
GCustomizing protected against SAP updates: SAP can only insert new entries—
EControl table: SAP and the customer each have their own key range—
SSystem table maintained only by SAP; a change is a modification—
WSystem table whose contents travel with their own transport objects—
  • Data class

    APPL0 master data, APPL1 transaction data, APPL2 organization and customizing. It decides the storage area on databases that use one.

  • Buffering

    Single records, a generic area or the full table kept in the application server's memory. Right for small customizing read all day, like T001; wrong for transaction data.

  • Log data changes

    With the flag on and profile parameter rec/client set, changes are logged and can be read in SCU3. Common for audit-relevant customizing.

What changed in SAP S/4HANA

SAP HANA adds up line items fast enough that most totals and index tables are no longer needed. Many old tables live on as views, so reports still run, but where the data really sits has moved.

  • Finance

    One Universal Journal

    ACDOCA holds FI, CO, asset accounting, material ledger and margin analysis actuals. GLT0, FAGLFLEXT, BSIS, BSID, BSIK and their peers became compatibility views.

    ACDOCA, ACDOCP and ACDOCU
  • Inventory

    MATDOC

    One material document table replaces MKPF and MSEG. Stock quantities in MARD, MCHB and their peers are calculated from it; the old names remain as compatibility views.

  • Sales

    Leaner SD tables

    VBUK and VBUP are gone: status fields sit in VBAK, VBAP, LIKP, LIPS and VBRK. Pricing results moved from KONV to PRCD_ELEMENTS.

  • Master data

    Business partner first

    Customers and suppliers are created as business partners (BUT000). KNA1 and LFA1 stay, linked through CVI_CUST_LINK and CVI_VEND_LINK.

  • Field lengths

    Longer keys

    The material number can have up to 40 characters. Interfaces and custom code that assume 18 need a look.

  • Development

    Views over tables

    Code built for ABAP Cloud reads released CDS views, such as I_JournalEntryItem, instead of tables. Classic ABAP can still read tables directly.

Compatibility views: a SELECT on BSIS, COEP or MSEG still works, but writing to them does not. The data from before the conversion stays readable through the V_<table>_ORI views, for example V_COEP_ORI (SAP Note 1976487).

Key SAP tables by area

The tables you will reach for most, with their primary key and a transaction that shows the data. Pick an area. For how they join, see SAP table relationships.

Area

Finance

General ledger, documents and payments. In SAP S/4HANA the line items of every ledger are in ACDOCA; BKPF and BSEG still carry the FI document.

TableDescriptionTypeKey fieldsTransactionNote
T001Company codesCustomizingBUKRSOX02
SKA1G/L account master (chart of accounts)Master dataKTOPL, SAKNRFS00
SKATG/L account textsText tableSPRAS, KTOPL, SAKNRFS00
SKB1G/L account master (company code)Master dataBUKRS, SAKNRFS00
BKPFAccounting document headerTransaction dataBUKRS, BELNR, GJAHRFB03
BSEGAccounting document segment (entry view)Transaction dataBUKRS, BELNR, GJAHR, BUZEIFB03Cluster table in SAP ECC, transparent in SAP S/4HANA
BSETTax data document segmentTransaction dataBUKRS, BELNR, GJAHR, BUZEIFB03
ACDOCAUniversal Journal entry line itemsTransaction dataRLDNR, RBUKRS, GJAHR, BELNR, DOCLNFB03, FAGLL03HOne line per ledger
ACDOCPPlan data line itemsTransaction dataREQTSN, DATAPAKID, RECORDImport Financial Plan Data appTechnical key: always filter on the plan category
BSIS, BSID, BSIKOpen item indexes: G/L, customers, suppliersView in S/4HANA—FBL3N, FBL5N, FBL1NTables in SAP ECC
REGUSAccounts blocked by payment proposalTransaction dataKOART, BUKRS, KONKOF110LAUFD and LAUFI name the payment run that holds the block

Controlling

Cost and profit center master data and CO documents. CO actuals are in ACDOCA in SAP S/4HANA; the old CO tables answer through views.

TableDescriptionTypeKey fieldsTransactionNote
TKA01Controlling areasCustomizingKOKRSOKKP
CSKSCost center master dataMaster dataKOKRS, KOSTL, DATBIKS03Time-dependent: take the line valid on your date
CSKTCost center textsText tableSPRAS, KOKRS, KOSTL, DATBIKS03
CEPCProfit center master dataMaster dataPRCTR, DATBI, KOKRSKE53
CEPCTProfit center textsText tableSPRAS, PRCTR, DATBI, KOKRSKE53
AUFKOrder master dataMaster dataAUFNRKO03Internal, production, maintenance and other orders
COBKCO object: document headerTransaction dataKOKRS, BELNRKSB5
COEPCO object: line items (by period)Transaction dataKOKRS, BELNR, BUZEIKSB5S/4HANA: value types 04 and 11 come from ACDOCA through view V_COEP
COSP, COSSCO totals: external and internal postingsView in S/4HANALEDNR, OBJNR, GJAHR, WRTTP, VERSN, KSTAR, …—Actual totals are calculated from ACDOCA

Assets

Asset master data stays in the ANL* tables. Asset values and line items moved to ACDOCA with new Asset Accounting.

TableDescriptionTypeKey fieldsTransactionNote
ANLAAsset master record segmentMaster dataBUKRS, ANLN1, ANLN2AS03
ANLZTime-dependent asset allocationsMaster dataBUKRS, ANLN1, ANLN2, BDATUAS03Cost center, plant and location over time
ANLBDepreciation termsMaster dataBUKRS, ANLN1, ANLN2, AFABE, BDATUAS03
ANEP, ANEA, ANLP, ANLCAsset line items and value totalsView in S/4HANA—AW01NValues are in ACDOCA in SAP S/4HANA

Materials

Material master by organizational level, and material documents. Stock quantities and values are calculated from MATDOC and ACDOCA in SAP S/4HANA.

TableDescriptionTypeKey fieldsTransactionNote
MARAGeneral material dataMaster dataMATNRMM03MATNR up to 40 characters in SAP S/4HANA
MAKTMaterial descriptionsText tableMATNR, SPRASMM03
MARCPlant data for materialMaster dataMATNR, WERKSMM03
MARDStorage location data for materialMaster dataMATNR, WERKS, LGORTMMBES/4HANA: stock quantities calculated from MATDOC
MBEWMaterial valuationMaster dataMATNR, BWKEY, BWTARMM03S/4HANA: values from ACDOCA and the material ledger
MCHABatches (plant level)Master dataMATNR, WERKS, CHARGMSC3N
MATDOCMaterial documentsTransaction dataTechnical key; use MBLNR, MJAHR, ZEILEMIGO, MB51Replaces MKPF and MSEG
MKPF, MSEGMaterial document header and itemsView in S/4HANAMBLNR, MJAHR (+ ZEILE)MB03Tables in SAP ECC
T001WPlantsCustomizingWERKSOX10
T001LStorage locationsCustomizingWERKS, LGORTOX09
T001KValuation areasCustomizingBWKEY—Links the valuation area to its company code

Purchasing

From purchase requisition to supplier invoice. EKBE is the history that ties a PO item to its goods receipts and invoices.

TableDescriptionTypeKey fieldsTransactionNote
EBANPurchase requisitionTransaction dataBANFN, BNFPOME53N
EKKOPurchasing document headerTransaction dataEBELNME23N
EKPOPurchasing document itemTransaction dataEBELN, EBELPME23N
EKETSchedule linesTransaction dataEBELN, EBELP, ETENRME23N
EKKNAccount assignment in purchasing documentTransaction dataEBELN, EBELP, ZEKKNME23N
EKBEHistory per purchasing documentTransaction dataEBELN, EBELP, ZEKKN, VGABE, GJAHR, BELNR, BUZEIME23NVGABE 1 = goods receipt, 2 = invoice receipt
RBKPSupplier invoice headerTransaction dataBELNR, GJAHRMIR4
RSEGSupplier invoice item (PO-related)Transaction dataBELNR, GJAHR, BUZEIMIR4
EINA, EINEPurchasing info record: general and organizational dataMaster dataINFNR; INFNR, EKORG, ESOKZ, WERKSME13

Sales

Order, delivery and billing, each with a header and an item table. VBFA records the document flow between them.

TableDescriptionTypeKey fieldsTransactionNote
VBAKSales document headerTransaction dataVBELNVA03
VBAPSales document itemTransaction dataVBELN, POSNRVA03
VBEPSchedule linesTransaction dataVBELN, POSNR, ETENRVA03
VBPASales document partnersTransaction dataVBELN, POSNR, PARVWVA03POSNR 000000 = header partner
LIKPDelivery headerTransaction dataVBELNVL03N
LIPSDelivery itemTransaction dataVBELN, POSNRVL03N
VBRKBilling document headerTransaction dataVBELNVF03
VBRPBilling document itemTransaction dataVBELN, POSNRVF03
VBFASales document flowTransaction dataPreceding VBELV, POSNV → subsequent VBELN, POSNNVA03Read in either direction
PRCD_ELEMENTSPricing elementsTransaction dataKNUMV, KPOSN, STUNR, ZAEHKVA03Replaces KONV in SAP S/4HANA
VBUK, VBUPHeader and item statusRemoved in S/4HANA——Status fields now in VBAK, VBAP, LIKP, LIPS, VBRK

Production & projects

Bills of material, routings, orders and projects. Objects with a status carry an object number (OBJNR) that leads to JEST.

TableDescriptionTypeKey fieldsTransactionNote
MASTMaterial to BOM linkMaster dataMATNR, WERKS, STLAN, STLNR, STLALCS03
STKOBOM headerMaster dataSTLTY, STLNR, STLAL, STKOZCS03
STPOBOM itemMaster dataSTLTY, STLNR, STLKN, STPOZCS03
PLKOTask list header (routing)Master dataPLNTY, PLNNR, PLNAL, ZAEHLCA03
AFKOOrder header data (PP orders)Transaction dataAUFNRCO03
AFPOOrder itemTransaction dataAUFNR, POSNRCO03
RESBReservations and dependent requirementsTransaction dataRSNUM, RSPOS, RSARTCO03
AFRUOrder confirmationsTransaction dataRUECK, RMZHLCO14
PROJProject definitionMaster dataPSPNRCJ20N
PRPSWBS element master dataMaster dataPSPNRCJ20NPSPHI points to the project in PROJ
JESTObject statusTransaction dataOBJNR, STAT—Texts in TJ02T (system) and TJ30T (user status)

Business partner

In SAP S/4HANA the business partner is the entry point. Customer and supplier tables stay, linked by the CVI tables.

TableDescriptionTypeKey fieldsTransactionNote
BUT000Business partner: general dataMaster dataPARTNERBP
BUT100Business partner rolesMaster dataPARTNER, RLTYP, DFVALBP
CVI_CUST_LINKBusiness partner to customer linkMaster dataPARTNER_GUIDBPCUSTOMER = KNA1-KUNNR
CVI_VEND_LINKBusiness partner to supplier linkMaster dataPARTNER_GUIDBPVENDOR = LFA1-LIFNR
KNA1Customer master: general dataMaster dataKUNNRBP
KNB1Customer master: company codeMaster dataKUNNR, BUKRSBP
KNVVCustomer master: sales dataMaster dataKUNNR, VKORG, VTWEG, SPARTBP
LFA1Supplier master: general dataMaster dataLIFNRBP
LFB1Supplier master: company codeMaster dataLIFNR, BUKRSBP
LFM1Supplier master: purchasing organizationMaster dataLIFNR, EKORGBP
ADRCAddresses (central address management)Master dataADDRNUMBER, DATE_FROM, NATIONBP

Brazil NF

The nota fiscal tables of the Brazilian localization. J_1BNFLIN points back to the billing document, invoice or material document that created the nota fiscal.

TableDescriptionTypeKey fieldsTransactionNote
J_1BNFDOCNota fiscal headerTransaction dataDOCNUMJ1B3N
J_1BNFLINNota fiscal line itemsTransaction dataDOCNUM, ITMNUMJ1B3NREFTYP and REFKEY point to the source document
J_1BNFSTXNota fiscal taxes per itemTransaction dataDOCNUM, ITMNUM, TAXTYPJ1B3N
J_1BNFNADNota fiscal partnersTransaction dataDOCNUM, PARVWJ1B3N
J_1BNFE_ACTIVEElectronic nota fiscal: current statusTransaction dataDOCNUMJ1BNFEAccess key and authorization status
J_1BBRANCHBusiness places (branches)CustomizingBUKRS, BRANCH—

Key fields are shown without the client (MANDT or RCLNT). Check them in SE11 for your release.

How to find the table behind a field

Screens often show structures, not tables. Work through these steps until you land on the table that really stores the value.

  1. F1, then Technical Information. It shows the table or structure and the field name behind the screen field.

  2. If it is a structure, open the data element in SE11 and run the where-used list for tables.

  3. Search DD03L in SE16N by FIELDNAME or ROLLNAME (the data element) to list every table that has the field.

  4. Trace with ST05. Switch on the SQL trace, run the transaction and read which tables it selects from.

  5. Search a value with SE16S across many tables, when you know a value but not where it lives.

  6. For Fiori apps, find the CDS view the app reads and follow its data sources down to the tables in ABAP Development Tools.

Display and maintain table data
TransactionWhat it does
SE16SE16NDisplay table contents with selections, layouts and text tables
SE16HDisplay with grouping, totals and joins. See the SE16H guide.
SM30Maintain customizing tables and views that have a maintenance dialog
SE54Generate the maintenance dialog (also from SE11 › Utilities › Table Maintenance Generator)
SCU3Evaluate table change logs

Table access is controlled by authorization objects S_TABU_DIS (by authorization group, assigned in table TDDAT) and S_TABU_NAM (by table name).

Internal tables in ABAP

An internal table is a dynamic data object in program memory: any number of rows with one common row type. It is ABAP's tool for mass data, from a list read with one SELECT to a lookup table inside a loop.

Three things define it: the row type, the table category and the table key. The row type can be any non-generic type: elementary, a structure, a table type or a reference, from the dictionary, a class or interface, or the program itself.

Database tableInternal table
Lives inThe databaseProgram memory
LifetimePermanentWhile the program runs
Defined inSE11 or a CDS table entityThe program, or a dictionary table type
Read withABAP SQLREAD, LOOP, table expressions
Table categories of internal tables
CategoryManaged byPrimary keyAccessUse it for
StandardRow indexAlways non-unique, can be emptyIndex or key; a key read is a linear searchFilling, appending and looping over everything
SortedRow index, kept in key orderUNIQUE or NON-UNIQUEIndex or key; binary search on the keyReads and loops on a leading part of the key
HashedHash functionAlways uniqueKey only, same time at any size; no indexLarge lookups by the full key
  • Generic categories

    For typing parameters and field symbols: ANY TABLE accepts every category, INDEX TABLE only standard and sorted tables.

  • Table keys

    One primary key, plus optional named secondary keys (sorted or hashed) used with USING KEY. table_line makes the whole row the key.

  • Avoid DEFAULT KEY

    The standard key takes every character-like and byte-like component, which is rarely what you mean. Name the key fields, or write WITH EMPTY KEY.

Statements and expressions

Classic statements

  • READ TABLE
  • LOOP AT
  • INSERT … INTO TABLE
  • APPEND
  • MODIFY
  • DELETE
  • SORT
  • COLLECT

Modern ABAP (7.40 and later)

  • itab[ … ]
  • line_exists( )
  • lines( )
  • VALUE #( )
  • FOR
  • REDUCE
  • FILTER
  • CORRESPONDING
  • LOOP AT … GROUP BY

Examples

Example

Classic statements

TYPES: BEGIN OF ty_line,
         col1 TYPE i,
         col2 TYPE i,
       END OF ty_line.

DATA: line TYPE ty_line,
      itab TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY.

" 1. Fill the table: INSERT appends to a standard table
DO 10 TIMES.
  line-col1 = sy-index.
  line-col2 = sy-index ** 2.
  INSERT line INTO TABLE itab.
ENDDO.

" 2. Read all rows in a loop
LOOP AT itab INTO line.
  WRITE: / line-col1, line-col2.
ENDLOOP.

" 3. Assign the fifth row to an inline field symbol
READ TABLE itab INDEX 5 ASSIGNING FIELD-SYMBOL(<line>).
IF sy-subrc = 0.
  WRITE: / <line>-col1, <line>-col2.
ENDIF.

What it shows

A structured row type, a standard table filled row by row, a loop over all rows and an index read of the fifth row.

Tip

Always check sy-subrc after READ TABLE: if the row does not exist, the field symbol stays unassigned and using it dumps.

The same job with expressions (ABAP 7.40 and later)

TYPES: BEGIN OF ty_line,
         col1 TYPE i,
         col2 TYPE i,
       END OF ty_line,
       tt_lines TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY.

" 1. Build the table in one expression
DATA(itab) = VALUE tt_lines( FOR i = 1 UNTIL i > 10
                             ( col1 = i  col2 = i * i ) ).

" 2. Loop with an inline field symbol
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
  cl_demo_output=>write( |{ <line>-col1 } { <line>-col2 }| ).
ENDLOOP.

" 3. Table expression instead of READ TABLE
IF lines( itab ) >= 5.
  DATA(fifth) = itab[ 5 ].
  cl_demo_output=>write( fifth ).
ENDIF.

cl_demo_output=>display( ).

What it shows

VALUE with FOR builds the table, ASSIGNING avoids copying rows, and itab[ 5 ] reads a row without READ TABLE.

Tip

A table expression raises CX_SY_ITAB_LINE_NOT_FOUND when the row is missing. Guard it with lines( ) or line_exists( ), or add OPTIONAL inside VALUE #( ).

Read once, look up many times with a hashed table

TYPES: BEGIN OF ty_cc,
         kokrs TYPE kokrs,
         kostl TYPE kostl,
         prctr TYPE prctr,
       END OF ty_cc.

" One line per cost center: unique key
DATA cost_centers TYPE HASHED TABLE OF ty_cc
                  WITH UNIQUE KEY kokrs kostl.

" Only the record valid today, so the key stays unique
SELECT kokrs, kostl, prctr
  FROM csks
  WHERE kokrs = @lv_kokrs
    AND datab <= @sy-datum
    AND datbi >= @sy-datum
  INTO TABLE @cost_centers.

" Constant-time lookups inside the loop
LOOP AT postings ASSIGNING FIELD-SYMBOL(<p>).
  <p>-prctr = VALUE #( cost_centers[ kokrs = <p>-kokrs
                                    kostl = <p>-kostl ]-prctr OPTIONAL ).
ENDLOOP.

What it shows

One SELECT fills a hashed table keyed by controlling area and cost center; the loop then finds each profit center without another database call.

Tip

CSKS is time-dependent. Without the date filter, a cost center with two validity periods gives two rows with the same key, and the SELECT into a unique hashed table dumps.

Performance rules that pay off

  • Never read a large standard table by key inside a loop over another large table: use a sorted or hashed table, or a secondary key.
  • Read the database once into a hashed table instead of a SELECT inside a LOOP.
  • With FOR ALL ENTRIES, check the driver table is not empty first: an empty one selects every row.
  • Use ASSIGNING or REFERENCE INTO for wide rows, so rows are not copied.

Frequently asked questions

What is a transparent table in SAP?

A table defined in the ABAP Dictionary that has exactly one table on the database, with the same name and fields. Almost all business data in SAP S/4HANA is stored in transparent tables.

What is the difference between a table and a structure?

Both are lists of fields defined in SE11. A table stores rows on the database; a structure stores nothing and only describes data passed between programs and screens, or included in a table.

Do pool and cluster tables still exist in SAP S/4HANA?

Not for application data. They are converted to transparent tables when the system moves to SAP HANA, so tables such as BSEG can be read and aggregated with plain SQL.

Which table stores the G/L line items in SAP S/4HANA?

ACDOCA, the Universal Journal, with one line per ledger. BKPF still holds the document header and BSEG the entry view of FI documents.

How do I find which table a field is stored in?

Press F1 on the field and open Technical Information. If it shows a structure, use the where-used list of the data element in SE11, search table DD03L, or trace the transaction with ST05.

What is the difference between standard, sorted and hashed internal tables?

Standard tables are accessed by index and searched row by row; sorted tables keep their key order and use a binary search; hashed tables find a row by its unique key in the same time at any size, but have no index.

What is MANDT in SAP tables?

The client. It is the first key field of client-dependent tables and keeps the data of each client apart. ABAP SQL fills it automatically, so you never select it yourself.