Monday, October 3, 2011

How to investigate printing issues and work towards its resolution ?

Visit the Below Website to access unlimited exam questions for all IT vendors and Get Oracle Certifications for FREE
http://www.free-online-exams.com


Problem: How to investigate printing issues and work towards its resolution ?
< !--[if !supportLineBreakNewLine]-->
< !--[endif]-->

Symptoms:
How to investigate printing issues and work towards its resolution ?

Solution:

Basic Information on Printing
Via the Application, a user will submit a request to run a report. This is most commonly done from the Submit Request Form (shortname =FNDRSRUN).
The request is written into the concurrent queue/request table(s) (e.g.,FND_CONCURRENT_REQUESTS). The concurrent manager who eventually picks up the request will read the request and its definition from the queue. From there, the concurrent manager will kick off Oracle Reports. As Oracle Reports begins to run, it will look at a setting for how many copies you want. If copies = 0, then Oracle Reports will look at the Print Style definition for which SRW file to use. If copies > 0, then Oracle Reports will look at the Print Driver definition for which SRW file to use. In either case, Oracle Reports will look at the Print Style to determine the rows and columns that are contained in the report. The Print Style rows and columns overrides both the Print Style and Print Driver SRW files (which contain rows and columns as well). After the file has been generated using the appropriate SRW file and row/columns settings, the Concurrent Manager will pre-pend the initialization string and append the reset string to the output. As a general rule, the first component of the initialization string should be the reset string. You should not assume that the printer has been properly reset. It is the responsibility of the System Administrator to properly configure the initialization and reset strings. All of the seed data provided in Oracle Applications is for a DEC LN03 printer. This seed data is provided as example only. Chances are very good that your printers do not adhere to the DEC LN03 standards. There are numerous page description languages that are used to communicate with printers. The Big 3 are HP's PCL 5, Adobe's Postscript, and Microsoft's Windows GDI (Graphical Device Interface).
Additionally, here are some other page descriptions languages.
Kyocera PreScribe
Canon CaPSYL
Xerox XES
Xerox JDL and Metacode
Xerox Interpress
IBM 3812
IBM IPDS
DEC LN03 (DEC ANSI/Sixel)
Epson FX
Xerox Diablo 630
IBM ProPrinter
HPGL
It will be the responsibility of the System Administrator to put in any control sequences for initialization or reset that are appropriate for the printer being used. This information is obtained from the printer manaufacturer. Oracle is not responsible for this information, and does not maintain any resources for it. Once the output has had the required initialization and reset strings added to it, Oracle Reports will then look at the Print Driver to determine which output method is being used. Oracle Reports has 2 primary methods for sending output, Command, and Program. Most (95%) of all reports are output via the Command method. The command method says that Oracle Reports generates the output file. After the file is generated, Oracle Reports uses Operating System commands (e.g., lp in UNIX) to send the file to the printer. The other method is Program. In the Program method, the output from Oracle Reports is sent to a program/script that then make additional changes to the file. Once the program is done, the program is responsible for printing the report. This kind of processing is typically referred to as as "filter". PASTA , the executable FNDPSTAX present in $FND_TOP/bin is an example of one such program . The first course of action for any System Administrator trying to get printing to work is to ensure that you can print from the machine. Also, check to see that you can print from the servers. Setting up printers within Oracle Applications assumes that printing has already been setup at the Operating System level. If this hasn't been done, it will need to occur. Oracle Applications does not control printers, and will not be able to set them up.
Creating a Printer Type
    1. Logon to Applications as the System Administrator responsibility.
    2. (Navigate) Install > Printer > Types
      There are 2 fields on the top of the form. For this step, we will only use those fields.
    3. In the "Type" field, put the type of the printer. We recommend that you put types in as Manufacturer + Model (e.g., HP Laserjet 5SI).
    4. In the "Description" field, put any distinguishing information that you might want to put about this type of printer.
    5. Commit the record.
Registering a Printer
    1. Logon to Applications as the System Administrator responsibility.
    2. (Navigate) Install > Printer > Register
    3. In the "Printer" field, put the Operating System name of the printer. NOTE: You must have already defined the printer to the Operating System. However, Applications has no ability to validate the information you put in this field.
    4. In the "Type" field, choose the Printer Type from the available LOV.
    5. In the "Description" field, put any distinguishing information about this specific printer.
    6. Commit the record.
Creating a Print Style
NOTE: A Print Style is used to define the rows, columns, and orientation of the report. It is
also used to define which SRW file is used when the number of copies = 0.
    1. Logon to Applications as the System Administrator responsibility.
    2. (Navigate) Install > Printer > Style
    3. In the "Style Name" field, type a unique name. NOTE: Once you have created a style, it can not be deleted.
    4. In the "Seq" field, type a unique number. This sequence number is only used for display sequence when you query Print Styles from this form.
    5. In the "User Style" field, put the same value as the "Style Name" field. This field is not used anywhere else but this form.
    6. In the "SRW Driver" field, put the name of the SRW file that you expect Oracle Reports to use when the number of copies = 0. NOTE: For information on what SRW file are and how to create them, see the section below.
      NOTE: At this point of creating the style, Applications will not validate that the SRW file actually exists.
    7. In the "Description" field, put any distinguishing information about the style.
    8. In the "Columns" field, put the number of character wide for your style.
    9. In the "Rows" field, put the number of lines long for your style.
    10. In the "Suppress Header" checkbox, select the checkbox when you do not want Oracle Reports to print an identifier header page prior to printing the report. This checkbox would commonly be used when printing to pre-printed forms and checks, as an example.
    11. In the "Orientation" field, put either "Portrait" or "Landscape" as appropriate for your style. NOTE: The "Orientation" field will be used by bit-mapped reports (see section below on bit-mapped reports).
    12. Commit the record.
