# Structure

There are three major parts of a report: Data structure, Data binding and Report layout.

## Data Structure

All ported reports always have two tables: InputItems and ReportVariables. All the input items from the original report are generated as fields in the *InputItems* table, while all the report variables are fields in the *ReportVariables* table.

## Data binding

At runtime, the PPJ Framework takes care of building a DataSet by generating and handling all the *SAM\_Report*\* events in the correct order. The dataset is then passed to the List & Label object to print the report.

## Report layout

List & Label reports may have a report container with an embedded table, which is the equivalent to the structure of a Report Builder report. Without the report container, List & Label is able to support other powerful features, such as label printing. Depending on the source report it might make sense to keep some items outside of the report container, such as the page header, the page footer and the report header. There are corresponding project properties in order to instruct Ice Porter with the rules to apply during conversion.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iceteagroup.com/general/ported-reports/list-and-label/structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
