Getting started with Smart Forms (Building a simple application

)
Go to transaction ³Smartforms´.

Enter a name for the form and click on Create. Enter a short description for the form.

In this example, we will print a simple text using our form. To create a text, expand ³Pages and Windows´ New Page. Select Main Window and Right click on that. Select Create Text

Give a name to the text and short description. Also enter the text you want to see on the form.

SAVE and Activate the Smart form. To know the function module that is generated upon activation of this smart form, click on Environment Function module name.

Following popup with the function module would appear.

Test the smart form by clicking on Test. You would be navigated to the function builder with the function module defaulting to the one that is generated earlier.

Click on execute.

Since we do not have any parameters to pass on, click on Execute.

right click on ³Main Window´. Enter a short description for the form. Rename the page to your needs and add a short description to the same. select Create Address . To display the address on the form.Printing Address using Smart Forms Go to transaction ³Smartforms´. Expand ³Pages and Windows´ and click on ³%PAGE1´. Enter a name for the form and click on Create.

The output would be similar as shown below: . Now pick an address number from that table. Now execute the Smart form. Enter a name to the Address and add a short description for the same.Following screen appears. add provide the same in the ³Address Number´ as shown below: Save and Activate the form. You all might be aware that Addresses are stored in the table ADRC.

* To call a smart form. This is a simple demo and doesn t contain any parameter passing in this example. * MESSAGE ID SY -MSGID TYPE SY -MSGTY NUMBER SY -MSGNO * WITH SY -MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. We would use this function module in our driver program to call this function module. Let us create a driver program with a simple call to the above generated function module: REPORT Zcall_smartform.Calling Smart Form using Driver Program Let us prepare a driver program for the Smart Form that displays the address. . Check the function module that is generated when the Smart Form is activated by clicking on Environment Function Module Name. we would need to call the function module tha t * is generated. ENDIF. Execute the program for the output. CALL FUNCTION '/1BCDWB/SF00000359' . IF sy-subrc<> 0. A pop up would appear displaying the function module name.

. Name your graphic and enter a short description.Displaying Graphics using Smart Forms Go to transaction SE78 (Administration of Form Graphics). Click on tick mark to proceed. select the radio button ³Color Bitmap image´. If you have color image. Double-click on ³GRAPHICS´ node and click on ³Import (F5)´ to import the image. Select the file name by using the F4 functionality available.

To display an image. You can test this by selecting print preview: Now go to transaction SMARTFORM.The graphic is imported and is stored in ³Business Document Server´. right click on Main Window Create Graphic . Create a new form and give a short description for the same.

Test run the smart form.Use F4 help to fill the fields. . Save and activate the workflow. to check the appearance of the graphic.

Go to transaction SMARTFORMS and create a Smart Form. Click on Global Settings Form Interface.Passing data to the Smart Forms Scenario: Let us take a simple scenario of passing Material Number and Material description from Driver program to the Smart Form. Now define the import parameters for MATNR and MAKTX (From table MAKT) Now create a Text in the Main window to display the above two parameters. . we need to define the form interface with the parameters to be passed on. To pass the values from the driver program to Smart Form.

Test run the Smart Form by clicking on Execute. Enter the field names between the µ&¶ (Ampersand) as shown below: Similarly create for Description.To add a field. Save and Activate the Smart Form. . we need to click on ³Insert Field´.

we would be defining Maximum Seats and Occupied Seats in the form interface and Seats Available in the Global definitions. Working with Global Definitions and Program Lines Scenario: To calculate the total seats available using the values ³Maximum seats available´ and the ³Occupied seats´. We would write some code to calculate Seats available and then print the same. Procedure: Create a new smart form and. define the following two fields: . in the Form Interface.Enter the values as shown below and click on execute. In this case.

Now to print these values on the layout.Now click on ³Global definitions´ : Now define a variable. select Global Defination Initialization Now mention the input parameters as SEATS_MAX and SEATS_OCC and the output parameter as SEATS_AVAIL. SEATS_AVAIL Now to calculate Seats Available. create a text by selecting Main Window Create Text: . Write the code to calculate SEATS_AVAIL.

Test the smart form by clicking on F8. Enter some values for max_seats and avail_seats Execute the function module. Activate the Smart Form.Save and do the syntax check. .

