SAP Jobsuche bei DV-Treff
MichaelSAP
vor 16 Jahre

Hallo Forum

Ich bin auf der Suche nach einer möglichkeit, den Grunddatentext von selektierbaren Materialstammes in Excel auszulesen. Das ganze geht ja nicht per Query, da der Text nicht in einer vom Query Ansprechbare Tabelle liegt. Hat jemand von Euch eine Lösung dafür, oder wie habt Ihr es gelöst? (Standardreport, ABAP)... oder interessiert das Euch gar nicht? Wie pflegt Ihr denn den Inhalt dieser Texte?

Vielen Dank

Förderer

Saute
vor 16 Jahre

Hallo Michael,
hierfür kreisen in den Foren mehrere Reports, die über den Funktionsbaustein Texte auslesen und auch ändern.
Hier mal einer, den ich gefunden und bei uns implementiert habe (er kann jegliche Langtexte auslesen und ACHTUNG: auch Suchen, ersetzen und wieder zurückspeichern):

REPORT ZPD_LANGTEXT.

*&---------------------------------------------------------------------*

*& Report ZPD_LANGTEXT

*& Auslesen von Langtexten über Funktionsbaustein READ_TEXT

*&---------------------------------------------------------------------*

*& Frank Sauter

*& Version 1.0 2008-02-20

*&---------------------------------------------------------------------*

TABLES: thead, itcpo.

DATA:

BEGIN OF forms OCCURS 10,

name LIKE stxh-tdname,

END OF forms,

len_find TYPE i,

len_2 TYPE i,

len_text TYPE i,

len_rest TYPE i,

len_replace TYPE i,

fdpos TYPE i,

replaced(300),

function,

string_replaced,

ausgeben,

thead_new LIKE thead,

tstxh LIKE stxh OCCURS 0 WITH HEADER LINE,

xtlines LIKE tline OCCURS 0 WITH HEADER LINE.

FIELD-SYMBOLS:

<replace>,

<vorher>,

<nachher>,

<findstr>,

<col>.

*-- Selektionsbild --*

SELECTION-SCREEN BEGIN OF BLOCK txt WITH FRAME TITLE text-001.

SELECT-OPTIONS:

name FOR tstxh-tdname DEFAULT 'Z*' OPTION cp,

id FOR tstxh-tdid DEFAULT 'ST '.

PARAMETERS:

object LIKE tstxh-tdobject DEFAULT 'TEXT'.

SELECT-OPTIONS:

s_spras FOR tstxh-tdspras DEFAULT sy-langu NO INTERVALS.

SELECTION-SCREEN END OF BLOCK txt.

SELECTION-SCREEN BEGIN OF BLOCK suc WITH FRAME TITLE text-002.

PARAMETERS:

find(50) LOWER CASE,

replace(50) LOWER CASE.

SELECTION-SCREEN END OF BLOCK suc.

SELECTION-SCREEN BEGIN OF BLOCK par WITH FRAME TITLE text-003.

PARAMETERS:

del AS CHECKBOX, "leerzeilen löschen??

update AS CHECKBOX, "Sichern?

pagebrk AS CHECKBOX, "Seitenumbruch

nur_fs AS CHECKBOX. "Nur Fundstellen anzeigen?

SELECTION-SCREEN END OF BLOCK par.

START-OF-SELECTION.

len_find = strlen( find ).

len_replace = strlen( replace ).

* assign mit Längenangabe ist nötig, da sonst beim Replace der Text

* sowie die Leerzeichen bis zum Variablenende mit ersetzt werden :-)

IF len_replace > 0.

ASSIGN replace(len_replace) TO <replace>.

ENDIF.

*--> Lesen aller Texte <--*

SELECT * FROM stxh into table tstxh

WHERE tdobject = object

AND tdname IN name

AND tdid IN id

AND tdspras IN s_spras.

LOOP AT tstxh.

REFRESH xtlines.

*--> Lesen der gesammelten Texte <--*

CALL FUNCTION 'READ_TEXT'

EXPORTING

id = tstxh-tdid

language = tstxh-tdspras

name = tstxh-tdname

object = tstxh-tdobject

IMPORTING

header = thead

TABLES

lines = xtlines

EXCEPTIONS

OTHERS = 8.

CHECK sy-subrc = 0.

*-- Prüfen, ob Text angezeigt werden soll --*

IF find NE space.

ausgeben = ' '.

LOOP AT xtlines.

IF xtlines-tdline CS find.

ausgeben = 'X'.

EXIT.

ENDIF.

ENDLOOP.

ELSE.

ausgeben = 'X'.

ENDIF.

*-- Kopfinfo ausgeben --*

IF ausgeben = 'X'.

IF pagebrk = 'X'.

NEW-PAGE.

ENDIF.

FORMAT COLOR OFF.

WRITE AT /1(sy-linsz) sy-uline.

