---
title: Crystal Report Generation and Overrides from Sage X3 4GL
description: The following blog will provide instructions on how to make several customizations to override the Sage X3 Crystal Report parameters with the 4GL code.
---

[RKL eSolutions | Technology Insights, Tips and Trends ](https://www.rklesolutions.com/blog)

# [Crystal Report Generation and Overrides from Sage X3 4GL](https://www.rklesolutions.com/blog/sage-x3-crystal-report-parameters)

 Written by [RKL Team](https://www.rklesolutions.com/blog/author/rkl-team) | Nov 9, 2017 9:50:26 AM

In Sage X3, Crystal Reports can be generated from code, including passing parameters as variables to the Crystal Report, and defining the output location of the report. This can be useful in generating reports with different parameters on the fly, saving them to a predetermined location, and also creating from 3rd party applications, using X3 Web Services.

The following blog will provide instructions on how to make several customizations to override the Crystal Report parameters:

- Calling Crystal Report from Sage X3 4GL Code
- Overriding/providing the parameters for the Crystal Report from 4GL Code
- Overriding the output destination of the Report to a PDF in a specific directory location
- Creating a web service to generate the Crystal Report from an external source

## Overriding Output File Name and Location

A Crystal Report is created using the Crystal Report tool, and defined in Sage X3 (Development > SCRIPT DICTIONARY > Reports). In the example below, the standard Quality record report definition (FICQUAL) was modified to include a new parameter called "filnam". This parameter is used to override the output location for the report. At execution time, the 4GL code will provide a value for "filnam". This will include the directory and file name, and as a result, the file will be created in the specified directory, with the name provided.

In order to accomplish this, "Specific script" must be provided to override the original parameters, and to populate the filnam parameter. In the screen below, you can see the specific script has a value of YFICQUAL.

## Executing Crystal Report from Code

Below is the X3 4GL code to all the Crystal Report. The subprogram receives the parameters for the report, and populates the parameter names (TBPAR) vand value (TBVAL) with the appropriate values. The FILNAM value is the full path for the report to be generated. The YPRTR refers to the print destination (Setup > DESTINATIONS > Destinations).

##############################################################################################################

# PRINTRPT - Print Crystal Report

##############################################################################################################

**Subprog** PRINTRPT(QCNUM, SITENO, FILNAM, AQTY)

**Value**  
**Char** QCNUM # QC Number

**Value**  
**Char** SITENO # Site

**Value**  
**Char** FILNAM # Output File Name

**Value**  
**Decimal** AQTY # Quantity

**Local**  
**Char**  
FONCTION

**Local**  
**Char** TBPAR(150) (150)

**Local**  
**Char** TBVAL(150) (150)

**Local**  
**Char**  
ETAT

 TBPAR(0) ="analysedeb"

 TBVAL(0) = QCNUM

 TBPAR(1) ="analysefin"

 TBVAL(1) = QCNUM

 TBPAR(2) ="stofcydeb"

 TBVAL(2) = SITENO

 TBPAR(3) ="stofcyfin"

 TBVAL(3) = SITENO

 TBPAR(4) ="infolot"

 TBVAL(4) = "1"

 TBPAR(5) ="flgrgp"

 TBVAL(5) = "2"

 TBPAR(6) ="impselections"

 TBVAL(6) = "2"

 TBPAR(7) ="filnam"

 TBVAL(7) = FILNAM

 TBPAR(8) ="aqty"

 TBVAL(8) = **num$**(AQTY)

 GSERVEUR = 1

 GSILENCE = 1

 ETAT = "YFICQUAL"

**Call** ETAT(ETAT,"YPRTR","eng",0,FONCTION,TBPAR,TBVAL) **From** AIMP3

**End**

## Print Destination

In the sample code above, the printing of the Crystal Report included a destination code. Below is the definition for the destination. Notice that the output type is "File", and the export format is "PDF". This will generate a physical file, with a type of PDF, for the Crystal Report.

## Crystal Report-Specific Code

The final part required to override the file location and name is the Specific Code YFICQUAL, as specified in the Report Dictionary definition. When the print is execution, and the FICHIER Action started, the parameter name for the file name is captured, and the parameter FICHIER (File) is overridden with this value.

$ACTION

**Case** ACTION

**When**  
"FICHIER" : **Gosub** FICHIER

**When**  
**Default**

**Endcase**

**Return**

$FICHIER

**If** GSERVEUR = 1

**If**  
**dim**(FICHIER)

**Local**  
**Integer** YTEMP

# Find the parameter named filnam, and override the report file name with this value

**For** YTEMP = 0 **To** 10

**If** [M:AIP]TBPAR(YTEMP) ="filnam"

 FICHIER = [M:AIP]TBVAL(YTEMP)

**Break**

**Endif**

**Next**

**Endif**

**Endif**

**Return**

## Publishing as a Web Service

If desired, the above functionality can be wrapped up in a subprogram, and published as a web service. This allows the Crystal report to be generated for an external programming language or application using Sage X3 web services.**  
**

### **Summary**** **

In summary, we have demonstrated several ways to generate and print Crystal Reports from within the Sage X3 4GL, including:

1. 1. Programmatically generating the Crystal Report from X3 4GL Code.
     2. Overriding the report name and directory from X3 4GL Code
     3. Creating a web service to generate the Crystal Report.

Be sure to contact us with your questions or for help with Crystal Reports in Sage X3.  
[I Need X3 Support »](https://www.rklesolutions.com/get-in-touch/)

[View full post](https://www.rklesolutions.com/blog/sage-x3-crystal-report-parameters)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "RKL Team"
  },
  "dateModified" : "2019-06-05T16:06:36.300Z",
  "datePublished" : "2017-11-09T09:50:26Z",
  "headline" : "Crystal Report Generation and Overrides from Sage X3 4GL",
  "image" : {
    "@type" : "ImageObject",
    "height" : 60,
    "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
    "width" : 60
  },
  "mainEntityOfPage" : "https://www.rklesolutions.com/blog/sage-x3-crystal-report-parameters",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60.0,
      "url" : "https://www.rklesolutions.com/hubfs/RKL%20Logos/0001-5330483477089761811-1.png",
      "width" : 236.84212
    },
    "name" : "RKL eSolutions "
  }
}
```