Les Smart Forms sont l’outil standard pour le développement de formulaires dans SAP. Ils permettent la création de sorties d’impression professionnelles comme les factures, commandes et bons de livraison.
Architecture Smart Forms
Composant
Transaction
Description
Form
SMARTFORMS
Layout du formulaire
Style
SMARTSTYLES
Modèles de formatage
Text Module
SO10
Textes réutilisables
Graphiques
SE78
Logos et images
Structure du formulaire
Élément
Description
Global Definitions
Types, données, initialisation
Form Interface
Paramètres Import/Export
Pages
Pages avec en-tête/pied de page
Windows
Zones de sortie
Nodes
Texte, tableau, graphique, etc.
Exemples de base
Appeler un Smart Form
DATA: lv_fm_name TYPE rs38l_fnam,
ls_output TYPE ssfcompop,
ls_control TYPE ssfctrlop,
ls_job_info TYPE ssfcrescl.
" Déterminer le nom du module fonctionnel
CALLFUNCTION'SSF_FUNCTION_MODULE_NAME"
EXPORTING
formname = 'ZSF_INVOICE"
IMPORTING
fm_name = lv_fm_name
EXCEPTIONS
no_form =1
no_function_module =2
OTHERS=3.
IFsy-subrc<>0.
MESSAGE'Smart Form non trouvé' TYPE'E'.
RETURN.
ENDIF.
" Options de sortie
ls_output-tdnewid =abap_true. " Nouveau job spool
ls_output-tddest ='LP01'. " Imprimante
" Options de contrôle
ls_control-no_dialog =abap_true. " Pas de dialogue d'impression
ls_control-preview =abap_true. " Aperçu avant impression
" Appeler le Smart Form
CALLFUNCTION lv_fm_name
EXPORTING
control_parameters = ls_control
output_options = ls_output
is_header = ls_invoice_header
IMPORTING
job_output_info = ls_job_info
TABLES
it_items = lt_invoice_items
EXCEPTIONS
formatting_error =1
internal_error =2
send_error =3
user_canceled =4
OTHERS=5.
IFsy-subrc=0.
WRITE: /'Formulaire créé avec succès'.
WRITE: /'ID Spool :', ls_job_info-spoolids[ 1 ].
ENDIF.
Générer et sauvegarder un PDF
DATA: lt_pdf_lines TYPE TABLE OF tline,
lv_pdf_size TYPE i,
lv_pdf_xstring TYPE xstring.
" Sortie en PDF
ls_output-tdgetotf =abap_true. " Retourner les données OTF
CALLFUNCTION lv_fm_name
EXPORTING
control_parameters = ls_control
output_options = ls_output
is_header = ls_invoice_header
IMPORTING
job_output_info = ls_job_info
TABLES
it_items = lt_invoice_items.
" Convertir OTF en PDF
CALLFUNCTION'CONVERT_OTF"
EXPORTING
format = 'PDF"
IMPORTING
bin_filesize = lv_pdf_size
TABLES
otf = ls_job_info-otfdata
lines= lt_pdf_lines
EXCEPTIONS
err_max_linewidth =1
err_format =2
err_conv_not_possible =3
OTHERS=4.
" Convertir les lignes PDF en XSTRING
CALLFUNCTION'CONVERT_OTF_2_PDF"
EXPORTING
use_otf_mc_cmd = abap_true
IMPORTING
bin_file = lv_pdf_xstring
TABLES
otf = ls_job_info-otfdata
EXCEPTIONS
OTHERS = 1.
" Sauvegarder le PDF localement
DATA: lv_filename TYPE string VALUE 'C:\temp\invoice.pdf'.