Smarta formulär i SAP ABAP

⚡ Smart sammanfattning

Smarta formulär i SAP ABAP skapar och underhåller formulär för massutskrift, med utdata till en skrivare, ett fax, e-post eller internet. Den här sidan förklarar arkitekturen, Form Builder-noderna, fönstren, tabellerna, mallarna, stilarna och den genererade funktionsmodulen.

  • 🖨️ Kärnsyfte: Smarta formulär producerar massutskrifter av dokument och stöder utskrift via skrivare, fax, e-post och internet via den genererade XML-filen.
  • 🕰️ Ursprung: SAP introducerade Smart Forms 1998 för att övervinna begränsningarna av SAPskript, och de är enklare att utveckla, underhålla och transportera.
  • 🧱 Grafisk design: Noder arrangeras genom att dra och släppa i Formulärbyggaren, så ett formulär anpassas utan att man behöver skriva en enda rad skriptspråk.
  • ⚙️ Genererad modul: Aktivering av ett formulär genererar en funktionsmodul, och utskriftsprogrammet får sitt namn vid körning med SSF_FUNCTION_MODULE_NAME.
  • 🪟 Fönsterregel: En sida innehåller högst ett huvudfönster, som flyter över sidor, medan varje sekundärt fönster endast skriver ut statiskt innehåll.
  • 📐 Tabell eller mall: En tabell växer dynamiskt med data, och en mall används när utdata har en fast storlek, till exempel en check eller en biljett.
  • 🎨 Smarta stilar: Styckeformat, teckenformat, färger och streckkoder lagras i en smart stil och återanvänds i olika formulär.

SAP ABAP Smarta Formulär

Vad är smarta formulär i SAP ABAP?

SAP Smart Forms används för att skapa och underhålla formulär för massutskrift i SAP Systems.Som output medium SAP Smart Forms stöder en skrivare, ett fax, e-post eller Internet (genom att använda den genererade XML-utgången).

SAP introducerade SmartForms 1998 för att övervinna begränsningarna i SAP Manus. SmartForms är lättare att utveckla, underhålla och transportera än SAP Manus.

Jämförelse av Smart Forms och SapScripts

  • Flera sidformat är möjliga i SmartForms vilket inte är fallet i SAP Skript
  • Det är möjligt att ha en SmartForm utan ett huvudfönster.
  • Rutiner kan skrivas i SmartForms verktyg.
  • SmartForms genererar en funktionsmodul när den är aktiverad.
  • Etiketter kan inte skapas i SmartForms.
Kriterier Smarta formulär SAPskript
Sidformat Flera sidformat i ett formulär En sidformat per formulär
Huvudfönster Inte obligatoriskt Exakt ett huvudfönster krävs
Rutiner Skrivet inuti själva formuläret Skrivet i det separata utskriftsprogrammet
aktivering Genererar en funktionsmodul Ingen funktionsmodul genereras
Etiketter Kan inte skapas Kan skapas

Fördelar med smarta formulär

  • De hjälper till att anpassa formulär utan programmeringskunskaper tack vare det helt grafiska användargränssnittet
  • Vid aktivering av den smarta formen genererar systemet automatiskt funktionsmodulen och vid körning.
  • För att göra några ändringar måste vi använda dra & släpp, klipp och klistra. Dessa åtgärder inkluderar inte att skriva kodningsrader eller använda ett skriptspråk.
  • Vi kan infoga statiska och dynamiska tabeller. Dessa inkluderar radflöden i de individuella tabellcellerna, utlösande händelser för tabellrubriker och delsummor och sortering av data före utmatning.
  • De smarta formulären låter användaren inkludera grafik, som kan visas som en del av formuläret eller som bakgrundsgrafik. Under utskrift kan användaren undertrycka bakgrundsgrafiken när och när det behövs.
  • Webbpublicering är möjlig med den genererade XML produktion

Architecture av SAP Smart form

Architecture av SAP Smart form

Arkitekturdiagrammet visar de tre inblandade lagren. Formuläret utformas i Form Builder, aktiveringen genererar funktionsmodulen och utskriftsprogrammet anropar modulen med applikationsdata. Designstegen för det första lagret behandlas härnäst.

Smartforms guide

Låt oss gå igenom det SAP system-

  1. Ange transaktion SMARTFORMER i transaktionskodrutan.
  2. På nästa skärm anger du ett formulärnamn och klickar på skapa

Smartforms guide

Nästa skärm är uppdelad i tre sektioner-

Smartforms guide

Navigationsfönster består av noder och subnoder. De innehåller alla element (text, fönster etc) som hör till sap-formulär

  • Underhållsfönster visar elementens attribut
  • Formulärskrivare fönstret visar layouten på sidan

