2008 Sep 04 2:12 PM
Hi!
I hope it will be easy for you
Each program has 3 text types: selection texts, text symbols and list headers.
I know text symbols can addressed from the code this way: TEXT-001, or TEXT-abc. Fine.
Is there a way to retrieve the selection texts from the code?
For example if I have a select-option S_MATNR FOR mara-matnr. it is checked to read from the dictionary.
I would like to use it's text in the source code ("material number"). How can retrieve this text in the code ?
Thank you
Tamá
2008 Sep 04 2:19 PM
If you can take a look at the data element for MATNR in SE11, you will be able to find the tab FIELD label. The same text will be fetched for the select-option when you tick the checkbox in selection texts.
This info is stored in table DD04T. To fetch the data give the ROLLNAME as MATNR and DDLANGUAGE as EN
Hi!
I hope it will be easy for you
Each program has 3 text types: selection texts, text symbols and list headers.
I know text symbols can addressed from the code this way: TEXT-001, or TEXT-abc. Fine.
Is there a way to retrieve the selection texts from the code?
For example if I have a select-option S_MATNR FOR mara-matnr. it is checked to read from the dictionary.
I would like to use it's text in the source code ("material number"). How can retrieve this text in the code ?
Thank you
Tamá
2008 Sep 04 2:19 PM
If you can take a look at the data element for MATNR in SE11, you will be able to find the tab FIELD label. The same text will be fetched for the select-option when you tick the checkbox in selection texts.
This info is stored in table DD04T. To fetch the data give the ROLLNAME as MATNR and DDLANGUAGE as EN
2008 Sep 04 2:20 PM
You may like to write a selet query to DD04T.
All short, medium and long texts are stored here.
Thanks
Kiran
2008 Sep 04 2:27 PM
I would like to read it from the selection texts, because it might be different from the data dictionary.
2008 Sep 04 2:29 PM
use this logic to get this texts
data: texte_request type ref to cl_wb_request,
l_object_name type seu_objkey,
l_inclname type seu_objkey,
l_object_type type seu_objtyp,
l_operation type seu_action,
l_WB_DATA_CONTAINER type REF TO CL_WB_DATA_CONTAINER,
l_textpool_state type ref to cl_wb_textpool_state,
source_instance type ref to cl_wb_source,
l_context type ref to cl_wb_context,
l_context_program type ref to cl_wb_program_context,
l_wb_todo_request type ref to cl_wb_request,
l_lines type sy-index,
l_index type sy-index,
progdir_entry type progdir,
rahmen type seu_objkey.
data: l_editor_state type editorstat.
data: begin of maintab occurs 10,
name like trdir-name,
end of maintab.
create object l_textpool_state.
case type.
when sedi_fc_list_top.
l_textpool_state->texttype = 'H'.
when sedi_fc_sel_texts.
l_textpool_state->texttype = 'S'.
when sedi_fc_num_texts.
l_textpool_state->texttype = 'I'.
endcase.
call method abap_pgeditor->abap_editor->get_source_instance
importing
source_object = source_instance.
progdir_entry = source_instance->l_progdir_entry.
l_context = abap_pgeditor->abap_editor->context.
l_context_program ?= l_context->context_object.
rahmen = l_context_program->rahmen.
l_inclname = l_context_program->include.
* nur zur Sicherheit, eigentlich sollte CONTEXT gefüllt sein
if l_inclname eq space.
call method abap_pgeditor->abap_editor->get_editor_state
importing
state = l_editor_state.
l_inclname = l_editor_state-edinclude.
endif.
l_object_name = rahmen.
l_object_type = swbm_c_type_prg_textelement.
if progdir_entry-subc = 'I' or
rahmen eq space.
* Bestimmung Rahmenprogramm
call function 'RS_GET_MAINPROGRAMS'
exporting
dialog = 'X'
fulltab = 'X'
name = l_inclname
importing
number_of_mainprograms = l_lines
tindex = l_index
tables
mainprograms = maintab
exceptions
cancelled = 01.
if sy-subrc ne 0.
exit.
else.
if l_lines > 0.
read table maintab index l_index.
l_object_name = maintab-name.
else.
l_object_name = l_inclname.
endif.
endif.
else.
l_object_name = rahmen.
endif.
if abap_pgeditor->abap_editor->edit-app_disp = space or
abap_pgeditor->abap_editor->edit-app_disp = 'A'.
l_operation = swbm_c_op_edit.
else.
l_operation = swbm_c_op_display.
endif.
create object texte_request
exporting p_object_type = l_object_type
p_object_name = l_object_name
p_object_state = l_textpool_state
p_operation = l_operation.
call method
abap_pgeditor->if_wb_program~wb_manager->request_tool_access
exporting
p_wb_request = texte_request
importing p_wb_todo_request = l_wb_todo_request
changing
P_WB_DATA_CONTAINER = l_WB_DATA_CONTAINER
exceptions action_cancelled = 1
no_tool_found = 2.
if sy-subrc = 0 and not l_wb_todo_request is initial.
if l_wb_todo_request->operation = swbm_c_op_end.
set screen 0. leave screen.
else.
perform process_int_nav_request using l_wb_todo_request.
endif.
endif.
2008 Sep 04 2:34 PM
can you do some thing like this..
REPORT ZTEST_OPTION_01.
data: matnr type matnr.
data: text type table of TEXTPOOL.
select-options: s_matnr for matnr.
start-of-selection.
call function 'RS_TEXTPOOL_READ'
exporting
objectname = sy-repid
ACTION = 'S'
* LANGUAGE = SY-LANGU
tables
tpool = text
* EXCEPTIONS
* OBJECT_NOT_FOUND = 1
* PERMISSION_FAILURE = 2
* INVALID_PROGRAM_TYPE = 3
* ERROR_OCCURED = 4
* ACTION_CANCELLED = 5
.
break-point.text consists of all texts.
you can filter what ever text you want.
2008 Sep 04 2:34 PM
Thanx, it is a bit harder than what I found... I'll just simply use the "READ TEXTPOOL" statement.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |