Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BDC - Sales Text- Urgent

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

2 REPLIES 2

Former Member
0 Kudos

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.

Former Member
0 Kudos

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