1.在CDS中设置注解
@UI:{ lineItem: [{ position: 10, importance: #HIGH ,type:#WITH_URL, url: 'equnr_url'}],
selectionField: [{ position: 10 }]
}
@EndUserText.label: '设备编码'
master.equnr, //设备编码
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_P0GRC_A_FR0067A'
master.equnr_url, //设备URL
"读取CDS时 会调用类ZCL_P0GRC_A_FR0067A
2.创建类 ZCL_P0GRC_A_FR0067A
class ZCL_P0GRC_A_FR0067A definition
public
final
create public .
public section.
interfaces IF_SADL_EXIT .
interfaces IF_SADL_EXIT_CALC_ELEMENT_READ .
protected section.
private section.
ENDCLASS.
CLASS ZCL_P0GRC_A_FR0067A IMPLEMENTATION.
METHOD if_sadl_exit_calc_element_read~calculate.
DATA:l_equnr TYPE bapi_itob_parms-equipment, "设备编码
l_userstatus TYPE asttx, "用户状态
l_systemstatus TYPE J_STEXT, "系统状态
lt_userstatus TYPE TABLE OF bapi_itob_status, "用户状态
lt_systemstatus TYPE TABLE OF bapi_itob_status, "系统状态
ls_return TYPE bapiret2.
LOOP AT it_original_data ASSIGNING FIELD-SYMBOL(<fs_original_data>).
DATA(l_tabix) = sy-tabix.
ASSIGN COMPONENT 'EQUNR' OF STRUCTURE <fs_original_data> TO FIELD-SYMBOL(<fs_value>).
IF <fs_value> IS ASSIGNED.
l_equnr = <fs_value>.
CALL FUNCTION 'BAPI_EQUI_GETSTATUS'
EXPORTING
equipment = l_equnr
IMPORTING
systemstatus = l_systemstatus
userstatus = l_userstatus
return = ls_return
TABLES
system_status = lt_systemstatus
user_status = lt_userstatus.
ENDIF.
READ TABLE ct_calculated_data INDEX l_tabix ASSIGNING FIELD-SYMBOL(<fs_calculated_data>).
IF sy-subrc = 0.
"
" 系统状态
ASSIGN COMPONENT 'SYSTEMSTATUS' OF STRUCTURE <fs_calculated_data> TO FIELD-SYMBOL(<fs_calculated_value>).
IF <fs_calculated_value> IS ASSIGNED.
<fs_calculated_value> = l_systemstatus.
ENDIF.
"
" 用户状态
ASSIGN COMPONENT 'USERSTATUS' OF STRUCTURE <fs_calculated_data> TO <fs_calculated_value>.
IF <fs_calculated_value> IS ASSIGNED.
<fs_calculated_value> = l_userstatus.
ENDIF.
"
"
" 设备编码
IF l_equnr IS NOT INITIAL.
ASSIGN COMPONENT 'EQUNR_URL' OF STRUCTURE <fs_calculated_data> TO <fs_calculated_value>.
IF <fs_calculated_value> IS ASSIGNED.
<fs_calculated_value> = |https://cn.bing.com/ |.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
method IF_SADL_EXIT_CALC_ELEMENT_READ~GET_CALCULATION_INFO.
endmethod.
ENDCLASS.