Right click on Page Create Window (as shown below) A secondary window is created. Move the secondary window (and even stretch) according to your needs. . To position the secondary window to meet our needs. To create a Secondary Window.Working with Secondary Window Create a Smart Form using the transaction SMARTFORMS. Following screen appears: The highlighted window in the above screenshot is the secondary window. click on Form Painter.

Similarly. Now select the Page à Secondary Window Right click on Secondary Window à C reate à Text Write some text inside. click on Form Painter again. Now let us write some content in these areas. create some text in the Main window as well.To close the above page design. .

Save and activate the Smart Form. company copy or others. Test run the Smart Form. In this demo. Create a Smart Form using the transaction SMARTFORMS. Create a secondary window as shown below: Select Window type as ³Copies Window´ as shown below: . you would get the following output: Demo on Copies Window (Real time scenario) Scenario: To print three copies of a particular do cument and the first copy should mention as Customer copy. second one as Bank copy and the third one say College copy. we would print in the Copies window whether it is bank copy.

which would hold the name of the copy (bank copy and others) depending on the value of SFSY-COPYCOUNT. We would use this field to print the owner of the copy. Define a variable in the global definition as shown below: .Also name your window and give it a proper description. The variable SFSY-COPYCOUNT would provide us count of the copy whether it is a first copy. second copy and others. Do not change any other settings. We would define a string. Adjust the window size using the Form Painter available on the application toolbar.

Now create a text by selecting the Copies window. . right click ± Select Create Flow Logic Program Lines Enter the following code: Do not forget to enter the variable TEXT in the output parameters.Now select your Copies window. In this. right click Create Text. just enter the field name as shown below by selecting insert field.

enter the number of copies as 3 Check the output: .Now include a text in the Main window as well with some content. In the print preview screen. Save and activate. Test your Smart Form.

Following screen appears: To create a paragraph. Following pop-up appears: Enter a paragraph format name. we would create a small text as shown below with outline numbering as shown below Go to transaction ³SmartStyles´ Enter a style name and click on Create. click on folder ³Paragraph Formats´ and click on Create (as shown in the above screenshot). .Working with Smart Styles Scenario: In this demo.

the values would be displayed as ³11. 1.1. 12.´ instead of ³1.Enter a suitable description for your graph and enter the left margin value as 2 CH.3«´ .´ from the list for the Numbering Type. Now select the tab ³Numbering and Outline´: Enter the Top Outline Paragraph as the current paragraph name and select ³1. 13. If the left delimiter is not mentioned. Now create another paragraph format P2 as per the above method. In the tab ³Numbering and Outline´ of P2. 1.´...2. do the following: Select the ³Top Outline Paragraph´ as ³P1´ and put the left delimiter as ³..2.3.

