17
Log In Register About Us How to Contribute Store Welcome Guest SDN Community BPX Community Business Analytics University Alliances SAP EcoHub Home Forums Wiki Blogs Articles eLearning Downloads Code Exchange Career Center Events InnoCentive Idea Place Added by NagaSwapna Thota, last edited by Fabrice PERROT on Jan 11, 2011 Printing Invoices Author: NagaSwapna Thota Submitted: Sep 15th, 2008 Related Links: N/A Let us print an Invoice whose output will be as follows: Go to Transaction 'SMARTFORMS' from the SAP Easy Access Screen.Give the Smart Form name which starts with Y or Z and click on Create. 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. 1st window for Displaying Logo 2nd window for Displaying Billing Document Details 3rd window for Displaying Customer Details 4th window for Displaying the Item Details and the Total Amount 5th window for Displaying the Footer Details 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. Expand the node FIRST to see the main window. Now to create the Logo window. SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices 1 of 17 5/17/2011 1:23 PM

SmartForm - Invoice Tutorial

Embed Size (px)

Citation preview

Page 1: SmartForm - Invoice Tutorial

Log In Register About Us How to Contribute Store

Welcome Guest

SDN Community BPX Community Business Analytics University Alliances SAP EcoHub

Home Forums Wiki Blogs Articles eLearning Downloads Code Exchange Career Center Events InnoCentive Idea Place

Added by NagaSwapna Thota, last edited by Fabrice PERROT on Jan 11, 2011

Printing Invoices

Author: NagaSwapna Thota

Submitted: Sep 15th, 2008

Related Links: N/A

Let us print an Invoice whose output will be as follows:

Go to Transaction 'SMARTFORMS' from the SAP Easy Access Screen.Give the Smart Form name which starts with Y or Z and click on Create.

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.

1st window for Displaying Logo

2nd window for Displaying Billing Document Details

3rd window for Displaying Customer Details

4th window for Displaying the Item Details and the Total Amount

5th window for Displaying the Footer Details

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.

Expand the node FIRST to see the main window. Now to create the Logo window.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

1 of 17 5/17/2011 1:23 PM

Page 2: SmartForm - Invoice Tutorial

The following screen appears. Ensure that the window type is Secondary. Now Rename WINDOW1 as LOGOWIN by double clicking on the node %WINDOW1.

Repeat the same for creating remaining windows. After creating the remaining windows the screen should look like this:

Now go to the Form Painter by clicking on the button Form Painter present on the application toolbar. Adjust all the windows as per the requirement.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

2 of 17 5/17/2011 1:23 PM

Page 3: SmartForm - Invoice Tutorial

You can close the Form painter by pressing it once again.

Now let us place a Graphic into the LOGOWIN (Logo Window).

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.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

3 of 17 5/17/2011 1:23 PM

Page 4: SmartForm - Invoice Tutorial

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.

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.

VBRP - For printing the Item Details in the Main 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 :

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

4 of 17 5/17/2011 1:23 PM

Page 5: SmartForm - Invoice Tutorial

If you have table types defined for VBRK and VBRP tables give those names in the Associated type's column.

IM_FS_KNA1 - The field string for Holding Customer Details.

IM_T_VBRK - Table to hold Billing Document Header Data.

IM_T_VBRP - Table to hold Billing Document Item Data.

- For Global Definitions, double click on the Global Definitions and include the lines as follows :

IM_T_KNA1 - Table to hold Customer Details.

IM_FS_VBRK - Field String to hold Billing Document Header Data.

IM_FS_VBRP - Field String to hold Billing Document Item Data.

W_TOTAL - Stores the Total Amount of the field NETWR.

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.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

5 of 17 5/17/2011 1:23 PM

Page 6: SmartForm - Invoice Tutorial

This is to refer the currency field NETWR in the table VBRP to its corresponding currency key field in the table VBRK.

Displaying the contents in BILLWIN (Billing Window).

- Create a Loop under the node BILLWIN

- Name the Loop as LOOP_BILL, give a description as Loop for Billing Details. In the field Operand give the details as IM_T_VBRK INTO IM_FS_VBRK. In the where condition give the field

name as KUNAG, Select the operator as '=' and comparison value as IM_FS_KNA1-KUNNR.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

6 of 17 5/17/2011 1:23 PM

Page 7: SmartForm - Invoice Tutorial

- 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.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

7 of 17 5/17/2011 1:23 PM

Page 8: SmartForm - Invoice Tutorial

Displaying the contents in CUSTWIN (Customer Window)

- 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.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

8 of 17 5/17/2011 1:23 PM

Page 9: SmartForm - Invoice Tutorial

Displaying contents in MAIN (Main Window)

- Create a Table under the node MAIN.

Give Name for the table and Description. Right click on %LTYPE1 and rename the Line as Line1.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

9 of 17 5/17/2011 1:23 PM

Page 10: SmartForm - Invoice Tutorial

Since we have to display 5 columns, LINE1 has to be divided into 5 cells. To draw lines select the button Draw Lines and Columns.

- Now create a Table line under the node Header and give the Line Type as Line1.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

10 of 17 5/17/2011 1:23 PM

Page 11: SmartForm - Invoice Tutorial

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.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

11 of 17 5/17/2011 1:23 PM

Page 12: SmartForm - Invoice Tutorial

- Repeat the same steps for the node Main Area.

Define a Table line. Give the Line Type as LINE1.

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

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

12 of 17 5/17/2011 1:23 PM

Page 13: SmartForm - Invoice Tutorial

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:

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

13 of 17 5/17/2011 1:23 PM

Page 14: SmartForm - Invoice Tutorial

- 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.

Displaying contents in BOTTOMWIN (Footer Details)

- Create a TEXT under the Node BOTTOMWIN to display the Footer Information.

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

14 of 17 5/17/2011 1:23 PM

Page 15: SmartForm - Invoice Tutorial

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:

Finally Save and Activate the Form.

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.

Note down the Function Module name.

Driver program to Execute the form ZSF_INVOICE

- 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...............................................

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

15 of 17 5/17/2011 1:23 PM

Page 16: SmartForm - Invoice Tutorial

PARAMETERS :

p_kunnr LIKE vbrk-kunag,

p_vbeln LIKE vbrk-vbeln.

*"Data Declarations....................................................

DATA :

fm_name TYPE rs38l_fnam. " Name of the Function Module

DATA : t_vbrk LIKE

STANDARD TABLE

OF vbrk.

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.

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 :

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

16 of 17 5/17/2011 1:23 PM

Page 17: SmartForm - Invoice Tutorial

Labels

Contact Us Site Index Marketing Opportunities Legal Terms Privacy Impressum

Powered by SAP NetWeaver

printing invoices examples smartform tutorial

SAP Community Network Wiki - Code Gallery - Printing Invoices http://wiki.sdn.sap.com/wiki/display/Snippets/Printing+Invoices

17 of 17 5/17/2011 1:23 PM