WRITE: / 'Text:', tstxh-tdname(50), 'in Sprache', tstxh-tdspras.

WRITE AT /1(sy-linsz) sy-uline.

*--> Ausgabe der Texte <--*

CLEAR string_replaced.

LOOP AT xtlines.

IF xtlines-tdline IS INITIAL AND del = 'X'.

DELETE xtlines.

string_replaced = 'X'.

ELSEIF xtlines-tdline CS find AND find NE space.

len_text = strlen( xtlines-tdline ).

fdpos = sy-fdpos.

WRITE / xtlines-tdformat COLOR 2.

IF replace NE space.

REPLACE find LENGTH len_find

WITH <replace> INTO xtlines-tdline.

string_replaced = 'X'.

MODIFY xtlines.

PERFORM ausgabe.

ELSE.

len_replace = len_find.

PERFORM ausgabe.

ENDIF.

ELSE.

CHECK nur_fs = space.

WRITE / xtlines-tdformat COLOR 2.

CASE xtlines-tdformat.

WHEN '/:'.

*-- SAP-Script: Befehl

WRITE xtlines-tdline(77) INTENSIFIED OFF.

WHEN '/E'.

*-- SAP-Script: Formular-Element

WRITE xtlines-tdline(77) COLOR 6.

WHEN '/W'.

*-- SAP-Script: Window

WRITE xtlines-tdline(77) COLOR 5.

WHEN OTHERS.

WRITE xtlines-tdline(77).

ENDCASE.

ENDIF.

ENDLOOP.

ENDIF.

*--> Speichern der Texte wenn im Text ersetzt wurde <--*

IF string_replaced = 'X' AND update = 'X'.

CALL FUNCTION 'SAVE_TEXT'

EXPORTING

header = thead

savemode_direct = 'X'

IMPORTING

function = function

newheader = thead_new

TABLES

lines = xtlines

EXCEPTIONS

OTHERS = 5.

ENDIF.

ENDLOOP.

 

*---------------------------------------------------------------------*

* FORM AUSGABE *

*---------------------------------------------------------------------*

FORM ausgabe.

UNASSIGN: <vorher>, <nachher>, <findstr>.

IF fdpos > 0.

ASSIGN xtlines-tdline(fdpos) TO <vorher>.

ELSE.

ASSIGN space TO <vorher>.

ENDIF.

ASSIGN xtlines-tdline+fdpos(len_replace) TO <findstr>.

ADD len_replace TO fdpos.

len_2 = 132 - fdpos.

ASSIGN xtlines-tdline+fdpos(len_2) TO <nachher>.

WRITE: <vorher> NO-GAP,

<findstr> COLOR 3 NO-GAP,

<nachher>.

ENDFORM.

Gruß Saute


Leiter Digitale Prozessoptimierung & IT

Anwendungsbetreuer PP / PM / PDM / VC / G.I.B DC

SAP ECC 6.0 EHP8

MichaelSAP
vor 16 Jahre
hi saute

vielen dank für den code. habe ich ihn mal übernommen und laufen lassen. klappt soweit eigentlich gut, aber etwas versteh ich vielleicht nicht ganz richtig. dieser report liest di textobjekte aus. ich soltle aber eigentlich den grunddatentext eines materialstammes haben (materialstamm -> zusatzdaten -> grunddatentext). das kriege ich aber mit dem report nicht raus, oder? das ziel wäre eigentlich, dass der grunddatentext zu einer materialnummer ausgelesen werden kann.

trotzdem ist dieser report auch sehr nützlich, vereinfacht ein paar andere sachen :-)

gruss

Saute
vor 16 Jahre
Hallo,

doch, er kann auch den Grunddatentext auslesen.

Du brauchst die Selektionsparameter

Textname 000000000000278168 --> Materialnummer unkonvertiert mit allen stellen (zu sehen nach doppelklick auf Eintrag z.B. in SE16N)

Sprache DE --> oder ähnlich

Text-ID GRUN --> Grunddatentext

Textobjekt MATERIAL --> Materialtexte Einkauf/Lagerung

Diese Parameter findest du, wenn du den entsprechenden Text im Langtext-Editor aufmachst und dann im Menü auf "Springen --> Kopf ..." gehst.

Gruß

Frank


Leiter Digitale Prozessoptimierung & IT

Anwendungsbetreuer PP / PM / PDM / VC / G.I.B DC

SAP ECC 6.0 EHP8

MichaelSAP
vor 16 Jahre
hi

mit diesen angaben klappt es wunderbar. weisst du zufällig, was die maximale anzahl der gleichzeitig eingebaren materialnummern ist? kannst du mir noch schnell den unterschied sagen, was der stern(*) und der slash (/) am anfang einer zeile bedeutet? bei unserem grunddatentext der mehrzeilig ist, wird ein stern und plötzlich ein slash angezeigt.

danke & gruss aus der em stadt zürich 🙂