2. Now go to tab ³General Attributes´.1.). If this is selected. the parent value would be displayed (like 1. check the ³Number Chaining´ Box.2.2.Also. Select the icon ³Txt Editor´ (Though the text could be written directly on this screen.3 without the parent number prefixing. 2. in the same window. only numbering would appear like 1. Create a Smart Form and create a text in the Main Window: Select the tab ³Output Options´ to mention the Smart Style to be used..1. Now go to transaction ³SmartForms´. we are avoiding this method for easy understanding to the consultants who are used with SAP Script editor) .2. 1. Save and activate your Smart Style. If this is not checked.

Test run the Smart Form. Click on ³Goto´ -> Change Editor Here enter the desired text: Return to the main screen of the Text. Following would be the output: . The screen would appear as follows: Save and activate the Smart Form.Now to change the editor.

Step2: Now go to Global definitions where we can define the Global data.Working with Loop Step1: Provide the name of the smart form is YDEMO_LOOP on the initial screen of the smart form and meaningful description. Types. Define Structure using Types Parameter as shown below. Step5: Create a LOOP statement as shown below. Step4: In Initialization parameter. In Types parameters we usually define user defined data types. we can write a code as shown below. Step3: Now define the internal table and work area in Global Data parameter. We have to mention the output result in the output parameter so that we can use it further. . Here in this case we are outputting IT_TAB and we are going to use this IT_TAB further in the LOOP in the Flow Logic. Initialization and etc.Smart Forms .

Step8: Create a node for PARAGRAPH FORMAT as shown below. paragraph formats and Tabs.Step6: Now Loop the internal table. Step7: To create the character. we use the smart style. The following screen appears. Step9: Now define the Tabs as shown below. . The transaction for create smart style is SMARTSTYLE or we can be created the initial screen of SMARTFORMS. Here SMART STYLE is created to define Tab positions for the columns.

Step10: Now Import SMART STYLE in to the SMART FORM as shown below. Step12: Save and activate the smart form. . Step11: Now create a text element for the loop statement. The output is as shown below.

Initialization and etc. And provide the short text for this smart form ³YDEMO_TABLE´. Define Structure using Types Parameter as shown below. Provide the name of the smart form. . We have to mention the output result in the output parameter so that we can use it further. we can write a code as shown below.Designing Tables in Smart Forms Step1: T-code for smart forms is ³SMARTFORMS´. Step2: Now go to Global definitions where we can define the Global data. In Types parameters we usually define user defined data types. Types. Step4: In Initialization parameter. Here in this case we are outputting IT_TAB and we are going to use this IT_TAB further in the Table painter. Step3: Now define the internal table and work area in Global Data parameter.

%LTYPE1 is renamed as LINE as shown below.Step5: Now we create a Table painter as shown below. Step6: Now we define number of table columns in %LTYPE1. . Here.

To draw a line we have to select Draw lines and columns button as shown above.Here. Step7: Now we have to create Table line for Header and Main area of Table painter as shown below. Step8: Provide the text for all columns. Step10: Now Loop the internal table data as shown below. Here. . Step9: Repeat the same process to the Main Area too. in this scenario we have to divide the LINE area into 4 columns as we have to display 5 columns. the line type is LINE. Here we have to provide line type.

. Execute the smart form now.Step11: Save and activate the smart form. The following screen appears: Step 3: Enter the required text and save. Step 2: Click on create. The output is as shown below. and create a smart form. Using Text Modules in Smart Forms Step1: Go to transaction smart forms. Go back to smart forms initial screen. Now this text can be included in our smart form.

Step 4: In the Main window create a text box. Step 5:In the text box general attributes TAB select Text module from the drop down list Step 6: Give the name of the Text Module created and click on COPY button. .

when you try opening the editor in Smart Forms. Step 9: Save and activate. Execute and check the print preview. Using MS Word as Editor in SAP Script and Smart Forms This document details the procedure in using Microsoft Word as editor in SAP Script / Smart Forms. In normal case. The following editor appears: . the following editor would appear: Click on the editor button.Step 7: The text in the text Module will be copied into the Text Editor.

.Now to change the above editor to MS Word. then check the both checkboxes as shown below: Click on Activate. do the following: Go to transaction I18N (Internationalization). Click on I18N Menu I18N Customizing I18N System Configuration (as shown in the screenshot below) The following screen appears: If you would like to use MS Word Editor in both Script and Smartforms.

Now the following popup appears (related to Smartforms Editor): Click on Yes to proceed. .The following popup appears (related to SAPScript Editor): Click on Yes. Result: In the SmartForms: In SAP Script: You can anytime revert to old editor by deactivation MS Word editor option using the transaction I18N. Now the MS Word editor is available for both SAP Script and Smartforms.

Achieving control-break statements functionality in Smart Forms Step1: T-code for smart forms is ³SMARTFORMS´. Step3: Define the field string. Step2: we can define user-defined structure in TYPES tab in the Global Definitions. create the loop as shown below. Step4: In the Initialization tab. Provide the name of the smart form. internal table and global variables in Global Data tab. Step5: In main window. .

we have to write the events in the loop as shown below. Create text element in this loop as show below. . the output would be Step8: suppose. To achieve this. if we want to know the item details sales document wise. Step7: Execute the smart form.Step6: Now Loop the internal table.

the output would be Step10: Now the requirement is to sum the net price of all items of sales document.And in the event on sort begin. In the text element. Step9: Now execute the smart form. . To achieve this.

In program lines. we have to add the net price. Step11: Now execute the smart form.And in the program lines. In the event on sort end. the output would be .

let us create a Smart Form with a simple text as shown below: Now let us maintain a translation for the above text in French. Click on Translation -> ABAP Objects -> Other Long Texts Select Smart Forms from the list. Procedure: For our demo purpose.Assigning a transport request for the translations related to the text in Smart Forms Scenario: To assign a transport request for the translations related to the text in Smart Forms. go to translation SE63. as shown below: . To do the same.

In the following screen, enter the name of the Smart Form created earlier. Also provide the source language and Target Language to be maintained:

Enter the translation for the text in French.

Now to assign a transport request for the above transaction, execute the RS_LXE_RECORD_TORDER. Enter the target language, Short Description for the transport request, object type as SSF.

program

Click on Execute.

As shown in the above screen shot, a transport request is created for the required translations. To check the same, go to transaction SE09 and provide the transport request number:

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. W_bin_filesize TYPE i. * Internal tables declaration * Internal table to hold the OTF data DATA: t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE. w_outoptions TYPE ssfcompop. ENDIF. * Variable declarations DATA: w_form_name TYPE tdsfname VALUE 'ZSURESH_TEST'. * Calling the SMARTFORM using the function module retrieved above * GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF * format of the output w_cparam-no_dialog = 'X'. IF sy-subrc<> 0. * Internal table to hold the data from the FM CONVERT_OTF T_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE. w_fmodule TYPE rs38l_fnam. w_cparam-preview = space. w_File_path type string. . " Binary File Size w_FILE_NAME type string. w_FULL_PATH type string. * Internal table to hold OTF data recd from the SMARTFORM t_otf_from_fm TYPE ssfcrescl. * This function module call is used to retrieve the name of the Function * module generated when the SMARTFORM is activated CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = w_form_name * VARIANT = ' ' * DIRECT_CALL = ' ' IMPORTING fm_name = w_fmodule EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3 . w_cparam TYPE ssfctrlop. " Suppressing the dialog box " for print preview w_cparam-getotf = 'X'.Converting SMART FORMS output to PDF format REPORT zsuresh_test.

CALL FUNCTION w_fmodule EXPORTING * ARCHIVE_INDEX = * ARCHIVE_INDEX_TAB = * ARCHIVE_PARAMETERS = control_parameters = w_cparam * MAIL_APPL_OBJ = * MAIL_RECIPIENT = * MAIL_SENDER = output_options = w_outoptions * USER_SETTINGS = 'X' IMPORTING * DOCUMENT_OUTPUT_INFO = job_output_info = t_otf_from_fm * JOB_OUTPUT_OPTIONS = EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5 . t_otf[] = t_otf_from_fm-otfdata[].* Printer name to be used is provided in the export parameter * OUTPUT_OPTIONS w_outoptions-tddest = 'LP01'. * Function Module CONVERT_OTF is used to convert the OTF format to PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING FORMAT = 'PDF' MAX_LINEWIDTH = 132 * ARCHIVE_INDEX = ' ' * COPYNUMBER = 0 * ASCII_BIDI_VIS2LOG = ' ' * PDF_DELETE_OTFTAB = ' ' IMPORTING BIN_FILESIZE = W_bin_filesize * BIN_FILE = TABLES otf = T_OTF lines = T_pdf_tab EXCEPTIONS ERR_MAX_LINEWIDTH = 1 ERR_FORMAT = 2 ERR_CONV_NOT_POSSIBLE = 3 ERR_BAD_OTF = 4 OTHERS = 5 . MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. IF sy-subrc<> 0. ENDIF.

. * Use the FM GUI_DOWNLOAD to download the generated PDF file onto the * presentation server CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING BIN_FILESIZE = W_bin_filesize filename = w_FULL_PATH FILETYPE = 'BIN' * APPEND = ' ' * WRITE_FIELD_SEPARATOR = ' ' * HEADER = '00' * TRUNC_TRAILING_BLANKS = ' ' * WRITE_LF = 'X' * COL_SELECT = ' ' * COL_SELECT_MASK = ' ' * DAT_MODE = ' ' * CONFIRM_OVERWRITE = ' ' * NO_AUTH_CHECK = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * WRITE_BOM = ' ' . * To display File SAVE dialog window CALL METHOD cl_gui_frontend_services=>file_save_dialog * EXPORTING * WINDOW_TITLE = * DEFAULT_EXTENSION = * DEFAULT_FILE_NAME = * FILE_FILTER = * INITIAL_DIRECTORY = * WITH_ENCODING = * PROMPT_ON_OVERWRITE = 'X' CHANGING filename = w_FILE_NAME path = w_FILE_PATH fullpath = w_FULL_PATH * USER_ACTION = * FILE_ENCODING = EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 others = 4 . ENDIF. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. IF sy-subrc<> 0. ENDIF. IF sy-subrc<> 0.

ENDIF. IF sy-subrc<> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. .* TRUNC_TRAILING_BLANKS_EOL = 'X' * WK1_N_FORMAT = ' ' * WK1_N_SIZE = ' ' * WK1_T_FORMAT = ' ' * WK1_T_SIZE = ' ' * IMPORTING * FILELENGTH = tables data_tab = T_pdf_tab * FIELDNAMES = * EXCEPTIONS * FILE_WRITE_ERROR = 1 * NO_BATCH = 2 * GUI_REFUSE_FILETRANSFER = 3 * INVALID_TYPE = 4 * NO_AUTHORITY = 5 * UNKNOWN_ERROR = 6 * HEADER_NOT_ALLOWED = 7 * SEPARATOR_NOT_ALLOWED = 8 * FILESIZE_NOT_ALLOWED = 9 * HEADER_TOO_LONG = 10 * DP_ERROR_CREATE = 11 * DP_ERROR_SEND = 12 * DP_ERROR_WRITE = 13 * UNKNOWN_DP_ERROR = 14 * ACCESS_DENIED = 15 * DP_OUT_OF_MEMORY = 16 * DISK_FULL = 17 * DP_TIMEOUT = 18 * FILE_NOT_FOUND = 19 * DATAPROVIDER_EXCEPTION = 20 * CONTROL_FLUSH_ERROR = 21 * OTHERS = 22 .

Passing Select-Options to Smart Forms Step1: Create a Structure ZSELECTION in SE11 with following fields. create an entry in to TABLES in the Form Interface. This structure is similar to the selection-option internal table. Step3: Define Structures in TYPES tabs in GLOBAL DEFINITIONS. . Step2: In smart form µZSELECT_FORM¶. Step5: In program line. Step4: In Global Data. write the following code.

Step6: The PERNRS given in the select-option in the driver program is captured in T_SELECT. In program lines. T_SELECT is input to SELECT query and the results are captured in internal table T_0002. We have to mention resulted internal table T_0002 in output parameters for further use. Write the following code in report. Step7: Now. loop the internal table T_0002 as shown below. . Step8: Create driver program µZSELECT_FORM_REP¶.

To answer this question a person should have both Portal and ABAP knowledge. Now create a function module with the following export parameter: . By giving this basic information I want to make sure that displaying a smart form as PDF is a simple task. Here I have created a simple smart form which displays ³Welcome to SAP Smart forms´. Let me start from R/3 side Create a smart form.Displaying a Smart form as PDF in Enterprise portal using WebDynp ro for Java I have seen many questions on how a smart form should be displayed in portal.

ENDIF. APPEND gs_otfdata TO gt_otfdata. gs_job_output_info TYPEssfcrescl. 'LOCL'(047) TO GS_OUTPUT_OPTIONS-TDDEST. gt_pdfdata TYPE STANDARD TABLE OF tline INITIAL SIZE 0. * Convert OTF into PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' max_linewidth = 255 IMPORTING bin_filesize = lv_bytes BIN_FILE = bin_file TABLES otf = gt_otfdata lines = gt_pdfdata EXCEPTIONS err_max_linewidth = 1 err_format =2 err_conv_not_possible = 3 OTHERS = 4. 'X' TO gs_control-getotf. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. CALL FUNCTION lv_fnam EXPORTING CONTROL_PARAMETERS = gs_control OUTPUT_OPTIONS = gs_output_options USER_SETTINGS = space IMPORTING JOB_OUTPUT_INFO = gs_job_output_info EXCEPTIONS FORMATTING_ERROR =1 INTERNAL_ERROR =2 SEND_ERROR =3 USER_CANCELED =4 OTHERS =5 . gs_output_options TYPE ssfcompop. *Populate OTF data table LOOP AT gs_job_output_info-otfdata INTO gs_otfdata. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'YNAG_TEST_PDF' IMPORTING FM_NAME = lv_fnam EXCEPTIONS NO_FORM =1 NO_FUNCTION_MODULE =2 OTHERS =3 . MOVE : 'X' TO gs_control-no_dialog. gs_control TYPE ssfctrlop. gs_otfdata TYPEitcoo. gt_otfdata TYPE STANDARD TABLE OF itcoo INITIAL SIZE 0. lv_bin_file type xstring. CLEAR gs_job_output_info. IF sy-subrc<> 0. . ENDLOOP. CLEAR gs_job_output_info-otfdata. Make sure that the function module is marked remote enabled. ENDIF. CLEAR gs_otfdata.Place the following cod e in the function module data : lv_fnam type RS38L_FNAM. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. IF sy-subrc<> 0. " LOOP AT t_outtab-otfdata DATA: lv_bytes TYPE p.

In NWDS (Net Weaver Developer Studio) create an Adaptive RFC model which points to the FM created in R/3. Give model name .With this we are done on the R/3 side.

.

Now create an application to display the PDF Insert a frame inside the view Internal is a value node and url is value attribute of type string. Place the following code in Init method publicvoidwdDoInit() .

} returnurl.currentContextElement(). .currentYnag_Test_Pdf_InputElement(). try{ wdContext. User details are required for this as it is using Single sign on to connect to R/3.getMessage()).setSdfgdsfsd(e.PDF.getWebResource(doc_content.printStackTrace().currentOutputElement(). }catch(WDURLExceptione){ e. In this case we have hard coded the Smart form to be used. If you want it in dynamic way FM interfaces need to be changed accordingly. wdContext.getURL().currentInternalElement(). //@@end } //@@begin others publicStringconvertXStringToUrl(byte[]doc_content){ Stringurl= "". WDWebResourceTypewebResType=WDWebResourceType.{ //@@begin wdDoInit() Ynag_Test_Pdf_1_Inputinput= new Ynag_Test_Pdf_Input().printStackTrace().modelObject().bind(input).webResType). } //@@end If you are using single sign on make sure to enable User authentication in the application parameters. wdContext.setUrl(convertXStringToUrl(wdContext.g etBin_File())).nodeYnag_Test_Pdf_Input().execute(). IWDWebResourcewebResource=WDWebResource. } wdContext. }catch(WDDynamicRFCExecuteExceptione){ e. try{ url=webResource.

Also this document will not explain the programming part required to fetch the data which is used to create labels.e. in 1 page of Smart form as shown below. To implement this requirement cerate 5 secondary window and a main window all of the size of label st box. Now our requirement is to print the labels in the manner shown below. so that the next page will be triggered if more labels needs to be printed. Step1:Suppose we have all the data used to create labels available in our Smart form in table IT_FINAL which is exported thorough driver program to Smart form. Label1 Label2 Label3 Label4 Label5 Label6 i. Below is the kind of output we expect form this label printing form.Label printing using Smart forms It is believed that SAP has not provided any functionary to create labels in Smart form and this is considered as one of its disadvantage. To understand this document you should have fair idea about how Smart form works. Last window which print the last label on the page should be the main window. Your requirement might vary from this one and you need to do the changes in layout and logic accordingly. Step2:- . In this document we will learn how to create labels using Smart form. odd labels on left side and even on right.

wa_3. th Move every 6 row from IT_FINAL to IT_MAIN and delete the same from IT_FINAL. . Now we have IT_FINAL which contain data to be printed in 5 secondary windows and IT_MAIN which contain data for main window. th As per the current requirement every 6 row will cerate last label on the page and any further row if exist will trigger the next page. Step 4:Now create a text node in every window and pass the label data from wa_1 to text node of 1st secondary window and so on. wa_5 of the type of line of IT_FINAL in the global declaration area. Step3:Create 5 work areas wa_1. table as shown in the below screen-shot. wa_4. wa_2. Write code to move 1st 5 rows from IT_FINAL to the above declared work areas and then delete those 5 rows form internal.In the Global Data Initialization section of the smart form Every row in the table IT_FINAL represents 1 label.

Step 5:Now in the Main window create a table node in the table painter create a line type with one row whose width is equal to the width of label to be printed. And instead of window for every node tick the checkbox to draw frame lines. so that frame is printed only if the text node has data to print.Every Node has a condition that it will execute only if the corresponding work area value is not initial. Under the data tab pass IT_MAIN. .

.. Step 6:Now in the Main Window Main Area of table create a row with line type created above and in the cell create a text node and pass the corresponding data which needs to be printed in the label. Step 7:Create a command line after table node which will call page1 itself On the condition that IT_FINAL is not initial.

If yes it will trigger 3rd page which print the last three labels. After 12 label is printed main table will not have any more data to print. The command line will check if any more labels are yet to be printed by checking entries in IT_FINAL table.The reason why command line is used is suppose we have 15 labels to be printed then it will be like Page1->6 Page2-> 6 and Page3->3 labels respectively. Output Page1:- . th th th Initially IT_FINAL will have 13 and IT_MAIN will have 2 rows which are for 6 and 12 label.

of an SAP Application Press Press Change the Function module name for the selected entry .Maintain Dunning Procedure Goto Environment --> Company Code Data .. Configure the Dunning note Smart Form Transaction code ..Dunning using Smartforms Configure the BTE .FBMP .Business Transaction Events Transaction code .FI_PRINT_DUNNING_NOTICE to FI_PRINT_DUNNING_NOTICE_SMARTF as shown below.Maintenance transaction BTE Click on Settings-->P/S Modules--->.FIBF .

CoCode Sort.ar. Select . Ref.MHNK Sort. Company Code Check the flag Company Code K1 P1 Click Save Create a custom dunning procedure.MHND and enter the below fields with the below values.Click on CoCd By dun. click on Go back and Save .

Enter the currency click Go back and Save Configure the Smartforms details Transaction code .Interest Calculation .Print .SPRO Path: Financial Accounting .Define Sender details for Interest Forms . .Account Receivables and Account Payables .Go back Click on and Save .Business Transaction .

Click on and enter your company code Enter the below values Click on .

Attach the smartform to the Dunning Procedure Transaction code . Click on dunning procedure '0001'. Click on Enter the below smartform names to the dunning levels. Now the dunning can be tested using transaction F150.FBMP. .

Click on main window and create table & also table line with 4 columns 4. Go to smartformstcode and create a smartform. Create assign table line for header and create text for each column . in global definition part declare the variables and tables as shown in above 2.Using 'COMMAND' to achieve page break In some cases user will ask only specific number of records should be displayed per page. To restrict manually the number of records displayed per page we can use COMMAND. 1. write the query and pass that internal table to output parameters 3. but based on space availability of main window data will populate. Click on initialization tab.

Right click on loop and create command. followed by table line Create table line for the loop. give internal table &workarea as shown 6. Click on main area and create a loop. Create text for every column .No Cell2 = Customer No Cell3 = City Cell4 = Country Key 5. we will get four columns now.Cell1 = S.

7.e first column. In that code. create a code by right clicking on that cell->create->flow logic>programming lines 8. In cell 5 i. write the following code and pass variables to output parameters .

Right click on page1 and create page2 .Cell5 = &GV_NO& Cell6 = &GS_KNA1-KUNNR& Cell7 = &GS_KNA1-ORT01& Cell8 = &GS_KNA1-LAND1& 9.

check Go to New Page Box and choose page2 in the dropdown given next.10. click on condition tab in that command and give condition as shown 11. Now go to command in page1-main window. 12.Go to page1 copy main window . Click on general Attributes tab .

Paste this main window in page2 Now our form should look like this .13.

15. Comment our code which sets flag for page break . Check. Op will be Only ten records per page will be displayed. Activate & Execute it. Save.14.

in the above example our condition was only ten recods per page.16. Output Will be Summary Using this command we manually control numbers of records displayed per page based on some condition. Save. . Activate & Execute it . we can implement the same for other conditions also.

if country code is other than 'IN' text part relevant to false part will be displayed. Length 2. Go to Transaction 'SMARTFORMS' and give your new form name and click on create 2. Right click on main window and Create->Flow Logic->Alternative . if the country code is 'IN' text part relevant to that will be displayed. Select Form interface and declare a variable called 'COUNTRY'. 3. 1.Using ALTERNATIVE in Smart forms This tutorial is describes how to use Alternative Condition in smartforms. Data type is CHAR. In this form we will get country code as input.

Right Click on True and create text and write some text in that. After creating Alternative your form will look like this 5.4. likewise create text and write something for false condition also. Now our screen will appear as shown below . In General Attributes of the alternate give condition COUNTRY = 'IN' as shown below 6.

Activate & Execute the form. 8.(In this case I have written Alternate Condtion True Country is India for the text in true condition and Alternate Condtion True Country is India for text in false condition) 7. Save. Check. First we will execute without giving country value & the output is .

9. . we will give some condition. if the condition is true. Output for 'IN' is Summary In this Alternative. only the elements within true node will be executed if its false only the elements within fals e node will be executed. Now if we give Country value as 'IN' then the output will be 10.