SAPScript
Les procedés suivants sont nécessaires pour faire et imprimer un formulaire :
1. Le Formulaire
Menüpunkt : Werkzeuge à Textverarbeitung à Formular
( Faire des Pages, des fenêtres sur les pages et tous les autres elements nécessaires comme
element de texte, elements de format etc..)
2. Le Druckprogramm
Menüpunkt : Werkzeuge à ABAP/4 Workbench à Object Browser à marquer 'Programm' à donner le nom
du Druckprogramm à Anzeigen/Anlegen.
Pour le Druckprogramm, il faut tout d'abord definir des options précises pour l'imprimente comme suit :
- SAPscript Ausgabe Schnittstelle
Data: begin of options.
include structure itcpo.
Data: end of options.
- SAPscript Ausgabe-Parameter
Data: begin of result.
include structure itcpp.
Data: end of result.
Ensuite il faut definir le nom du formulaire à utiliser avec par expl. La commande svte:
data: formular like rsscf-tdform value 'ZPREMIER_TEST'.
Le formulaire étant connu, une routine est maintenant nécessaire pour l'ouvrir au traitement. Cette
routine peut être introduite comme suit:
perform open_formulaire using formulaire.
Avec une structure semblable à la suivante:
options-tddest = '*'. " Ausgabegerät
options-tdimmed = '*'. " Sofort Ausgeben
options-tddelete = '*'. " Löschen nach Ausgabe
options-tdnewid = 'X'. " Neuer Spoolauftrag
call function 'OPEN_FORM'
exporting
form = formulaire
device = 'PRINTER' " Gerätetyp
dialog = 'X' " Kennzeichen: Dialog für Druckoptio
options = options " Druckoptionen
exceptions
canceled = 1 " Benutzer hat Druckauftrag abgebrochen
device = 2 " Gerättyp ist ungültig
form = 3 " Formular ist nicht vorhanden
options = 4 " Optionen sind ungültig
unclosed = 5 " Ein Formular ist noch aktiv
others = 6. " sonstige
if sy-subrc <> 0 and sy-subrc <> 1.
exit.
endif.
Seulement à partir de maintenant on peut commencer à remplir les differentes fenêtres. Pour ce qui
concerne les fenêtres, il peut y en avoir beaucoup : tête,pieds, coprs...., mais une appelée MAIN
(fenêtre principale) est obligatoire.
La commande WRITE_FORM sert pour remplir. Des exemples de démonstrations suivent:
Fenêtre ZFENÊTRE:
Perform faire_zfenêtre
Form faire_zfenêtre
call function 'WRITE_FORM'
exporting
window = 'ZFENETRE'
* element = 'UEBERSCHRIFT'
exceptions
others = 1.
if sy-subrc <> 0 and sy-subrc <> 1.
write 'Error in WRITE_FORM WINDOW: HEADLINE'.
exit.
endif.
endofrm
Etrait de la fenêtre ci-dessus pour inserer un LOGO
/: INCLUDE Z_SABA_LOGO2 OBJECT TEXT ID ST LANGUAGE D
Pour insert un LOGO, on doit d' abord céer ce dernier comme Standard-Text à l'aide du report
'RSTXLDMC'. Apres son execution, on donne les differnts paramètres démandés comme l'objet expl.
'h:/tmp/logo_ball.tif' , nom du texte expl. 'Z_SABA_LOGO2' etc...
Fenêtre MAIN:
select * from t9kpu where autor eq nom.
perform faire_le_corps.
endselect.
Form faire_le_corps
call function 'WRITE_FORM'
exporting
window = 'MAIN'
element = 'POSITION'
exceptions
others = 1.
if sy-subrc <> 0 and sy-subrc <> 1.
write 'Error in WRITE_FORM, WINDOW: MAIN, TOP ITEM_HEADER'.
exit.
endif.
Endform
Extrait de la fenêtre MAIN:
Z1 Createur &SY-UNAME&
Z2 Lettre a gros caractere &sy-uzeit&
Z2 Petit <P1>Caractere suivant</> &sy-datum&
/
Z1 Vous venez de choisir le document siuvant:
/
Z2 Benutzer: Projekt: Bezeichnung:
/
/E POSITION
/* T9KPP-projnr: &T9KPP-projnr& PROJBEZ: &T9KPP-PROJBEZ&
/* INCLUDE Z_SABA_LOGO1 OBJECT TEXT ID ST LANGUAGE D
/* Vous venez de choisir le document siuvant:
Z1 &T9KPU-autor& &T9KPU-PROJNR& &T9KPU-MATNR&
Après avoir rempli toutes les fenêtres, la commandes CLOSE_FORM sert pour conclure le travail. Un
exemple suit:
Perform close_fenêtre
Form close_fenêtre
call function 'CLOSE_FORM'
importing
result = result
exceptions
others = 1.
Endform
Le travail est ainsi achévé, on peut générer puis executer le programm après naturellement avoir
activer la dite fenêtre.
On peut aussi faire integrer un formulaire à un application existante da SAP comme par exemple
imprimer une commande ' Bestellung Drucken', là on se sert de la transaction 'OMFE' accéder à la
partie 'Customizing' de ce passage. On fait alors une copie du Standard Druckprogramm ' SAPFM06P'
ainsi que du formulaire standard associé 'MEDRUCK' et on les modifie selon les besoins ( il est
pourtant conseillé de laisser la copie du programm intacte et de néntreprendre des modifications qu#
au niveau de la copie du formulaire )
Feuilletter dans le Table control:
Debut
CLEAR ok-code.
tc635-top_line = 1.
Precedant.
CLEAR ok-code.
tc635-top_line = tc635-top_line - f12.
IF tc635-top_line < 1.
tc635-top_line = 1.
ENDIF.
Suivant
CLEAR ok-code.
tc635-top_line = tc635-top_line + f12.
In F10 Anzahl Zeilen der Internen Tabelle
IF tc635-top_line > tc635-lines.
tc635-top_line = tc635-lines.
ENDIF.
Fin
CLEAR ok-code.
tc635-top_line = tc635-lines.
Test test test