Närhelst vi skapar smarta formulär, SAP skapar/genererar en funktionsmodul.Unlike SAPmanus, SAP FORMS låter dig byta språk.

I navigeringsfönstret hittar du

Globala datadeklarationer : De data som definieras här kan användas i hela smartformen för kodningsändamål.

Formulärgränssnitt : Här definieras all data som kommer att skickas till smartformen från Print-programmet.

Smartforms guide

Genom att högerklicka på sidorna kan du skapa ny sida, fönster, grafik eller adress.

Smartforms guide

Utskrift kommer att ske utifrån fältet "nästa sida".

Men bearbetningen kommer att ske enligt sekvensen i navigeringsfönstret!

Smartforms guide

För bakgrundsbild och grafik kan du plocka upp antingen svartvita eller färgbitmappsbilder och lagras i form av standardtexter. Du kan ta en omväg från smartform-skärmen och öppna skärmen Form Graphics. Transaktion kod: Se78

Smartforms guide

Inställning i grafikfönstret i Smart Form-

Smartforms guide

Windows i Smart Forms

Windows i Smart Forms

Det finns två typer av Windows

  1. Huvudsida
  2. Sekundär

Viktiga punkter att notera

  • Du kan inte ha mer än ett huvudfönster på en sida. Du kan ha flera sekundära fönster
  • Vad du än skriver ut i sekundärt fönster måste det vara statiskt. (Om du har 20 rader i en PO och det finns sidbegränsningar flyttas raderna vidare till nästa sida i huvudfönstret. dvs. i en föregångare och efterföljande typ av innehåll skrivs de ut i ordningsföljd i huvudfönstret. Detta är inte tillåtet i sekundära fönster.

Windows i Smart Forms

Inuti huvudfönstret kan vi lägga till text som introduktion för att anpassa formulärutmatningen.

Windows i Smart Forms

Utmatningsalternativen i varje fönster bestämmer vilken linjestorlek, bredd, färger och bakgrund som ska placeras.

Windows i Smart Forms

Smartforms ger möjlighet att ange adressnumret som upprätthålls i den centrala adresshanteringen. Adressen kommer att tas direkt från ADRC-tabellen och kommer att fyllas i i formuläret.

Windows i Smart Forms

De två olika editorerna finns tillgängliga i Smartforms, dvs. Normal Editor

Windows i Smart Forms

och grafikredigeraren.

Windows i Smart Forms

Den här inställningen kan ändras med hjälp av Configure Editor i Utilities.

Bord i ett fönster

I Table painter kan du rita formatet enligt kundens krav (t.ex. rubrik, underrubrik, artikel, undersumma, totalsumma etc.)

Du kan använda tabelllayouten för att bestämma:

  • Antalet linjer och celler
  • Höjden på varje rad
  • Bredden på varje cell
  • Inriktningen av tabellen i fönstret

Windows i Smart Forms

Tabellen visar de olika linjetyperna som kommer att användas i tabellen. Linjetyperna definierar storleken på varje cell och antalet celler i varje rad.

Windows i Smart Forms

Smart Forms-programmeringsflöde

När en SAP Smart Form-mall skapas, en användare skapar formulärlayouten, definierar de obligatoriska fälten, villkoren och speciella programmeringsinstruktioner i Smart Form-mallen med hjälp av Smart Form Builder.

Efter att formulärdesignen är klar måste formuläret aktiveras innan det kan testas eller nås av utskriftsprogrammen. Aktivering av formuläret initierar genereringen av en funktionsmodul som hanterar hela formulärets bearbetning.

Denna funktionsmodul interagerar med applikationsprogrammet/utskriftsprogrammet för att skapa utdata i det användardefinierade utmatningsmediet för den angivna enheten.

Vid smarta formulär använder vi 2 funktionsmoduler för bearbetningen av det smarta formuläret. Till den första funktionsmodulen skickar vi namnet på det smarta formuläret som importparameter. Detta returnerar sedan namnet på den dynamiskt genererade funktionsmodulen som faktiskt kommer att anropa smartformen.

Smartformnamnet kan skickas vidare till funktionen Module – 'SSF_FUNCTION_MODULE_NAME'

Smart Forms-programmeringsflöde

Detta kommer att returnera funktionsmodulnamnet för smartformen som det refereras till.

Smart Forms-programmeringsflöde

Utskriftsprogrammet kommer att anropa FM 'SSF_FUNCTION_MODULE_NAME' för att få funktionsmodulens namn vid Runtime. Därefter kommer den att anropa den sålunda erhållna funktionsmodulen för att exekvera smartformen.

Smart Forms-programmeringsflöde

Hur man anropar ett smart formulär från ett utskriftsprogram

Tvåstegsanropet som beskrivs ovan skrivs alltid på samma sätt. Programmet löser först det genererade namnet och kör det sedan med applikationsdata.

  1. Lös upp funktionsmodulens namn: Skicka formulärnamnet till SSF_FUNCTION_MODULE_NAME. Det genererade namnet ändras med varje system, så det får aldrig hårdkodas.
  2. Anropa den genererade modulen dynamiskt: Använd CALL FUNCTION med variabeln som innehåller det upplösta namnet och skicka data genom parametrarna som definierats i formulärgränssnittet.
  3. Styr utgången: Fyll kontrollstrukturen SSFCTRLOP för att undertrycka utskriftsdialogrutan eller för att begära en förhandsgranskning, och fyll SSFCOMPOP med utdataenheten.
  4. Hantera undantagen: Den genererade modulen genererar FORMATTING_ERROR, INTERNAL_ERROR, SEND_ERROR och USER_CANCELED, så SY-SUBRC måste kontrolleras efter anropet.
DATA: lv_fm_name TYPE rs38l_fnam,
      ls_control TYPE ssfctrlop,
      ls_output  TYPE ssfcompop.

* 1. Get the name of the generated function module
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = 'Z_SMART_INVOICE'
  IMPORTING
    fm_name            = lv_fm_name
  EXCEPTIONS
    no_form            = 1
    no_function_module = 2
    OTHERS             = 3.

IF sy-subrc <> 0.
  MESSAGE e001(zsf).          " Form not found
ENDIF.

* 2. Call the generated module with the form data
ls_control-no_dialog = 'X'.
ls_control-preview   = 'X'.

CALL FUNCTION lv_fm_name
  EXPORTING
    control_parameters = ls_control
    output_options     = ls_output
    is_header          = ls_header
  TABLES
    it_items           = lt_items
  EXCEPTIONS
    formatting_error   = 1
    internal_error     = 2
    send_error         = 3
    user_canceled      = 4
    OTHERS             = 5.

⚠️ Varning: Det genererade funktionsmodulnamnet, till exempel /1BCDWB/SF00000123, är olika i varje system. Lös alltid upp det med SSF_FUNCTION_MODULE_NAME, annars misslyckas programmet efter transport.

Mallar

Mallen kan användas när du vet den exakta storleken på utdata eller om utdata är i ett fast format.

T.ex. Skatteformulär/checkar/flygbolagsformulär/järnvägsbiljett: alla dessa använder mallar.

Den stora skillnaden mellan en tabell och en mall är att höjden i en tabell ändras dynamiskt. Vi kallar en rad för en "rad" i en mall.

Mallar i SAP ABAP

SMARTA stilar

En smart stil innehåller:

  • Rubrikdata som innehåller standardvärdena för en Smart Style
  • Styckeformat inklusive indrag och mellanrum, teckensnittsattribut, flikar och konturer och numrering
  • Teckenformat inklusive effekter (upphöjd, nedsänkt), streckkod och teckensnittsattribut
  • Färger och understrykningar för ett stycke eller teckenformat

Du kan använda transaktionen "smartforms" / "smartstyles" för att skapa en smart stil.

Mallar i SAP ABAP

💡 Tips: Tilldela den smarta stilen i formulärattributen istället för på varje textnod. En ändring i stilen når sedan varje stycke i formuläret.

Det var allt till denna handledning

Vanliga frågor

En tabell växer med antalet rader i den interna tabellen, så dess höjd ändras vid körning. En mall har ett fast antal rader och celler, vilket passar en check, en biljett eller en skatteblankett.

Ställ in GETOTF i kontrollstrukturen, läs OTF-data som returneras av den genererade modulen och skicka den till funktionsmodulen CONVERT_OTF. Resultatet är en binär tabell som kan skickas via e-post eller laddas ner.

Nej. Ett smart formulär är klientoberoende, så det är tillgängligt i alla klienter i systemet efter aktivering. SAPSkriptformuläret är klientberoende och måste kopieras med SCC1.

AI-assistenter utarbetar utskriftsprogrammet, inklusive SSF_FUNCTION_MODULE_NAME-anropet och undantagshanteringen. Själva layouten är fortfarande ordnad nod för nod i Form Builder, eftersom det är ett grafiskt objekt.

Ja. Smarta formulär är fortfarande standard för massutskrift i många SAP system, medan Adobe Forms täcker interaktiva dokument. AI-verktyg snabbar främst upp kringliggande uppgifter, som att läsa ett formulär och utarbeta dess dokumentation.

Sammanfatta detta inlägg med: