11-14-2007 10:39 AM
Hi Gurus,
I want to upload the text for sales text view.So Iam uploading 132 characters by using SAVE_TEXT Fm ..but i want to upload more than 600 characters ..how can i do that ..can any one give me an idea ....more than 132 chars the function module how it works ..
thx & Regards,
sunder
11-14-2007 11:16 AM
Hi,
You can use this code to wrap the text and use internal table i_tlines for the text update.I have solved this issue like this.
FORM wrap_text USING l_v_lngtxt TYPE char600.
DATA : l_i_outlines TYPE TABLE OF ehsww_text,
l_wa_outlines TYPE ehsww_text.
CLEAR: l_wa_outlines,
wa_tlines.
REFRESH: l_i_outlines,
i_tlines.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
textline = l_v_lngtxt
delimiter = k_eol
outputlen = 132
TABLES
out_lines = l_i_outlines
EXCEPTIONS
outputlen_too_large = 1
OTHERS = 2.
IF sy-subrc EQ 0.
LOOP AT l_i_outlines INTO l_wa_outlines.
IF l_wa_outlines NE space.
wa_tlines-txline = l_wa_outlines-text.
APPEND wa_tlines TO i_tlines.
ENDIF.
CLEAR wa_tlines.
APPEND wa_tlines TO i_tlines.
ENDLOOP.
ENDIF.
ENDFORM. " wrap_text
Reward if helpful.
Regards
Shibin
11-14-2007 10:47 AM
Hi
actually function module has limitation of 255 characters, but we can upload it more than that text as much as u can, by incrementing the text
check the code below to upload text more than 255 characters.bold letters indicates logic for incrementing. understand the logic do modifications accordingly in ur program.
DATA: BEGIN OF itab OCCURS 0,
asnum LIKE asmd-asnum, " Service No
text(5000) TYPE c, " Long Text
END OF itab.
*DATA: itab1 LIKE itab OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF itab1 OCCURS 0,
asnum LIKE asmd-asnum, " Service No
sequ type i, " Text Sequence
text(5000) TYPE c, " Long Text
END OF itab1.
To create Long Text lines for CREATE_TEXT function module
DATA:BEGIN OF dt_lines OCCURS 0.
INCLUDE STRUCTURE tline. " Long Text
DATA:END OF dt_lines.
Variable declarations for CREATE_TEXT function module
DATA : dl_name TYPE thead-tdname, " Object Name
dl_lan TYPE thead-tdspras. " Language
Constants
Object ID for Long Text of Service Master
CONSTANTS:c_best TYPE thead-tdid VALUE 'LTXT',
c_material TYPE thead-tdobject VALUE 'ASMD'. " Object
for file splitting.
DATA: start TYPE i,
len TYPE i VALUE 92,
totlen TYPE i,
n TYPE i.
PARAMETERS p_file LIKE rlgrap-filename."input file
At selection-screen on Value Request for file Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
Get the F4 Values for the File
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
Start Of Selection
START-OF-SELECTION.
*To Upload Flat file
CALL FUNCTION 'UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7.
*******here is the logic to increment the text as desired*****
LOOP AT itab.
itab1-asnum = itab-asnum.
CLEAR: totlen,n, start.
totlen = STRLEN( itab-text ).
n = totlen / len.
n = n + 1.
DO n TIMES.
itab1-text = itab-text+start(len).
itab1-sequ = sy-index.
start = start + len.
APPEND itab1.
ENDDO.
ENDLOOP.
delete itab1 where text is initial.
SORT itab1 BY asnum sequ.
LOOP AT itab1.
dt_lines-tdformat = '*'.
dt_lines-tdline = itab1-text.
APPEND dt_lines.
Call the Function Module to Create Text
AT END OF asnum.
dl_lan = sy-langu.
WRITE : / itab-asnum.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab1-asnum
IMPORTING
output = itab1-asnum.
MOVE itab1-asnum TO dl_name.
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = c_best
flanguage = dl_lan
fname = dl_name
fobject = c_material
save_direct = 'X'
fformat = '*'
TABLES
flines = dt_lines
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE:/ 'Long Text Creation failed for Service No'(001),
itab1-asnum.
ELSE.
WRITE:/ 'Long Text Created Successfully for Service No'(002),
itab1-asnum.
ENDIF.
REFRESH dt_lines.
ENDAT.
ENDLOOP.
Assuming your falt file will have the asset number and text.
DATA: BEGIN OF ITAB1 OCCURS 0,
NUMBER(12),
TEXT(132),
END OF ITAB1.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB1
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
ENDIF.
DATA: HEADER LIKE THEAD.
DATA: LINES TYPE STANDARD TABLE OF TLINE WITH HEADER LINE.
LOOP AT ITAB1.
AT NEW NUMBER.
HEADER-TDOBJECT = <OBJECT>.
HEADER-TDID = <ID>.
HEADER-NAME = <NAME>.
ENDAT.
move itab1-text to lines-tdline.
append lines.
AT END OF NUMBER.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
HEADER = HEADER
INSERT = ' '
SAVEMODE_DIRECT = 'X'
TABLES
LINES = LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
text update succesful
ENDIF.
clear lines.
refresh lines.
ENDAT.
11-14-2007 11:16 AM
Hi,
You can use this code to wrap the text and use internal table i_tlines for the text update.I have solved this issue like this.
FORM wrap_text USING l_v_lngtxt TYPE char600.
DATA : l_i_outlines TYPE TABLE OF ehsww_text,
l_wa_outlines TYPE ehsww_text.
CLEAR: l_wa_outlines,
wa_tlines.
REFRESH: l_i_outlines,
i_tlines.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
textline = l_v_lngtxt
delimiter = k_eol
outputlen = 132
TABLES
out_lines = l_i_outlines
EXCEPTIONS
outputlen_too_large = 1
OTHERS = 2.
IF sy-subrc EQ 0.
LOOP AT l_i_outlines INTO l_wa_outlines.
IF l_wa_outlines NE space.
wa_tlines-txline = l_wa_outlines-text.
APPEND wa_tlines TO i_tlines.
ENDIF.
CLEAR wa_tlines.
APPEND wa_tlines TO i_tlines.
ENDLOOP.
ENDIF.
ENDFORM. " wrap_text
Reward if helpful.
Regards
Shibin