Documente Academic
Documente Profesional
Documente Cultură
Step 2 :
Rename Page1 as FIRST by expanding the node Pages and Windows, double click on the node
%PAGE1.
As per the Requirement we need to have 5 windows.
Of all these windows the Main window i.e. the window, which holds the Item Details is already defined. So
let us now create the other windows.
Step 3 :
Expand the node FIRST to see the main window. Now to create the Logo window.
The following screen appears. Ensure that the window type is Secondary. Now Rename WINDOW1 as
LOGOWIN by double clicking on the node %WINDOW1.
Step 4 :
Now go to the Form Painter by clicking on the button present on the application
toolbar. Adjust all the windows as per the requirement.
You can close the Form painter by pressing the button .
Step 5 :
For that we need to first import the image from the local system. To do this Go to transaction SE78 from
the SAP Easy Access screen. The initial screen for Administration of Form Graphics appears. Expand the
node GRAPHICS and select Bitmap images. Select the Radio Button Color for uploading Colored
images.
Now Click on Import Button in order to import an image from your system.
A pop up appears. Give the File path in the File Name, Enter a Name and Description as shown below
and Continue.
Step 6 :
Now go back to the transaction ‘SMARTFORMS’. Right Click on the LOGOWIN Æ Create Æ Graphic.
As per the following screen shot make the changes. In the field NAME with the F4 help select the image
which you have imported from SE78.
Step 7 :
Now coming to the Declarations. As required the data into the form comes from 3 tables namely,
KNA1 - For printing the Customer Details in the Customer Details Window.
VBRK - For printing the Billing Document Header Details in the Billing Document Details Window.
The Data Retrieval and printing the Form is done through a Driver Program called ZSF_PRINTINVOICE.
In the Form we need to declare some Import parameters and also define some Global Definitions.
For declaring Import parameters double click on Form Interface and include the lines as shown below :
If you have table types defined for VBRK and VBRP tables give those names in the Associated type’s
column.
For Global Definitions, double click on the Global Definitions and include the lines as follows :
IM_T_KNA1 - Table to hold Customer Details.
If the above screen shot is observed we find a arrow which is placed on Currency/Quant. Fields. Open
this Tab to include the following lines.
This is to refer the currency field NETWR in the table VBRP to its corresponding currency key field in the
table VBRK.
Step 8 :
Create Text under the Loop LOOP_BILL to display Billing Document Details
Give the Name for the TEXT and a Description. To display the fields click on Field List on/off
button on the application toolbar. A list with field names appear at the bottom left corner as shown in the
screen shot below. Drag & Drop the fields from IM_FS_VBRK on to the editor.
Step 9 :
Create Text under the node CUSTWIN to display the Customer Details.
Give the Name for the TEXT and a Description. Click on Field List on/off button on the application
toolbar. A list with field names appear at the bottom left corner as shown in the screen shot below. Drag &
Drop the fields from IM_FS_KNA1 on to the editor.
Step 10 :
Since we have to display 5 columns, LINE1 has to be divided into 5 cells. To draw lines Select the button
As soon as you give the Line type as Line1 and press ENTER you can see that under the %ROW1 5
Cells namely %CELL1……%CELL5 are created. Now Rename each of these as shown below:
Now under each Cell create TEXT for Displaying the Column Headings.
As soon as you give the Line type as Line1 and press ENTER you can see that under the %ROW1 5
Cells namely %CELL1……%CELL5 are created. Now Rename each of these Cells and Create Texts
under each Cell to display the Details from VBRP. After Creating all these your screen should look like
this :
In the Main Area Drag and Drop the fields from the field string IM_FS_VBRP to print the Item Details. So
in the Text ITEMNO1 it will be &IM_FS_VBRP-POSNR& and so on… as shown above.
Since we have to display the Total amount in the Footer area, Create a Table Line with one Cell. To
create a Table Line Right Click on the Line 1 Æ Insert Æ Empty line underneath . An empty Line appears
after Line 1. Name this Line as Line2.
Create a Text under the cell TOTAL. Give the Line type as Line 2. The Following screen appears
In order to calculate the Total (W_TOTAL) go to the Table ITEMDET. Select the Tab Calculations and
give the details as shown in the screen shot below:
Go back to the Footer Æ Text for Displaying the TOTAL. Drag and Drop W_TOTAL from the Global Data.
To display the field list Click on the button Field list on/off.
Step 11 :
Create a TEXT under the Node BOTTOMWIN to display the Footer Information.
Give the Name for the TEXT and a Description an Enter the Text you want to Display in the window. So
your screen looks something like this:
Step 12 :
As we know, when we Activate the Smart Form it generates a Function Module automatically. To view the
Function Module generated for this Smart Form, Go to Environment Æ Function Module Name.
By Clicking on the Function Module Name, a pop up appears which gives the name of the Function
Module.
Step 13 :
Go to Transaction ‘SE38’ from the SAP Easy Access Screen and create an Executable Program with
some name say ZSF_PRINTINVOICE.
As in the following program, declare the Selection screen elements, Work variables, Internal Tables etc…
and call the Functions 'SSF_FUNCTION_MODULE_NAME' and /1BCDWB/SF00000201 (The one which
we got in Smart form by going to Environment Æ Function Module Name). After calling the Function
/1BCDWB/SF00000201 just replace it by FM_NAME as shown in the code below:
REPORT zsf_printinvoice.
*"Table Declarations...................................................
TABLES:
kna1,
vbrk,
vbrp.
*"Select Screen Elements...............................................
PARAMETERS :
p_kunnr LIKE vbrk-kunag,
p_vbeln LIKE vbrk-vbeln.
*"Data Declarations....................................................
*"--------------------------------------------------------------------*
* Work Variables
*
*"--------------------------------------------------------------------*
DATA :
fm_name TYPE rs38l_fnam. " Name of the Function Module
*"--------------------------------------------------------------------*
* Internal Table to Hold Billing Document Header Details *
*"--------------------------------------------------------------------*
DATA :
t_vbrk LIKE
STANDARD TABLE
OF vbrk.
*"--------------------------------------------------------------------*
* Internal Table to Hold Billing Document Item Details *
*"--------------------------------------------------------------------*
DATA:
t_vbrp LIKE
STANDARD TABLE
OF vbrp.
DATA :
fs_kna1 TYPE kna1, " Holds Customer Details
fs_vbrk LIKE LINE OF t_vbrk, " Holds BillingDoc Header Details
fs_vbrp LIKE LINE OF t_vbrp. " Holds BillingDoc Item Details
*"--------------------------------------------------------------------*
* START-OF-SELECTION EVENT *
*"--------------------------------------------------------------------*
START-OF-SELECTION.
SELECT SINGLE *
FROM kna1
INTO fs_kna1
WHERE kunnr EQ p_kunnr.
SELECT *
FROM vbrk
INTO TABLE t_vbrk
WHERE kunag EQ p_kunnr
AND vbeln EQ p_vbeln.
SELECT *
FROM vbrp
INTO TABLE t_vbrp
FOR ALL ENTRIES IN t_vbrk
WHERE vbeln = t_vbrk-vbeln.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_INVOICE'
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION fm_name
EXPORTING
im_fs_kna1 = fs_kna1
im_t_vbrk = t_vbrk
im_t_vbrp = t_vbrp
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
When the Above Program is Executed the final output would be: