gelöst Smartforms-Texte Datenbanktabelle


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Smartforms-Texte Datenbanktabelle

Beitragvon abuma » 20.02.2017, 11:56

Huhu zusammen,

ich würde gerne ein Programm schreiben, dass mir die SO10-Texte bzw. die Textbausteine ausliest die in einem Smartforms verwendet werden, sodass ich nicht alle Fenster einzeln absuchen muss...

Für Sapscript gibt es hierbei ja folgende Möglichkeit:
http://www.apentia-forum.de/viewtopic.php?t=1038
Mit READ_FORM kann ich dabei die Texte vom Sapscript auslesen und nach Includes absuchen.

Doch wie funktioniert das ganze bei Smartforms? :roll:
In der Tabelle STXFTXT stehen die Texte die auch im Smartforms enthalten sind, jedoch keine Zeilen die Textbausteine oder SO10-Texte enthalten.

Komm da gerade einfach nicht weiter. :(
Vielleicht kennt sich ja jemand damit aus?

Vielen Dank im Voraus!

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 81
Registriert: 17.08.2016, 11:14
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Smartforms-Texte Datenbanktabelle

Beitragvon wreichelt » 20.02.2017, 12:22

Hallo,

da gibt's folgende Tabellen:


STXBITMAPS - SAPscript Graphics Management Basis - SAPscript
STXFADM - Smart Forms: Administration Basis - Smart Forms
STXB - SAPscript Texte in nicht SAPscript Format Basis - SAPscript
STXFTXT - SAP Smart Forms: Texte Basis - Smart Forms
STXFADMI - Smart Forms: Administration - Interal Informationen Basis - Smart Forms
STXFADMT - Smart Forms: Administration - textuelle Beschreibung Basis - Smart Forms
STXSADM - Smart Styles: Administration Basis - Smart Forms
STXFOBJT - Smart Forms: Subobjekt Langtexte Basis - Smart Forms
STXFCONT - Smart Forms: Form Subobjekte (Aktiv) Basis - Smart Forms
STXSTAB - Smart Styles: Tabs Basis - Smart Forms
STXSPARA - Smart Styles: Absatzformate Basis - Smart Forms
STXFCONTR - Smart Forms: Laufzeitobjekte Basis - Smart Forms
STXFVART - Smart Forms: Varianten - textuelle Beschreibung Basis - Smart Forms
STXFCONTS - Smart Forms: Form Subobjekte (Saved) Basis - Smart Forms
STXSOBJT - Smart Styles: Texte für Absatz- und Zeichenformate Basis - Smart Forms
STXSADMT - Smart Styles: Administration - Beschreibung der Stile Basis - Smart Forms
STXSHEAD - Smart Styles: Style Header - Basis - Smart Forms
STXSCHAR - Smart Styles: Zeichenformate Basis - Smart Forms
STXSVAR - Smart Styles: Varianten Basis - Smart Forms
STXSVARL - Smart Styles: Sprache Zuordnung von Varianten Basis - Smart Forms
STXSVART - Smart Styles: Varianten - textuelle Beschreibung Basis - Smart Forms
STXFTXTV - SAP Smart Forms: Texte - Versionen Basis - Smart Forms
STXFTXTA - SAP Smart Forms: Texte - Verwaltung Basis - Smart Forms

Gruß
Wolfgang

Für diese Nachricht hat wreichelt 2 Dankeschön bekommen :
abuma, ST22
wreichelt
Expert
 
Beiträge: 625
Registriert: 17.07.2005, 09:46
Wohnort: Hessen
Dank erhalten: 105 mal
Ich bin: sonstiges

Re: Smartforms-Texte Datenbanktabelle

Beitragvon abuma » 20.02.2017, 12:59

Vielen Dank für deine Antwort, die habe ich mir jedoch alle bereits angesehen.
Habe grundsätzlich schon die Tabellen mit STX* abgeklappert.

Wie oben bereits genannt stehen die Texte ja in der Tabelle STXFTXT.
Allerdings fehlen dort die Anweisungen für den Include. Habe extra nach einem Formular gesucht, dass auch wirklich einen Textbaustein beinhaltet, aber dies taucht in der Auflistung nicht auf.

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 81
Registriert: 17.08.2016, 11:14
Dank erhalten: 10 mal
Ich bin: Entwickler/in

Re: Smartforms-Texte Datenbanktabelle

Beitragvon wreichelt » 20.02.2017, 13:13

Hallo abuma,

über Hilfsmittel -> Formularinfo kann nach allen möglichen Texten gesucht werden.
Wenn zumindest etwas bekannt ist kann das evtl. hierrüber gefunden werden.
Gruß
Wolfgang

Für diese Nachricht hat wreichelt einen Dank bekommen :
abuma
wreichelt
Expert
 
Beiträge: 625
Registriert: 17.07.2005, 09:46
Wohnort: Hessen
Dank erhalten: 105 mal
Ich bin: sonstiges

Re: Smartforms-Texte Datenbanktabelle

Beitragvon a-dead-trousers » 20.02.2017, 14:03

Hab mir den Code mal vor einiger Zeit zusammenkopiert:
Code: Alles auswählen
FUNCTION zread_smartforms
  IMPORTING id_name TYPE csequence
            id_variant TYPE csequence optional
            id_spras TYPE spras default SY-LANGU
  EXPORTING et_text TYPE tlinetab
            es_header TYPE ssfhead.

  DATA:
    ld_variant         TYPE tdvariant,
    ld_name            TYPE tdtxtname,
    ld_spras           TYPE tdspras,
    lr_form            TYPE REF TO cl_ssf_fb_smart_form,
    lr_text            TYPE REF TO cl_ssf_fb_text_item.

  FIELD-SYMBOLS:
    <ls_variant>       TYPE ssfvarhdr.

  REFRESH et_text.
  CLEAR es_header.

  ld_spras = id_spras.
  IF ld_spras IS INITIAL.
    ld_spras = sy-langu.
  ENDIF.

  ld_name = id_name.
  IF ld_name IS INITIAL.
    RETURN.
  ENDIF.

* read text module
  CREATE OBJECT lr_form.
  TRY.
*   check if exists and lock text module
      lr_form->enqueue( language_upd_exit       = space
                        suppress_language_check = space
                        mode                    = 'SHOW'
                        formname                = ld_name
                        authority_check         = space ).
      lr_form->load( im_formname    = ld_name
                     im_language    = ld_spras
                     im_active      = abap_true ).
    CATCH cx_ssf_fb.
      RETURN.
  ENDTRY.

  IF lr_form->header-formtype NE cssf_formtype_text.
    RETURN.
  ENDIF.

  es_header = lr_form->header.

* get lines&#91;&#93;
  IF et_text IS SUPPLIED.
    ld_variant = id_variant.
    READ TABLE lr_form->varheader ASSIGNING <ls_variant> WITH KEY vari = ld_variant.
    IF sy-subrc EQ 0.
      lr_text ?= <ls_variant>-pagetree->obj.
      IF lr_text IS BOUND.
        et_text = lr_text->text.
      ENDIF.
    ENDIF.
  ENDIF.

  lr_form->dequeue( EXPORTING formname = ld_name ).
ENDFUNCTION.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
abuma
a-dead-trousers
Top Expert
 
Beiträge: 3011
Registriert: 07.02.2011, 13:40
Dank erhalten: 744 mal
Ich bin: Entwickler/in

Re: Smartforms-Texte Datenbanktabelle

Beitragvon Tron » 20.02.2017, 14:07

Moin.
Smartforms sind auf der Datenbank als XML Strukturen hinterlegt. Wenn man die Formulardefinition absuchen möchte muß man das XML Dokument lesen und entsprechend auswerten.
Ein einfacher Test ist der XML Download des Formulars und das laden in einen Browser. Mit STRG-F ( suchen) kann man die Definition untersuchen.
Das Element <INAME> entspricht dabei dem Knotennamen etc...
Code: Alles auswählen
*&amp;---------------------------------------------------------------------*
*&amp; Report  YBC_READ_SMARTFORM_XML
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*

REPORT  YBC_READ_SMARTFORM_XML.
constants: c_xml_ns_uri_sf(255)  type c
    value 'urn:sap-com:SmartForms:2000:internal-structure', "#EC NOTEXT
           c_xml_ns_uri_ifr(255) type c
    value 'urn:sap-com:sdixml-ifr:2000'.                    "#EC NOTEXT



types: t_gnode   type ssfgnode,
       t_gnodes  type tsfgnode.

* internal tables
data: g_nodes type t_gnodes with header line,
      wa_g_nodes like line of g_nodes.

data: l_filename          type string,
      l_file_filter       type string,
      l_user_action       type i.
data: wa_node             like line of g_nodes,
      l_element           type ref to if_ixml_element.
data: l_language_str      type string,
      l_language(2)       type c.
data: l_lines             type i,
      l_splitted_name_tab type table of string.
data: l_stylename         type tdssname,
      l_stylevari         type tdvariant,
      l_save_style        type tdssname.


data: g_ixml               type ref to if_ixml,
      xml_document         type ref to if_ixml_document,
      xml_element          type ref to if_ixml_element,
      xml_ns_prefix_sf     type string,
      xml_ns_uri_sf        type string,
      xml_ns_uri_ifr       type string,
      xml_macro_name       type string,
      xml_macro_rc         type i,
      xml_macro_objt       type stxfobjt,
      xml_macro_text       type stxftxt,
      xml_macro_tline      type tline,
      xml_upload_language  type tdspras.

types: t_raw(250) type x.

data: xml_xtable        type table of t_raw with header line,
      xml_document_size type i,
      g_download_path   type string,
      g_xml_fullpath    type string.

data: sform             type ref to cl_ssf_fb_smart_form.

* Namen der aktuell bearbeiteten Objekte
data: formname    type tdsfname,     " Name des Formulars
      variant     type tdvariant,    " Name der Formularvariante
      language    type sy-langu,     " Bearbeitungssprache
      fmnumb      type tdfmnumb,     " Nummer des zugeordneten Fb
      fmnumb_test type tdfmnumb.     " Fb zum Test der inaktiven Fassung



parameters form type TDSFNAME obligatory MATCHCODE OBJECT SH_STXFADM.


formname = form.
language = 'D'.

* create form object
  create object sform.


call method sform->load
     exporting  im_formname    = formname
                im_language    = language
                im_active      = space
     importing  ex_fmnumb      = fmnumb
                ex_fmnumb_test = fmnumb_test.

if g_ixml is initial.
  g_ixml          = cl_ixml=>create( ).
endif.

xml_document      = g_ixml->create_document( ).
xml_ns_prefix_sf  = 'sf'.
xml_ns_uri_sf     = c_xml_ns_uri_sf.
xml_ns_uri_ifr    = c_xml_ns_uri_ifr.
clear: xml_document_size, xml_xtable&#91;&#93;.
sform->xml_init( ).

* create XML for the entire smart form
  call method sform->xml_download
              exporting parent   = xml_document
              changing  document = xml_document.

* namespace
l_element  = xml_document->get_root_element( ).
l_element->set_attribute( name      = xml_ns_prefix_sf
                          namespace = 'xmlns'
                          value     = xml_ns_uri_sf ).
l_element->set_attribute( name  = 'xmlns'
                          value = xml_ns_uri_ifr ).

* language
write language to l_language.
l_language_str = l_language.
xml_macro_rc = l_element->set_attribute(
                    name      = 'language'
                    namespace = xml_ns_prefix_sf
                    value     = l_language_str ).


** convert DOM to xml
*call function 'SDIXML_DOM_TO_XML'
*     exporting  document     = xml_document
*     importing  size         = xml_document_size
*     tables     xml_as_table = xml_xtable
*     exceptions others       = 1.
*
*
* DATA d TYPE REF TO if_ixml_document.
* DATA e TYPE REF TO if_ixml_element.
* DATA problems TYPE  dcxmlprbl.
*
*
*e = d->get_root_element( ).
*
*CALL FUNCTION 'SDIXML_DOM_TO_DATA'
*  EXPORTING
*    data_as_dom          = e
**   CONTROL              =
* IMPORTING
*   DATAOBJECT           =
*   PROBLEMS             = problems
** EXCEPTIONS
**   ILLEGAL_OBJECT       = 1
**   OTHERS               = 2
*          .
*IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.





data lv_title type sy-title.
concatenate 'Smartform :' form into lv_title.

CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
  EXPORTING
    document          = xml_document
    TITLE             = lv_title
 EXCEPTIONS
   NO_DOCUMENT       = 1
   OTHERS            = 2.

IF sy-subrc <> 0.
ENDIF.
 


viel Erfolg

gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Für diese Nachricht hat Tron einen Dank bekommen :
abuma
Tron
Expert
 
Beiträge: 940
Registriert: 04.08.2007, 21:08
Wohnort: Hamburg
Dank erhalten: 168 mal
Ich bin: Entwickler/in

Re: Smartforms-Texte Datenbanktabelle

Beitragvon abuma » 20.02.2017, 14:26

Super, vielen Dank für eure Antworten. Ich werde mir das ganze mal ansehen :)

