SAP Jobsuche bei DV-Treff
Atze
  • Atze
  • SAP Forum - User Thema Starter
vor 12 Jahre
Hallo zusammen, ich wollte mal fragen wie man in einem Query Langtexte auslesen kann, wie z.B.: Materialgrundtext, Einkaufsbestelltext usw...

Ich habe bisher nur heraus gelesen, dass dies mit dem FB READ_TEXT funktioniert. Da ich aber leider nicht soooo das wissen habe wolle ich mal fragen wie ich den FB am besten "fütter" damit er mir die Texte auswirft.

Kann mir da vielleicht jmd behilflich sein? Kann ja eigentlich nicht so schwer sein. Gruß Atze

Förderer

wreichelt
vor 12 Jahre
Hallo Atze,

ist wirklich nicht schwer.

Beispiel:

DATA: ls_vbdkl TYPE vbdkl,

lv_tdname TYPE tdobname,

lt_tline TYPE tline_tab,

ls_tline TYPE tline.

...

lv_tdname = ls_vbdkl-VBELN.

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = 'Z001'

language = p_iv_spras

name = lv_tdname

object = 'VBBK' "Lieferungkopf

TABLES

lines = lt_tline

EXCEPTIONS

id = 1

language = 2

name = 3

not_found = 4

object = 5

reference_check = 6

wrong_access_to_archive = 7

OTHERS = 8.

IF sy-subrc = 0.

"In itab lt_tline ist der Inhalt des Textbausteins

ENDIF.

Wichtig ist es deinen Text anzuzeigen und Dir mit F1-Taste

die Werte für ID, Name und Objekt zu hiolen.

Gruß

Wolfgang

Atze
  • Atze
  • SAP Forum - User Thema Starter
vor 12 Jahre
nehmen wir mal an es geht um dei ek-texte...so würde das dann aussehen:

dann muss ich doch über den materialstamm gehen und das anhand der matnr suchen.

Objekt: MATERIAL

ID: BEST

Language: D

wie stelle ich den part hier dann um?

DATA: ls_vbdkl TYPE vbdkl,

lv_tdname TYPE tdobname,

lt_tline TYPE tline_tab,

ls_tline TYPE tline.

...

lv_tdname = ls_vbdkl-VBELN.

wreichelt
vor 12 Jahre
Hallo Atze,

xname = marav-matnr.

*

CALL FUNCTION 'READ_TEXT'

EXPORTING

CLIENT = SY-MANDT

ID = 'BEST'

LANGUAGE = 'D'

NAME = XNAME

OBJECT = 'MATERIAL'

* ARCHIVE_HANDLE = 0

....

Ist das Beispiel besser ?

Gruß

Wolfgang

daytona80
vor 9 Jahre
Hallo,

ich würde gern nochmal dieses Thema aufgreifen, da es mich auch gerade beschäftigt.

Meine Idee ist zu einer bestehenden Query den Langtext als Zusatzfeld (mit dem noch zu erstellenden Coding) anzulegen.

Die "Text-Id" und das "Textobjekt" sind fix (QMEP, QEEMERKMAL).

Das Problem ist nun, dass der "Textname" sich aus den Objekten (Prüflos, Vorgang, Merkmal) zusammensetzt nach denen ich ggf. schon im Vorfeld selektieren möchte. Die Abfrage müsste also den Textnamen zerlegen und mit den Selektionskriterien abgleichen oder??? 😕

Hat jemand ein Tipp für das Coding und die Einstellungen zum Zusatzfeld?

Ich danke euch schon mal vorab.


Vielen Dank und viele Grüße
wreichelt
vor 9 Jahre
Hallo,

ich würde mir für einen bestehenden Langtext den Aufbau

des Textnamen (Springen -> Kopf ) ansehen.

Aus den Feldern (Prüflos, Vorgang, Merkmal) dann mittels

Concatenate ... den Textnamen aufbauen damit READ_TEXT lesen kann.

Gruß

Wolfgang

daytona80
vor 9 Jahre
Hallo Wolfgang,

nach einigen Mühen und try and error Versuchen hab ich es hinbekommen. 😁

Allerdings einen kleinen "Schönheitsfehler" würde ich gern noch angehen: Beim Exporting / Language habe ich 'D' hinterlegt jedoch muss ich auch auf Texte in anderen Sprachen zugreifen.

Kann man den Export-Parameter irgendwie ausschließen? (leider ist dieser nicht optional wie Mandant, also muss ich irgendwie mit Coding einen Umweg bauen oder?)


Vielen Dank und viele Grüße
wreichelt
vor 9 Jahre
Hallo Daytona,

für die Sprache gibt's doch sy-langu (oder ist es sy-spras)

damit bleibst du auch so optional wie der Mandant.

