As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.
Join the TIBCO Community TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.
From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
Request access to the private WebFOCUS User Group (login required) to network with fellow members.
Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.
We have a request from a customer to allow them to add pages to the end of their invoices based on a value in a field.
I put together an example using the car file that should help show what we are trying to do. In my example, I have 8 records that I am pulling from the Car File that I need to create an invoice from. If the record has the Country of 'England' or 'France', a second page needs to be added to the invoice. Currently, when you run the report, it returns 24 pages because it's adding Page 2 & 3 to every record. Ideally, we need the report to return 10 total pages. There should be 2 pages for the England record and 2 pages for the France record and then 1 page for the six other records.
Can this be accomplished using the PDF Compound report logic? If not, does anyone else have any ideas. The first page of the invoice is working great and we have it completely finished using the compound report objects and components. It's the additional pages needed on only certain records that's causing the issue.
Thanks,
Keith
DEFINE FILE CAR BATCH/A3=FPRINT(SEATS,'I3',BATCH); INVOICE/A16=CAR; REFVALUE_1/I8=SALES+LENGTH+WIDTH+HEIGHT+WEIGHT; REFVALUE/A8=FPRINT(REFVALUE_1,'I8',REFVALUE); BATCH_INVOICE_REFVALUE/A50=BATCH||'_'||INVOICE||'_'||REFVALUE ; END
TABLE FILE CAR PRINT * BATCH INVOICE REFVALUE BATCH_INVOICE_REFVALUE BY REFVALUE ON TABLE HOLD AS BJ_CAR END
COMPOUND LAYOUT PCHOLD FORMAT PDF UNITS=IN, $ SECTION=BILLABLE_INVOICE, LAYOUT=ON, MERGE=ON, $
SET COMPONENT='INVOICE_01' TABLE FILE BJ_CAR HEADING "<13>BATCH ID:"<14>INVOICE #:"<15>COUNTRY:"<16>CAR: "<17>MODEL: "<18>REF VALUE: "" "<5>BY FIELD VALUE:BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 5; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ -*type=report,line=1,justify=center,$ ENDSTYLE END
-* SET COMPONENT='INVOICE_02' TABLE FILE BJ_CAR HEADING "<17>DEALER COST:"<17>RETAIL COST:"<17>SALES:BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 5; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE END
SET COMPONENT='ENGLAND_NOTE' TABLE FILE BJ_CAR COMPUTE X/I2 = TABPAGENO; HEADING "This Page should only show up if the Country is England." BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 5; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE END
SET COMPONENT='FRANCE_NOTE' TABLE FILE BJ_CAR COMPUTE X/I2 = TABPAGENO; HEADING "This Page should only show up if the Country is France." BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 5; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE ENDThis message has been edited. Last edited by: FP Mod Chuck,
WebFOCUS 8.104 Windows, All Outputs
Posts: 28 | Location: Holland, MI USA | Registered: September 30, 2010
SET COMPONENT='ENGLAND_NOTE'
TABLE FILE BJ_CAR
COMPUTE X/I2 = TABPAGENO;
HEADING
"This Page should only show up if the Country is England."
BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE
WHERE COUNTRY EQ 'ENGLAND';
WHERE SEATS EQ 5;
ON BATCH_INVOICE_REFVALUE PAGE-BREAK
ON TABLE SET PAGE NOPAGE
ON TABLE SET STYLE *
type=report,size=7,$
ENDSTYLE
END
SET COMPONENT='FRANCE_NOTE'
TABLE FILE BJ_CAR
COMPUTE X/I2 = TABPAGENO;
HEADING
"This Page should only show up if the Country is France."
BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE
WHERE COUNTRY EQ 'FRANCE';
WHERE SEATS EQ 5;
ON BATCH_INVOICE_REFVALUE PAGE-BREAK
ON TABLE SET PAGE NOPAGE
ON TABLE SET STYLE *
type=report,size=7,$
ENDSTYLE
END
Francis
Give me code, or give me retirement. In FOCUS since 1991
Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
Thanks for your quick response! I really appreciate it! It came back with 10 pages just like I wanted!
I have another question on this report. If I change my where statement with 'Batch' which is 'Seats' in this car file example, to 4 instead of 5, it puts the 'France' page at the beginning of the report because France doesn't have any cars with 4 seats. The rest of the report behaves as expected. I returns 7 pages instead of 6.
Is there any way to resolve the last component when there is no value for it in the data?
Thanks
Keith
Revised Code:
DEFINE FILE CAR BATCH/A3=FPRINT(SEATS,'I3',BATCH); INVOICE/A16=CAR; REFVALUE_1/I8=SALES+LENGTH+WIDTH+HEIGHT+WEIGHT; REFVALUE/A8=FPRINT(REFVALUE_1,'I8',REFVALUE); BATCH_INVOICE_REFVALUE/A50=BATCH||'_'||INVOICE||'_'||REFVALUE ; -*JUMPER/I2 = IF COUNTRY EQ 'ENGLAND' THEN 2 ELSE IF COUNTRY EQ 'FRANCE' THEN 3 ELSE 1; END
TABLE FILE CAR PRINT * BATCH INVOICE REFVALUE BATCH_INVOICE_REFVALUE -*JUMPER BY REFVALUE ON TABLE HOLD AS BJ_CAR END
COMPOUND LAYOUT PCHOLD FORMAT PDF UNITS=IN, $ SECTION=BILLABLE_INVOICE, LAYOUT=ON, MERGE=ON, $
SET COMPONENT='INVOICE_01' TABLE FILE BJ_CAR HEADING "<13>BATCH ID:"<14>INVOICE #:"<15>COUNTRY:"<16>CAR: "<17>MODEL: "<18>REF VALUE: "" "<5>BY FIELD VALUE:BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 4; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ -*type=report,line=1,justify=center,$ ENDSTYLE END
-* SET COMPONENT='INVOICE_02' TABLE FILE BJ_CAR HEADING "<17>DEALER COST:"<17>RETAIL COST:"<17>SALES:BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE SEATS EQ 4; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE END
SET COMPONENT='ENGLAND_NOTE' TABLE FILE BJ_CAR COMPUTE X/I2 = TABPAGENO; HEADING "This Page should only show up if the Country is England." BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE COUNTRY EQ 'ENGLAND'; WHERE SEATS EQ 4; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE END
SET COMPONENT='FRANCE_NOTE' TABLE FILE BJ_CAR COMPUTE X/I2 = TABPAGENO; HEADING "This Page should only show up if the Country is France." BY BATCH_INVOICE_REFVALUE NOPRINT REPAGE WHERE COUNTRY EQ 'FRANCE'; WHERE SEATS EQ 4; ON BATCH_INVOICE_REFVALUE PAGE-BREAK ON TABLE SET PAGE NOPAGE ON TABLE SET STYLE * type=report,size=7,$ ENDSTYLE END
WebFOCUS 8.104 Windows, All Outputs
Posts: 28 | Location: Holland, MI USA | Registered: September 30, 2010
If a report request returns no records (for example, because no records satisfy its selection criteria, or because the data source has no records), you can choose to display or print:
An empty report, that is, the report without data but including column titles, a report heading (if one was specified in the report request), and a page heading (if one was specified). To do this, set the EMPTYREPORT parameter to ON.
A message stating that there is no report output. This is the default. You can return to the default by setting the EMPTYREPORT parameter to OFF
SET EMPTYREPORT = {ANSI|ON|OFF}
OFF is the default, but try adding ON TABLE SET EMPTYREPORT OFF in the ENGLAND_NOTE and FRANCE_NOTE components.
Though this may not work for a compound report. You may have to use Dialogue Manager code to loop through the values and bypass execution of the inappropriate compound report components, which makes it all more complicated than it needs to be.
Francis
Give me code, or give me retirement. In FOCUS since 1991
Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
That worked in the compound report example! Thanks again! You saved us on this one! We didn't anticipate this issue and our deadline is next Monday.
I have one more question based on the code that I sent you that hopefully you might have the answer to as well. Do you have any thoughts on how we could handle page numbers on each page? The customer wants 1 of 1, if it's only one invoice and 1 of 2, 2 of 2 if it's 2 pages. They need to reset based on every change in the 'BATCH_INVOICE_REFVALUE' value.
Thanks,
Keith
WebFOCUS 8.104 Windows, All Outputs
Posts: 28 | Location: Holland, MI USA | Registered: September 30, 2010