@AbapCatalog.sqlViewName: 'ZMATSTXL'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'stxl clusters'
define view zmat_stxl as select from stxl as LongText
association [1] to zmat_longtext as _Material on $projection.materialNumber = _Material.Material
{
key cast( LongText.tdname as matnr ) as materialNumber,
key LongText.tdspras as language,
LongText.clustr,
LongText.clustd,
_Material
}
where
LongText.relid = 'TX'
and LongText.tdid = 'GRUN'
and LongText.tdobject = 'MATERIAL'
@AbapCatalog.sqlViewName: 'ZMATINTERFACE'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'interface'
define view zmat_interface as select from I_Material
association [0..*] to zmat_stxl as _LongText on $projection.Material = _LongText.materialNumber
and _LongText.language = $session.system_language
{
key Material as Material,
key _LongText.language,
_LongText.clustr,
_LongText.clustd
}
@AbapCatalog.sqlViewName: 'ZMATLONGTEXT'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'long text'
define view zmat_longtext
as select from zmat_interface
association [0..*] to zmat_stxl as _sxtl on $projection.Material = _sxtl.materialNumber
{
@UI.lineItem: [{position: 10 }]
@UI.selectionField: [{position: 10 }]
key Material,
@ObjectModel.readOnly: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_LTEXT'
@UI.lineItem: [{position: 20 }]
cast( '' as abap.char( 1024 ) ) as materialLongText,
@Consumption.hidden: true
_sxtl[1: language = $session.system_language].clustr,
@Consumption.hidden: true
_sxtl[1: language = $session.system_language].clustd
}
CLASS zcl_ltext DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_sadl_exit_calc_element_read .
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: BEGIN OF lty_cluster,
clustr TYPE stxl-clustr,
clustd TYPE stxl-clustd,
END OF lty_cluster.
TYPES ltt_cluster TYPE STANDARD TABLE OF lty_cluster WITH DEFAULT KEY.
ENDCLASS.
CLASS ZCL_LTEXT IMPLEMENTATION.
METHOD if_sadl_exit_calc_element_read~calculate.
DATA lt_lines TYPE STANDARD TABLE OF tline.
LOOP AT ct_calculated_data ASSIGNING FIELD-SYMBOL(<ls_calc_data>).
ASSIGN it_original_data[ sy-tabix ] TO FIELD-SYMBOL(<ls_orig_data>).
IF <ls_orig_data> IS ASSIGNED
AND sy-subrc = 0.
ASSIGN COMPONENT 'CLUSTD' OF STRUCTURE <ls_orig_data> TO FIELD-SYMBOL(<lv_clustd>).
ASSIGN COMPONENT 'CLUSTR' OF STRUCTURE <ls_orig_data> TO FIELD-SYMBOL(<lv_clustr>).
DATA(lt_cluster) = VALUE ltt_cluster( ( clustd = <lv_clustd>
clustr = <lv_clustr> ) ).
IF <lv_clustd> IS ASSIGNED and <lv_clustd> is NOT INITIAL.
IMPORT tline TO lt_lines
FROM INTERNAL TABLE lt_cluster.
DATA(lv_string) = REDUCE #( INIT text TYPE string
FOR <ls_lines> IN lt_lines
NEXT text = COND #( WHEN text IS INITIAL
THEN <ls_lines>-tdline
ELSE |{ text }{ <ls_lines>-tdline }| ) ).
ASSIGN COMPONENT 'MATERIALLONGTEXT' OF STRUCTURE <ls_calc_data> TO FIELD-SYMBOL(<lv_material_long_text>).
<lv_material_long_text> = lv_string.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD if_sadl_exit_calc_element_read~get_calculation_info.
"CLUSTD and CLUSTR needed for LRAW to STRING conversion
et_requested_orig_elements = COND #( WHEN iv_entity = 'ZMAT_LONGTEXT'
THEN VALUE #( ( CONV string( 'CLUSTR' ) )
( CONV string( 'CLUSTD' ) )
) ).
ENDMETHOD.
ENDCLASS.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
10 | |
8 | |
7 | |
7 | |
6 | |
4 | |
4 | |
4 | |
4 | |
3 |