2009 May 12 12:28 PM
Hello, a question.
SO10 I created in a standard text: "Facts: &v_df&"
With the READ_TEXT put that text in a table
But now I am interested to give a value to this variable: v_df
In Table I only have this sentence and is the first line.
The question is this, how to give a value to a variable that is inside a table?
I suppose that could also put a value in the variable since the READ_TEXT, or before putting on the table, but that's only guess.
If someone could tell me something please.
(I'm Spanish, sorry for language)
Thank you.
Hello, a question.
SO10 I created in a standard text: "Facts: &v_df&"
With the READ_TEXT put that text in a table
But now I am interested to give a value to this variable: v_df
In Table I only have this sentence and is the first line.
The question is this, how to give a value to a variable that is inside a table?
I suppose that could also put a value in the variable since the READ_TEXT, or before putting on the table, but that's only guess.
If someone could tell me something please.
(I'm Spanish, sorry for language)
Thank you.
2009 May 12 12:57 PM
After you have read the text then pass the contents into FM REPLACE_TEXTSYMBOL - assuming that your variable to replace is known to the local program. This FM will then replace all occurances from start to finish (via STARTLINE and ENDLINE parameters).
Thanks,
Pete
2009 May 12 1:24 PM
Thanks for your answer.
The code would look like:
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = 2
FORMATWIDTH = 72
language = sy-langu
linewidth = 132
option_dialog = ' '
replace_program = 'X'
replace_standard = 'X'
replace_system = 'X'
replace_text = 'X'
v_df = v_ci_name
startline = 1
IMPORTING
CHANGED =
TABLES
lines = i_datos.
She says that the variable v_df is unknown.
Thanks again.
2009 May 12 1:45 PM
Hi,
I think you may of mis-understood. The code would look like:
DATA: V_DF TYPE xxx.
* wherever the value is coming from - looks like v_ci_name in your code
V_DF = xxx.
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = <last line of i_datos>
language = sy-langu
linewidth = 132
option_dialog = ' '
replace_program = 'X'
replace_standard = 'X'
replace_system = 'X'
replace_text = 'X'
startline = 1
TABLES
lines = i_datos.The function has a fixed interface and works by looking at the program symbols of the calling program to perform the replacement. This is why V_DF would have to be declared as a normal data statement in the calling program.
2009 May 13 9:20 AM
Hi Pete Devereux.
I get an error like: call_function_conflict_leng
I am writing code I write:
TYPES: typ_datos TYPE text132. "132 characters
TYPES: typ_tab_datos TYPE STANDARD TABLE OF typ_datos.
DATA: i_datos TYPE typ_tab_datos.
i_datos has put a line: Try: &v_df&
DATA: v_df TYPE CHAR08.
v_df = 'hello'.
DESCRIBE TABLE i_datos LINES v_lineas_tabla.
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = v_lineas_tabla "<last line of i_datos>
language = sy-langu
linewidth = 132
option_dialog = ' '
replace_program = 'X'
replace_standard = 'X'
replace_system = 'X'
replace_text = 'X'
startline = '1'
TABLES
lines = i_datos.
Thank you
2009 May 13 11:15 AM
Sorry Pete Devereux, I was confused by the table and it gave me this error.
Now I get no error, but I did not write the value that I want in a variable v_df.
The standard text and the variable created in SO10.
SO10 I created in a standard text: "Try: &v_df&"
The REPLACE_TEXTSYMBOL gives me the option of:
replace_program
replace_standard
replace_system
replace_text
I think the variable is not one of these options.
v_df = 'hello'
If the startline = 0, he writes: Try: v_df & &
If the startline = 1, he writes: Try:
_I write:_
TYPES: typ_datos TYPE text132. "132 characters
TYPES: typ_tab_datos TYPE STANDARD TABLE OF typ_datos.
DATA: i_datos TYPE typ_tab_datos.
DATA: v_df TYPE CHAR08.
v_df = 'hello'.
DESCRIBE TABLE it_lines LINES v_lineas_tabla.
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = v_lineas_tabla "<last line of it_lines>
language = sy-langu
linewidth = 132
option_dialog = 'X'
replace_program = 'X'
replace_standard = 'X'
replace_system = 'X'
replace_text = 'X'
startline = 1
TABLES
lines = it_lines.
Thanks for the help.
2009 May 13 2:25 PM
Hi,
Thats strange - works ok on my system (ECC6). The full code that I have is:
DATA:
lt_text TYPE STANDARD TABLE OF tline,
v_df TYPE char30 VALUE 'text to be replaced'.
START-OF-SELECTION.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = 'ZREPLACE_SYMBOL'
object = 'TEXT'
TABLES
lines = lt_text.
DESCRIBE TABLE lt_text LINES sy-tfill.
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = sy-tfill
startline = 1
tables
lines = lt_text.The text symbol in my standard text is replaced by the content of v_df. Are you sure your symbol in the text is correct? Which editor are you using? I know if you use the front end editor (MS Word in my case) then typing in &v_df& will not be correct as it is not regognised as a symbol. You have to use "Insert Command" or Include Symbols/Program Symbols or switch editor (Goto/Change Editor) and use the old SAPScript editor - then you can just type your symbol.
Hope this helps.
2009 May 14 9:22 AM
Thank you very much for the trouble.
I have done what I indicated, but the variable does not change the value that I said.
Failure to recognize and change the variable value by a blank.
2009 May 14 11:05 AM
In that case I can only suggest two more alternatives.
1. Do it the old fashioned way:
REPLACE ALL OCCURRENCES OF '&V_DF&' IN TABLE lt_text WITH v_df.However, line wrapping may be a problem
2. Try and use the wrapper function TEXT_SYMBOL_REPLACE which in turn calls REPLACE_TEXTSYMBOL. Code for this would look something like:
DATA:
lt_text TYPE STANDARD TABLE OF tline,
ls_header TYPE thead,
v_df TYPE char30 VALUE 'text to be replaced'.
START-OF-SELECTION.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = 'ZREPLACE_SYMBOL'
object = 'TEXT'
IMPORTING
header = ls_header
TABLES
lines = lt_text.
CALL FUNCTION 'TEXT_SYMBOL_REPLACE'
EXPORTING
header = ls_header
TABLES
lines = lt_text.The wrapper function calls some other initialisation stuff that may help in your case. Worth giving a try,
Thanks,
Pete
2009 May 14 1:57 PM
Thank you very much.
The first option works fine, but they told me the same thing as you, it is bad form.
I have to do it the first way, but taking into account that there may be several variables.
Thank you very much for your help, really
2019 Nov 29 9:31 AM
Before calling REPLACE_TEXTSYMBOL you must call SET_TEXTSYMBOL_PROGRAM like that:
CALL FUNCTION 'SET_TEXTSYMBOL_PROGRAM'
EXPORTING
program = sy-repid
event = 'OPEN_FORM'.
DESCRIBE TABLE lt_lines LINES sy-tfill.
CALL FUNCTION 'REPLACE_TEXTSYMBOL'
EXPORTING
endline = sy-tfill
startline = 1
TABLES
lines = lt_lines.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |