Smart Forms

Getting started ... Alles für einen gelungenen Start.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

Smart Forms

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo liebe Helfer!

Ich beschäftige mich momentan mit Smart Forms, und stoße da auf einige Fragen.

Ich soll den Report RABARC01 (SAPscript) für Barcodes, so abändern, daß er für Smart Forms gilt.

Da ich mit Smart Forms leider noch nie gearbeitet habe, habe ich versucht soviel als möglich in der Doku nachzulesen.

In der Online Hilfe habe ich nun gesehen, daß für Smart Forms nichts für Barcode vorgesehen ist. (mit Standard Reports)

Für SAPscript jedoch schon. Nun meine Frage.

Hat von Euch jemand schon mal ein Smart Forms für Barcodes verwendet? Ist das überhaupt sinnvoll bzw. möglich, da es ja für SAPscript standardmäßig was gibt?

Bin für jede Antwort Dankbar!

Danke für Eure Hilfe!


Robin

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Hallo Robin,

das ist ja alles halb so wild. Generell kann man sagen, dass alles, was in SAPScript geht, auch in Smartforms geht. Bin schon ein paar Jahre als Entwickler unterwegs und hab' mich letztes Jahr das erste mal etwas mehr mit SAPScript und Smartforms beschäftigt. Nun zu Deinem Problem.

Wie im SAPScript gibt es auch in Smartforms den sog. Stil, den man einem Formular zuordnet. Vom Prinzip funktioniert der Formularstil in SAPScript gleich wie in Smartforms - jedoch sind sie technisch unterschiedlich abgelegt.

Wir haben beim aktuellen Projekt ein für alle Smartform-Formulare gültigen Stil definiert. Dort gibt es ein Absatzformat BC, das nur die Linksausrichtung enthält. Keine Schrift und auch keine Schrifthöhe. Dann hab' ich noch ein Zeichformat BA und im Reiter Standardeinstellung haben wir als Barcode den BC_CD39 Barcode definiert.
Der sollte im Standard auch bei Dir vorhanden sein.

Du kannst jetzt ein relativ primitives Smartform Formular kreieren. Achtung: Den Stil zuordnen und dann testen. Wenn's hilft, schick ich Dir auch noch ein paar Screenshots.

Hier kommt der Anhang mit den Screenshots

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Hallo Robin,

wie versprochen hier noch ein paar Screenshots mit kleinen Anmerkungen. Ich hoffe es hilft Dir weiter.

Grüsse...
...Jochen

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Jochen!

Danke für Deine Hilfe und die tolle Beschreibung!

Das Formular habe ich schon. Mein Eigentliches Problem liegt nun darin, daß ich den Report RABARC01 so umbauen soll, daß er dann für das Smart Form Formular gilt.

Weist Du ob es eine Doku gibt, mit welchen FUBA man arbeiten muß bzw. wie die Ablauflogik für Smart Forms aussieht?

Vielen Dank!

Robin

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Hallo Robin,

hab' mir den Report mal ein bisschen angeschaut. Auf
den ersten Blick musst Du an folgender Stelle
Anpassungen vornehmen:

Code: Alles auswählen.

FORM BARCODES_DRUCKEN.

  LOOP.
    AT FIRST.
*      Formular öffnen
       CALL FUNCTION 'FIAA_BARCODE_OPEN'
            EXPORTING   I_FORM             =  PA_FORM.
    ENDAT.

*   Zurückholen der Struktur ANLAV.
*    ANLAV = ANLAV_STR.

    CALL FUNCTION 'FIAA_BARCODE_PRINT'
         EXPORTING   I_ANLAV            = ANLAV
                     I_FORM             = PA_FORM .

    AT LAST .
*      Formular schliessen
       CALL FUNCTION 'FIAA_BARCODE_CLOSE'
            EXPORTING   I_FORM             =  PA_FORM.
    ENDAT.

  ENDLOOP.

ENDFORM.
Bei SAPScript wird zunächst nur das Formular
geöffnet. In Smartforms sieht das dann etwas anders
aus und es kommt auch darauf an, wie Du Dein
Formular aufgebaut hast.

Normalerweise musst Du zunächst Deinen
Smartformformularnamen ermitteln. Das geht so:

Code: Alles auswählen.

* Determine smartform function module for invoice
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = lf_formname
    IMPORTING
      fm_name            = lf_fm_name
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.
Danach rufst Du dann Dein Smartform selbst auf:

Code: Alles auswählen.

CALL FUNCTION lf_fm_name
  EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
