*&---------------------------------------------------------------------*
*& Include ZSOFTCOPY_GET *
*& *
*&---------------------------------------------------------------------*
*& *
*& This file is part of ZSOFTCOPY. *
*& *
*& ZSOFTCOPY is free software: you can redistribute it and/or modify *
*& it under the terms of the GNU General Public License as published *
*& by the Free Software Foundation, either version 3 of the License, *
*& or any later version. *
*& *
*& ZSOFTCOPY is distributed in the hope that it will be useful, *
*& but WITHOUT ANY WARRANTY; without even the implied warranty of *
*& MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
*& GNU General Public License for more details. *
*& *
*& You should have received a copy of the GNU General Public License *
*& along with ZDOWNLOAD. If not, see . *
*& *
*&---------------------------------------------------------------------*
*& *
*& Author: Ruediger von Creytz ruediger.creytz@globalbit.net *
*& Copyright: globalBIT, LLC http://www.globalbit.net *
*& *
*&---------------------------------------------------------------------*
*-----------------------------------------------------------------------
* get_class_attribute_value
*-----------------------------------------------------------------------
FORM get_class_attribute_value
USING
value(i_clsname) TYPE seoclsname
value(i_cmpname) TYPE seocmpname
CHANGING
c_attvalue TYPE seovalue.
DATA:
l_len TYPE i.
CLEAR c_attvalue.
SELECT SINGLE attvalue FROM seocompodf INTO c_attvalue
WHERE clsname = i_clsname
AND cmpname = i_cmpname
AND version = 1.
IF sy-subrc = 0.
IF c_attvalue+0(1) = ''''.
l_len = strlen( c_attvalue ) - 2.
c_attvalue = c_attvalue+1(l_len).
ENDIF.
ENDIF.
ENDFORM. "get_class_attvalue
*-----------------------------------------------------------------------
* get_class_exists
*-----------------------------------------------------------------------
FORM get_class_exists
USING
value(i_clsname) TYPE seoclsname
CHANGING
c_class_exists TYPE flag.
DATA:
l_clsname TYPE seoclsname.
c_class_exists = abap_false.
SELECT SINGLE clsname FROM seoclass INTO l_clsname
WHERE clsname = i_clsname.
IF sy-subrc = 0.
c_class_exists = abap_true.
ENDIF.
ENDFORM. "get_class_exists
*-----------------------------------------------------------------------
* get_date
*-----------------------------------------------------------------------
FORM get_date
USING
value(i_date) TYPE sydatum
CHANGING
c_date TYPE string.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = i_date
IMPORTING
date_external = c_date.
ENDFORM. "get_date
*-----------------------------------------------------------------------
* get_devClass
*-----------------------------------------------------------------------
FORM get_devclass
USING
value(i_devclass) TYPE devclass
CHANGING
c_text TYPE as4text.
CLEAR c_text.
SELECT SINGLE ctext FROM tdevct INTO c_text
WHERE devclass = i_devclass
AND spras = sy-langu.
ENDFORM. "get_devClass
*-----------------------------------------------------------------------
* get_docu
*-----------------------------------------------------------------------
FORM get_docu
USING
value(i_id) TYPE doku_id
value(i_object) TYPE any
value(i_typ) TYPE doku_typ
CHANGING
ct_str TYPE it_string.
DATA:
lt_html TYPE STANDARD TABLE OF htmlline,
l_object TYPE doku_obj,
lt_line TYPE STANDARD TABLE OF tline,
ls_entry TYPE glos_entry,
l_pos TYPE i.
FIELD-SYMBOLS:
TYPE htmlline.
REFRESH ct_str.
l_object = i_object.
CALL FUNCTION 'DOCU_GET'
EXPORTING
id = i_id
langu = sy-langu
object = l_object
typ = i_typ
TABLES
line = lt_line
EXCEPTIONS
OTHERS = 1.
CHECK sy-subrc = 0.
ls_entry-langu = sy-langu.
CALL FUNCTION 'DOC_SAPSCRIPT_TO_HTML_FORMAT'
EXPORTING
entry = ls_entry
TABLES
sapscript_text = lt_line
html_text = lt_html.
CLEAR l_pos.
LOOP AT lt_html ASSIGNING .
IF +0(5) = '' space
CHANGING .
PERFORM replace_all
USING '' space
CHANGING .
ENDLOOP.
DO l_pos TIMES.
DELETE lt_html INDEX 1.
ENDDO.
LOOP AT lt_html ASSIGNING .
APPEND -tdline TO ct_str.
ENDLOOP.
ENDFORM. "get_docu
*-----------------------------------------------------------------------
* get_dom
*-----------------------------------------------------------------------
FORM get_dom
USING
value(i_domname) TYPE domname
CHANGING
c_text TYPE as4text.
CLEAR c_text.
SELECT SINGLE ddtext FROM dd01t INTO c_text
WHERE domname = i_domname
AND ddlanguage = sy-langu
AND as4local = 'A'.
ENDFORM. "get_dom
*-----------------------------------------------------------------------
* get_dom_value_text
*-----------------------------------------------------------------------
FORM get_dom_value_text
USING
value(i_domname) TYPE domname
value(i_domvalue) TYPE any
CHANGING
c_text TYPE any.
DATA:
l_domvalue TYPE domvalue_l,
l_text TYPE val_text.
CLEAR c_text.
l_domvalue = i_domvalue.
SELECT SINGLE ddtext FROM dd07t INTO l_text
WHERE domname = i_domname
AND ddlanguage = sy-langu
AND as4local = 'A'
AND domvalue_l = l_domvalue.
IF sy-subrc = 0.
c_text = l_text.
ENDIF.
ENDFORM. "getDomValueText
*-----------------------------------------------------------------------
* get_dom_value_texts
*-----------------------------------------------------------------------
FORM get_dom_value_texts
USING
value(i_domname) TYPE domname
CHANGING
ct_dom_value TYPE it_dom_value.
DATA:
lt_dd07t TYPE STANDARD TABLE OF dd07t,
ls_dom_value TYPE st_dom_value.
FIELD-SYMBOLS:
TYPE dd07t.
REFRESH ct_dom_value.
SELECT * FROM dd07t INTO TABLE lt_dd07t
WHERE domname = i_domname
AND ddlanguage = sy-langu
AND as4local = 'A'
ORDER BY domvalue_l DESCENDING.
LOOP AT lt_dd07t ASSIGNING .
ls_dom_value-text = -ddtext.
ls_dom_value-value = -domvalue_l.
APPEND ls_dom_value TO ct_dom_value.
ENDLOOP.
ENDFORM. "get_dom_value_texts
*-----------------------------------------------------------------------
* get_dtel_text
*-----------------------------------------------------------------------
FORM get_dtel_text
USING
value(i_rollname) TYPE rollname
value(i_field) TYPE c
CHANGING
c_text TYPE any.
DATA:
ls_dd04t TYPE dd04t,
l_field TYPE fieldname.
FIELD-SYMBOLS:
TYPE ANY.
CLEAR c_text.
CASE i_field.
WHEN 'D'.
l_field = 'DDTEXT'.
WHEN 'T'.
l_field = 'REPTEXT'.
WHEN 'S'.
l_field = 'SCRTEXT_S'.
WHEN 'M'.
l_field = 'SCRTEXT_M'.
WHEN 'L'.
l_field = 'SCRTEXT_L'.
WHEN OTHERS.
l_field = 'SCRTEXT_M'.
ENDCASE.
SELECT SINGLE * FROM dd04t INTO ls_dd04t
WHERE rollname = i_rollname
AND ddlanguage = sy-langu
AND as4local = 'A'.
IF sy-subrc = 0.
ASSIGN COMPONENT l_field OF STRUCTURE ls_dd04t TO .
IF IS ASSIGNED.
c_text = .
ENDIF.
ENDIF.
ENDFORM. "get_dtel_text
*-----------------------------------------------------------------------
* get_fuba_exists
*-----------------------------------------------------------------------
FORM get_fuba_exists
USING
value(i_funcname) TYPE rs38l_fnam
CHANGING
c_fuba_exists TYPE flag.
DATA:
l_funcname TYPE rs38l_fnam.
c_fuba_exists = abap_false.
SELECT SINGLE funcname FROM tfdir INTO l_funcname
WHERE funcname = i_funcname.
IF sy-subrc = 0.
c_fuba_exists = abap_true.
ENDIF.
ENDFORM. "get_class_exists
*-----------------------------------------------------------------------
* get_GUI_kind
*-----------------------------------------------------------------------
FORM get_gui_kind
USING
value(i_kind) TYPE c
CHANGING
c_gui_kind TYPE string.
DATA l_kind.
CLEAR c_gui_kind.
l_kind = i_kind.
TRANSLATE l_kind TO UPPER CASE.
CASE l_kind.
WHEN 'P'.
c_gui_kind = txt_parameters.
WHEN 'S'.
c_gui_kind = txt_selection_criteria.
WHEN OTHERS.
c_gui_kind = l_kind.
ENDCASE.
ENDFORM. "get_GUI_kind
*-----------------------------------------------------------------------
* get_GUI_operator
*-----------------------------------------------------------------------
FORM get_gui_operator
USING
value(i_operator) TYPE char2
CHANGING
c_gui_operator TYPE string.
DATA l_operator(2) TYPE c.
CLEAR c_gui_operator.
l_operator = i_operator.
TRANSLATE l_operator TO UPPER CASE.
CASE l_operator.
WHEN 'BT'.
c_gui_operator = '[]'.
WHEN 'CP'.
c_gui_operator = '[*]'.
WHEN 'EQ'.
c_gui_operator = '='.
WHEN 'GE'.
c_gui_operator = '>='.
WHEN 'GT'.
c_gui_operator = '>'.
WHEN 'LE'.
c_gui_operator = '<='.
WHEN 'LK'.
c_gui_operator = 'like'.
WHEN 'LT'.
c_gui_operator = '<'.
WHEN 'NB'.
c_gui_operator = ']['.
WHEN 'NE'.
c_gui_operator = '<>'.
WHEN 'NP'.
c_gui_operator = ']*['.
WHEN OTHERS.
c_gui_operator = l_operator.
ENDCASE.
ENDFORM. "get_GUI_operator
*-----------------------------------------------------------------------
* get_GUI_sign
*-----------------------------------------------------------------------
FORM get_gui_sign
USING
value(i_sign) TYPE c
CHANGING
c_gui_sign TYPE string.
DATA l_sign.
CLEAR c_gui_sign.
l_sign = i_sign.
TRANSLATE l_sign TO UPPER CASE.
CASE l_sign.
WHEN 'E'.
c_gui_sign = txt_exclusive.
WHEN 'I'.
c_gui_sign = txt_inclusive.
WHEN OTHERS.
c_gui_sign = l_sign.
ENDCASE.
ENDFORM. "get_GUI_sign
*-----------------------------------------------------------------------
* get_hardwarekey
*-----------------------------------------------------------------------
FORM get_hardwarekey
CHANGING
c_hwkey TYPE custkey_t.
DATA:
l_rc TYPE sysubrc.
CALL FUNCTION 'SLIC_LOCAL_HWKEY'
EXPORTING
no_raise = 1
IMPORTING
hwkey = c_hwkey
rc = l_rc.
ENDFORM. "get_hardwarekey
*-----------------------------------------------------------------------
* get_icon_text
*-----------------------------------------------------------------------
FORM get_icon_text
USING
value(i_icon_id) TYPE icon_d
value(i_field) TYPE c
CHANGING
c_text TYPE any.
DATA:
ls_icont TYPE icont,
l_field TYPE fieldname.
FIELD-SYMBOLS:
TYPE ANY.
CLEAR c_text.
CASE i_field.
WHEN 'S'.
l_field = 'SHORTTEXT'.
WHEN 'Q'.
l_field = 'QUICKINFO'.
WHEN OTHERS.
l_field = 'SHORTTEXT'.
ENDCASE.
SELECT SINGLE * FROM icont INTO ls_icont
WHERE id = i_icon_id
AND langu = sy-langu.
IF sy-subrc = 0.
ASSIGN COMPONENT l_field OF STRUCTURE ls_icont TO .
IF IS ASSIGNED.
c_text = .
ENDIF.
ENDIF.
ENDFORM. "get_icon_text
*-----------------------------------------------------------------------
* get_id
*-----------------------------------------------------------------------
FORM get_id
USING
value(i_param_1)
value(i_param_2)
CHANGING
c_id.
CONCATENATE i_param_1 i_param_2 INTO c_id.
PERFORM replace_all
USING '/' '_'
CHANGING c_id.
ENDFORM. "get_id
*-----------------------------------------------------------------------
* get_message_text
*-----------------------------------------------------------------------
FORM get_message_text
USING
value(i_arbgb) TYPE any
value(i_msgnr) TYPE any
value(i_v1) TYPE any
value(i_v2) TYPE any
value(i_v3) TYPE any
value(i_v4) TYPE any
CHANGING
c_text TYPE string.
DATA:
l_id TYPE bapiret2-id,
l_number TYPE bapiret2-number,
l_v1 TYPE bapiret2-message_v1,
l_v2 TYPE bapiret2-message_v2,
l_v3 TYPE bapiret2-message_v3,
l_v4 TYPE bapiret2-message_v4,
l_message TYPE bapiret2-message,
lt_return TYPE bapiret2,
lt_text TYPE STANDARD TABLE OF bapitgb.
l_id = i_arbgb.
l_number = i_msgnr.
l_v1 = i_v1.
l_v2 = i_v2.
l_v3 = i_v3.
l_v4 = i_v4.
CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
EXPORTING
id = l_id
number = l_number
language = sy-langu
textformat = 'ASC'
message_v1 = l_v1
message_v2 = l_v2
message_v3 = l_v3
message_v4 = l_v4
IMPORTING
message = l_message
return = lt_return
TABLES
text = lt_text.
c_text = l_message.
ENDFORM. "get_message_text
*-----------------------------------------------------------------------
* get_page_title
*-----------------------------------------------------------------------
FORM get_page_title
USING
value(i_prefix) TYPE any
value(i_arbgb) TYPE any
value(i_msgnr) TYPE any
value(i_obj_name) TYPE any
CHANGING
c_page_title TYPE char255.
DATA:
l_text TYPE string,
l_prefix TYPE string.
PERFORM get_message_text
USING
i_arbgb
i_msgnr
i_obj_name
space
space
space
CHANGING
l_text.
IF NOT i_prefix IS INITIAL.
CONCATENATE i_prefix ':' INTO l_prefix.
CONCATENATE l_prefix l_text INTO c_page_title SEPARATED BY space.
ELSE.
c_page_title = l_text.
ENDIF.
ENDFORM. "get_page_title
*-----------------------------------------------------------------------
* get_props
*-----------------------------------------------------------------------
FORM get_props
CHANGING
ct_prop TYPE it_prop.
DATA:
ls_prop TYPE st_prop,
l_hwkey TYPE custkey_t,
l_str TYPE string,
l_stext TYPE text40,
l_laiso TYPE laiso,
l_sptxt TYPE sptxt.
REFRESH ct_prop.
* version
ls_prop-name = 'scver'.
ls_prop-value = gc_version.
APPEND ls_prop TO ct_prop.
* hardwarekey
ls_prop-name = 'hwkey'.
PERFORM get_hardwarekey
CHANGING l_hwkey.
ls_prop-value = l_hwkey.
APPEND ls_prop TO ct_prop.
* component version
ls_prop-name = 'compo'.
SELECT SINGLE stext FROM cvers_txt INTO l_stext
WHERE langu = 'EN'.
IF sy-subrc <> 0.
SELECT SINGLE stext FROM cvers_txt INTO l_stext.
ENDIF.
ls_prop-value = l_stext.
APPEND ls_prop TO ct_prop.
* kernel release
ls_prop-name = 'krel'.
PERFORM get_version_info
USING 'kernel release'
CHANGING l_str.
ls_prop-value = l_str.
APPEND ls_prop TO ct_prop.
* patch level
ls_prop-name = 'patch'.
PERFORM get_version_info
USING 'kernel patch level'
CHANGING l_str.
ls_prop-value = l_str.
APPEND ls_prop TO ct_prop.
* username
ls_prop-name = 'uname'.
ls_prop-value = sy-uname.
APPEND ls_prop TO ct_prop.
* language
ls_prop-name = 'langu'.
PERFORM get_spras USING sy-langu l_laiso l_sptxt.
ls_prop-value = l_laiso.
APPEND ls_prop TO ct_prop.
* date
ls_prop-name = 'datum'.
ls_prop-value = sy-datum.
APPEND ls_prop TO ct_prop.
* time
ls_prop-name = 'uzeit'.
ls_prop-value = sy-uzeit.
APPEND ls_prop TO ct_prop.
ENDFORM. "get_props
*-----------------------------------------------------------------------
* get_spras
*-----------------------------------------------------------------------
FORM get_spras
USING
value(i_spras) TYPE any
CHANGING
c_laiso TYPE laiso
c_sptxt TYPE sptxt.
DATA:
l_spras TYPE spras,
l_spraslen TYPE i.
CLEAR:
c_laiso,
c_sptxt.
l_spraslen = strlen( i_spras ).
IF l_spraslen = 2.
c_laiso = i_spras.
SELECT SINGLE spras FROM t002 INTO l_spras
WHERE spras = i_spras.
ELSE.
l_spras = i_spras.
SELECT SINGLE laiso FROM t002 INTO c_laiso
WHERE spras = i_spras.
ENDIF.
SELECT SINGLE sptxt FROM t002t INTO c_sptxt
WHERE spras = l_spras
AND sprsl = sy-langu.
ENDFORM. "get_spras
*-----------------------------------------------------------------------
* get_tabstrip
*-----------------------------------------------------------------------
FORM get_tabstrip
USING
value(i_form) TYPE fieldname
value(i_comp_value) TYPE any
CHANGING
ct_tabstrip TYPE it_tabstrip.
FIELD-SYMBOLS:
TYPE st_tabstrip.
REFRESH ct_tabstrip.
LOOP AT gt_tabstrip ASSIGNING
WHERE form = i_form.
IF NOT -comparator IS INITIAL.
CASE -comparator.
WHEN 'CO'.
IF NOT i_comp_value CO -comp_value.
CONTINUE.
ENDIF.
ENDCASE.
ENDIF.
APPEND TO ct_tabstrip.
ENDLOOP.
SORT ct_tabstrip BY tab_nr.
ENDFORM. "get_tabstrip
*-----------------------------------------------------------------------
* get_tabstrip_defined
*-----------------------------------------------------------------------
FORM get_tabstrip_defined
USING
it_tabstrip TYPE it_tabstrip
CHANGING
ct_tabstrip TYPE it_tabstrip.
DATA:
ls_tabstrip TYPE st_tabstrip,
l_parent_id(100) TYPE c VALUE '#'.
FIELD-SYMBOLS:
TYPE st_tabstrip.
*opening status
LOOP AT it_tabstrip INTO ls_tabstrip.
IF ls_tabstrip-empty = abap_true.
CASE g_empty_tab.
WHEN gc_empty_tab_disable.
ls_tabstrip-disabled = abap_true.
APPEND ls_tabstrip TO ct_tabstrip.
WHEN gc_empty_tab_display.
APPEND ls_tabstrip TO ct_tabstrip.
WHEN gc_empty_tab_hide.
" do nothing
ENDCASE.
ELSE.
APPEND ls_tabstrip TO ct_tabstrip.
ENDIF.
ENDLOOP.
*active tabs
SORT ct_tabstrip BY parent_id active_order.
LOOP AT ct_tabstrip ASSIGNING
WHERE active_order > 0
AND disabled = abap_false
AND hidden = abap_false
AND empty = abap_false.
IF l_parent_id = -parent_id.
CONTINUE.
ENDIF.
l_parent_id = -parent_id.
-active = abap_true.
ENDLOOP.
SORT ct_tabstrip BY tab_nr.
ENDFORM. "get_tabstrip_defined
*-----------------------------------------------------------------------
* get_time
*-----------------------------------------------------------------------
FORM get_time
USING
value(i_time) TYPE sytime
CHANGING
c_time TYPE string.
CONCATENATE i_time+0(2) ':' i_time+2(2) ':' i_time+4(2)
INTO c_time.
ENDFORM. "get_time
*-----------------------------------------------------------------------
* get_trdir_name
*-----------------------------------------------------------------------
FORM get_trdir_name
USING
value(i_name) TYPE any
value(i_type) TYPE char10
CHANGING
c_programm TYPE programm.
DATA:
l_len TYPE i,
l_diff TYPE i.
CONSTANTS:
lc_eqlen TYPE i VALUE 30.
c_programm = i_name.
l_len = strlen( c_programm ).
l_diff = lc_eqlen - l_len.
DO l_diff TIMES.
CONCATENATE c_programm '=' INTO c_programm.
ENDDO.
CONCATENATE c_programm i_type INTO c_programm.
ENDFORM. "get_trdir_name
*-----------------------------------------------------------------------
* get_trdir_name_method_include
*-----------------------------------------------------------------------
FORM get_trdir_name_method_include
USING
value(i_mtdkey) TYPE seocpdkey
CHANGING
c_programm TYPE program.
DATA:
l_index TYPE seomtdindx,
l_num TYPE i,
l_hex TYPE string,
l_hex_index(3) TYPE c,
l_type TYPE char10,
l_len TYPE i.
CLEAR c_programm.
SELECT SINGLE methodindx FROM tmdir INTO l_index
WHERE classname = i_mtdkey-clsname
AND methodname = i_mtdkey-cpdname.
IF sy-subrc = 0.
l_num = l_index.
PERFORM number_to_x_string
USING l_num 36
CHANGING l_hex.
l_hex_index = l_hex.
DO.
l_len = strlen( l_hex_index ).
IF l_len < 3.
CONCATENATE '0' l_hex_index INTO l_hex_index.
ELSE.
EXIT.
ENDIF.
ENDDO.
CONCATENATE 'CM' l_hex_index INTO l_type.
PERFORM get_trdir_name
USING i_mtdkey-clsname l_type
CHANGING c_programm.
ENDIF.
ENDFORM. "get_trdir_name_method_include
*-----------------------------------------------------------------------
* get_unpacked
*-----------------------------------------------------------------------
FORM get_unpacked
USING
value(i_number) TYPE any
CHANGING
c_str TYPE string.
DATA:
l_strlen TYPE i.
c_str = i_number.
CONDENSE c_str NO-GAPS.
SHIFT c_str LEFT DELETING LEADING '0'.
l_strlen = strlen( i_number ).
IF c_str IS INITIAL AND l_strlen > 0.
c_str = '0'.
ENDIF.
ENDFORM. "get_unpacked
*-----------------------------------------------------------------------
* get_user
*-----------------------------------------------------------------------
FORM get_user
USING
value(i_bname) TYPE xubname
CHANGING
c_name_text TYPE ad_namtext.
DATA:
lt_adrp TYPE STANDARD TABLE OF adrp,
l_persnumber TYPE ad_persnum.
FIELD-SYMBOLS:
TYPE adrp.
CLEAR c_name_text.
SELECT SINGLE persnumber FROM usr21 INTO l_persnumber
WHERE bname = i_bname.
SELECT * FROM adrp INTO TABLE lt_adrp
WHERE persnumber = l_persnumber
ORDER BY date_from DESCENDING.
LOOP AT lt_adrp ASSIGNING .
c_name_text = -name_text.
IF NOT c_name_text IS INITIAL.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM. "get_user
*-----------------------------------------------------------------------
* get_version_info
*-----------------------------------------------------------------------
FORM get_version_info
USING
value(i_type) TYPE any
CHANGING
c_value TYPE string.
DATA:
l_index TYPE i,
lt_version_info TYPE it_version_info.
FIELD-SYMBOLS:
TYPE st_version_info.
CLEAR c_value.
CASE i_type.
WHEN 'SAP version'. l_index = 1.
WHEN 'operating system'. l_index = 2.
WHEN 'machine type'. l_index = 3.
WHEN 'node name'. l_index = 4.
WHEN 'SAP system id'. l_index = 5.
WHEN 'database system'. l_index = 6.
WHEN 'database name'. l_index = 7.
WHEN 'database host'. l_index = 8.
WHEN 'database owner'. l_index = 9.
WHEN 'rsyn'. l_index = 10.
WHEN 'IP address'. l_index = 11.
WHEN 'kernel release'. l_index = 12.
WHEN 'database library'. l_index = 13.
WHEN 'kernel compiled'. l_index = 14.
WHEN 'kernel patch level'. l_index = 15.
WHEN 'supported SAP vers.'. l_index = 16.
WHEN 'supported database'. l_index = 17.
WHEN 'valid OP system'. l_index = 18.
WHEN 'OP system release'. l_index = 19.
WHEN 'ABAP load version'. l_index = 20.
WHEN 'CUA load version'. l_index = 21.
WHEN 'kernel kind'. l_index = 22.
ENDCASE.
CALL 'SAPCORE' ID 'ID' FIELD 'VERSION'
ID 'TABLE' FIELD lt_version_info.
READ TABLE lt_version_info ASSIGNING
WITH KEY type = i_type.
IF sy-subrc <> 0 AND l_index > 0.
READ TABLE lt_version_info ASSIGNING
INDEX l_index.
ENDIF.
IF sy-subrc = 0 AND IS ASSIGNED.
c_value = -value.
CASE i_type.
WHEN 'database system'.
IF c_value(3) = 'ADA'.
c_value = 'SAP DB'.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "get_version_info