Request Single Spool Record for SmartForms Call within an ABAP Loop using output_options tdnewid
While SmartForms calls, ABAP developers can set single spool request or a spool request for each SAP Smartform call using the output-options tdnewid.
Distinct Spool Reqests for each SmartForms Call
The following ABAP code calls the same SAP Smartforms report within a loop.
You can call SAP Smartform with different parameters each time according to your Smart Form requirements.
Within the ABAP loop we call Smartform report using CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' and CALL FUNCTION fm_name methods.
Note that the Smartform control_parameters and output_options are determined prior ABAP loop and Smartforms call methods as follows:
gs_control_parameters-no_dialog = 'X'.
Setting no_dialog field Smarforms control_parameters to 'X' means that no dialog screen will be displayed to the user.
gs_output_options-tdnewid = 'X'.
Setting tdnewid option of SAP Smartforms output_options to 'X' means that the print will request for a new print spool id.
So calling SAP Smartform report each time with the above settings and output options will create a new spool entry for each Smartform call.
As you can see in the below screenshot of the SAP SP01 screen, there are 5 spool reuests displayed for 5 SAP Smartform calls from sample ABAP code.
Unique Spool Reqests for all SmartForms Call with in a Loop
Generally, the case is just the opposite. I mean ABAP developers do not request for a huge number of spool requests.
Working with a lot of spool requests makes tasks more difficult. So it is easier to work with a single spool request for a SAP Smartform output task.
The solution is setting the approtiate values for the control_parameters no_dialog parameter and for output_options tdnewid option.
Actually setting the output_options 's tdnewid property to 'X' value for the first print spool request and then setting the output_options 's tdnewid to ' ' or space for the following print / spool requests will solve the problem.
In such a case there will be only one spool request created for the all print requests created within the ABAP loop by calling the SAP Smartform.
Here below, you can find the ABAP code example for single spool request creation.
If you do not set the control_parameters no_dialog to 'X', then the SAP print dialog screen will be displayed for each SAP Smartforms call request.
Note that on the first print SAP dialog screen, "New spool request" checkbox is checked causing a new print spool request to open.
On the other hand on the following print dialog screens, the "New spool request" checkbox is cleared. So all these print requests will be in the same spool request as desired.
Please note that you will not want to click on the print buttons for more than you can stand, if your loop has a large number of iterations.