Creating a Print Driver
NOTE: A Print Driver is used to define the initialization and reset strings added to the output, and the method for sending that output to the printer. It is also used to define which SRW file is used when the number of copies > 0.
NOTE: The name, Print Driver, is easily misunderstood from other applications. Oracle Applications assumes that your printer already is installed and properly functioning at the Operating System level. Typically, the program that allows the printer to communicate with the Operating System is called a Print Driver. The Print Driver that you define in Oracle Applications is not that kind of program. It simply allows you to define characteristics of a printer that are important to Oracle Applications.
    1. Logon to Applications as the System Administrator responsibility.
    2. (Navigate) Install > Printer > Driver
    3. In the "Driver Name" field, put a name for your Print Driver. The name of your Print Driver must be unique for a given "Platform" (see "Platform" field below).
    4. In the "User Driver" field, put the same name as your "Driver Name". The field must be unique for a given "Platform".
    5. In the "Description" field, put any additional information specific to this Print Driver.
    6. In the "SRW Driver" field, put the name of the SRW file that you expect Oracle Reports to use when the number of copies > 0. NOTE: For information on what SRW file are and how to create them, see the section below.
      NOTE: At this point of creating the Driver, Applications will not validate that the SRW file actually exists.
    7. In the "Platform" field, put the name of the platform being used IF you have multiple drivers of the same name on differing platforms. Otherwise, leave the field null. You should also leave this null for Windows NT.
    8. In the "Driver Method" option group, you can choose Command, Program or Subroutine. Most of your reports will use the Command method. The Command method uses the Operating System command, described in the field "Arguments", to output the file. The Program method
      uses the program, described in the "Program Name" field, to output the file. The Subroutine method is essentially identical to the Command method in that it uses an Operating System command to output the file. The difference with the Command method is that it does not spawn an Operating System shell to execute printing. An example of this is using SYS$PRINT on a VMS platform. This method is Operating System specific, and may not be supported for your Operating System.
    9. The "Spool File" checkbox is used when the Driver Method is set to Program. When Method is Program and this is checked, the program will create its own spool file.
    10. The "Standard Input" checkbox should be unchecked when the Driver Method is Program, unless the program accepts Standard Input.
    11. In the "Program Name" field, put the name of the program if the Driver Method is Program, and the name of the subroutine if the Driver Method is Subroutine.
    12. In the "Arguments" field, put the full Operating System print command and its arguments
      when Driver Method = Command. (see Command Method Argument Parameters below).
      When the Driver Method = Program, enter an arguments that you would like to pass to the
      program.
    13. In the "Initialization" field, put the initialization string that you want pre-pended to the output.
      For more information, see Initialization and Reset Strings in Print Driver below.
    14. In the "Reset" field, put the reset string that you want appended to the output. For more information, see Initialization and Reset Strings in Print Driver below.
    15. Commit the changes.
Assigning a Print Driver
NOTE: You must have a registered printer, a style, and a driver to complete this step.
    1. Logon to Applications as the System Administrator responsibility.
    2. (Navigate) Install > Printer > Types
    3. Query up your Printer Type.
    4. Move to the Printer Drivers region, to the row-oriented fields labeled "Style" and "Driver Name".
    5. Insert a new row.
    6. In the "Style" field, type or select (via the LOV) your style that you want assigned to this printer.
    7. In the "Driver Name" field, type or select (via the LOV) your print driver that you want assigned to this printer.
    8. Commit the changes.
Command Method Argument Parameters
There are 4 different parameters you can pass in addition to the Operating System command for printing. These parameters would be listed in the "Arguments" field after the O/S command.

