Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: cfkel от Февраль 27, 2014, 05:07:54 pm
-
День добрый.
Есть такая проблемка - есть транзакция (/scwm/prdi в sap ewm), в ней есть кнопка "ПоступлМтр", на которую, очень бы не хотелось, чтоб нажимали пользователи.
Как я понимаю, есть два варианта:
1. Каким-то образом сделать так, чтоб при нажатии кнопки не происходило ничего.
2. Убрать кнопку из транзакции.
Поскольку транзакция стандартная, то править просто что-то в коде затруднительно. Простого и изящного выхода из положения я не нашел (возможно он есть, но я его не знаю).
По второму способу - нашел замечательную транзу SHD0, о которой даже упоминается здесь на форуме:
http://sapforum.biz/index.php?topic=393.0
Но она касается, как я вижу больше полей ввода, я увидел что и правда их можно убирать, но вот касательно стандартных кнопок - мне ничего сделать не удалось.
Подскажите, возможно есть метод или какое-то пояснение к упомянутым мною с помощью которого можно избавить пользователей от соблазна делать ошибки и создавать проблемы поддержке :)
-
Ну это статусная строка ALV-таблицы, т.е. обработать ее в логике экрана, типа PF STATUS не получится. Статусная строка для ALV-таблицы формируется где-то по тексту программы. Если вы найдете место формирования, у меня к сожалению такой транзакции нет, то можете там используя технику enhancment добавить код скрывающий данную кнопку.
-
Допустим.
Я нашел метод "SET_TOOLBAR_INB"
Вероятно нашел место формирования:
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_post_gm text-104,
/scwm/if_ui_c=>sc_ok_oip_cancel_gm text-117.
append_menu /scwm/if_ui_c=>sc_ok_oip_post_gm.
Но опять же - метод стандартный - может быть глупый вопрос, как добавить код?)
-
Допустим.
Я нашел метод "SET_TOOLBAR_INB"
Можно весь код метода посмотреть?
-
METHOD set_toolbar_inb .
DATA:
ls_button TYPE stb_button,
ls_menu_lines TYPE /scmb/s_menu_lines,
ls_menu TYPE /scmb/s_dropdown_menu.
CASE iv_aspect.
* Aspect: head -------------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_oip_1.
icnd:
/scwm/if_ui_c=>sc_ok_oip_create icon_create text-105.
icn:
/scwm/if_ui_c=>sc_ok_oip_change icon_change text-100,
/scwm/if_ui_c=>sc_ok_oip_display icon_display text-102,
/scwm/if_ui_c=>sc_ok_oip_delete icon_delete text-101,
/scwm/if_ui_c=>sc_ok_oip_check icon_check text-111,
/scmb/if_constant=>sc_ok_refresh icon_refresh text-121,
/scmb/if_constant=>sc_ok_save icon_system_save text-118.
seperator.
IF /scwm/cl_ewm_switch_check=>sfws_701_trans_int( ) = abap_true.
* switch dependent action to set transport planning status
icn_txtm /scwm/if_ui_c=>sc_ok_oip_set_transpl text-207 text-210
icon_set_state.
ENDIF.
icn_txtd /scwm/if_ui_c=>sc_ok_oip_yard text-115 text-115
icon_set_state.
icn_txtm /scwm/if_ui_c=>sc_ok_oip_check_custrel
text-132 text-132 icon_set_state.
seperator.
icn_txt /scwm/if_ui_c=>sc_ok_oip_reject text-120 text-175
icon_system_save.
icn_txtd:
/scwm/if_ui_c=>sc_ok_oip_load text-116 text-177
icon_system_save,
/scwm/if_ui_c=>sc_ok_oip_post_gm text-104 text-103
icon_system_save.
seperator.
icnm /scwm/if_ui_c=>sc_ok_oip_detail_to icon_detail text-149.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_create text-105,
/scwm/if_ui_c=>sc_ok_oip_create_prod text-204.
append_menu /scwm/if_ui_c=>sc_ok_oip_create.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_post_gm text-104,
/scwm/if_ui_c=>sc_ok_oip_cancel_gm text-117.
append_menu /scwm/if_ui_c=>sc_ok_oip_post_gm.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_load text-116,
/scwm/if_ui_c=>sc_ok_oip_cancel_load text-134.
append_menu /scwm/if_ui_c=>sc_ok_oip_load.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_yard text-108,
/scwm/if_ui_c=>sc_ok_oip_yard_cancel text-109.
append_menu /scwm/if_ui_c=>sc_ok_oip_yard.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_check_custrel text-147,
/scwm/if_ui_c=>sc_ok_oip_set_custrel text-133.
append_menu /scwm/if_ui_c=>sc_ok_oip_check_custrel.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_detail_to text-150,
/scwm/if_ui_c=>sc_ok_oip_gm_to text-151,
/scwm/if_ui_c=>sc_ok_changedoc text-152,
/scwm/if_ui_c=>sc_ok_oip_hu_df text-161,
/scwm/if_ui_c=>sc_ok_oip_vas text-154,
/scwm/if_ui_c=>sc_ok_oip_count text-156,
/scwm/if_ui_c=>sc_ok_oip_quality text-157,
/scwm/if_ui_c=>sc_ok_oip_inspect text-158,
/scwm/if_ui_c=>sc_ok_oip_pi text-171.
append_menu /scwm/if_ui_c=>sc_ok_oip_detail_to.
* switch dependent menues
IF /scwm/cl_ewm_switch_check=>sfws_701_trans_int( ) = abap_true.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_oip_set_transpl text-208,
/scwm/if_ui_c=>sc_ok_oip_reset_transpl text-209.
append_menu /scwm/if_ui_c=>sc_ok_oip_set_transpl.
ENDIF.
* Aspect: item -------------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_1.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101,
/scwm/if_ui_c=>sc_ok_odp1_mass icon_mass_change text-148.
seperator.
* Batch functions
icn_txtd /scwm/if_ui_c=>sc_ok_odp1_split1
text-196 text-123 icon_batch.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_odp1_split1 text-123,
/scwm/if_ui_c=>sc_ok_odp1_create_batch text-197.
append_menu /scwm/if_ui_c=>sc_ok_odp1_split1.
* Process Codes
icn_txtm /scwm/if_gr_c=>sc_ok_pcode_w_qty text-192 text-193
icon_graduate.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_gr_c=>sc_ok_pcode_w_qty text-194,
/scwm/if_gr_c=>sc_ok_pcode_wo_qty text-195,
/scwm/if_gr_c=>sc_ok_pcode_adjust text-140.
append_menu /scwm/if_gr_c=>sc_ok_pcode_w_qty.
* Release/reset statuses for tolerance and BBD violation
icn_txtm /scwm/if_gr_c=>sc_ok_release_tolerance
text-198 text-198 icon_set_state.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_gr_c=>sc_ok_release_tolerance text-199,
/scwm/if_gr_c=>sc_ok_reset_tolerance text-200,
/scwm/if_gr_c=>sc_ok_release_bbd text-201,
/scwm/if_gr_c=>sc_ok_reset_bbd text-202.
append_menu /scwm/if_gr_c=>sc_ok_release_tolerance.
seperator.
icnm /scwm/if_ui_c=>sc_ok_odp1_detail_to icon_detail text-149.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_odp1_detail_to text-150,
/scwm/if_ui_c=>sc_ok_odp1_gm_to text-151,
/scwm/if_ui_c=>sc_ok_odp1_changedoc text-152,
/scwm/if_ui_c=>sc_ok_odp1_material text-159,
/scwm/if_ui_c=>sc_ok_odp1_hu_df text-161,
/scwm/if_ui_c=>sc_ok_odp1_vas text-154,
/scwm/if_ui_c=>sc_ok_odp1_count text-156,
/scwm/if_ui_c=>sc_ok_odp1_quality text-157,
/scwm/if_ui_c=>sc_ok_odp1_pi text-171.
append_menu /scwm/if_ui_c=>sc_ok_odp1_detail_to.
* Aspect: head text --------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_text.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_2.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101.
seperator.
txt /scwm/if_ui_c=>sc_ok_odp1_sapscript text-124 text-124.
* Aspect: head date --------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_date.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_3.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101.
* Aspect: head addmeas -----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_addmeas.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_4.
* Aspect: head location ----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_location.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_5.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101.
seperator.
icn_txt:
/scwm/if_ui_c=>sc_ok_odp1_dc_ad text-143 text-142 icon_address,
/scwm/if_ui_c=>sc_ok_odp1_md_ad text-144 text-136 icon_address.
* Aspect: hu ---------------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_hu.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_7.
icn_txtd /scwm/if_ui_c=>sc_ok_odp1_post_gm
text-104 text-103 icon_system_save.
seperator.
icn /scwm/if_ui_c=>sc_ok_odp1_toggle_hu icon_time text-203.
seperator.
icnd /scwm/if_ui_c=>sc_ok_odp1_display_hu icon_detail text-149.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_odp1_post_gm text-104,
/scwm/if_ui_c=>sc_ok_odp1_cancel_gm text-117.
append_menu /scwm/if_ui_c=>sc_ok_odp1_post_gm.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_odp1_display_hu text-206,
/scwm/if_ui_c=>sc_ok_odp1_display_epc text-190.
append_menu /scwm/if_ui_c=>sc_ok_odp1_display_hu.
* Aspect: head party -------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_party.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_8.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101.
seperator.
icn_txt:
/scwm/if_ui_c=>sc_ok_odp1_dc_ad text-143 text-142 icon_address,
/scwm/if_ui_c=>sc_ok_odp1_md_ad text-144 text-136 icon_address.
* Aspect: head status ------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_status.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_9.
* Aspect: head refdoc ------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_refdoc.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_10.
icn:
/scwm/if_ui_c=>sc_ok_odp1_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp1_delete icon_delete text-101.
* Aspect: head applog ------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_applog.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_11.
* Aspect: head TU ----------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_head_tu.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp1_12.
icn /scwm/if_ui_c=>sc_ok_odp1_display_tu icon_detail text-155.
* Aspect: item docflow -----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_docflow.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_1.
icn /scwm/if_ui_c=>sc_ok_docflow_detail icon_detail text-149.
* Aspect: item text --------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_text.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_2.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
seperator.
txt /scwm/if_ui_c=>sc_ok_odp2_sapscript text-124 text-124.
* Aspect: item date --------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_date.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_3.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
* Aspect: item addmeas -----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_addmeas.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_4.
txt /scwm/if_ui_c=>sc_ok_odp2_maintain_valq text-182 text-191.
* Aspect: item location ----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_location.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_5.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
seperator.
icn_txt:
/scwm/if_ui_c=>sc_ok_odp2_dc_ad text-143 text-142 icon_address,
/scwm/if_ui_c=>sc_ok_odp2_md_ad text-144 text-136 icon_address.
* Aspect: item status ------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_status.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_6.
* Aspect: item prcodes -----------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_prcodes.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_7.
icn /scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
* Aspect: item hierarchy ---------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_hierarchy.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_8.
* Aspect: item party -------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_party.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_9.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
seperator.
icn_txt:
/scwm/if_ui_c=>sc_ok_odp2_dc_ad text-143 text-142 icon_address,
/scwm/if_ui_c=>sc_ok_odp2_md_ad text-144 text-136 icon_address.
* Aspect: item refdoc ------------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_refdoc.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_10.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
* Aspect: item addin split -------------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_addin_split.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_11.
* Aspect: item serial numbers ----------------------------------------
WHEN /scwm/if_sp_c=>sc_asp_item_sn.
es_tb-v_container_name = /scmb/if_constant=>sc_cont_tb_odp2_12.
icn:
/scwm/if_ui_c=>sc_ok_odp2_create icon_create text-105,
/scwm/if_ui_c=>sc_ok_odp2_delete icon_delete text-101.
seperator.
txtm /scwm/if_ui_c=>sc_ok_odp2_sn_auto text-185 text-186.
txt /scwm/if_ui_c=>sc_ok_odp2_sn_split text-127 text-127.
CLEAR ls_menu.
define_menu_lines:
/scwm/if_ui_c=>sc_ok_odp2_sn_auto text-172,
/scwm/if_ui_c=>sc_ok_odp2_sn_pattern text-173.
append_menu /scwm/if_ui_c=>sc_ok_odp2_sn_auto.
ENDCASE.
ENDMETHOD.
-
Ну стандартных расширений нет, тогда читаем тут про неявные енхансменты: http://sapforum.biz/index.php/topic,546.0.html добавляем в конец метода такой енхнасмент который отключает данную кнопку. Единственное что, если вы не абапер и не очень представляете что и как делать, самому лучше не лезть, поломаете еще, причем капитально.
-
Спасибо!
Очень помогли :)
Вроде не накосячил, систему не поломал, всё работает :)
ENHANCEMENT 1 ZPRDI_HIDDEN_BUTTON. "active version
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(3) Класс /SCWM/CL_DLV_PRD_TAMAN, Метод SET_ASPECT_INB, Выход, Расширение ZPRDI_HIDDEN_BUTTON, Начало A
*
if ES_DEF-S_TOOLBAR-T_BUTTONS is not initial and sy-uname <> 'я'.
field-symbols: <s_tbuttons> type STB_BUTTON.
loop at ES_DEF-S_TOOLBAR-T_BUTTONS ASSIGNING <s_tbuttons>.
DELETE ES_DEF-S_TOOLBAR-T_BUTTONS WHERE FUNCTION = 'OIP_POST_GM'.
endloop.
endif.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4) Класс /SCWM/CL_DLV_PRD_TAMAN, Метод SET_ASPECT_INB, Выход, Расширение ZPRDI_HIDDEN_BUTTON, Выход A
ENDENHANCEMENT.
-
sy-uname <> 'я'
Не очень хорошее решение. Может сделать объект полномочий и его проверять. Типа есть или нет полномочия на отражение данной кнопки.
-
Не очень хорошее решение. Может сделать объект полномочий и его проверять. Типа есть или нет полномочия на отражение данной кнопки.
Согласен.
Исправлю :)