‎2008 Jun 13 5:17 AM
‎2008 Jun 13 5:27 AM
Hi,
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
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,
Narasimha
Edited by: narasimha marella on Jun 13, 2008 6:42 AM
‎2008 Jun 13 5:55 AM
Hi Bhuvneswaran
&----
*& Report Z_SMARTFORM_REP
*&
&----
*&
*&
&----
REPORT z_smartform_rep.
TABLES: vbrk, vbrp, adrc, kna1.
DATA: addrnr TYPE kna1-adrnr,
total TYPE vbrk-netwr VALUE 0.
DATA : tot TYPE p.
*----
Internal Tables
*----
DATA: BEGIN OF tb_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln, " document number
kunrg LIKE vbrk-kunrg, " payer
fkdat LIKE vbrk-fkdat, " billing date
xblnr LIKE vbrk-xblnr, " reference document number
END OF tb_vbrk.
DATA: BEGIN OF tb_material OCCURS 0,
vbeln TYPE vbrp-vbeln, " document number
matnr TYPE vbrp-matnr, " material number
arktx TYPE vbrp-arktx, " material description
fkimg TYPE vbrp-fkimg, " quantity
vrkme TYPE vbrp-vrkme, " unit
netwr TYPE vbrp-netwr, " price
waerk TYPE vbrk-waerk, " currency
END OF tb_material.
DATA: BEGIN OF tb_address OCCURS 0,
name1 TYPE adrc-name1, " name
street TYPE adrc-street, " street
city1 TYPE adrc-city1, " city
post_code1 TYPE adrc-post_code1, " post-code
country TYPE adrc-country, " country
tel_num TYPE adrc-tel_number, " tel number
END OF tb_address.
DATA : BEGIN OF itab OCCURS 0,
vbeln TYPE vbrp-vbeln,
waerk TYPE vbrk-waerk,
END OF itab.
*----
SELECTION SCREEN
*----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS s_vbeln FOR vbrk-vbeln.
SELECTION-SCREEN END OF BLOCK b1.
*----
START OF PROCESSING
*----
START-OF-SELECTION.
Select details of billing document
SELECT vbeln kunrg fkdat xblnr
INTO TABLE tb_vbrk
FROM vbrk
WHERE vbeln IN s_vbeln.
IF sy-subrc EQ 0.
SELECT vbeln matnr arktx fkimg vrkme netwr
INTO TABLE tb_material
FROM vbrp
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE 'data does not exist' TYPE 'E'.
ENDIF.
IF tb_material[] IS NOT INITIAL.
SELECT vbeln waerk FROM vbrk
INTO TABLE itab
FOR ALL ENTRIES IN tb_material
WHERE vbeln EQ tb_material-vbeln.
ENDIF.
LOOP AT tb_material.
READ TABLE itab WITH KEY vbeln = tb_material-vbeln.
tb_material-waerk = itab-waerk.
MODIFY tb_material.
ENDLOOP.
ENDIF.
LOOP AT tb_vbrk.
selecting the address
SELECT adrnr INTO addrnr FROM kna1 WHERE kunnr EQ tb_vbrk-kunrg.
ENDSELECT.
IF sy-subrc EQ 0.
SELECT SINGLE name1 street city1 post_code1 country tel_number
FROM adrc
INTO tb_address
WHERE addrnumber EQ addrnr.
ENDIF.
ENDLOOP.
LOOP AT tb_material.
total = total + tb_material-netwr.
ENDLOOP.
tot = total.
FM intergrates Driver Program with SF
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z_SMARTFORM'
VARIANT = ' '*
DIRECT_CALL = ' '*
IMPORTING*
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.
Function Module Generated after avtivation the Smartform
CALL FUNCTION '/1BCDWB/SF00000347'
EXPORTING
ARCHIVE_INDEX =*
ARCHIVE_INDEX_TAB =*
ARCHIVE_PARAMETERS =*
CONTROL_PARAMETERS =*
MAIL_APPL_OBJ =*
MAIL_RECIPIENT =*
MAIL_SENDER =*
OUTPUT_OPTIONS =*
USER_SETTINGS = 'X'*
tot = tot
IMPORTING*
DOCUMENT_OUTPUT_INFO =*
JOB_OUTPUT_INFO =*
JOB_OUTPUT_OPTIONS =*
TABLES
tb_vbrk = tb_vbrk
tb_material = tb_material
tb_address = tb_address
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.
Rewards with Points if info is helpful
Karan
‎2008 Jun 13 7:14 AM
hi,
refer the below link, it has step by step procedure, with screen shots and sample code.
[http://saptechnical.com/Tutorials/Smartforms/SimpleDriverProgram/Demo.htm]
hope it solves ur problem.
reward if helpful.