cancel
Showing results for 
Search instead for 
Did you mean: 

How to declare the workarea and internal table in smartforms

Former Member
0 Kudos

How to declare the workarea and internal tables in smartforms not in driver program, i need to write the source code in smartform ,please send the answer asap

thanks

chinnu

Accepted Solutions (0)

Answers (6)

Answers (6)

Former Member
0 Kudos

hi Kumar,

You can declare the Intenal table and the workarea in the Global data tab of global definition. The structural types for that internal table are declared in the types tab of the global definition.

If you use send any internal table with work area from your driven program, there is no need of creating the work are for that internal table inside the smarforms.

The coding can be done in the Initialization part.

You can also definr the subroutines. you want to define the form structure in the form routines.

for eg :

In types tab of Global definition.

Types : begin of t_tab,

matnr like mara-matnr,

maktx like makt-maktx,

end of t_tab.

In Global data tab of Global definition

for internal table :

Variable name = it_tab.

Type assignment = type table of

Associated Type = t_tab.

for work area :

Variable name = wa_tab.

Type assignment = type

Associated Type = wa_tab.

In initialization :

Output parameter = it_tab.

select maramatnr maktmaktx into table it_tab from mara inner join makt on maramatnr = maktmaktx.

Form routines :

Form.

.................

......................

..................

Endform.

Regards,

ragu

Former Member
0 Kudos

Hi,

Please see below example

In Types tab

types: begin of ty_kna1,

kunnr type kunnr,

name1 type name1,

land1 type land1,

end of ty_kna1.

Types:ty_t_kna1 type standard table of ty_kna1.

In Global data tab

***Internal table declaration

data:i_kna1 type ty_t_kna1.

***Work area declaration

data:wa_kna1 type ty_kna1.

Regards

Jana

Former Member
0 Kudos

Hi kumar.

In global defintions:

Global data : Declare the field structure and internal table.

Types : Declare the structure.

Initialization: Write the select query for the fields.

In page: In main window create the table and text node and display the data.

Regards,

Sravanthi

Former Member
0 Kudos

hi,

SAP Smartforms can be used for creating and maintaining forms for mass printing in SAP Systems. The output medium for Smartforms support printer, fax, e-mail, or the Internet (by using the generated XML output).

According to SAP, you need neither have any programming knowledge nor use a Script language to adapt standard forms. However, basic ABAP programming skills are required only in special cases (for example, to call a function module you created or for complex and extensive conditions).

1. Create a new smartforms

Transaction code SMARTFORMS

Create new smartforms call ZSMART

2. Define looping process for internal table

Pages and windows

First Page -> Header Window (Cursor at First Page then click Edit -> Node -> Create)

Here, you can specify your title and page numbering

&SFSY-PAGE& (Page 1) of &SFSY-FORMPAGES(Z4.0)& (Total Page)

Main windows -> TABLE -> DATA

In the Loop section, tick Internal table and fill in

ITAB1 (table in ABAP SMARTFORM calling function) INTO ITAB2

3. Define table in smartforms

Global settings :

Form interface

Variable name Type assignment Reference type

ITAB1 TYPE Table Structure

Global definitions

Variable name Type assignment Reference type

ITAB2 TYPE Table Structure

4. To display the data in the form

Make used of the Table Painter and declare the Line Type in Tabstrips Table

e.g. HD_GEN for printing header details,

IT_GEN for printing data details.

You have to specify the Line Type in your Text elements in the Tabstrips Output options.

Tick the New Line and specify the Line Type for outputting the data.

Declare your output fields in Text elements

Tabstrips - Output Options

For different fonts use this Style : IDWTCERTSTYLE

For Quantity or Amout you can used this variable &GS_ITAB-AMOUNT(12.2)&

5. Calling SMARTFORMS from your ABAP program

REPORT ZSMARTFORM.

  • Calling SMARTFORMS from your ABAP program.

  • Collecting all the table data in your program, and pass once to SMARTFORMS

  • SMARTFORMS

  • Declare your table type in :-

  • Global Settings -> Form Interface

  • Global Definintions -> Global Data

  • Main Window -> Table -> DATA

*

*

TABLES: MKPF.

DATA: FM_NAME TYPE RS38L_FNAM.

DATA: BEGIN OF INT_MKPF OCCURS 0.

INCLUDE STRUCTURE MKPF.

DATA: END OF INT_MKPF.

SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.

SELECT * FROM MKPF WHERE MBLNR IN S_MBLNR.

MOVE-CORRESPONDING MKPF TO INT_MKPF.

APPEND INT_MKPF.

ENDSELECT.

  • At the end of your program.

  • Passing data to SMARTFORMS

call function 'SSF_FUNCTION_MODULE_NAME'

exporting

formname = 'ZSMARTFORM'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = FM_NAME

EXCEPTIONS

NO_FORM = 1

NO_FUNCTION_MODULE = 2

OTHERS = 3.

if sy-subrc <> 0.

WRITE: / 'ERROR 1'.

  • 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

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS =

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

GS_MKPF = INT_MKPF

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.

regards,

sreelakshmi

Former Member
0 Kudos

in global definition tab declare it -

for int table - itab type table of lfa1.

wa - wa type lfa1.

Former Member
0 Kudos

Thank u vishal

Thanks for sending the answer for me , i have a one more doubt, in which tab declare the internal table and work area in global defination becuase global defination have 6 tabs.

Thank

chinnu

Former Member
0 Kudos

Thank u vishal

Thanks for sending the answer for me , i have a one more doubt, in which tab declare the internal table and work area in global defination becuase global defination have 6 tabs.

Thank

chinnu

Former Member
0 Kudos

Hi

You can declare them in the Program Lines itself..... After u right click and select program lines in flow logic...Just write data statements as you do in ur editor.

Regards,

Vishwa.