*   CONTROL_PARAMETERS         =
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
    OUTPUT_OPTIONS             = fl_output
    USER_SETTINGS              = ' '
* IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
*   JOB_OUTPUT_INFO            =
*   JOB_OUTPUT_OPTIONS         =
  TABLES
    ZIT_BEHAELTER              = it_behlt_c
  EXCEPTIONS
    FORMATTING_ERROR           = 1
    INTERNAL_ERROR             = 2
    SEND_ERROR                 = 3
    USER_CANCELED              = 4
    OTHERS                     = 5
          .
IF SY-SUBRC <> 0.
" Auswertung sy-subrc
ENDIF.
Der Barcode selbst wird ja sozusagen durch das
Formular definiert und den Drucker generiert.

Denk bitte daran, in RABARCO01 wird mit einem sog.
Extract-Datenbestand gearbeitet. Den kannst Du so ja
nicht im Smartform verarbeiten. Am besten Du
wandelst das Extract in eine interne Tabelle und
übergibst Dann die Itab an Dein Formular.

Hope it helps.

Grüsse...
...Jochen

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Danke Jochen!

Das hilft mir auf alle Fälle schon mal weiter!

Schöne Grüße


Robin

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
Hi,
habe ein Smartform angelegt, dass auf jeweils 5 seiten eine Tabellen ausgibt. diese 5 tabellen übergebe ich. nun meine fragen:
1. wie mach ich das, dass eine seite nicht ausgegeben wird, wenn die dafür entsprechende tabelle initial ist?

2. des weiteren funktioniert meine "Druckansicht" nicht immer (obwohel der fbname korrekt ermittelt wurde und alle übergabetabellen werte enthalten) habe aber noch nicht herausgefunden warum, hat einer dafür eine idee?

thx im voraus
mfg dawns

Hilfsmittel SFTRACE

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Hallo Dawns,
versuch es mal mit der Transaktion SFTRACE. Du kannst dort einen Trace für Deine Smartforms-Formulare erstellen lassen. Die Meldungen darin sind zwar eher kryptisch aber mit der SE91 - Texte kann man die Fehlermeldung wieder besser verstehen.

Hope it helps....
...Jochen

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
thx für den tipp. habs ausprobiert aber unter welcher nachrichtenklasse in der se91 steht denn dann "das kryptische zeichen" beschrieben?
laut funktionsbausteinrückgabewert habe ich einen "formatting_error"...
was bedeutet das?

und hast du auch eine antwort auf meine erste frage?

Transaktion SFTRACE

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Hallo Dawns,
im Trace siehst Du die Nachrichtenklasse und auch die Nummer. In der Regel ist es die Nachrichtenklasse SSFCOMPOSER. Das mit Deinem Formatting-Error liegt vermutlich daran, dass entweder Deine Tabelle zu gross ist, bzw. die Daten vermutlich nicht in den dafür vorgesehenen Bereich reinpassen.

Frage 1: Sorry - dachte man kann eine Bedingung auf Ebene Seite festlegen.
Schau mal noch in der SAPHilfe nach. Meines Wissens kann man entsprechendes Coding hinterlegen, mit dem man den Verlauf der Seitenausgabe steuern kann. Es gibt auch ein recht gutes Buch zum Thema Smartforms. Hab's leider nicht parat. Vielleicht hat jemand anderes noch eine Idee.

