Update Layout and Transport Request App for Customizing (#1218)

* Update Layout

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* z2ui5_cl_pop_layout_v2.clas.abap aktualisieren

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* Update src/02/02/z2ui5_cl_pop_layout_v2.clas.abap

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* Update src/02/02/z2ui5_cl_pop_transport.clas.abap

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* Update src/02/02/z2ui5_cl_pop_transport.clas.abap

Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>

* Update Transport and Layout

* Layout and Transport APP Fix

---------

Co-authored-by: Viktor Hoffmann <Viktor.Hoffmann@swisskrono.com>
Co-authored-by: oblomov <102328295+oblomov-dev@users.noreply.github.com>
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
abapsheep 2024-06-20 11:45:53 +02:00 committed by GitHub
parent 6c9a4bcbc6
commit 26d2855a40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 821 additions and 23 deletions

View File

@ -19,9 +19,17 @@ CLASS z2ui5_cl_pop_layout_v2 DEFINITION
TYPES ty_s_Head TYPE z2ui5_t003.
TYPES ty_t_head TYPE STANDARD TABLE OF ty_s_head WITH EMPTY KEY.
TYPES:
BEGIN OF ty_s_sub_columns,
key TYPE string,
fname TYPE string,
END OF ty_s_sub_columns.
TYPES ty_t_sub_columns TYPE STANDARD TABLE OF ty_s_sub_columns WITH EMPTY KEY.
TYPES BEGIN OF ty_s_positions.
INCLUDE TYPE z2ui5_t004.
TYPES: tlabel TYPE string,
TYPES: tlabel TYPE string,
t_sub_col TYPE ty_t_sub_columns,
END OF ty_s_positions.
TYPES ty_t_positions TYPE STANDARD TABLE OF ty_s_positions WITH EMPTY KEY.
@ -52,18 +60,22 @@ CLASS z2ui5_cl_pop_layout_v2 DEFINITION
CLASS-DATA ui_table TYPE control VALUE 'ui.Table' ##NO_TEXT.
CLASS-DATA m_table TYPE control VALUE 'm.Table' ##NO_TEXT.
DATA mt_controls TYPE ty_t_controls.
DATA mt_Head TYPE ty_t_layo.
DATA ms_layout TYPE ty_s_layout.
DATA ms_layout_tmp TYPE ty_s_layout.
DATA mv_descr TYPE string.
DATA mv_layout TYPE string.
DATA mv_def TYPE abap_bool.
DATA mv_usr TYPE abap_bool.
DATA mv_open TYPE abap_bool.
DATA mv_delete TYPE abap_bool.
DATA mt_halign TYPE fixvalues.
DATA mt_importance TYPE fixvalues.
DATA mt_controls TYPE ty_t_controls.
DATA mt_Head TYPE ty_t_layo.
DATA ms_layout TYPE ty_s_layout.
DATA ms_layout_tmp TYPE ty_s_layout.
DATA mv_descr TYPE string.
DATA mv_layout TYPE string.
DATA mv_def TYPE abap_bool.
DATA mv_usr TYPE abap_bool.
DATA mv_open TYPE abap_bool.
DATA mv_delete TYPE abap_bool.
DATA mt_halign TYPE fixvalues.
DATA mt_importance TYPE fixvalues.
DATA mv_active_subcolumn TYPE string.
DATA mt_comps TYPE ty_t_positions.
DATA mt_sub_cols TYPE ty_t_sub_columns.
CLASS-METHODS on_event_layout
IMPORTING
@ -157,6 +169,9 @@ CLASS z2ui5_cl_pop_layout_v2 DEFINITION
IMPORTING
!Head TYPE ty_s_layo.
METHODS render_add_subcolumn.
METHODS on_event_subcoloumns.
CLASS-METHODS get_relative_name_of_table
IMPORTING
!table TYPE any
@ -174,6 +189,12 @@ CLASS z2ui5_cl_pop_layout_v2 DEFINITION
RETURNING
VALUE(result) TYPE ty_s_layout.
CLASS-METHODS set_sub_columns
IMPORTING
!layout TYPE ty_t_positions
RETURNING
VALUE(result) TYPE ty_t_positions.
ENDCLASS.
@ -232,6 +253,7 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
( control = m_table attribute = 'WIDTH' )
( control = m_table attribute = 'ALTERNATIVE_TEXT' )
( control = m_table attribute = 'SEQUENCE' )
( control = m_table attribute = 'SUBCOLUMN' )
( control = ui_table attribute = 'VISIBLE' )
( control = ui_table attribute = 'ALTERNATIVE_TEXT' )
( control = ui_table attribute = 'HALIGN' )
@ -277,11 +299,11 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
CASE control-attribute.
WHEN 'VISIBLE'.
col = columns->column( )->header( `` ).
col = columns->column( '4.5rem' )->header( `` ).
col->text( 'Visible' ).
WHEN 'MERGE'.
col = columns->column( )->header( `` ).
col->text( 'Merge duplicates' ).
col = columns->column( '4.5rem' )->header( `` ).
col->text( 'Merge' ).
WHEN 'HALIGN'.
col = columns->column( )->header( `` ).
col->text( 'Align' ).
@ -289,15 +311,17 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
col = columns->column( )->header( `` ).
col->text( 'Importance' ).
WHEN 'WIDTH'.
col = columns->column( )->header( `` ).
col = columns->column( `7rem` )->header( `` ).
col->text( 'Width in rem' ).
WHEN 'SEQUENCE'.
col = columns->column( )->header( `` ).
col = columns->column( `5rem` )->header( `` ).
col->text( 'Sequence' ).
WHEN 'ALTERNATIVE_TEXT'.
col = columns->column( )->header( `` ).
col->text( 'Alternative Text' ).
WHEN 'SUBCOLUMN'.
col = columns->column( )->header( `` ).
col->text( 'Subcolumn' ).
ENDCASE.
ENDLOOP.
@ -340,8 +364,7 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
WHEN 'WIDTH'.
cells->input( value = |\{{ comp->name }\}|
maxLength = `7`
width = `7rem` ).
maxLength = `7` ).
WHEN 'SEQUENCE'.
@ -353,6 +376,13 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
cells->input( |\{{ comp->name }\}| ).
WHEN 'SUBCOLUMN'.
cells->button( text = |\{{ comp->name }\}|
icon = `sap-icon://add`
press = client->_event( val = 'CALL_SUBCOLUMN'
t_arg = VALUE #( ( `${FNAME}` ) ) ) ).
ENDCASE.
ENDLOOP.
@ -454,6 +484,11 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN OTHERS.
on_event_subcoloumns( ).
ENDCASE.
ENDMETHOD.
@ -805,7 +840,8 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
importance,
width,
sequence,
alternative_text
alternative_text,
subcolumn
FROM z2ui5_t004
WHERE guid = @Head-guid
INTO CORRESPONDING FIELDS OF TABLE @ms_layout-t_layout ##SUBRC_OK.
@ -907,7 +943,8 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
importance,
width,
sequence,
alternative_text
alternative_text,
subcolumn
FROM z2ui5_t004
WHERE guid = @def-guid
INTO TABLE @DATA(t_pos) ##SUBRC_OK.
@ -944,6 +981,7 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
result-s_head = CORRESPONDING #( def ).
result-t_layout = sort_by_seqence( result-t_layout ).
result-t_layout = set_sub_columns( result-t_layout ).
RETURN.
@ -1154,4 +1192,126 @@ CLASS z2ui5_cl_pop_layout_v2 IMPLEMENTATION.
ENDMETHOD.
METHOD render_add_subcolumn.
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
lo_popup = lo_popup->dialog( afterclose = client->_event( 'SUBCOLUMN_CANCEL' )
contentwidth = `20%`
title = 'Define Sub Coloumns' ).
DATA(vbox) = lo_popup->vbox( justifycontent = 'SpaceBetween' ).
DATA(item) = vbox->list( nodata = `no Subcolumns defined`
items = client->_bind_edit( mt_sub_cols )
selectionchange = client->_event( 'SELCHANGE' )
)->custom_list_item( ).
DATA(grid) = item->grid( ).
grid->combobox( selectedkey = `{FNAME}`
items = client->_bind( mt_comps )
)->item( key = '{FNAME}'
text = '{FNAME}'
)->get_parent(
)->button( icon = 'sap-icon://decline'
type = `Transparent`
press = client->_event( val = `SUBCOLUMN_DELETE`
t_arg = VALUE #( ( `${KEY}` ) ) ) ).
lo_popup->buttons(
)->button( text = `Delete All`
icon = 'sap-icon://delete'
type = `Transparent`
press = client->_event( val = `SUBCOLUMN_DELETE_ALL` )
)->button( text = `Add Item`
icon = `sap-icon://add`
press = client->_event( val = `SUBCOLUMN_ADD` )
)->button( text = 'Cancel'
press = client->_event( 'SUBCOLUMN_CANCEL' )
)->button( text = 'OK'
press = client->_event( 'SUBCOLUMN_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( lo_popup->stringify( ) ).
ENDMETHOD.
METHOD on_event_subcoloumns.
CASE client->get( )-event.
WHEN 'CALL_SUBCOLUMN'.
DATA(arg) = client->get( )-t_event_arg.
mv_active_SUBCOLumn = VALUE #( arg[ 1 ] OPTIONAL ).
READ TABLE ms_layout-t_layout REFERENCE INTO DATA(layout) WITH KEY fname = mv_active_subcolumn.
IF sy-subrc <> 0.
RETURN.
ENDIF.
mt_comps = ms_layout-t_layout.
mt_sub_cols = layout->t_sub_col.
render_add_subcolumn( ).
WHEN `SUBCOLUMN_CONFIRM`.
READ TABLE ms_layout-t_layout REFERENCE INTO layout WITH KEY fname = mv_active_subcolumn.
IF sy-subrc <> 0.
RETURN.
ENDIF.
CLEAR layout->subcolumn.
LOOP AT mt_sub_cols REFERENCE INTO DATA(line).
layout->subcolumn = |{ layout->subcolumn } { line->fname }|.
ENDLOOP.
SHIFT layout->subcolumn LEFT DELETING LEADING space.
layout->t_sub_col = mt_sub_cols.
client->popup_destroy( ).
init_edit( ).
render_edit( ).
WHEN `SUBCOLUMN_CANCEL`.
init_edit( ).
render_edit( ).
WHEN `SUBCOLUMN_ADD`.
INSERT VALUE #( key = z2ui5_cl_util=>uuid_get_c32( ) ) INTO TABLE mt_sub_cols.
client->popup_model_update( ).
WHEN `SUBCOLUMN_DELETE`.
DATA(lt_event) = client->get( )-t_event_arg.
DELETE mt_sub_cols WHERE key = lt_event[ 1 ].
client->popup_model_update( ).
WHEN `SUBCOLUMN_DELETE_ALL`.
mt_sub_cols = VALUE #( ).
client->popup_model_update( ).
ENDCASE.
ENDMETHOD.
METHOD set_sub_columns.
result = layout.
LOOP AT result REFERENCE INTO DATA(line) WHERE subcolumn IS NOT INITIAL.
SPLIT line->subcolumn AT ` ` INTO TABLE DATA(tab).
line->t_sub_col = VALUE #( FOR t IN tab
( key = z2ui5_cl_util=>uuid_get_c32( ) fname = t ) ).
ENDLOOP.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,613 @@
CLASS z2ui5_cl_pop_transport DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_serializable_object.
INTERFACES z2ui5_if_app.
TYPES trobj_name TYPE c LENGTH 120.
TYPES sxco_transport TYPE c LENGTH 20.
TYPES: BEGIN OF ty_s_data,
short_description TYPE string,
transport TYPE sxco_transport,
task TYPE sxco_transport,
selkz TYPE abap_bool,
END OF ty_s_data.
CLASS-DATA mt_data TYPE STANDARD TABLE OF ty_s_data WITH EMPTY KEY.
DATA ms_transport TYPE ty_s_data.
CLASS-METHODS factory
RETURNING
VALUE(result) TYPE REF TO z2ui5_cl_pop_transport.
CLASS-METHODS add_DATA_to_tranport
IMPORTING
ir_data TYPE REF TO datA
iv_tabname TYPE string
is_transport TYPE ty_s_data.
CLASS-METHODS add_to_transport_onprem
IMPORTING
ir_data TYPE REF TO datA
iv_tabname TYPE string
is_transport TYPE ty_s_data.
PROTECTED SECTION.
CLASS-METHODS get_tr_onprem.
CLASS-METHODS set_e071k
IMPORTING
ir_data TYPE REF TO datA
iv_tabname TYPE string
is_transport TYPE ty_s_data
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS set_e071
IMPORTING
iv_tabname TYPE string
is_transport TYPE ty_s_data
RETURNING
VALUE(result) TYPE REF TO data.
CLASS-METHODS read_e070.
DATA client TYPE REF TO z2ui5_if_client.
DATA mv_init TYPE abap_bool.
METHODS on_init.
METHODS render_view.
METHODS on_event.
METHODS get_tr_cloud.
PRIVATE SECTION.
CLASS-METHODS get_e071k_tabkey
IMPORTING
!line TYPE any
dfies TYPE z2ui5_cl_stmpncfctn_api=>ty_t_dfies
RETURNING
VALUE(rv_tabkey) TYPE trobj_name.
ENDCLASS.
CLASS z2ui5_cl_pop_transport IMPLEMENTATION.
METHOD z2ui5_if_app~main.
me->client = client.
IF mv_init = abap_false.
mv_init = abap_true.
on_init( ).
render_view( ).
ENDIF.
on_event( ).
client->view_model_update( ).
ENDMETHOD.
METHOD on_init.
IF z2ui5_cl_util_api=>rtti_check_lang_version_cloud( ) = abap_true.
get_tr_cloud( ).
ELSE.
get_tr_onprem( ).
ENDIF.
ENDMETHOD.
METHOD render_view.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
popup->dialog( contentWidth = '40%'
afterclose = client->_event( 'CLOSE' )
)->table( mode = 'SingleSelectLeft'
items = client->_bind_edit( mt_data )
)->columns(
)->column( )->text( 'Transport' )->get_parent(
)->column( )->text( 'Description' )->get_parent(
)->get_parent(
)->items(
)->column_list_item( selected = '{SELKZ}'
)->cells(
)->text( '{TRANSPORT}'
)->text( '{SHORT_DESCRIPTION}'
)->get_parent( )->get_parent( )->get_parent( )->get_parent(
)->buttons( )->button( text = 'Select'
press = client->_event( 'TRANSPORT_SELECT' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD on_event.
CASE client->get( )-event.
WHEN `CLOSE`.
CLEAR ms_transport.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `TRANSPORT_SELECT`.
READ TABLE mt_data INTO DATA(line) WITH KEY selkz = abap_true.
IF sy-subrc = 0.
ms_transport = line.
ENDIF.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
METHOD factory.
result = NEW #( ).
ENDMETHOD.
METHOD add_DATA_to_tranport.
IF z2ui5_cl_util_api=>rtti_check_lang_version_cloud( ) = abap_false.
* add_to_transport_cloud( ir_data = ir_data
* iv_tabname = iv_tabname
* is_transport = is_transport ).
* ELSE.
add_to_transport_onprem( ir_data = ir_data
iv_tabname = iv_tabname
is_transport = is_transport ).
ENDIF.
ENDMETHOD.
METHOD get_e071k_tabkey.
DATA lv_type TYPE c LENGTH 1.
DATA lv_tabkey TYPE c LENGTH 999.
DATA lv_tabkey_len TYPE i.
DATA lv_field_len TYPE i.
DATA lv_offset TYPE i.
LOOP AT dfies INTO DATA(s_dfies) WHERE keyflag = abap_true.
ASSIGN COMPONENT s_dfies-fieldname OF STRUCTURE line TO FIELD-SYMBOL(<value>).
IF <value> IS NOT ASSIGNED.
CONTINUE.
ENDIF.
lv_type = cl_abap_typedescr=>describe_by_data( <value> )->type_kind.
IF lv_type NA 'CDNT'.
lv_tabkey+lv_tabkey_len = '*'.
rv_tabkey = lv_tabkey.
RETURN.
ELSE.
lv_field_len = cl_abap_typedescr=>describe_by_data( <value> )->length / cl_abap_char_utilities=>charsize.
ENDIF.
lv_field_len = cl_abap_typedescr=>describe_by_data( <value> )->length / cl_abap_char_utilities=>charsize.
lv_tabkey+lv_tabkey_len(lv_field_len) = <value>.
lv_tabkey_len = lv_tabkey_len + lv_field_len.
ENDLOOP.
IF lv_tabkey_len > 119.
IF lv_tabkey CS '_'.
lv_offset = sy-fdpos.
lv_tabkey+lv_offset = '*'.
ELSE.
lv_tabkey+119 = '*'.
ENDIF.
ENDIF.
rv_tabkey = lv_tabkey.
ENDMETHOD.
METHOD add_to_transport_onprem.
FIELD-SYMBOLS <t_e071k> TYPE STANDARD TABLE.
FIELD-SYMBOLS <t_e071> TYPE STANDARD TABLE.
DATA(r_e071k) = set_e071k( ir_data = ir_data
iv_tabname = iv_tabname
is_transport = is_transport ).
DATA(r_e071) = set_e071( iv_tabname = iv_tabname
is_transport = is_transport ).
ASSIGN r_e071k->* TO <t_e071k>.
ASSIGN r_e071->* TO <t_e071>.
DATA(fb1) = 'TR_APPEND_TO_COMM_OBJS_KEYS'.
CALL FUNCTION fb1
EXPORTING wi_trkorr = is_transport-task
TABLES wt_e071 = <t_e071>
wt_e071k = <t_e071k>
EXCEPTIONS OTHERS = 1.
IF sy-subrc <> 0.
RETURN.
ENDIF.
DATA(fb2) = 'TR_SORT_AND_COMPRESS_COMM'.
CALL FUNCTION fb2
EXPORTING iv_trkorr = is_transport-task
EXCEPTIONS OTHERS = 1.
IF sy-subrc <> 0.
RETURN.
ELSE.
COMMIT WORK AND WAIT.
ENDIF.
ENDMETHOD.
METHOD get_tr_cloud.
* DATA(lo_current_user) = xco_cp=>sy->user( ).
*
* DATA(lo_kind_filter) = xco_cp_transport=>filter->kind( xco_cp_transport=>kind->task ).
* DATA(lo_owner_filter) = xco_cp_transport=>filter->owner( xco_cp_abap_sql=>constraint->equal( lo_current_user->name ) ).
* DATA(lo_status_filter) = xco_cp_transport=>filter->status( xco_cp_transport=>status->modifiable ).
* DATA(lo_type_filter) = xco_cp_transport=>filter->type( io_type = xco_cp_transport=>type->customizing_task ).
* DATA(lt_transports) = xco_cp_cts=>transports->where( VALUE #( ( lo_kind_filter )
* ( lo_owner_filter )
* ( lo_status_filter )
* ( lo_type_filter ) )
* )->resolve( xco_cp_transport=>resolution->request ).
*
* LOOP AT lt_transports INTO DATA(lo_transport).
* DATA(lo_transport_request) = lo_transport->get_request( ).
*
* DATA(prop) = lo_transport_request->properties( )->get( ).
*
* DATA(tasks) = lo_transport_request->get_tasks( ).
*
* LOOP AT tasks INTO DATA(task).
*
* IF lo_current_user->name = task->properties( )->get_owner( )->name.
*
* DATA(data) = VALUE ty_s_data( short_description = prop-short_description
* transport = lo_transport_request->value
* task = task->value ).
* APPEND data TO mt_data.
*
* ENDIF.
*
* ENDLOOP.
*
* ENDLOOP.
ENDMETHOD.
METHOD get_tr_onprem.
DATA lo_tab TYPE REF TO data.
DATA lo_line TYPE REF TO data.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <line> TYPE any.
FIELD-SYMBOLS <value> TYPE any.
read_e070( ).
DATA(table_name) = 'E07T'.
TRY.
DATA(t_comp) = z2ui5_cl_util_api=>rtti_get_t_attri_by_table_name( table_name ).
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
CREATE DATA lo_tab TYPE HANDLE new_table_desc.
CREATE DATA lo_line TYPE HANDLE new_struct_desc.
ASSIGN lo_tab->* TO <table>.
ASSIGN lo_line->* TO <line>.
DATA(index) = 0.
LOOP AT mt_data INTO DATA(line).
index = index + 1.
IF index = 1.
DATA(where) = |TRKORR EQ '{ line-task }'|.
ELSE.
where = |{ where }OR TRKORR EQ '{ line-task }'|.
ENDIF.
where = |( { where } )|.
ENDLOOP.
SELECT trkorr, as4text
FROM (table_name)
WHERE (where)
INTO TABLE @<table>.
IF sy-subrc <> 0.
RETURN.
ENDIF.
CATCH cx_root.
ENDTRY.
LOOP AT <table> INTO <line>.
ASSIGN COMPONENT 'TRKORR' OF STRUCTURE <line> TO <value>.
IF <value> IS NOT ASSIGNED.
CONTINUE.
ELSE.
READ TABLE mt_data REFERENCE INTO DATA(data) WITH KEY task = <value>.
IF sy-subrc = 0.
ASSIGN COMPONENT 'AS4TEXT' OF STRUCTURE <line> TO <value>.
IF <value> IS NOT ASSIGNED.
CONTINUE.
ELSE.
data->short_description = <value>.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD set_e071k.
DATA t_e071k TYPE REF TO data.
DATA s_e071k TYPE REF TO data.
FIELD-SYMBOLS <t_e071k> TYPE STANDARD TABLE.
FIELD-SYMBOLS <s_e071k> TYPE any.
FIELD-SYMBOLS <value> TYPE any.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
FIELD-SYMBOLS <line> TYPE any.
DATA(t_comp) = z2ui5_cl_util_api=>rtti_get_t_attri_by_table_name( 'E071K' ).
TRY.
DATA(struct_desc) = cl_abap_structdescr=>create( t_comp ).
DATA(table_desc) = cl_abap_tabledescr=>create( p_line_type = struct_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
CREATE DATA t_e071k TYPE HANDLE table_desc.
CREATE DATA s_e071k TYPE HANDLE struct_desc.
ASSIGN t_e071k->* TO <t_e071k>.
ASSIGN s_e071k->* TO <s_e071k>.
CATCH cx_root.
ENDTRY.
DATA(dfies) = z2ui5_cl_util_api=>rtti_get_t_dfies_by_table_name( iv_tabname ).
* is_transport-transport = assign_value( component = 'TRKORR'
* structure = <s_e071k> ). )
ASSIGN COMPONENT 'TRKORR' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = is_transport-transport.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'PGMID' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'R3TR'.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'MASTERTYPE' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'TABU'.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'OBJECT' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'TABU'.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'MASTERNAME' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = iv_tabname.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'OBJNAME' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = iv_tabname.
ENDIF.
UNASSIGN <value>.
ASSIGN iR_data->* TO <tab>.
IF <tab> IS INITIAL.
RETURN.
ENDIF.
LOOP AT <tab> ASSIGNING <line>.
ASSIGN COMPONENT 'TABKEY' OF STRUCTURE <s_e071k> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = get_e071k_tabkey( dfies = dfies
line = <line> ).
ENDIF.
APPEND <s_e071k> TO <t_e071k>.
ENDLOOP.
result = t_e071k.
ENDMETHOD.
METHOD set_e071.
DATA t_e071 TYPE REF TO data.
DATA s_e071 TYPE REF TO data.
FIELD-SYMBOLS <t_e071> TYPE STANDARD TABLE.
FIELD-SYMBOLS <s_e071> TYPE any.
FIELD-SYMBOLS <value> TYPE any.
DATA(t_comp) = z2ui5_cl_util_api=>rtti_get_t_attri_by_table_name( 'E071' ).
TRY.
DATA(struct_desc_new) = cl_abap_structdescr=>create( t_comp ).
DATA(table_desc_new) = cl_abap_tabledescr=>create( p_line_type = struct_desc_new
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
CREATE DATA t_e071 TYPE HANDLE table_desc_new.
CREATE DATA s_e071 TYPE HANDLE struct_desc_new.
ASSIGN t_e071->* TO <t_e071>.
ASSIGN s_e071->* TO <s_e071>.
CATCH cx_root.
ENDTRY.
ASSIGN COMPONENT 'TRKORR' OF STRUCTURE <s_e071> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = is_transport-transport.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'PGMID' OF STRUCTURE <s_e071> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'R3TR'.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'OBJECT' OF STRUCTURE <s_e071> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'TABU'.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'OBJ_NAME' OF STRUCTURE <s_e071> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = iv_tabname.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'OBJFUNC' OF STRUCTURE <s_e071> TO <value>.
IF <value> IS NOT ASSIGNED.
RETURN.
ELSE.
<value> = 'K'.
ENDIF.
UNASSIGN <value>.
APPEND <s_e071> TO <t_e071>.
result = t_e071.
ENDMETHOD.
METHOD read_e070.
DATA lo_tab TYPE REF TO data.
DATA lo_line TYPE REF TO data.
DATA ls_data TYPE ty_s_data.
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
FIELD-SYMBOLS <line> TYPE any.
FIELD-SYMBOLS <value> TYPE any.
DATA(table_name) = 'E070'.
TRY.
DATA(t_comp) = z2ui5_cl_util_api=>rtti_get_t_attri_by_table_name( table_name ).
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
CREATE DATA lo_tab TYPE HANDLE new_table_desc.
CREATE DATA lo_line TYPE HANDLE new_struct_desc.
ASSIGN lo_tab->* TO <table>.
ASSIGN lo_line->* TO <line>.
DATA(where) =
|( TRFUNCTION EQ 'Q' ) AND ( TRSTATUS EQ 'D' ) AND ( KORRDEV EQ 'CUST' ) AND ( AS4USER EQ '{ sy-uname }' )|.
SELECT trkorr, strkorr
FROM (table_name)
WHERE (where)
INTO TABLE @<table>.
IF sy-subrc <> 0.
RETURN.
ENDIF.
CATCH cx_root.
ENDTRY.
LOOP AT <table> INTO <line>.
ASSIGN COMPONENT 'TRKORR' OF STRUCTURE <line> TO <value>.
IF <value> IS NOT ASSIGNED.
CONTINUE.
ELSE.
ls_data-transport = <value>.
ENDIF.
UNASSIGN <value>.
ASSIGN COMPONENT 'STRKORR' OF STRUCTURE <line> TO <value>.
IF <value> IS NOT ASSIGNED.
CONTINUE.
ELSE.
ls_data-task = <value>.
ENDIF.
UNASSIGN <value>.
APPEND ls_data TO mt_data.
ENDLOOP.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_POP_TRANSPORT</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>Transportrequest</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -185,6 +185,15 @@
<LENG>000030</LENG>
<MASK> CHAR</MASK>
</DD03P>
<DD03P>
<FIELDNAME>SUBCOLUMN</FIELDNAME>
<ADMINFIELD>0</ADMINFIELD>
<INTTYPE>C</INTTYPE>
<INTLEN>000510</INTLEN>
<DATATYPE>CHAR</DATATYPE>
<LENG>000255</LENG>
<MASK> CHAR</MASK>
</DD03P>
</DD03P_TABLE>
</asx:values>
</asx:abap>