08-21-2012 12:59 PM
i m using sav_text function as below.. but my long text is not visible in tcode CT04.. when i select characteristics and double click on individual values in value tab.. a text editor gets open.. but text is not visible.. and sometimes i get error "No documentation exists"
CLEAR WA_HEAD.
SORT IT_E1CAWNM BY SEGNUM.
SORT IT_E1CAWTM BY SEGNUM.
SORT IT_E1TXTL1 BY SEGNUM.
LOOP AT IT_E1CAWNM INTO WA_E1CAWNM.
CLEAR LV_TABIX.
LV_TABIX = SY-TABIX.
CLEAR WA_HEAD.
WA_HEAD-TDOBJECT = 'FEATURE'.
CONCATENATE 'JAG_OTH_S' 'XYZ1' INTO WA_HEAD-TDNAME SEPARATED BY '_'.
WA_HEAD-TDID = 'VALU'.
WA_HEAD-TDTITLE = 'TEST'.
WA_HEAD-TDFORM = 'SYSTEM'.
WA_HEAD-TDFUSER = SY-UNAME.
WA_HEAD-TDVERSION = '00001'.
WA_HEAD-TDFRELES = '700'.
WA_HEAD-TDFDATE = SY-DATUM.
WA_HEAD-TDLUSER = SY-UNAME.
WA_HEAD-TDLDATE = SY-DATUM.
WA_HEAD-TDLINESIZE = '999'.
WA_HEAD-TDTXTLINES = '00001'.
WA_HEAD-TDMACODE1 = 'WE19SAPMSED7'.
READ TABLE IT_E1CAWTM INTO WA_E1CAWTM INDEX LV_TABIX.
IF SY-SUBRC = 0.
WA_HEAD-TDSPRAS = WA_E1CAWTM-SPRAS.
REFRESH IT_STXH.
SELECT TDOBJECT
TDNAME
TDID
TDSPRAS
FROM STXH
CLIENT SPECIFIED
INTO TABLE IT_STXH
WHERE MANDT = SY-MANDT
AND TDOBJECT = WA_HEAD-TDOBJECT
AND TDNAME = WA_HEAD-TDNAME
AND TDID = WA_HEAD-TDID
AND TDSPRAS = WA_E1CAWTM-SPRAS.
IF SY-SUBRC = 0.
DELETE FROM STXH CLIENT SPECIFIED
WHERE MANDT = SY-MANDT
AND TDOBJECT = WA_HEAD-TDOBJECT
AND TDNAME = WA_HEAD-TDNAME
AND TDID = WA_HEAD-TDID
AND TDSPRAS = WA_E1CAWTM-SPRAS.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
CLEAR WA_LINES.
REFRESH GT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = WA_HEAD-TDID
LANGUAGE = WA_HEAD-TDSPRAS
NAME = WA_HEAD-TDNAME
OBJECT = WA_HEAD-TDOBJECT
ARCHIVE_HANDLE = 0
LOCAL_CAT = ' '
IMPORTING
HEADER = WA_HEAD
TABLES
LINES = GT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
READ TABLE IT_E1TXTL1 INTO WA_E1TXTL1 INDEX LV_TABIX.
IF SY-SUBRC = 0.
CLEAR WA_LINES.
WA_LINES-TDFORMAT = '*'.
WA_LINES-TDLINE = WA_E1TXTL1-TDLINE.
APPEND WA_LINES TO GT_LINES.
CLEAR WA_E1TXTL1.
ENDIF.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = WA_HEAD
INSERT = C_MARK
SAVEMODE_DIRECT = C_MARK
TABLES
LINES = GT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
OBJECT = WA_HEAD-TDOBJECT
NAME = WA_HEAD-TDNAME
ID = WA_HEAD-TDID
LANGUAGE = WA_HEAD-TDSPRAS
SAVEMODE_DIRECT = 'X'
KEEP = ' '
LOCAL_CAT = ' '.
COMMIT WORK.
ENDIF.
CLEAR : WA_E1CAWNM,WA_E1CAWTM,WA_E1TXTL1.
ENDLOOP.
08-21-2012 1:33 PM
hi Santhsh,
it just straight forward, please have a look at my code which i have done and works when i update the text.
before you use SAVE_TEXT get the HEADER DETAILS. i just used and it is working i dint even use Commit work still works.
let me know if you have any issues.
data : x_header TYPE thead.
DATA : l_text_tab LIKE tline OCCURS 100 WITH HEADER LINE.
x_header-tdobject = 'C_SHES_INP'.
x_header-tdname = lt_name . "
x_header-tdid = '0001'.
x_header-tdspras = 'E'.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = X_HEADER
* INSERT = ' '
SAVEMODE_DIRECT = 'X'
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = l_text_tab"IT_TLINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
*--ERROR.
ELSE.
*--SUCCESS.
ENDIF.
08-21-2012 1:12 PM
Hi Santosh,
Better try with CREATE_TEXT function module. This may solve your problem.
Regards,
Bharathkumar.MG
08-21-2012 1:33 PM
hi Santhsh,
it just straight forward, please have a look at my code which i have done and works when i update the text.
before you use SAVE_TEXT get the HEADER DETAILS. i just used and it is working i dint even use Commit work still works.
let me know if you have any issues.
data : x_header TYPE thead.
DATA : l_text_tab LIKE tline OCCURS 100 WITH HEADER LINE.
x_header-tdobject = 'C_SHES_INP'.
x_header-tdname = lt_name . "
x_header-tdid = '0001'.
x_header-tdspras = 'E'.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = X_HEADER
* INSERT = ' '
SAVEMODE_DIRECT = 'X'
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = l_text_tab"IT_TLINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
*--ERROR.
ELSE.
*--SUCCESS.
ENDIF.
08-21-2012 1:48 PM
i m not understanding how to get the TDNAME.. because when i go to CT04 .. and manually create a text.. it shows the uniform no like ..'00000013090002' .. i m not getting from where system picks this no when we manually create a long text.
08-21-2012 2:06 PM
Hi Santhosh,
TDNAME is nothing but the name of particular characteristics.
From CABN table you can get the value for particular characteristic by giving input with characteristic name in ATNAM field and you can get the value of that from ATINN field.
For example: ATINN - 0000000878 and ATNAM - SAMPLE.
Then concatenate this ATINN value with characteristic series no. 0001(This will change depends upon your no. of characteristics ) to TDNAME.
So finally TDNAME = 00000008780001.
This may solve your problem. Try this and let me know.
Regards,
Bharathkumar.MG
08-21-2012 3:05 PM
see by the method of Bharathkumar.. text is getting created. but for every value in CT04 text name remains the same.. my text is getting created but in CT04 when i double click on any values.. it is not visible.. my code is below..
CLEAR WA_HEAD.
CLEAR LV_TDTXTLINES.
LV_TDTXTLINES = '0'.
SORT IT_E1CAWNM BY SEGNUM.
SORT IT_E1CAWTM BY SEGNUM.
SORT IT_E1TXTL1 BY SEGNUM.
LOOP AT IT_E1CAWNM INTO WA_E1CAWNM.
CLEAR LV_TABIX.
LV_TABIX = SY-TABIX.
CLEAR WA_HEAD.
WA_HEAD-TDOBJECT = 'FEATURE'.
WA_HEAD-TDID = 'VALU'.
LV_TDTXTLINES = LV_TDTXTLINES + 1.
CONCATENATE LV_ATINN LV_TDTXTLINES INTO WA_HEAD-TDNAME.
READ TABLE IT_E1CAWTM INTO WA_E1CAWTM INDEX LV_TABIX.
IF SY-SUBRC = 0.
WA_HEAD-TDSPRAS = WA_E1CAWTM-SPRAS.
ENDIF.
CLEAR WA_LINES.
REFRESH GT_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
CLIENT = SY-MANDT
ID = WA_HEAD-TDID
LANGUAGE = WA_HEAD-TDSPRAS
NAME = WA_HEAD-TDNAME
OBJECT = WA_HEAD-TDOBJECT
TABLES
LINES = GT_LINES
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.
READ TABLE IT_E1TXTL1 INTO WA_E1TXTL1 INDEX LV_TABIX.
IF SY-SUBRC = 0.
CLEAR WA_LINES.
WA_LINES-TDFORMAT = '*'.
WA_LINES-TDLINE = WA_E1TXTL1-TDLINE.
APPEND WA_LINES TO GT_LINES.
CLEAR WA_E1TXTL1.
ENDIF.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = WA_HEAD
SAVEMODE_DIRECT = C_MARK
TABLES
LINES = GT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
OBJECT = WA_HEAD-TDOBJECT
NAME = WA_HEAD-TDNAME
ID = WA_HEAD-TDID
LANGUAGE = WA_HEAD-TDSPRAS
SAVEMODE_DIRECT = 'X'
KEEP = ' '
LOCAL_CAT = ' '.
COMMIT WORK.
ENDIF.
ELSE.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = WA_HEAD
INSERT = C_MARK
SAVEMODE_DIRECT = C_MARK
TABLES
LINES = GT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
OBJECT = WA_HEAD-TDOBJECT
NAME = WA_HEAD-TDNAME
ID = WA_HEAD-TDID
LANGUAGE = WA_HEAD-TDSPRAS
SAVEMODE_DIRECT = 'X'
KEEP = ' '
LOCAL_CAT = ' '.
COMMIT WORK.
ENDIF.
ENDIF.
CLEAR : WA_E1CAWNM,WA_E1CAWTM,WA_E1TXTL1.
ENDLOOP.
08-22-2012 6:56 AM
08-22-2012 9:36 AM
no my problem is not sorted..
whenever i m creating text it is getting saved in table STXH and STXL...but not visible in tcode CT04
08-22-2012 10:14 AM
Hi Santhosh,
I also tried the same thing, but the result is same as yours. It is getting stored in STXH table and also i can read the text through READ_TEXT function module but it is not visible in CT04 transaction.
Lets wait for some other expert answers.
Regards,
Bharathkumar.MG
08-22-2012 11:15 AM
i have solved the problem.. but code is very poorly written.. suggetions r welcome
SORT IT_E1CAWNM BY SEGNUM.
SORT IT_E1CAWTM BY SEGNUM.
SORT IT_E1TXTL1 BY SEGNUM.
LOOP AT IT_E1CAWNM INTO WA_E1CAWNM.
READ TABLE IT_E1CAWTM INTO WA_E1CAWTM INDEX LV_TABIX.
IF SY-SUBRC = 0.
REFRESH : IT_RETURN,GT_LINES.
CALL FUNCTION 'BAPI_CHARACT_GETLONGTEXT'
EXPORTING
CHARACTNAME = WA_ATNAM-LOW
VALUE_CHAR = WA_E1CAWNM-ATWRT
LANGUAGE_ISO = 'EN'
TABLES
LONGTEXT = GT_LINES
RETURN = IT_RETURN.
IF IT_RETURN[] IS INITIAL.
IF GT_LINES[] IS NOT INITIAL.
READ TABLE IT_E1TXTL1 INTO WA_E1TXTL1 INDEX LV_TABIX.
IF SY-SUBRC = 0.
CLEAR WA_LINES.
WA_LINES-TDLINE = WA_E1TXTL1-TDLINE.
APPEND WA_LINES TO GT_LINES.
CLEAR WA_E1TXTL1.
ENDIF.
CALL FUNCTION 'BAPI_CHARACT_ADDLONGTEXT'
EXPORTING
CHARACTNAME = WA_ATNAM-LOW
VALUE_CHAR = WA_E1CAWNM-ATWRT
KEYDATE = SY-DATUM
LANGUAGE_ISO = 'EN'
TABLES
LONGTEXT = GT_LINES
RETURN = IT_RETURN1.
LOOP AT IT_RETURN1 ASSIGNING <FS_RETURN1> WHERE TYPE = 'I' OR TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
EXIT.
ENDLOOP.
ENDIF.
ENDIF.
READ TABLE IT_RETURN ASSIGNING <FS_RETURN> WITH KEY TYPE = 'I' ID = 'C1' NUMBER = '020'.
IF SY-SUBRC = 0.
REFRESH : IT_RETURN1,GT_LINES.
READ TABLE IT_E1TXTL1 INTO WA_E1TXTL1 INDEX LV_TABIX.
IF SY-SUBRC = 0.
CLEAR WA_LINES.
WA_LINES-TDLINE = WA_E1TXTL1-TDLINE.
APPEND WA_LINES TO GT_LINES.
CLEAR WA_E1TXTL1.
ENDIF.
CALL FUNCTION 'BAPI_CHARACT_ADDLONGTEXT'
EXPORTING
CHARACTNAME = WA_ATNAM-LOW
VALUE_CHAR = WA_E1CAWNM-ATWRT
KEYDATE = SY-DATUM
LANGUAGE_ISO = 'EN'
TABLES
LONGTEXT = GT_LINES
RETURN = IT_RETURN1.
LOOP AT IT_RETURN1 ASSIGNING <FS_RETURN1> WHERE TYPE = 'I' OR TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
EXIT.
ENDLOOP.
ENDIF.
ENDIF.
CLEAR : WA_E1CAWNM,WA_E1CAWTM,WA_E1TXTL1.
ENDLOOP.
08-22-2012 11:31 AM
Hi Santhosh,
Thanks for your reply. Code is also fine.
It is working fine through above mentioned BAPI. It is very useful.
Regards,
Bharathkumar.MG
08-22-2012 12:44 PM