The Ultimate Cheat Sheet on SAP SD Database Architecture
Often, you would need to understand the technical aspect of how things are structured to really appreciate an application. SAP is no different. However, there are many functional areas and understanding the entire database structure for massive software like SAP in a single go is an uphill task. Hence, it is better to go via each functional area. In this article, I attempt to cover the important database tables for SAP Sales and Distribution.
This is especially useful for someone who is new to SD or has been working on the functional side and would want to understand it from the database point of view. Moreover, I am structuring the tables in a sequential manner which will help you in navigating easily as well as remembering them. Please note that the focus here is on understanding and building confidence instead of width and coverage.
You cannot start with the application until and unless you have an enterprise structure in place. This article doesn’t want to go into the topic but it lists out the database tables in this regards.
|1.||TVKO||This has the Sales Organization definition and details of its currency and address. VKORG field of this table is one of the crucial element of other SD tables.|
|2.||TVKOV||This table has all the distribution channels for Sales Org|
|3.||TVKOS||This table has all the divisions allowed for sales Org|
|4.||TVAKZ||This table has all the allowed Order types for the Sales Org|
|5.||TVTA||This table has possible combination of Sales Org / Distribution Channel / Division i.e. Sales area|
Once enterprise structure is created, you must understand the master data and how it relates the enterprise structure which we have discussed above.
|1.||KNA1||This table has the customer related master data|
|2.||MARA||This table has material master related information|
|3.||KNVV||Sales Area data for the customer is stored in this table.|
|4.||MVKE||Sales Area data for material master is stored in this table|
When documents are created within organizational units and pertaining the master data that we discussed above. The tables which are listed below can contain a lot of records and unlike the first two sets, their size can be huge.
|1.||VBAK||It contains all the sales document headers. Important fields are VBELN (the sales document number), VBTYP (what kind of sales document it is, for example, Quote, Order, Delivery or Invoice etc), AUART (Sales Document Type), KNUMV (link to the conditions).|
|2.||VBAP||VBAP contains the document line items. Important fields in this table are VBELN (link to the header), POSNR (Line item number), CHARG (batch number), PSTYV (Item Category)|
|3.||LIKP||This contains the header information for the delivery document. Notable fields are LFART (Delivery Type), LFDAT (Delivery date), KODAT (Picking Date), LPRIO (Delivery Priority), VSBED (Shipping Conditions)|
|4.||LIPS||This table contains the line item information on delivery. The key fields are VBELN, POSNR, PSTYV, WERKS (Plant), LGORT (Storage location), CHARG (batch number).|
|5.||VBRK||The table has header information on the billing documents. The key fields are VBELN, FKART (Billing Type like Cash Sales, Proforma, Invoice etc), FKTYP (Billing Category like Order related billing, Accrual, Delivery related billing), VBTYP (SD Document Category like Credit Memo, Invoice Cancellation, Debit Memo, Invoice etc).|
|6.||VBRP||This has billing document line item information. It has fields like VBELN, POSNR, FKIMG (Invoiced Quantity)|
Whenever you change a sales document, the information is automatically logged within SAP in standard SAP tables. The following two tables are a key if you want to report changes done by a user.
|1.||CDHDR||Change header table contains the changes done to an object. You can search changes to a document by giving OBJECTID as the document number. Please note that you would need to give complete document number. Once you give this you can get the CHANGENR.|
|2.||CDPOS||From the CHANGENR, you can derive all the changes done using this table. You can see the TABLE NAME, FIELD its previous value and changed value from this table. You can also see who changed the value and what date and time were the values changed.|
Understanding the database tables can help you quickly search and link the tables with each other and investigate support issues. At times, you may be able to find quick solutions to your functional problems if you look into the underlying tables and find out what may be causing the problem.
I sincerely hope that you found this article concise yet helpful. I would be more than willing to answer any queries that you may have. Please drop in your suggestions below and I will get back to you.