ITM1 table in SAP Business One (Item Prices (per price list))
ITM1 is the SAP Business One table that stores item prices: one row per item and price list, with the price and its currency. Join it to OITM on ItemCode and to OPLN on PriceList = ListNum to get the item name and the price list name.
ITM1 key fields
| Field | What it holds |
|---|---|
ItemCode | Item. Joins to OITM.ItemCode. |
PriceList | Price list number. Joins to OPLN.ListNum. ItemCode + PriceList is the primary key. |
Price | List price of the item in this price list. |
Currency | Currency of the list price. Joins to OCRN. |
Ovrwritten | Manual price entry: Y or N. |
BasePLNum | Base price list number. Joins to OPLN.ListNum. |
Factor | Factor applied to the base price list. |
AddPrice1 / Currency1 | Additional price (1) and its currency. |
AddPrice2 / Currency2 | Additional price (2) and its currency. |
UomEntry | Unit of measure entry. Joins to OUOM. |
PriceType | I = inventory UoM price, P = pricing unit price, M = both I and P, O = other UoM price. |
How ITM1 relates to other tables
ITM1 sits between OITM (the item) and OPLN (the price list): ItemCode points to the item and PriceList to OPLN.ListNum. The price list itself (name, base list, factor, rounding) is in OPLN; the price of each item is only in ITM1. Older versions of ITM1 rows are kept in AIT1, which the SDK describes as Item - Prices - History; its key adds LogInstanc to ItemCode + PriceList.
Common joins
ITM1 T0 INNER JOIN OPLN T1 ON T0.PriceList = T1.ListNum (price list name)ITM1 T0 INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode (item master)ITM1 T0 LEFT JOIN AIT1 T3 ON T0.ItemCode = T3.ItemCode AND T0.PriceList = T3.PriceList (price history)
When you use the ITM1 table
Use ITM1 for price list exports to e-commerce or a portal, items without a price in a list, price comparisons between lists, and checks before a price update. Filter one PriceList at a time unless you really need all lists side by side.
Example query: item prices with price list name and currency
SQL Server
SELECT T2.ItemCode, T2.ItemName, T1.ListName, T0.Currency, T0.Price FROM ITM1 T0 INNER JOIN OPLN T1 ON T0.PriceList = T1.ListNum INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode WHERE T2.SellItem = 'Y' ORDER BY T2.ItemCode, T1.ListNum
SAP HANA (column names in double quotes)
SELECT T2."ItemCode", T2."ItemName", T1."ListName", T0."Currency", T0."Price" FROM ITM1 T0 INNER JOIN OPLN T1 ON T0."PriceList" = T1."ListNum" INNER JOIN OITM T2 ON T0."ItemCode" = T2."ItemCode" WHERE T2."SellItem" = 'Y' ORDER BY T2."ItemCode", T1."ListNum"
Paste either version in Tools → Queries → Query Generator. Need the other dialect for your own query? Use the SQL to HANA converter.
Common pitfall: Adding up prices in different currencies
Each ITM1 row has its own Currency, and AddPrice1 and AddPrice2 carry their own currencies too. A report that sums or averages Price across items or lists without checking Currency mixes amounts. Group or filter by Currency, and filter one PriceList when you compare items. See Items with no price in a price list.
Ready-made queries that use ITM1
- Items with no price in a price list: Sales items that have a zero price in the chosen price list.
Questions about the ITM1 table
Where are item prices stored in SAP Business One?
In ITM1, one row per item and price list (ItemCode + PriceList), with Price and Currency. OPLN only holds the price list definitions, not the item prices.
How do I join ITM1 to the price list name?
Join ITM1.PriceList to OPLN.ListNum and read OPLN.ListName.
Where is the price history of an item?
The SAP B1 SDK documents AIT1 as Item - Prices - History, with the same price columns as ITM1 and LogInstanc added to the key.
Related tables
OPLN (Price Lists) · OITM (Items (item master data)) · search all SAP Business One tables
Sources: SAP Business One documentation and SDK (DI API database tables reference), SAP Help Portal.
Ready to get started?
Tell us what you need. You get a clear technical answer, a fixed scope and a price, usually within 24 hours.
