method REMOVE_EXEC .
DATA: lo_nd_rfid_table TYPE REF TO if_wd_context_node,
my_table type ref to data,
my_row type ref to data.
field-symbols: <table> type table,
<row> type data,
<flight> type sflight,
<ft_data> TYPE ANY TABLE.
DATA: node_info type ref to if_wd_context_node_info,
struct_type TYPE REF TO cl_abap_structdescr,
table_type type ref to cl_abap_tabledescr,
comp_tab TYPE cl_abap_structdescr=>component_table,
comp LIKE LINE OF comp_tab.
data lt_elem TYPE WDR_CONTEXT_ELEMENT_SET.
data ls_elem LIKE LINE OF LT_ELEM.
data: lt_pobj_extid type /AIN/PUB_POBJ_EXTID_TAB,
ls_pobj_extid LIKE LINE OF LT_POBJ_EXTID,
LT_POBJ_EXTID_LINK TYPE /AIN/PUB_POBJ_EXTID_LINK_TAB,
Ls_POBJ_EXTID_LINK TYPE /AIN/PUB_POBJ_EXTID_LINK_str.
data:
lt_btd_obj_act_key TYPE /ain/pub_btd_obj_act_key_tab,
ls_btd_obj_act_key LIKE LINE OF lt_btd_obj_act_key.
data: lt_pobj_othattr type /AIN/PUB_POBJ_OTHATTR_TAB,
ls_pobj_othattr LIKE LINE OF LT_POBJ_OTHATTR.
data: lt_pobj_tab type /AIN/PUB_POBJ_INTID_TAB,
ls_pobj_tab type /AIN/PUB_POBJ_INTID_STR,
lT_POBJ_ID TYPE /AIN/PUB_POBJ_ID_TAB,
ls_pobj_id type /AIN/PUB_POBJ_ID_str.
data: lt_return type BAPIRETTAB.
* navigate from <CONTEXT> to <RFID_TABLE> via lead selection
lo_nd_rfid_table = wd_context->get_child_node( name = wd_this->wdctx_rfid_table ).
NODE_INFO = LO_ND_RFID_TABLE->GET_NODE_INFO( ).
STRUCT_TYPE = NODE_INFO->GET_STATIC_ATTRIBUTES_TYPE( ).
CREATE DATA MY_ROW TYPE HANDLE STRUCT_TYPE.
table_type = cl_abap_tabledescr=>create( p_line_type = struct_type ).
create data my_table type handle table_type.
ASSIGN MY_TABLE->* to <TABLE>.
* @TODO handle non existant child
* IF lo_nd_rfid_table IS INITIAL.
* ENDIF.
lo_nd_rfid_table->get_static_attributes_table( importing table = <TABLE> ).
* LT_ELEM = get_elements_to_remove( ). "LO_ND_RFID_TABLE->GET_SELECTED_ELEMENTS( INCLUDING_LEAD_SELECTION = abap_true ).
lt_elem = LO_ND_RFID_TABLE->GET_ELEMENTS( ).
IF LT_ELEM is not INITIAL.
try.
LOOP AT LT_ELEM INTO LS_ELEM.
LS_ELEM->GET_ATTRIBUTE( exporting NAME = 'RFID' IMPORTING VALUE = LS_POBJ_EXTID-POBJ_EXTID ).
APPEND LS_POBJ_EXTID to LT_POBJ_EXTID.
ENDLOOP.
CATCH cx_root.
ENDTRY.
CALL FUNCTION '/AIN/PUB_POBJ_SIMPLEBY_EXTIDS'
TABLES
IT_POBJ_EXTID = LT_POBJ_EXTID
ET_POBJ_EXTID_LINK = LT_POBJ_EXTID_LINK
* ET_RETURN =
EXCEPTIONS
TECHNICAL_LEVEL_ERROR = 1
BUSINESS_LEVEL_ERROR_INPUT = 2
OTHERS = 3.
IF SY-SUBRC = 0.
IF wd_this->MV_MS_FLAG is not INITIAL.
LOOP AT LT_POBJ_EXTID_LINK INTO LS_POBJ_EXTID_LINK.
LS_BTD_OBJ_ACT_KEY-BTD_INTID = BTD_INTID.
LS_BTD_OBJ_ACT_KEY-POBJ_INTID = LS_POBJ_EXTID_LINK-POBJ_INTID.
LS_BTD_OBJ_ACT_KEY-ACTION_TYPE = 'MOVE'.
append LS_BTD_OBJ_ACT_KEY to LT_BTD_OBJ_ACT_KEY.
LS_POBJ_TAB-POBJ_INTID = LS_POBJ_EXTID_LINK-POBJ_INTID.
APPEND LS_POBJ_TAB to LT_POBJ_TAB.
ENDLOOP.
LOOP AT LT_POBJ_TAB INTO LS_POBJ_TAB.
LS_POBJ_OTHATTR-ATTRIBUTE_NAME = ZCL_WD_ASSISTANCE=>gc_POBJ_ATTR_MS_BTD_ID.
clear LS_POBJ_OTHATTR-ATTRIBUTE_VALUE.
APPEND LS_POBJ_OTHATTR to LT_POBJ_OTHATTR.
ENDLOOP.
CALL FUNCTION '/AIN/PUB_POBJ_OTHATT_MODIFY'
TABLES
IT_POBJ_OTHATTR = LT_POBJ_OTHATTR
ET_RETURN = LT_RETURN
EXCEPTIONS
TECHNICAL_LEVEL_ERROR = 1
BUSINESS_LEVEL_ERROR_INPUT = 2
OTHERS = 3.
IF sy-subrc <> 0.
EV_MSG = 'Ошибка модификации атрибутов метки'.
Endif.
ENDIF.
IF PERMANENT is not INITIAL.
LOOP AT LT_POBJ_EXTID_LINK INTO LS_POBJ_EXTID_LINK.
LS_BTD_OBJ_ACT_KEY-BTD_INTID = BTD_INTID.
LS_BTD_OBJ_ACT_KEY-POBJ_INTID = LS_POBJ_EXTID_LINK-POBJ_INTID.
LS_BTD_OBJ_ACT_KEY-ACTION_TYPE = 'MOVE'.
append LS_BTD_OBJ_ACT_KEY to LT_BTD_OBJ_ACT_KEY.
LS_POBJ_TAB-POBJ_INTID = LS_POBJ_EXTID_LINK-POBJ_INTID.
APPEND LS_POBJ_TAB to LT_POBJ_TAB.
ENDLOOP.
* CALL FUNCTION '/AIN/PUB_POBJ_BY_INTIDS'
* TABLES
* IT_POBJ_INTID = LT_POBJ_TAB
** ET_POBJ_HEADER = ET_POBJ_HEADER
* ET_POBJ_ID = LT_POBJ_ID
* ET_POBJ_OTHATTR = lt_pobj_othattr
* ET_RETURN = lt_return
** ET_POBJ_AGGR = ET_POBJ_AGGR
** ET_QCHAR_COMB =
* EXCEPTIONS
* TECHNICAL_LEVEL_ERROR = 1
* BUSINESS_LEVEL_ERROR_INPUT = 2
* OTHERS = 3.
* LOOP AT LT_POBJ_ID INTO LS_POBJ_ID.
LOOP AT LT_POBJ_TAB INTO LS_POBJ_TAB.
LS_POBJ_OTHATTR-POBJ_INTID = LS_POBJ_TAB-POBJ_INTID.
get TIME STAMP FIELD LS_POBJ_OTHATTR-UPDATE_TIME .
LS_POBJ_OTHATTR-UPDATE_USER = sy-uname.
LS_POBJ_OTHATTR-ATTRIBUTE_NAME = 'ZEXCLUDED'.
LS_POBJ_OTHATTR-ATTRIBUTE_VALUE = 'B'.
APPEND LS_POBJ_OTHATTR to LT_POBJ_OTHATTR.
* добавляем информацию о пользователе, услючающем метки
LS_POBJ_OTHATTR-ATTRIBUTE_NAME = 'ZEXCLUDE_BY'.
LS_POBJ_OTHATTR-ATTRIBUTE_VALUE = sy-uname.
APPEND LS_POBJ_OTHATTR to LT_POBJ_OTHATTR.
LS_POBJ_OTHATTR-ATTRIBUTE_NAME = 'ZEXCLUDE_TIME'.
LS_POBJ_OTHATTR-ATTRIBUTE_VALUE = LS_POBJ_OTHATTR-UPDATE_TIME.
APPEND LS_POBJ_OTHATTR to LT_POBJ_OTHATTR.
ENDLOOP.
* ENDLOOP.
CALL FUNCTION '/AIN/PUB_POBJ_OTHATT_MODIFY'
TABLES
IT_POBJ_OTHATTR = LT_POBJ_OTHATTR
ET_RETURN = LT_RETURN
EXCEPTIONS
TECHNICAL_LEVEL_ERROR = 1
BUSINESS_LEVEL_ERROR_INPUT = 2
OTHERS = 3.
IF sy-subrc <> 0.
EV_MSG = 'Ошибка модификации атрибутов метки'.
Endif.
ENDIF.
IF LT_BTD_OBJ_ACT_KEY is INITIAL.
LOOP AT LT_POBJ_EXTID_LINK INTO LS_POBJ_EXTID_LINK.
LS_BTD_OBJ_ACT_KEY-BTD_INTID = BTD_INTID.
LS_BTD_OBJ_ACT_KEY-POBJ_INTID = LS_POBJ_EXTID_LINK-POBJ_INTID.
LS_BTD_OBJ_ACT_KEY-ACTION_TYPE = 'MOVE'.
append LS_BTD_OBJ_ACT_KEY to LT_BTD_OBJ_ACT_KEY.
ENDLOOP.
ENDIF.
CALL FUNCTION '/AIN/PUB_BTD_DELETE'
TABLES
* IT_BTD_INTID = Lt_BTD_INTID
it_btd_obj_act_key = lt_btd_obj_act_key
et_return = lt_return
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION '/AIN/PUB_BO_SAVE'
EXCEPTIONS
technical_level_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
EV_MSG = 'Ошибка сохранения атрибутов метки'.
Endif.
ENDIF.
ELSE.
EV_MSG = 'Для удаления не выбраны элементы'.
ENDIF.
wd_this->GV_RES = EV_MSG.
wd_this->FIRE_REMOVE_RFID_EVT( RES = ev_msg ).
endmethod.