1. -d$PROFILES$.PRINTER
-d calls out the destination printer.
$PROFILES$.PRINTER retrieves the operating system name of the printer associated with the request.
2. -n$PROFILES$.CONC_COPIES
-n calls out the number of copies to print.
$PROFILES$.CONC_COPIES retrieves the value of the profile option Concurrent:Report Copies, unless this value is updated at runtime.
3. -t"$PROFILES$.TITLE"
-t calls out the report title to print on a banner or header page.
”$PROFILES$.TITLE” retrieves the title of the output file, typically titled as Application user-name. Request ID. For example, if user John Smith ran a report whose concurrent request ID was 64225,
the title would be JSMITH.64225. This is operating system dependent.
4. $PROFILES$.FILENAME
$PROFILES$.FILENAME calls out the filename of the report to be printed. The value retrieved is
the output file name, including the path to the file.
NOTE: Here are the corresponding arguments for UNId Windows:
UNIX: lp -c -d$PROFILES$.PRINTER -n$PROFILES$.CONC_COPIES-t"$PROFILES$.TITLE"
$PROFILES$.FILENAME
Windows: PRINT /D:$PROFILES$.PRINTER $PROFILES$.FILENAME
Character-mode vs. Bit-mapped Reports
Every report is defined to Oracle Applications as a Concurrent Program. In that definition of the report, it is possible for the System Administrator to decide on the output format of the report.
The choices are as follows:
1. Text
2. Postscript
3. HTML
4. PDF
5. Binary
NOTE: To view a concurrent program definition, from the System Administrator responsibility, do (Navigate) Concurrent > Program > Define.
If you run a report with the Output Format set to "Text", Oracle Applications will run a program called, ar60run. If you choose any of the other formats, Oracle Applications will run a program called, ar60runb. The difference in the 2 programs is one handles character-mode reports (ar60run) and the other handles bit-mapped reports (ar60runb). In addition to an obvious different format, bit-mappedreports also differ in significant ways from character-mode reports. Character-mode reports take their dimensions (rows and columns) and orientation from the Print Style. Bit-mapped reports take their dimensions and orientation from the report definition, and can be overridden by the "Execution Options" field. To override dimensions, put a value into the
"Execution Options" field as follows:
PAGESIZE= <width>x<height>
If the dimensions specified with the PAGESIZE parameter are smaller than what the report was designed for, you will generate a "REP-1212" error.
NOTE: In Oracle Reports, when defining a report, the units and size of the report are specified in the menu under Report->Global Properties->Unit of Measurement. For bitmapped reports,< width>x<height> for PAGESIZE is usually in inches; however, this depends on the particular report definition. To override orientation, put a value into the "Execution Options"blockquote>ORIENTATION=LANDSCAPE
ORIENTATION=PORTRAIT
When entering more than one execution option, each option should be separated by a single space. There should be no spaces before or after the options. For example:
ORIENTATION=LANDSCAPE PAGESIZE=7.5x9
Understanding and Modifying SRW Files
SRW file are kept in $FND_TOP/$APPLREP. They end in .prt. There are several predefined SRW files. Do not rely on any of these existing SRW file meeting your needs. They should more properly be considered as templates for creating your own SRW files.
To create a custom SRW file, do the following:
1. Copy an existing SRW file, and rename the copy to the name you wish to use.
2. Edit the newly created copy in the text editor of your choice.
3. The SRW file is organized as follows:
01 printer "dec LN03 Portrait"
02
03 height 66
04 width 80
05
06 between pages control(L)
07
08 return ""
09 linefeed control(J)
10
11 code "bold on" esc "[1m"
12 code "bold off" esc "[0m"
13 code "underline on" esc "[4m"
14 code "underline off" esc "[0m"
NOTE: The line numbers are provided for reference only. There are NO line numbers in actual SRW files.
4. Line 01 is the printer name. This is used for identification purposes only. We recommend that
it include the Manufacturer + Model + Orientation (e.g. HP Laserjet 5SI Portrait)
5. Line 02 is blank for cosmetic reasons only.
6. Line 03 sets the number of rows in the report. But, this value is overridden by the ROWS value specified in the Print Style.
7. Line 04 sets the number of columns in the report. But, this value is overridden by the COLUMNS value specified in the Print Style.
8. Line 05 is blank for cosmetic reasons only.
9. Line 06 designates the Form Feed character. This is typically Control(L) on most printers.
10. Line 07 is blank for cosmetic reasons only.
11. Line 08 designates the Return character. On most printer, Return and Line Feed are equivalent. You should only pick one. By default (for these cases), we leave Return set to null ("").
12. Line 09 designates the Line Feed character. This is typically Control(J) on most printers. Also, see #11 above for additional information.
13. Line 10 is blank for cosmetic reasons only.
14. Lines 11 and 12 designate the characters for turning the BOLD characteristic on and off.
NOTE: The escape character is represented by esc.
15. Lines 13 and 14 designate the characters for turning the UNDERLINE characteristic on and off.
NOTE: The escape character is represented by esc.
16. To determine the proper value for Between Pages, Return, Linefeed, Bold On, Bold Off, Underline On, and Underline Off, you will have to reference information provided to you by your printer manufacturer.
17. Save the SRW file.
18. Within Applications, change the Print Style, the Print Driver, or both to begin utilizing your new SRW file.
Initialization and Reset Strings in Print Driver
The Initialization String is pre-pended to the output file generated by Oracle Reports. The Reset String is appended to that same output file. The proper Initialization and Reset strings can only be determined by referencing printer documentation provided by the Printer Manufacturer. To enter an Initialization or Reset string, here are some rules.
1. The first piece of your Initialization string should be your Reset string.
2. Use the Initialization and Reset strings to set and reset the orientation, character set and line density for your printer.
3. A control character can be represented by “ ^ ” followed by another character (e.g., ^L is Control+L).
4. An escape sequence can be identified by either " / " or " \ ".
5. For non-printable characters, you may represent their value in octal mode. For example, 0x26 is represented as /046. What happens if you can’t seem to get the printing correct?
One possible solution is to do the following:
NOTE: The printing attempts must take place from the Server where you are having the problems.
If not, you would simply be testing that your client machine can print. This is typically not a problem.
1. Take a known text file and print it. Did it work? If not, then you have a set-up issue with your printer to your Operating System.
2. Generate a file containing your initialization and reset strings.Applications has provided a utility, FNDPRESC, that will take your strings, and generate a file with them This is important because escape sequences are only represented as /e. When we actually send these to a printer, we must have "escape" as the code. FNDPRESC works as follows:
$FND_TOP/bin/FNDPRESC "code string" > "output file"
There should be two (2) separate files. One holding each of the strings.
3. Take your original known good text file, and pre-pend the initialization string and append the reset string.
On Unix: cat <text file> >> <init file>
cat <reset file> >> <init file>
On Windows:copy <init file> + <text file> <init file>
copy <init file> + <reset file> <init file>
4. Print this new file. Did it work? If not, your initialization string is wrong.
5. Regenerate your Applications output file without initialization or reset strings.
6. Repeat Step 3 using your new output file in place of the text file.
7. Print this? Did it work? If not, something is wrong with your output. Could be a bug. One last check , can you print this file from the command line. If Yes, you probably have a bug. If No, you still have a problem setting-up your printer to the O/S.
Font Aliasing , Embedding and Sub setting Concepts
Font Aliasing
Font Aliasing enables you to substitute one font for another ,i.e, font-to-font substitution . This font-to-font substitution is used when porting applications across platforms Fonts Aliasing requires the fonts to be installed on the printer The following steps describe how Oracle Reports generates
a list of the available fonts for generating output (e.g., for the screen, printer, or file):
    1. Oracle Reports looks in the printer configuration file uiprint.txt for all the printers that are listed for the application.
    2. Get their type, version and printer definition file.
    3. Check for the existence of these printers in the system.
    4. If the printers are present, the printer definition files are loaded and the information in these files is read along with the information related to the fonts available for the printer. If these printers are not found, then Oracle Reports uses ScreenPrinter.
    5. The AFM files, which are named the same as the font names given in the PPD files, are searched.
    6. If found, Oracle Reports then reads this AFM file for all the valid keywords, checks for their correctness and, in case of any discrepancy, default values are used for those keywords.
    7. If the AFM file is not found, Oracle Reports marks the font as unusable.
      Note: Similarly for PCL printers, the HP printer definition file (glue file) is loaded and all the fonts defined in the file are also loaded. While looking for a font, Oracle Reports searches for an entry in the HPD file with the font name and accordingly takes the font if the TFM file for this font is also found. Otherwise, Oracle Reports matches this font to the closest available one. Once the list of available fonts is generated, the mapped font is searched for in this list of fonts and, again, the AFM files are read for the purpose of calculating the text size and weight.
