Автор Тема: Ведение настроечных таблиц: пример "обертки"  (Прочитано 16960 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Присваиваем пользователю полномочия на соответствующую транзакцию, привязанную к отчету. Если ему хочется вести таблицу напрямую в продуктиве, без переноса запросов с содержимым, то при генерации диалога ведения необходимо поставить переключатель "Подпрограмма Записи" на "Без подпрограммы записи или только ИндивидПодпрЗап", а объект полномочий "&NC&" - "Без ГруппыПолномоч" (рис.SE11). Вариант кода отчета:
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  ZSM30                                                       *
*&---------------------------------------------------------------------*
REPORT zsm30.
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-000.
PARAMETERS: p01 RADIOBUTTON GROUP g00,
                   p02 RADIOBUTTON GROUP g00.
SELECTION-SCREEN END OF BLOCK b00.
*&-----------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.
PARAMETERS: p03 RADIOBUTTON GROUP g01,
                   p04 RADIOBUTTON GROUP g01.
SELECTION-SCREEN END OF BLOCK b01.
*&---------------------------------------------------------------------*
DATA: gv_tabname TYPE tabname,
         gv_action.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
* От нечего делать
  MESSAGE 'Далее: F8 или Enter' TYPE 'S'.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
* Имя ракурса ведения
  IF p01 = 'X'.
    gv_tabname = 'ZTB_TEST'.
  ELSE.
    gv_tabname = 'YOUR_VIEW'.
  ENDIF.
* Вид вызова
  IF p03 = 'X'.
    gv_action = 'S'. " Просмотр
  ELSE.
    gv_action = 'U'. " Ведение
  ENDIF.
* Вызов диалога ведения
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                       = gv_action
      view_name                 = gv_tabname
    EXCEPTIONS
      client_reference            = 1
      foreign_lock                 = 2
      invalid_action               = 3
      no_clientindependent_auth    = 4
      no_database_function         = 5
      no_editor_function           = 6
      no_show_auth                 = 7
      no_tvdir_entry               = 8
      no_upd_auth                  = 9
      only_show_allowed            = 10
      system_failure               = 11
      unknown_field_in_dba_sellist = 12
      view_not_found               = 13
      OTHERS                       = 14.
  IF sy-subrc <> 0.
* Ошибка вызова диалога ведения
    MESSAGE e000(su) WITH 'Ошибка №' sy-subrc 'вызова диалога ведения' gv_tabname.
  ENDIF.
*&---------------------------------------------------------------------*

Если соотношение транзакция - количество таблиц для ведения равно 1:1, то еще проще создать транзакцию параметров на SM30 через SE93 (рис.SE93).

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
В SE80 можно зайти в группу ф-ций, указанную при генерации диалога ведения и вручную подредактировать экран ведения, если не устраивает ширина полей на экране и проч. При перегенерации диалога ведения (необходимо выполнять, если меняется сама таблица: состав полей, типы данных и т.д) придется сделать этого заново, поэтому данное действо не приветствуется, но очень даже используется.

Sapforum.Biz