{"id":32328,"date":"2026-07-30T11:01:22","date_gmt":"2026-07-30T11:01:22","guid":{"rendered":"https:\/\/www.greytrix.com\/blogs\/sagex3\/?p=32328"},"modified":"2026-07-30T11:03:07","modified_gmt":"2026-07-30T11:03:07","slug":"crystal-reports-layout-tips-keep-object-together-suppress-blank-sub-report-explained","status":"publish","type":"post","link":"https:\/\/www.greytrix.com\/blogs\/sagex3\/2026\/07\/30\/crystal-reports-layout-tips-keep-object-together-suppress-blank-sub-report-explained\/","title":{"rendered":"Crystal Reports Layout Tips: Keep Object Together &amp; Suppress Blank Sub-report Explained"},"content":{"rendered":"\n<p>Creating a Crystal Report isn&#8217;t just about displaying the correct data\u2014it&#8217;s also about presenting that data in a clean, organized, and professional manner. A report with awkward page breaks or large blank spaces can be difficult to read, even if the data is accurate.<\/p>\n\n\n\n<p>While working with Crystal Reports, developers often face two common layout issues:<\/p>\n\n\n\n<p>\u2022 Objects such as Terms &amp; Conditions, images, or long text fields are split across pages.<br>\u2022 Sub-reports leave unnecessary blank space when they contain no data.<\/p>\n\n\n\n<p>Fortunately, Crystal Reports provides two simple yet powerful features to solve these problems:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Keep Object Together<\/li>\n\n\n\n<li>Suppress Blank Sub-report<\/li>\n<\/ol>\n\n\n\n<p>In this blog, we&#8217;ll explore both features, understand when to use them, and see real-world examples that are especially useful for <a href=\"https:\/\/www.greytrix.com\/sage-x3-erp\/development-services\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.greytrix.com\/sage-x3-erp\/development-services\/\" rel=\"noreferrer noopener\">Sage X3<\/a> report developers.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Keep Object Together<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Keep Object Together is an object-level formatting option that prevents a single object from being split across multiple pages.<\/p>\n\n\n\n<p><strong>It can be applied to:<\/strong><br>      \u2022 Text Objects<br>      \u2022 Formula Fields<br>      \u2022 Database Fields<br>      \u2022 Sub-reports<\/p>\n\n\n\n<p>If there isn&#8217;t enough space to print the entire object on the current page, Crystal Reports automatically moves the object to the next page.<\/p>\n\n\n\n<p><strong>Example: Using Keep Object Together in a Sales Invoice Report<\/strong><\/p>\n\n\n\n<p>Let&#8217;s take the example of the Terms &amp; Conditions section in a Sales Invoice report.<\/p>\n\n\n\n<p>In this scenario, the client wanted the Terms &amp; Conditions to be printed immediately after the invoice details, without leaving any unnecessary blank space. However, by default, Crystal Reports enables the Keep Object Together option for database fields and text objects.<\/p>\n\n\n\n<p>In our case, the client preferred continuous printing rather than leaving unused space at the bottom of the page. To achieve this, we disabled the Keep Object Together option. This allowed the Terms &amp; Conditions to continue from the available space on the current page and flow onto the next page if required, making better use of the page layout.<\/p>\n\n\n\n<p>This example demonstrates that the Keep Object Together option can be useful in different situations depending on the business requirement. If you want an entire object to remain on a single page, keep the option enabled. If your priority is to utilize the available page space and allow the content to continue across pages, simply disable the option. Please refer to the screenshots below for a better understanding.<\/p>\n\n\n\n<p><strong>New Stuff: <\/strong><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2026\/07\/30\/sage-x3-integrations-guide-benefits-services-third-party-integrations\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2026\/07\/30\/sage-x3-integrations-guide-benefits-services-third-party-integrations\/\" rel=\"noreferrer noopener\">Sage X3 Integrations Guide: Benefits, Services &amp; Third-Party Integrations<\/a><\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-01-Before-Disabling-the-Keep-Object-Together-Option.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-01-Before-Disabling-the-Keep-Object-Together-Option.png\" alt=\"Figure 01 - Before Disabling the Keep Object Together Option\"><\/a><\/center> \n<font size=\"2\"><center>Figure 01 &#8211; Before Disabling the Keep Object Together Option<\/center><\/font>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-02-\u2013-Format-Editor.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-02-\u2013-Format-Editor.png\" alt=\"Figure 02 \u2013 Format Editor\"><\/a><\/center> \n<font size=\"2\"><center>Figure 02 \u2013 Format Editor<\/center><\/font>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-03-After-Disabling-the-Keep-Object-Together-Option.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-03-After-Disabling-the-Keep-Object-Together-Option.png\" alt=\"Figure 03 - After Disabling the Keep Object Together Option\"><\/a><\/center> \n<font size=\"2\"><center>Figure 03 &#8211; After Disabling the Keep Object Together Option<\/center><\/font>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Suppress Blank Subreport<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Subreports are commonly used to display optional information such as:<\/p>\n\n\n\n<p>\u2022 Line Level Details<br>\u2022 Serial Numbers<br>\u2022 Tax Details<br>\u2022 Remarks<br>\u2022 Payment Information<br>\u2022 Additional Charges<\/p>\n\n\n\n<p>Sometimes, the subreport doesn&#8217;t return any records.<\/p>\n\n\n\n<p>By default, Crystal Reports still reserves space for that subreport, resulting in an unwanted blank area. The Suppress Blank Subreport option automatically hides the subreport when it contains no data.<\/p>\n\n\n\n<p><strong>Example: Using Suppress Blank Subreport in a Sales Invoice Report<\/strong><\/p>\n\n\n\n<p>Let&#8217;s take the example of a Sales Invoice report in which a subreport has been added to display Invoicing Elements.<\/p>\n\n\n\n<p>In this scenario, the Sales Invoice does not contain any Invoicing Elements. However, when the report is printed, Crystal Reports still reserves space for the subreport, resulting in an unnecessary blank area in the report. Please refer to the screenshots below for a better understanding.<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-04-\u2013-Invoicing-Element-Subreport-1024x406.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-04-\u2013-Invoicing-Element-Subreport-1024x406.png\" alt=\"Figure 04 \u2013 Invoicing Element Subreport\"><\/a><\/center> \n<font size=\"2\"><center>Figure 04 \u2013 Invoicing Element Subreport<\/center><\/font>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-05-Subreport-Blank-Space-on-Printed-Report-1024x443.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-05-Subreport-Blank-Space-on-Printed-Report-1024x443.png\" alt=\"Figure 05 - Subreport Blank Space on Printed Report\"><\/a><\/center> \n<font size=\"2\"><center>Figure 05 &#8211; Subreport Blank Space on Printed Report<\/center><\/font>\n\n\n\n<p>To eliminate this blank space, Crystal Reports provides the Suppress Blank Subreport option.<\/p>\n\n\n\n<p><strong>Follow these steps:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Right-click on the subreport.<\/li>\n\n\n\n<li>Select Format Subreport.<\/li>\n\n\n\n<li>Open the Subreport tab.<\/li>\n\n\n\n<li>Enable the Suppress Blank Subreport option.<\/li>\n\n\n\n<li>Click OK, save the report, and print it again.<\/li>\n<\/ol>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-06-\u2013-Format-Editor.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-06-\u2013-Format-Editor.png\" alt=\"igure 06 \u2013 Format Editor\"><\/a><\/center> \n<font size=\"2\"><center>Figure 06 \u2013 Format Editor<\/center><\/font>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-07-\u2013-Output-B-1024x442.png\" target=\"_blank\" rel=\"noreferrer \nnoopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2026\/07\/Figure-07-\u2013-Output-B-1024x442.png\" alt=\"Figure 07 \u2013 Output (B)\"><\/a><\/center> \n<font size=\"2\"><center>Figure 07 \u2013 Output (B)<\/center><\/font>\n\n\n\n<p>By using Keep Object Together, you can ensure that important elements such as logos, signatures, and Terms &amp; Conditions remain intact on a single page. Similarly, Suppress Blank Sub-report helps eliminate empty spaces by hiding sub-reports that contain no data. When combined with Suppress Blank Section, these features create cleaner and more polished reports.<\/p>\n\n\n\n<p>Whether you&#8217;re developing reports for Sage X3, invoices, purchase orders, quotations, or delivery notes, mastering these layout settings will help you deliver reports that not only contain accurate information but also provide a better experience for end users.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creating a Crystal Report isn&#8217;t just about displaying the correct data\u2014it&#8217;s also about presenting that data in a clean, organized, and professional manner. A report with awkward page breaks or large blank spaces can be difficult to read, even if the data is accurate. While working with Crystal Reports, developers often face two common layout\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2026\/07\/30\/crystal-reports-layout-tips-keep-object-together-suppress-blank-sub-report-explained\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,13],"tags":[461,4588,1822,4036,4589],"class_list":["post-32328","post","type-post","status-publish","format-standard","hentry","category-sage-erp-x3","category-integration","tag-crystal-report","tag-keep-object-together","tag-sage-x3","tag-sub-report-2","tag-supress-blank-sub-report"],"_links":{"self":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/32328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/comments?post=32328"}],"version-history":[{"count":12,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/32328\/revisions"}],"predecessor-version":[{"id":32340,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/32328\/revisions\/32340"}],"wp:attachment":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/media?parent=32328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/categories?post=32328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/tags?post=32328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}