Substituting fonts

If a particular font is needed but not found in the PPD file or if an AFM file is not found, Oracle Reports will look for the nearest matching font according to its matching rules. For example, suppose a report is originally designed with a Korean font SimSun and in the uifont.ali file no mapping for this font is found. Oracle Reports will look for the font SimSun in the list of available fonts generated by the Font lookup algorithm. If this font name is not in that list, Oracle Reports tries to look for the closest matching font from the list of fonts given in the printer definition file. For the SimSun font, the character set is 850. If it cannot find any matching font for this character set, Oracle Reports searches for a font that has a character set for the environment in which the application is running. After a set of fonts with a similar character set is found, Oracle Reports picks the closest match to the requested font based on the font weight, style, etc. If more than one font has the same parameters, Oracle Reports picks the first one and uses it instead of the original font.
Font matching rules

When attempting to match a font, Oracle Reports will try to find the closest match according to the following criteria for fonts with the same character set:
fontface > fontsize > fontstyle > fontweight > fontwidth
If Oracle Reports can't match the font face, it will try to match the font size; if it can't match the size, it will try to match the font style; and so on. If a font matches the font size but nothing else and another font matches the style, weight, and width but not the font size, then Oracle Reports will pick the font with the same font size. It should be noted that irrespective of any font in the output file, the final printed output will depend solely on the fonts installed in the printer. Example: Suppose that a report has layout objects associated with one of two fonts, Helvetica font of size 8, style Plain, and weight Medium, and Courier font. If the user is running this report on a PostScript-1 printer and generating HTML output, the fonts are chosen as follows:
1. While formatting, Oracle Reports checks uifont.ali for any mappings of either specified font. Suppose that uifont.ali contains this entry in the [Printer:PostScript1] section:
Helvetica.8.Plain.Medium.. = "Mkai-Medium"..
Oracle Reports will now search for the Mkai-Medium font instead of the Helvetica font.
2. Oracle Reports looks for the mapped font in the printer definition (PPD) file. Suppose that the PPD file contains the following entry in the *Font Information section:
"*Font Mkai-Medium: Standard "(001.004)" Standard ROM"
3. Oracle Reports now checks for the associated AFM file (named Mkai-Medium) in the AFM directory. If an AFM file with this name is not found, it will look for another font that has size 8, style Plain, and weight Medium under the same character set as the original font. Because a report may have to run in many different environments, Oracle Reports always tries to approximate a font for the original font when the original is unavailable. This algorithm is not entirely foolproof. When you create a report, you must be aware of the fonts defined and you should always consider whether those same fonts will be available on the platform where users will run the report. If the font that you have defined is not available in the runtime environment, Oracle Reports substitutes another font that is available on the machine. This process can lead to unexpected and undesirable results, such as strange characters in the report output (e.g., Wingding characters) and incorrect formatting of objects. If you are encountering these kinds of problems, you should use font aliasing to control the font substitutions made by Oracle Reports. Refer to Font Aliasing. Oracle Reports follows the above described mechanisms for all output file generation except PDF, which has the
PDF font sub setting/embedding capabilities.
Font Sub setting
It is the process of including only the glyphs and character information that is actually used in the document
With font sub setting , there is no dependency on the printer having the fonts installed.
Font Embedding
It is the process of including the entire font set along with the data in the output file so it is not required the fonts to be installed on the printer.
The precedence order for the same font in multiple places within the file uifont.ali is as follows :
1.Font aliasing takes precedence over font embedding (highest)
2.Font embedding takes precedence over font sub setting (intermediate)
3.Font sub setting takes no precedence (lowest)