Grüsse...
...Jochen

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
bei mir kommt immer der sy-subrc-wert 1 zurück :( ... also ein formating_error. was mach ich falsch?

tabelleninhalte sind nich größer als 25 zeilen, passen also locker auf eine seite...

Code: Alles auswählen.

    WHEN 'PRINT'.
*     FB-Namen ermitteln.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = 'ZPL_MONITOR'
        IMPORTING
          fm_name            = gv_fm_name
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.

*     generierten FB aufrufen
      IF gv_fm_name IS NOT INITIAL.
        CALL FUNCTION gv_fm_name
          TABLES
            t_plan           = gt_out_plan
            t_res            = gt_out_res
            t_tour           = gt_out_tour
            t_stop           = gt_out_stop
            t_soko           = gt_out_soko
          EXCEPTIONS
            formatting_error = 1
            internal_error   = 2
            send_error       = 3
            user_canceled    = 4
            OTHERS           = 5.
        IF sy-subrc EQ 1.
          MESSAGE text-015 TYPE 'E'.
        ENDIF.
      ELSE.
        MESSAGE text-016 TYPE 'E'.
      ENDIF.
  ENDCASE.

zum trace... bei mir steht da keine nachrichtenklasse, nur uhrzeit, benutzername, level und timestamp (UTC). aber dieser timestamp iss keine nachrichtenklasse... ?

Lösung zur ersten frage, tabelle nicht ausgeben, wenn initial:
alternative anlegen und in den allgemeinen eigenschaften eine bedingung festlegen. funktioniert ohne coding

weiß einer rat?
thx im voraus

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
habe gerade noch herausgefunden: wenn ich alle ausgabetabellne initialisiere bevor ich sie dem smartform übergebe, funktioniert der druckvorschau, ich seh dann zwar nur leere seiten, aber es kommt was :P
sobald aber nur eine tabelle gefüllt ist, kann ich die druckvorschau nicht mehr sehn... :(

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
ich hab mein smartform mal kompiliert, dabei ist mir aufgefallen:
die tabellenüberschrift wird angezeit aber sobald die tabellenausgabe kommt schmiert er ab, ABER NUR wenn der tabelleninhalt größer als ca 3zeilen ist.

bei einer tabelle von 26 zeilen schmiert das smartform ab, bei einer tabelle mit nur 3 zeilen dagegen nicht.
Das mit Deinem Formatting-Error liegt vermutlich daran, dass entweder Deine Tabelle zu gross ist, bzw. die Daten vermutlich nicht in den dafür vorgesehenen Bereich reinpassen.
tabelle zu groß bei nur 30zeilen? meinst du mit bereich die tabellenbreite?
wie kann man denn mehr als nur ca 4 zeilen ausgeben ohne das das smartform nen "formating_errorr" ausgibt?

thx im voraus
mfg dawns

Beitrag von hjstruebig (ForumUser / 49 / 0 / 0 ) »
Ja - das kann durchaus sein. So wie ich das sehe, liegt es vermutlich an den eigenschaften deiner Tabelle. Vermutlich wird es besser sein, das ganze etwas dynamischer zu halten und im Prinzip die Zeilentypen so zu definieren, dass Du eine gewisse Dynamik hast. Schau doch bitte noch entweder in der SAPDocu oder in einem entsprechenden Buch nach.

Herzliche Grüsse...
...Jochen

PS: Sorry - das die Antwort so kurz ist - hab' aber gerade keine Möglichkeit, mir diese Info rauszusuchen.

Beitrag von dawns (ForumUser / 99 / 0 / 0 ) »
und im Prinzip die Zeilentypen so zu definieren, dass Du eine gewisse Dynamik hast
laut sap:
Ein wesentlicher Unterschied zwischen Zeilentypen von Schablonen und Zeilentypen von Tabellen ist der, daß Zeilentypen von Schablonen eine Höhe haben während Smart Forms die Höhe von Tabellenzeilen bei Tabellen dynamisch bestimmt (abhängig von der Ausgabe in die Tabelle).
Dynamische Zellenhöhe

Die Höhe einer Tabelle hängt von der Anzahl der Tabellenzeilen und der Höhe aller ausgegebenen Tabellenzeilen ab. Die Höhe einer Tabellenzeile richtet sich dabei nach der höchsten Zelle, was wiederum davon abhängt, wie viele Inhalte in diese Zelle ausgegeben werden. Wenn Sie Inhalte in Tabellenzellen ausgeben, werden also keine Ausgaben abgeschnitten, sondern die Zellenhöhe entsprechend angepaßt.
Im Table Painter wird die Höhe der Zeilentypen konstant dargestellt, weil sie für die Ausgabe keine Bedeutung hat.
laut sap sind die also von alleine dynamisch.
oder hab ich dich falsch verstanden?

thx im voraus

Vergleichbare Themen

3
Antw.
1962
Views
Smart Forms
von kostonstyle » 10.05.2006 10:45 • Verfasst in ABAP® für Anfänger
0
Antw.
969
Views
Smart Forms
von Chrisp83 » 04.02.2008 09:49 • Verfasst in ABAP® für Anfänger
1
Antw.
937
Views
Smart Forms
von Chrisp83 » 04.02.2008 09:54 • Verfasst in ABAP® für Anfänger
1
Antw.
1440
Views
Smart Forms
von kostonstyle » 02.02.2006 14:08 • Verfasst in SAP - Allgemeines
3
Antw.
2280
Views
Smart Forms
von robin1at » 03.05.2006 11:04 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 8 Stunden von Bright4.5 3 / 1482
Regex in where
vor 10 Stunden von tar 6 / 149

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 8 Stunden von Bright4.5 3 / 1482
Regex in where
vor 10 Stunden von tar 6 / 149

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821