| name | abapgit-tabl-object |
| description | Create an abapGit TABL object outside SAP systems using user-defined names and repository reference files. |
Create abapGit TABL object
abapGit docs: Supported Object Types | File Formats | Test Repo
Goal
Create a TABL (Table / Structure) object directly as abapGit-serialized repository files, outside an SAP system.
abapGit serialization rules
Naming rule
- Use the exact object names provided by the user/request.
- Do not use placeholder names for implementation.
File structure
A TABL object consists of a single file:
<name>.tabl.xml — table/structure metadata
Complete sample
Sample A — Transparent table (TRANSP)
src/zfoo_flight.tabl.xml
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>ZFOO_FLIGHT</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>TRANSP</TABCLASS>
<CLIDEP>X</CLIDEP>
<DDTEXT>Flight Data</DDTEXT>
<MASTERLANG>E</MASTERLANG>
<MAINFLAG>N</MAINFLAG>
<CONTFLAG>A</CONTFLAG>
<EXCLASS>4</EXCLASS>
</DD02V>
<DD09L>
<TABNAME>ZFOO_FLIGHT</TABNAME>
<AS4LOCAL>A</AS4LOCAL>
<TABKAT>0</TABKAT>
<TABART>APPL0</TABART>
<BUFALLOW>N</BUFALLOW>
</DD09L>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>MANDT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>MANDT</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>FLIGHT_ID</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>ZFOO_FLIGHT_ID</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>CARRIER</FIELDNAME>
<ROLLNAME>ZFOO_CARRIER</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>CONNECTION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000004</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>FLIGHT_DATE</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>D</INTTYPE>
<INTLEN>000016</INTLEN>
<DATATYPE>DATS</DATATYPE>
<LENG>000008</LENG>
<MASK> DATS</MASK>
</DD03P>
<DD03P>
<FIELDNAME>LAST_CHANGED_AT</FIELDNAME>
<ROLLNAME>TIMESTAMPL</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>
Sample B — Structure (INTTAB)
src/zfoo_flight_result.tabl.xml
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DD02V>
<TABNAME>ZFOO_FLIGHT_RESULT</TABNAME>
<DDLANGUAGE>E</DDLANGUAGE>
<TABCLASS>INTTAB</TABCLASS>
<DDTEXT>Flight Result Structure</DDTEXT>
<MASTERLANG>E</MASTERLANG>
<EXCLASS>4</EXCLASS>
</DD02V>
<DD03P_TABLE>
<DD03P>
<FIELDNAME>FLIGHT_ID</FIELDNAME>
<ROLLNAME>ZFOO_FLIGHT_ID</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<COMPTYPE>E</COMPTYPE>
</DD03P>
<DD03P>
<FIELDNAME>STATUS</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000002</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000001</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>
</abapGit>
Key XML elements
| Element | Description |
|---|
| DD02V | Table header |
TABNAME | Table/structure name (uppercase, max 30 chars) |
TABCLASS | TRANSP = transparent table, INTTAB = structure, CLUSTER = cluster table, POOL = pool table |
CLIDEP | X = client-dependent (only for TRANSP) |
CONTFLAG | Delivery class: A = application, C = customizing, L = temporary, S = system |
| DD09L | Technical settings (only for TRANSP) |
TABART | Data class: APPL0, APPL1, etc. |
BUFALLOW | Buffering: N = not allowed, X = allowed |
| DD03P | Field definition |
FIELDNAME | Field name |
KEYFLAG | X = key field |
ROLLNAME | Data element reference (use COMPTYPE = E) |
DATATYPE+LENG | Direct type (when no ROLLNAME) |
COMPTYPE | E = data element, S = structure, R = reference |
Important: client field (client-dependent tables)
For client-dependent transparent tables (CLIDEP = X), the first key field must be the
standard client field wired via the MANDT data element, not a hand-rolled native CLNT
field. This is what SAP generates by standard (e.g. RAP draft-table quickfixes) and is required
for correct client handling:
<DD03P>
<FIELDNAME>MANDT</FIELDNAME>
<KEYFLAG>X</KEYFLAG>
<ROLLNAME>MANDT</ROLLNAME>
<ADMINFIELD>0</ADMINFIELD>
<NOTNULL>X</NOTNULL>
<COMPTYPE>E</COMPTYPE>
</DD03P>
Do not define the client as <FIELDNAME>CLIENT</FIELDNAME> with a native DATATYPE>CLNT;
use FIELDNAME MANDT + ROLLNAME MANDT (COMPTYPE = E). In foreign keys (DD05M), map the
client component with FORKEY/CHECKFIELD = MANDT.
Important: STRING/RAWSTRING fields
For fields with DATATYPE = STRG (string) or RSTR (rawstring/xstring), omit the <LENG> element entirely. SAP's serializer does not include <LENG> for these types since their length is implicitly unlimited. Including <LENG>000000</LENG> will cause a diff mismatch when abapGit re-serializes the object from the SAP system.
Example — STRING field (correct):
<DD03P>
<FIELDNAME>DESCRIPTION</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>g</INTTYPE>
<INTLEN>000008</INTLEN>
<DATATYPE>STRG</DATATYPE>
<MASK> STRG</MASK>
</DD03P>
Creation workflow
- Take the table/structure name and target package path from the user/request.
- Create
<name>.tabl.xml in the appropriate src/ subfolder.
- For transparent tables: include
DD02V, DD09L, and DD03P_TABLE.
- For structures: include
DD02V and DD03P_TABLE (no DD09L).
- Fields can reference data elements via
ROLLNAME+COMPTYPE=E or define types directly.
- Always include
MANDT (data element MANDT, COMPTYPE=E) as the first key field for client-dependent tables.
Done-check
- Serializer is exactly
LCL_OBJECT_TABL.
TABNAME in XML matches the filename (uppercase vs lowercase).
TABCLASS is set correctly (TRANSP or INTTAB).
- Key fields have
KEYFLAG = X and NOTNULL = X.
DD09L is present only for transparent tables.
- No SAP-system-only creation step is required.