Gruß

Wolfgang

daytona80
vor 9 Jahre
Hallo Wolfgang,

bin noch absoluter ABAP Anfänger aber das Systemfeld "langu" gibt mir doch die Anmeldesprache zurück oder?

In der STXH werden jedoch durch unterschiedliche Werke(international) die Textnahmen in unterschiedlichen Sprachen abgelegt. Ich bräuchte daher eine Selektion der Langtexte die unabhängig von der Sprache arbeitet.

Meine aktuelle Deklaration im Zusatzfeld:

Data: begin of itab OCCURS 0,

tdformat like tline-tdformat,

tdline like tline-tdline,

end of itab,

zlangtext1(70), zlangtext2(70), zlangtext3(70), zlangtext4(70),

zname like thead-tdname.

CONCATENATE QAMR-PRUEFLOS QAMR-VORGLFNR QAMR-MERKNR INTO zname.

CALL FUNCTION 'READ_TEXT'

EXPORTING

* CLIENT = SY-MANDT

ID = 'QMEP'

LANGUAGE = 'D' <<<<<----?????

NAME = ZNAME

OBJECT = 'QEEMERKMAL'

" ARCHIVE_HANDLE = 0

" LOCAL_CAT = ' '


Vielen Dank und viele Grüße
wreichelt
vor 9 Jahre
Hallo Daytona,

mir ist nicht bekannt wie Texte in allen Sprachen mit einem Aufruf des FB auf einmal

gelesen werden können.

Gruß Wolfgang

MrBojangles
vor 9 Jahre
Hallo daytona,

ideal wäre natürlich, wenn Du (z.B. aufgrund der Sprache des Werks, T001W-SPRAS) schon "weisst", in welcher Sprache die Texte vorliegen. Ist dies nicht möglich, kannst Du Dir so behelfen, dass Du Dir vorher "raussuchst" in welcher Sprache der TEXT angelegt ist.


DATA: l_spras type sylangu.
SELECT tdspras FROM STXH INTO l_spras UP TO 1 ROWS
  WHERE tdobjekt = 'QEEMERKMAL'
    AND tdid     = 'QMEP'
    AND tdname   = ZNAME.
ENDSELECT.
* in l_spras steht jetzt die erste(!) gefundene
* Sprache drin, in der der gesuchte Text vorliegt
* Liegt er in mehreren Sprachen vor, muss Du das 
* Ergebnis in eine int. Tabelle lesen und entspr.
* weiterverarbeiten...

Weiterhin viel Freude mit SAP...

Cheers

MrB.

daytona80
vor 9 Jahre
Hi MrB

vielen Dank für dein Hinweis. Ich hab es vorhin hinbekommen.

Ich hab mir ein Zusatzfeld angelegt in welchen ich per CONCATENATE den Textnamen generiere. Dann hab ich mir als Zusatztabelle die STXH geholt und frage dann dort mit Hilfe des Zusatzfeldes (Textnamen) die vorhandene Sprache ab. Die Sprache wird wieder an ein Zusatzfeld übergeben und versorgt von dort den FuBa READ_TXT für Language.

Etwas umständlich, funktioniert aber perfekt 😂

Die einzelnen Zeilen des Langtextes aus der STXL füge ich hintereinander (CONCATENATE) in eine Spalte bzw. Feld in der ALV Listausgabe. Nur hab ich grad gesehen, dass die Ausgabelänge auf 999 Zeichen begrenzt ist. 😕 Wird dann doch wohl wieder jede Zeile des Langtextes untereinander/einzeln im ALV ausgeben müssen.


Vielen Dank und viele Grüße
Alpmann
vor 9 Jahre
Hallo daytona80,

mit einem Aufruf des folgenden Funktionsbausteines kannst du

dir einen Text in einem PopUp anzeigen lassen.

Hiermit wird ein Text aus der MD04 angezeigt.

Anstelle der Felder zt_best-TDOBJECT, zt_best-TDNAME, zt_best-TDID und zt_best-TDSPRAS musst du deine mit den Werten aus der STXH nehmen.

concatenate 'Text aus MD04 zu Material ' zt_best-matnr

into z_text respecting blanks.

CALL FUNCTION 'RECA_GUI_TEXTEDIT_POPUP'

EXPORTING

ID_TDOBJECT = zt_best-TDOBJECT

ID_TDNAME = zt_best-TDNAME

ID_TDID = zt_best-TDID

ID_TDSPRAS = zt_best-TDSPRAS

ID_ACTIVITY = '03'

ID_TITLE = Z_TEXT

EXCEPTIONS

TEXT_INCONSISTENT = 1

FOREIGN_LOCK = 2

OTHERS = 3.

Mit freundlichen Grüßen

Matthias Alpmann