12.3.11

SAP Note 24457 - Missing BOM long texts after client copy

Symptom:

After a client copy, all texts in the bill of material cannot be accessed.

Cause and prerequisites

Error in the long text key

Solution
Write the following report and start it in the new client where you only specify the source client as parameter.

If the texts have already been copied with program RSTXTCPY, the source client is = new client. Otherwise, the client from which the client copy was carried out is to be specified as source client.
PROGRAM ZZTXTCPY.

DATA: HLP_COUNT TYPE I.

*-- Textheader
DATA: BEGIN OF THEAD_TAB OCCURS 0 .
INCLUDE STRUCTURE THEAD.
DATA: END OF THEAD_TAB.
*-- Textlines
DATA: BEGIN OF TLINE_TAB OCCURS 0 .
INCLUDE STRUCTURE TLINE.
DATA: END OF TLINE_TAB.
*-- Textnamen in Mandant plus Rest einteilen
DATA: BEGIN OF TDNAME_NEW,
TDMANDT LIKE SY-MANDT,
TDREST(67) TYPE C,
END OF TDNAME_NEW.
*-- Alter Textheader
DATA: BEGIN OF THEAD_SAV.
INCLUDE STRUCTURE THEAD.
DATA: END OF THEAD_SAV.

DATA: OBJECT LIKE THEAD-TDOBJECT VALUE 'BOM '.

PARAMETER: QUELLMDT LIKE SY-MANDT.

*-- Lesen und Umsetzen der Langtextschlüssel
REFRESH THEAD_TAB .
THEAD_SAV-TDID = '*' .
THEAD_SAV-TDNAME = '*' .
THEAD_SAV-TDSPRAS = '*' .
CALL FUNCTION 'SELECT_TEXT'
EXPORTING
CLIENT = QUELLMDT
DATABASE_ONLY = 'X'
ID = THEAD_SAV-TDID
LANGUAGE = THEAD_SAV-TDSPRAS
NAME = THEAD_SAV-TDNAME
OBJECT = OBJECT
TABLES
SELECTIONS = THEAD_TAB.

CLEAR HLP_COUNT.
LOOP AT THEAD_TAB.
HLP_COUNT = HLP_COUNT + 1.
REFRESH TLINE_TAB.
*---- Neuen Textnamen setzen
TDNAME_NEW = THEAD_TAB-TDNAME.
*---- Mandant setzen
TDNAME_NEW-TDMANDT = SY-MANDT.

CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = QUELLMDT
ID = THEAD_TAB-TDID
LANGUAGE = THEAD_TAB-TDSPRAS
NAME = THEAD_TAB-TDNAME
OBJECT = THEAD_TAB-TDOBJECT
IMPORTING
HEADER = THEAD_SAV
TABLES
LINES = TLINE_TAB
EXCEPTIONS
ID = 01
LANGUAGE = 02
NAME = 03
NOT_FOUND = 04
OBJECT = 05
REFERENCE_CHECK = 06.

IF SY-SUBRC EQ 0.
THEAD_SAV-TDNAME = TDNAME_NEW.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = THEAD_SAV
INSERT = 'I'
SAVEMODE_DIRECT = 'X'
TABLES
LINES = TLINE_TAB
EXCEPTIONS
ID = 01
LANGUAGE = 02
NAME = 03
OBJECT = 04.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = THEAD_TAB-TDID
LANGUAGE = THEAD_TAB-TDSPRAS
NAME = THEAD_TAB-TDNAME
OBJECT = THEAD_TAB-TDOBJECT
SAVEMODE_DIRECT = 'X'
EXCEPTIONS
NOT_FOUND = 01.
ENDIF.
ENDIF.
IF HLP_COUNT EQ 20.
COMMIT WORK.
CLEAR HLP_COUNT.
ENDIF.
ENDLOOP.

No comments:

Post a Comment