The file uifont.ali as mentioned earlier is the one which has the information on Font Aliasing , Font Sub setting or Font Embedding.
Configuration Files and Tables
Main Configuration files relevant to printing:
(i) <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/uiprint.txt
(ii) PPD Files Example <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/PPD/default.ppd
(iii) AFM Files (Adode Font Metrics) Example
<8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/AFM/Times-Bold
(iv) <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/uifont.ali
(v) <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/Tk2Motif.rgb
(vi) HPD Files Example <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/HPD/ui3.hpd
(vii) TFM Files Example <8.0.6 ORACLE_HOME>/guicommon6/tk60/admin/TFM/cri14pda.tfm
(viii .prt Files $FND_TOP/reports/L.prt
To know how the above files are used in generating or printing reports refer Note # 16888.1 and 8422.1
Tables related to printing present in APPLSYS schema
(i)
FND_PRINTER
(ii)
FND_PRINTER_INFORMATION
(iii)
FND_PRINTER_STYLES
(iv)
FND_PRINTER_DRIVERS
PASTA and IX_LIBRARY
Any UTF8 customer who possibly has non-English data in the database must use PASTA English-only customer or a customer who is using other character set than UTF8 can also obtain the benefit from Pasta , though it is not mandatory to use PASTA in this situation. Pasta technology provides strength in multilingual support in Oracle E-business Suite in particular areas that include printing (PASTA ) , viewing a report on-line (V pasta) and generate bta products make a significant contribution to UTF8 support but it also works for any other character set that Oracle supports. From Pasta 3.0 it supports 3 output formats Text, Postscript and PDF If the input is a text file, Pasta will convert it to a Postscript file. If the input is already a Postscript file, Pasta will send it to a printer as is. Whether a file is Text or PS is automatically sensed on input. If you don't have a Postscript printer and want to send a text file to your printer, you need to make suitable change in the Pasta Configuration file as suggested in the configuration file itself
For setting up PASTA use Pasta User's Guide Link in Note 239196.1.
When using the Pasta utility from the command line, you can use the options below.
FNDPSTAX [options]
-c<number> <number> specifies the number of copies to print.
-el<logfile> Specifies the error log file’s path and name. The path is
the absolute path to the error log file.
-f<filename>< filename> specifies the input file name. Example: -
fmyfile.txt
-F<cfgfile> Specifies the configuration file’s path and name.
-h<rate> Adjusts the space between lines. The default value is 1.0. If
< rate> is larger than 1, the space between lines will be larger.
-w<rate> Adjusts the space between characters. The default value
is 1.0. If <rate> is larger than 1.0, the space between
characters will be larger.
-l Print in landscape mode. (The default is portrait).
-o<filename>< filename> specifies the output file name.
-s<size> Overrides the font size option in pasta.cfg.
-bs<size> Overrides the font size in -s and fontsize for bold font.
-np No print option.
-ph<height>< height> specifies the paper height in inches.
-pw<<specpape iape nt>< <="" span="">
< pf file>.
-pf<pf file> <pf file> specifies a PrintForm file to be merged in a Pasta
output at runtime.
-pn<printername>< printername> specifies the printer name.
-t<banner title> Banner option for use with the Unix lp command.
-v Displays the version number.
-x<ps|text.[charset|auto]>
Specifies the output format. Two output formats are
supported: PostScript ("ps") and text ("text").
PASTA takes tagged character mode output (generated via an appropriate prt file ) and
generates a PostScript rendition of it To know more about what Pasta takes as input ,
the output file as sent by Pasta to printer and the log file generated in the process ,
follow the steps as given below :-
Set PASTA_DEBUG_LEVEL in the appropriate environment file as pointed to by
$APPLFENV , for example $APPLFENV is visus63_otdasol2.env
PASTA_DEBUG_LEVEL=1
export PASTA_DEBUG_LEVEL
Bounce the concurrent manager and submit a concurrent request with print copies >= 1.
Look for $APPLTMP/pasta.in, pasta.out and pasta.log
For example $APPLTMP value is /amer/oracle/visus63/visus63comn/temp
* The file pasta.in contains the output file from the concurrent manager going into the PASTA
utility for post-processing.
* The file pasta.out contains the output file from the PASTA utility going to the printer via the
OS print command for final printing.
* The pasta.log file contains the default pasta configuration options used to process the PASTA request and any error encountered while producing the PASTA out file.
Note: These files are temporary files and they will be overwritten by the next concurrent request.
Pasta executable chooses the default configuration file using the following rules
(in the following order )
1.Configuration file which location is set in PASTA variable
2. Configuration file associated to the specific printer
3. Configuration file for all the printers
Suppose the APPL_TOP character set is UTF8 with multiple languages installed , then in this
case if a report is generated in Text Format ,PASTA will be invariably used to print on a
PostScript printer with PASTA doing the conversion from Text format to Postscript using
the technique of Font Sub setting and Font Embedding as per the font related entries involving
True Type Font Files ( .ttf extension ) in its configuration file( pasta.cfg) and then sending the Postscript output generated by itself to the printer using lp command
Whenever there is a problem Pasta not generating the proper Postscript file , the following
steps can be performed to diagnose the issue :-
(i)
Submit a Concurrent request with Number of Copies=0 that results in the output file
say <Conc_output_file> getting generated
(ii)
Logon on as applmgr Operating system User on the machine which hosts the

Concurrent Processing Server
Then set up the environment by running APPSORA.env as :-
cd $APPL_TOP
. APPSORA.env
Then set the environment parameter PASTA_DEBUG_LEVEL
PASTA_DEBUG_LEVEL=1
export PASTA_DEBUG_LEVEL
(iii)
Then run the command
$FND_TOP/bin/FNDPSTAX -P -c1 -f<Conc_output_file> -o<Pasta_output_file>
-F<cfgfile>
< cfgfile> is the Pasta configuration file that you want to use
Try to print <Pasta_output_file> from the command line
This along with the debug file will help in verifying the parameters used by pasta in converting
the output file to Postscript
When installed and used with Oracle Applications , Oracle Reports has an additional utility for
font embedding in PostScript output , a new component called IX is shipped with Oracle Reports .
IX allows you to embed the fonts in the PostScript output thereby allowing you to print even if the font is not installed on the printer .
In the case (when APPL_TOP character set is UTF8 and MLS installation) if a report is generated
in PostScript format ,IX_Library is used to generate Postscript output using the technique of Font Sub setting and Font Embedding as per the font related entries involving True Type Font files (.ttf extension) in its configuration file (ixlib.cfg) and then Pasta may or may not be be used to send the Postscript output to the printer depending on its Printer Type as defined within Oracle Applications.
When PASTA is used to print , it just sends the Postscript output to the printer and does nothing else
APPL_TOP character set is UTF8 and MLS Installation
Input to Pasta Processing Output
-------------------- -------------------------- -------------------------------------
Text in UTF8 PASTA uses pasta.cfg Postscript on the printer
to generate Postscript
if Output format=ps
in pasta.cfg ,then
sends that to printer
Text in UTF8 Pasta may change only Text on the printer
encoding depending on
< charset|auto>
if Output Format=text.
< charset|auto> in
pasta.cfg ,No
Postscript generation
Postscript generated Pasta may or may not be Postscript on the printer
by IX_LIBRARY used .When Pasta is used
using ixlib.cfg ,it just sends Postscript
to printer without any
processing, font related
entries in pasta.cfg not
used at all

<span&gbug 2689542="" has="" good="" discussion="" on="" font="" related="" issues="" in="" printing="" multiple="" language="" characters<="" span=""></span&gbug>
IX enables Oracle Reports to print PostScript bit-mapped reports for all character sets including UTF8 , on a PostScript printer
The IX Library provides PostScript generation in any character set, including Unicode (UTF8), by embedding a TrueType (ttf) font in the PostScript output. To enable the IX Library, prepare an IX Library configuration file (ixlib.cfg) and set the IX_PRINTING environment variable as follows:
Please apply a patch for Bug 2671556 to obtain ixlib.cfg and set
$ IX_PRINTING=<the full path to ixlib.cfg>
$ export IX_PRINTING
in the environment file as pointed to by the environment parameter APPLFENV (example visus63_otdasol2.env )
Note 240864.1
to be used for complete information on Activating and Configuring IX Library.
For Forms patchset 10 or earlier, the PASTA environment variable must be used instead of IX_PRINTING. The PASTA environment variable can still be used alternatively for patchset 11 or later, as an alternative to IX_PRINTING. Oracle provides a set of ttf fonts named Andale Duospace WT in
Oracle Applications; however, IX Library can use any Unicode-encoded TrueType font.
Limitation:
The IX Library currently supports only one font per Report in Oracle Developer patchset 10 or prior. Fonts specified in the Report Definition File (RDF) will be overwritten at generation time by the font specified in ixlib.cfg.
This functionality is supported for Oracle Applications only. It is strongly recommended that you take advantage of the IX Library functionality for non-English users who need PostScript output. All the components of the solution are provided by Oracle and packaged in Oracle Reports.
If there is any issue in the use of IX to generate Postscript output in UTF8 character set , you can Use the following method to gather more information to proceed further on the issue :
1. Shutdown concurrent managers
2. Set the following env variables in the environment file as pointed to by the environment parameter APPLFENV
IX_DEBUG_LOGFILE=stderr
IX_DEBUG_LEVEL=15
IX_DUMP_MAPPING=/tmp/ixdump.log
export IX_DEBUG_LOGFILE IX_DEBUG_LEVEL IX_DUMP_MAPPING
3. Restart concurrent manager
4. Run the report
5. Make sure the problem is reproduced.
6. Then check the following files :-
- Output of the request
- Log file of the request
- $ORACLE_HOME/guicommon6/tk60/admin/uifont.ali
- /tmp/ixdump.log
- Config file that is set to the environment parameter IX_PRINTING
Investigating printing issues
The following instruction is common whenever it is required to run sqlplus,ar60run,ar60runb,
f60gen or truss from the operating system command line
---------------------------------Instruction ------------------------------------------------------------
Logon on as applmgr Operating system User on the machine which hosts the
Concurrent Processing Server
Then set up the environment by running APPSORA.env as :-
cd $APPL_TOP
. APPSORA.env
----------------------------------------------------------------------------------------------------------
For steps (a) to (d)
sqlplus apps/apps
Then run the following sql statements and note down all the details corresponding to the Concurrent Request in question.
(a)
Substitute <REQUEST_ID> of the Concurrent Request that did not provide the desired
results :-
SELECT
NUMBER_OF_COPIES ,
NLS_LANGUAGE ,
NLS_TERRITORY ,
PRINTER ,
PRINT_STYLE ,
COMPLETION_TEXT ,
OUTPUT_FILE_TYPE ,
NLS_CODESET ,OUTFILE_NODE_NAME,OUTFILE_NAME
FROM
FND_CONCURRENT_REQUESTS WHERE REQUEST_ID= <REQUEST_ID> ;
Ask customer to upload the output file as specified by OUTFILE_NAME from the Node as
indicated by OUTFILE_NODE
Check the output file to see if there are any issues with regard to Formatting and Fonts.
If there are no issues with atting and Fonts , then the problem lies in the printing of the
output file
(b)
SELECT PRINTER_STYLE_NAME ,SRW_DRIVER ,WIDTH , LENGTH , ORIENTATION FROM FND_PRINTER_STYLES WHERE PRINTER_STYLE_NAME= ( SELECT PRINT_STYLE FROM FND_CONCURRENT_REQUESTS where request_id=<REQUEST_ID> ) ;
(c)
SELECT PRINTER_DRIVER_NAME,
USER_PRINTER_DRIVER_NAME ,
PRINTER_DRIVER_METHOD_CODE ,
SPOOL_FLAG ,
SRW_DR ,
COMMAND_NAME , ARGUMENTS ,
INITIALIZATION , RESET
FROM FND_PRINTER_DRIVERS WHERE PRINTER_DRIVER_NAME =( SELECT PRINTER_DRIVER FROM FND_PRINTER_INFORMATION WHERE
PRINTER_STYLE=( SELECT PRINT_STYLE FROM FND_CONCURRENT_REQUESTS where request_id=<REQUEST_ID> ) AND
PRINTER_TYPE=( SELECT PRINTER_TYPE FROM FND_PRINTER WHERE
PRINTER_NAME=( SELECT PRINTER FROM FND_CONCURRENT_REQUESTS where request_id=<REQUEST_ID> )))
(d)
SELECT * FROM FND_ENV_CONTEXT WHERE CONCURRENT_PROCESS_ID =(
SELECT CONCURRENT_PROCESS_ID FROM FND_CONCURRENT_PROCESSES A ,
FND_CONCURRENT_REQUESTS B WHERE
B.CONTROLLING_MANAGER=A.CONCURRENT_PROCESS_ID AND B.REQUEST_ID=<REQUEST_ID> )
AND ( VARIABLE_NAME IN ('XENVIRONMENT','IX_PRINTING','ORACLE_HOME',
'LD_LIBRARY_PATH',
'NLS_LANG','REPORTS60_NO_DUMMY_PRINTER',
'TK6_PRINT_STATUS','TK6_PRINTER', 'TK_PRINTER','PRINTER','DISPLAY','TK_LOCALE',
'PASTA','APPLLCSP',
'ORACLE_PRINTER','TK_PRINT_STATUS') OR VARIABLE_NAME LIKE '%REPORT%' OR
VARIABLE_NAME LIKE 'IX_%' )
(e)
To find out the Forms patchset being used run the command
$ORACLE_HOME/bin/f60gen
After gathering the above information you can refer Note 189708.1 Oracle Reports 6i Setup
Guide for Oracle Applications 11i ,and ensure that the setup is as per what is required to generate
and print reports taking into consideration the parameters NLS_CODESET (UTF8 or non-UTF8) , NLS_LANGUAGE( whether Language is BiDI or Non-BiDi) , OUTPUT_FILE_TYPE (Text , PostScript ,PCL ,HTML,PDF )
(f)
To get the command and environment variables settings being used to process a Concurrent Request by a Concurrent Manager , follow the steps as given below :-
cd $FND_TOP/bin
sh adrelink.sh force=y “fnd ar60rund”
mv ar60run ar60run.bak
mv ar60runb ar60runb.bak
Then if you are generating Text report
cp ar60rund ar60run
Then submit the Concurrent Program as a Concurrent Request and check the log file
produced by the Concurrent Request
The log file shows all the details
However if you are generating report in any Format like Postscript , PCL , XML , HTML ,
not Text , then
cp ar60rund ar60runb
Then submit the Concurrent Program as a Concurrent Request and check the log file
produced by the Concurrent Request
The log file shows all the details
After doing all this , follow the steps as given below to restore the orginal ar60run and ar60runb
rm ar60run
rm ar60runb
mv ar60run.bak &nbsbsp; &n ar60runan>
< spannbsp;&n &nbar60rbak &nbspsp; &nbsp60runb< span=""><="" font=""></spannbsp;&n &nbar60rbak &nbspsp; &nbsp60runb<>
(g)
The following steps instruct how to run a report from the Operating System Command Line
Set up all the additional environment variables as found in OAD_TOP/admin/scripts/<SID_HOST>/adcmctl.sh
apart from whatever there in APPSORA.env
If bitmap report is required to be generated using ar60runb special care must be taken to ensure
that DISPLAY is set properly as per Note 200474.1
For Text Reports
ar60run USERID=apps/apps BATCH=YES REPORT=<rdffile> DESTYPE=FILE
MODE=CHARACTER
DESNAME=<output file>
DESFORMAT=<some .prt File >
[your application options]
For Bitmap Reports
ar60runb USERID=apps/apps BATCH=YES REPORT=<rdffile> DESTYPE=FILE
MODE=BITMAP DESNAME=<output file>
DESFORMAT=<PDF or POSTSCRIPT or HTML >
[your application options]
Some examples
ar60runb report=/apps/oracle/visappl/fnd/11.5.0/reports/US/FNDSCURS.rdf
batch=yes destype=file desname=/apps/oracle/viscomn/admin/out/VIS_incq093r/o2712660.out desformat=noprint
ar60runb report=/apps/oracle/visappl/fnd/11.5.0/reports/US/FNDSCURS.rdf batch=yes
destype=file desname=/apps/oracle/viscomn/admin/out/VIS_incq093r/o2712827.out desformat=Test_Printer
ar60run report=/apps/oracle/visappl/fnd/11.5.0/reports/US/FNDSCURS.rdf batch=yes destype=file desname=/apps/oracle/viscomn/admin/out/VIS_incq093r/o2712655.out desformat=/apps/oracle/visappl/fnd/11.5.0/reports/HPL
pagesize=132x66
ar60runb report=/apps/oracle/visappl/fnd/11.5.0/reports/US/FNDSCURS.rdf batch=yes destype=file desname=/apps/oracle/viscomn/admin/out/VIS_incq093r/o2712723.out
desformat=XML
ar60runb report=/apps/oracle/visappl/fnd/11.5.0/reports/US/FNDSCURS.rdf batch=yes destype=file desname=/apps/oracle/viscomn/admin/out/VIS_incq093r/o2712713.out desformat=PDF
(h)
To obtain Unix System calls trace of ar60run /ar60runb
refer Note # 110888.1 How to Trace Unix System Calls
For example ,
truss -aefo /tmp/trace.out <executable>
< executable> can be replaced with
ar60runb USERID=apps/apps BATCH=YES
REPORT=
/ora7/oracle/prod11appl/sni/reports/US/CRTRANSPORT.rdf
DESTYPE=FILE
MODE=BITMAP
DESNAME=/ora4/oracle/prod11comn/admin/out/o1475244.out
DESFORMAT=PDF
P_CONC_REQUEST_ID=1475244
p_work_area_id='294'
p_route_num='1'
p_route_num_to='12'
p_source_farm_detail='Y'
p_delivery_detail='Y'
(i)
Note 139957.1
can be used to troubleshoot issues relating to Columns or Rows not fitting on printed report page.
XML Publisher

This latest java based product short name XDO , it is default with 11.5.10 , need to apply patches for earlier version of Oracle Applications (11.5.1 to 11.5.9) to get this product, enables customers to get report outputs in visually appealing and customized formats that is not possible with Oracle Reports alone despite its powerful data extraction features. The flexibility of XML Publisher is a result of the separation of the presentation of the report
from its data structure. The collection of the data is still handled by the E-Business Suite, but
now you can design and control how the report outputs will be presented in separate template files. At runtime, XML Publisher merges your designed template files with the report data to create rich, published documents in PDF that can support colors, images, font styles, headers and footers, and countless other formatting options. The basic idea is to run Concurrent programs to generate output files in XML format, then using ,custom designed report templates registered and maintained using XML publisher, and
Data Definition registered with XML Publisher corresponding to Concurrent Programs, run the Concurrent Program XML Report Publisher to merge the data ,as obtained from running
the Concurrent programs to generate XML output files, with the template to create visuallyappealing and customized format output. For a more detailed discussion on how to use the product XDO refer the Note 276691.1 XML Publisher and Concurrent Manager Integration.

References:

How to investigate printing issues and work towards its resolution ? [ID 297522.1]


Get Oracle Certifications for all Exams
Free Online Exams.com

No comments: