krause
I'm new here

Auswahl eines Spaltenwertes eines Datensatzes

Hey Community,

ich möchte in meinem Formular einen Datensatz auswählen und benötige eine Eingabekomponente, die nur den Wert einer bestimmten Spalte des gewählten Datensatzes speichert. Der Wert der Eingabekomponente soll dem der Spalte entsprechen und nicht dem Datensatzobjekt.

Konkret brauche ich das, weil der Wert der Spalte über GenericAttributes an das SAP Portal weiter gegeben werden soll.

Beispiel:

Tabelle: Person

id  name     city ...

-------------------------------------------

1   Meier     New York ...

2   Müller    Paris ...

3   Schulze   Barcelona ...

Ich möchte jetzt einen Datensatz, z.B. id=1 (Meier) in meinem Formular auswählen, der Wert der Komponente soll dabei aber "Meier" sein und nicht das gesamte Objekt "<VALUE uid="DB_Schema.person"><KEY><ITEM>1</ITEM></KEY></VALUE>" .

Beispiel:

      <FS_DATASET name="fs_portal_person" mode="combobox">

        <LANGINFOS>

          <LANGINFO lang="*" label="Name" expression="#item.name"/>

        </LANGINFOS>

        <SOURCES>

          <CONTENT name="person"/>

        </SOURCES>

      </FS_DATASET>

Im portal xml steht dann:

<GenericAttribute name="person" value="<VALUE uid="DB_Schema.person"><KEY><ITEM>1792</ITEM></KEY></VALUE>" />

ich will aber

<GenericAttribute name="person" value="Meier" />

An Datensatzauswahlkomponenten stehen mir wenn ich das richtig sehe folgende Objekte zur Verfügung:

- FS_DATASET entfällt aber, da es für den Modus "Combobox" zu viele Einträge in der Tabelle gibt und der Modus "Dialog" viel zu viele Klicks erfordert, um einen einzigen Datensatz auszuwählen (erst Öffnen, dann entsprechende Tabelle suchen und wählen, dann Datensatz wählen).

- Checkboxen und Comboboxen entfallen, da es zu viele Einträge gibt und wir eine Suche benötigen.

- CMS_INPUT_CONTENTLIST trifft noch am ehesten das was wir brauchen:

<CMS_INPUT_CONTENTLIST name="fs_portal_person" maxEntries="1" rows="2" table="DB_Schema.person" useLanguages="no">

    <LANGINFOS>

        <LANGINFO lang="*" label="TEXT"/>

    </LANGINFOS>

</CMS_INPUT_CONTENTLIST>

Aber auch hier das Problem, dass der Wert von "fs_portal_person" immer das Objekt enthält und ich keine Spalte angeben kann.

Die nächste Überlegung ist über einen Button ein Script aufrufen, welches einen Auswahldialog zur Verfügung stellt und automatisch die gewünschte Zeile in ein readonly Textfeld schreibt, sowas wie

      <FS_BUTTON name="cs_select_person" onClick="script:select_person" useLanguages="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="wähle Person"/>

        </LANGINFOS>

        <PARAMS>

          <PARAM name="textfield">#field.fs_portal_person</PARAM>

        </PARAMS>

      </FS_BUTTON>

      <CMS_INPUT_DOM name="fs_portal_person" editable="no">

        <LANGINFOS>

          <LANGINFO lang="*" label="Person" description="Person"/>

        </LANGINFOS>

      </CMS_INPUT_DOM>

Aber wie kann ich per Script einen Datensatz auswählen?

Eine andere Idee ist, erst im Nachgang den Namen aus dem gewählten Datensatz zu lesen. Aber an welcher Stelle mache ich das? Wenn ich das richtig sehe ist es mit 4.2 nicht möglich, an die Speicherroutine ein Skript zu setzen. Und ich möchte ungerne ein Script im generate & deploy Mechanismus einsetzen, welches dann noch mal alle Objekte durchläuft und den Wert liest und schreibt.

Hat hier jemand eine Idee?

Danke für die Info und viele Grüße,

Steffi

FirstSpirit Client 4.2.446.45868

Server: srv-spirit-entw.xxx.local:8000 (HTTP)

Benutzer: Admin

Version Server: 4.2.446.45868

Lizensiert für: xxx

Speicher: 35,14 von 123,75 MByte belegt

Java Version: 1.6.0_25 32bit Sun Microsystems Inc.

Betriebssystem: Windows 7 6.1 x86

0 Kudos
2 Replies
broszeit
I'm new here

Hallo Steffi,

Du bist da schon auf einem guten Weg.

Aber wie kann ich per Script einen Datensatz auswählen?

Ein Weg wäre z.B. das Anlegen der 3 geposteten Eingabekomponenten hintereinander:

1) CMS_INPUT_CONTENTLIST zum Auswählen des Datensatzes (fs_portal_person)

2) FS_BUTTON zum Übernehmen der Änderungen. Dieser führt dann ein Script aus, welches als Parameter die Komponenten 1 und 3 bekommt. Das Script liest dann den Spaltenwert des in 1 ausgewählten Datensatzes und schreibt den Wert in 3.

3) CMS_INPUT_TEXT (oder auch DOM, wobei dann aber kein editable="no" möglich ist) um den Spaltenwert zu speichern und dann später in das Portal zu schreiben

Ich hoffe dieser Ansatz erfüllt alle Anforderungen.

Viele Grüße

Rouven

Hallo Rouven,

vielen Dank für den Ansatz!

Sowas habe ich mir auch schon überlegt. Leider muss dann der Redakteur mehrfach klicken, also zuerst den Datensatz auswählen und dann noch auf den Button klicken. Das ist dem Fachbereich leider zu kompliziert... 🙂

Im Moment tendiere ich dazu, einfach ein Freitextfeld zu nehmen...

Dankeschön und viele Grüße,
Steffi

0 Kudos