wreichelt hat geschrieben:Beitrag von wreichelt » 20.02.2017, 13:13
Hallo abuma,

über Hilfsmittel -> Formularinfo kann nach allen möglichen Texten gesucht werden.
Wenn zumindest etwas bekannt ist kann das evtl. hierrüber gefunden werden.
Gruß
Wolfgang

Da gabs bei mir anfangs noch den Fehler "Forbidden".
Nach aktivieren des Services SSF_TECHNIF hat es dann allerdings soweit funktioniert, dass ich zumindest nochmals genauere Fehlermeldung zu den zu aktivierenden Services erhielt und mir somit die Info dann auch ansehen konnte.
Für das Sichten von einzelnen Formularen auf jedenfall schonmal sehr hilfreich :)

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 81
Registriert: 17.08.2016, 11:14
Dank erhalten: 10 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Sachkonto für FI Rechnung in idoc übermittel
vor 15 Stunden von uibig 0 Antw.
Anlagenmigration Export
Gestern von verzweifelt 1 Antw.
SFP - PDF Datenbindung
Gestern von a-dead-trousers 2 Antw.
Protected Attribut füttern
vor 4 Tagen von Tommy Nightmare 3 Antw.
gelöst Problem bei der Tree-Darstellu ng einer Hierarchie
Gestern von khb 3 Antw.

  Ähnliche Beiträge beta
Keine Beiträge gefunden - versuche es mit der erweiterten Suche.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder