Текущее время: Чт, июн 26 2025, 07:55

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Создание справочник, используя грид
СообщениеДобавлено: Пт, окт 31 2008, 07:01 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 31 2008, 06:52
Сообщения: 11
Пожалуйста, подскажите: делаю справочник, используя грид. Заполняю его данными, сохраняю, а запись в последней ячейке не сохраняется. Если же перехожу с последней ячейки на другую и сохраняю - все нормально, изменения принимаются и данные сохраняются. В чем может быть проблема?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 08:50 
Специалист
Специалист

Зарегистрирован:
Пт, сен 05 2008, 08:08
Сообщения: 134
Пол: Женский
Попробуйте использовать метод check_changed_data класса cl_gui_alv_grid.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 10:24 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Цитата:
делаю справочник, используя грид

Используйте генератор ведения таблиц для создания ракурса ведения.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 16:42 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Вот как я делаю справочники может кому понадобится!!!

Code:
*&---------------------------------------------------------------------*
*& Program ZFI_BEZPRAVA_BP Soglaev V/A 14.08.2008                          *
*&---------------------------------------------------------------------*
PROGRAM  Z_FI_BEZPRAVA_BP.
TABLES : ZFI_BEZPRAVA_BP. " Основная таблица данных
TYPE-POOLS  VRM.          " Подключение заполнения listbox
*-CLASS_BEGIN-##########################################################
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS handle_data_changed
      FOR EVENT data_changed OF cl_gui_alv_grid
      IMPORTING er_data_changed.

    METHODS handle_f4
      FOR EVENT onf4 OF cl_gui_alv_grid
      IMPORTING e_fieldname
                es_row_no
                er_event_data
                et_bad_cells.

    METHODS handle_data_changed_finished
      FOR EVENT data_changed_finished OF cl_gui_alv_grid
      IMPORTING e_modified
                et_good_cells.
ENDCLASS.                    "lcl_event_receiver DEFINITION

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_data_changed.
    PERFORM data_changed USING er_data_changed.
  ENDMETHOD.                    "handle_data_changed

METHOD handle_f4.
    PERFORM f4 USING e_fieldname
                     es_row_no
                     er_event_data
                     et_bad_cells.
  ENDMETHOD.                                                "handle_f4

  METHOD handle_data_changed_finished.
    PERFORM data_changed_finished USING
            e_modified
            et_good_cells.
  ENDMETHOD.                    "handle_data_changed_finished
*---------------------------------------------------------
ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
*-CLASS_END-############################################################

*-Грид для строк документа-#############################################
DATA: g_container TYPE scrfname VALUE 'GRID',
      g_container_error TYPE scrfname VALUE 'CONTAINER_ERROR',
      Grid TYPE REF TO cl_gui_alv_grid,
      g_custom_container TYPE REF TO cl_gui_custom_container,
      g_custom_container_error TYPE REF TO cl_gui_custom_container.

*- ListBox ---------------
DATA : NAME  TYPE VRM_ID,
        LIST  TYPE VRM_VALUES,
        VALUE LIKE LINE OF LIST.
DATA : BUKRS LIKE ZFI_BEZPRAVA_BP-BUKRS.
DATA : IDUSL LIKE ZFI_BEZPRAVA_BP-VIDUS.

*Строки документа (ДАННЫЕ)
  data: BEGIN OF i_doc_lines OCCURS 0.
        include structure ZFI_BEZPRAVA_BP.
  data: END OF i_doc_lines.
*Собственный банк
  data: ST012 LIKE TABLE OF T012 WITH HEADER LINE.

DATA : deleted_rows TYPE STANDARD TABLE OF ZFI_BEZPRAVA_BP WITH HEADER LINE. " Удалённые
DATA : modify_rows  TYPE STANDARD TABLE OF ZFI_BEZPRAVA_BP WITH HEADER LINE. " Изменённые
DATA : insert_rows  TYPE STANDARD TABLE OF ZFI_BEZPRAVA_BP WITH HEADER LINE. " Новые
DATA : event_receiver TYPE REF TO lcl_event_receiver.                        " Приёмник событий
DATA : lt_exclude TYPE ui_functions.
DATA : change_flag TYPE c VALUE space.
DATA : gs_variant  TYPE disvariant.
DATA : gs_layout   TYPE lvc_s_layo." LAYOUT для строк документа
DATA : gt_fieldcat TYPE lvc_t_fcat." Каталог полей для строк документа (GRID)
DATA : gt_sort     TYPE lvc_t_sort.
DATA : gt_f4 TYPE lvc_t_f4.

INITIALIZATION.
Call screen 1000.        " Первый экран
START-OF-SELECTION.
" BEGIN ###################################################################################
MODULE init_screen_0100  OUTPUT.
   SET PF-STATUS '100'.
   SET TITLEBAR  '100'.
" Заполнение listbox
   CLEAR LIST. REFRESH LIST.
   VALUE-KEY  = '1'.
   VALUE-TEXT = 'ГСМ'.
   APPEND VALUE TO LIST.

   VALUE-KEY  = '2'.
   VALUE-TEXT = 'Услуга без права включ. ВР'.
   APPEND VALUE TO LIST.

   CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
     ID = 'IDUSL'
     VALUES = LIST.
ENDMODULE.

MODULE CANCEL INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE DO_ INPUT.
  CASE sy-ucomm.
    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN 'OKAY'.
      PERFORM AUTHORITY_CHECK. " Проверка прав полномочия
      PERFORM SEL_DATA.
      Call screen 1001.
  ENDCASE.
ENDMODULE.

"## Обработка таблицы #####################################################################
MODULE pai_input INPUT. "   Модуль после вывода на экран
  DATA: answer TYPE c VALUE space.
  DATA: err_code(1) TYPE c VALUE space.
  DATA: l_valid(1) TYPE c.
  CASE sy-ucomm." Обработка событий кнопок
    WHEN 'CANCEL'."-----------------------------------------
      IF change_flag <> space.
        CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
          EXPORTING
            defaultoption  = 'Y'
            textline1      = 'Все несохранённые данные будут утеряны.'
            textline2      = 'Продолжить?'
            titel          = 'Предупреждение'
            start_column   = 30
            start_row      = 6
            cancel_display = space
          IMPORTING
            answer         = answer.
      ELSE.
        answer = 'J'.
      ENDIF.
      IF answer = 'J'.
        SET SCREEN 0.
        LEAVE SCREEN.
      ENDIF.
    WHEN 'EDIT'."-------------------------------------------
       if GRID->is_ready_for_input( ) = 0.
          call method GRID->set_ready_for_input EXPORTING
               i_ready_for_input = 1.
       else.
          CALL METHOD GRID->check_changed_data
          IMPORTING
            e_valid = l_valid.
          IF l_valid = 'X'.
             call method GRID->set_ready_for_input EXPORTING
                  i_ready_for_input = 0.
          ENDIF.
       endif.
    WHEN 'SAVE'."-------------------------------------------
      PERFORM initial_check USING err_code.
      CALL METHOD grid->check_changed_data
        IMPORTING
          e_valid = l_valid.
      IF l_valid = 'X' AND err_code NE 'X'.
         PERFORM save_database.
      ELSE.
         MESSAGE text-002 TYPE 'S' DISPLAY LIKE 'E'.
      ENDIF.
    WHEN 'BTDEL'."-------------------------------------------
      DATA : BT_DEL TYPE C VALUE ''.
      IF change_flag <> space.
        CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
          EXPORTING
            defaultoption  = 'Y'
            textline1      = 'Все несохранённые данные будут утеряны.'
            textline2      = 'Продолжить?'
            titel          = 'Предупреждение'
            start_column   = 30
            start_row      = 6
            cancel_display = space
          IMPORTING
            answer         = answer.
      ELSE.
         answer = 'J'.
      ENDIF.
      IF answer = 'J'.
         IF BT_DEL = space. " Показывать не показывать удалённые
            BT_DEL = 'X'.
            FREE i_doc_lines.
            Select * from ZFI_BEZPRAVA_BP into corresponding fields of table i_doc_lines
            WHERE BUKRS = BUKRS and IDUSL = IDUSL.
         ELSE.
            CLEAR BT_DEL.
            FREE i_doc_lines.
            Select * from ZFI_BEZPRAVA_BP into corresponding fields of table i_doc_lines
            WHERE BUKRS =  BUKRS and IDUSL = IDUSL AND ISDEL = BT_DEL .
         ENDIF.
      ENDIF.
  ENDCASE.
ENDMODULE.

MODULE grid_creat OUTPUT. " Модуль перед выводом
  SET PF-STATUS '100'. " устанавливаем пользовательские кнопки
  SET TITLEBAR  '100'.
  LOOP AT SCREEN.
      IF screen-NAME eq 'BTDEL'. " Скрытие кнопки
         IF sy-uname <> 'V.A.SOGLAEV'. " Если я кнопка активна
            screen-input = '0'.
         ENDIF.
      ENDIF.
      MODIFY SCREEN.
  ENDLOOP.

  IF g_custom_container IS INITIAL. " если контейнер не создан
    IF sy-batch IS INITIAL. " если не запущен фоновый режим
       CREATE OBJECT g_custom_container " создаем контейнер
           EXPORTING container_name = g_container.
       CREATE OBJECT g_custom_container_error " создаем контейнер
           EXPORTING container_name = g_container_error.
    ENDIF.
    CREATE OBJECT grid     " создаем грид
        EXPORTING i_parent = g_custom_container
                  i_applogparent = g_custom_container_error.

    CREATE OBJECT event_receiver. " создаем приемник событий
* и привязываем его к гриду
    SET HANDLER event_receiver->handle_data_changed FOR grid.
    SET HANDLER event_receiver->handle_data_changed_finished FOR grid.

* F4 для грида
    SET HANDLER event_receiver->handle_f4 FOR grid.
    CALL METHOD grid->register_f4_for_fields
      EXPORTING
        it_f4 = gt_f4.

    IF sy-batch IS INITIAL.
* метод обработки изменений при смене ячеек
      CALL METHOD grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    ENDIF.
    PERFORM exclude_tb_functions CHANGING lt_exclude.

* если таблица пустая - режим редактирования,
* если есть записи - режим просмотра
    IF i_doc_lines[] IS INITIAL.
      CALL METHOD grid->set_ready_for_input
        EXPORTING
          i_ready_for_input = 1.
    ELSE.
      CALL METHOD grid->set_ready_for_input
        EXPORTING
          i_ready_for_input = 0.
    ENDIF.
  ENDIF.

    PERFORM BUILD_FIELDCAT TABLES gt_fieldcat[].

    CALL METHOD grid->set_table_for_first_display
      EXPORTING
        it_toolbar_excluding = lt_exclude
        i_save               = 'A'
        is_variant           = gs_variant
        is_layout            = gs_layout
      CHANGING
        it_outtab            = i_doc_lines[]
        it_sort              = gt_sort
        it_fieldcatalog      = gt_fieldcat[].

  CALL METHOD grid->refresh_table_display.
ENDMODULE.

FORM BUILD_FIELDCAT TABLES fcat.
  DATA: wa TYPE lvc_s_fcat.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
       EXPORTING
            i_structure_name = 'ZFI_BEZPRAVA_BP'
       CHANGING
            ct_fieldcat      = fcat[]
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
       OTHERS                      = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  LOOP AT fcat INTO wa.
    "Скрываем лишние поля
    search 'ID/BUKRS/ISUSL/CPUDT/CPUTM/USNAME/ISDEL' for wa-fieldname.
    if sy-subrc eq 0.
       wa-no_out = 'X'.
       MODIFY fcat FROM wa.
    endif.

    CASE wa-fieldname.    " Укорачиваем видимую длину наименования

      WHEN 'BUDAT'.
        wa-coltext   = 'Дата'.
        wa-outputlen = 10.
        MODIFY fcat FROM wa.
      WHEN 'NUMDOC'.
        wa-coltext   = 'Номер документа'.
        wa-outputlen = 20.
        MODIFY fcat FROM wa.
      WHEN 'NAMOR'.
        wa-coltext   = 'Наименование организации'.
        wa-outputlen = 25.
        MODIFY fcat FROM wa.
      WHEN 'VIDUS'.
        wa-coltext   = 'Вид услуги'.
        wa-outputlen = 25.
        MODIFY fcat FROM wa.
      WHEN 'SUMDOC'.
        wa-coltext   = 'Сумма'.
        wa-outputlen = 15.
        MODIFY fcat FROM wa.
    "##################################################
      WHEN 'BUKRS'.
        wa-coltext   = 'БЕ'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'ID'.
        wa-coltext   = 'ID'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'IDUSL'.
        wa-coltext   = 'ГСМ/Услуга'.
        wa-no_out = 'X'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'CPUDT'.
        wa-coltext   = 'Дата'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'CPUTM'.
        wa-coltext   = 'Время'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'USNAME'.
        wa-coltext   = 'Пользователь'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
      WHEN 'ISDEL'.
        wa-coltext   = 'Удален'.
        wa-style = cl_gui_alv_grid=>mc_style_enabled. " Запрет на редактирование
        MODIFY fcat FROM wa.
    ENDCASE.
  ENDLOOP.
    gs_layout-edit = 'X'.
    gs_layout-no_toolbar = ''.
ENDFORM.                               " BUILD_TREEFIELDCAT

FORM SEL_DATA. "" Загрузка в таблицу
  FREE i_doc_lines.
  Select * from ZFI_BEZPRAVA_BP into corresponding fields of table i_doc_lines
    WHERE BUKRS =  BUKRS and IDUSL = IDUSL AND ISDEL = '' .
ENDFORM.

FORM data_changed USING rr_data_changed TYPE REF TO cl_alv_changed_data_protocol.

  FIELD-SYMBOLS <fld> TYPE ANY.
  DATA: i_doc_lines_wa LIKE LINE OF i_doc_lines.
  DATA: field_text(50) TYPE c.
  DATA: ls_fieldcatalog TYPE lvc_s_fcat.

  DATA: ls_mod_cells  TYPE lvc_s_modi.
  DATA: ls_del_cells  TYPE lvc_s_moce.
  DATA: ls_ins_cells  TYPE lvc_s_moce.
  DATA: ls_modi_cells TYPE lvc_s_modi.
  DATA: ls_cells      TYPE lvc_s_modi.

  DATA: l_BUDAT   LIKE ZFI_BEZPRAVA_BP-BUDAT.
  DATA: l_NUMDOC  LIKE ZFI_BEZPRAVA_BP-NUMDOC.
  DATA: l_NAMOR   LIKE ZFI_BEZPRAVA_BP-NAMOR.
  DATA: l_VIDUS   LIKE ZFI_BEZPRAVA_BP-VIDUS.
  DATA: l_SUMDOC   LIKE ZFI_BEZPRAVA_BP-SUMDOC.

  DATA: area TYPE REF TO data.
  FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
  FIELD-SYMBOLS <line> LIKE LINE OF i_doc_lines.

  change_flag = 'X'.
** регистрация удаленных строк
  LOOP AT rr_data_changed->mt_deleted_rows INTO ls_del_cells.
    READ TABLE i_doc_lines INTO i_doc_lines_wa INDEX ls_del_cells-row_id.
    MOVE-CORRESPONDING i_doc_lines_wa TO deleted_rows.
    COLLECT deleted_rows.
  ENDLOOP.

*** регистрация редактируемых и новых
   LOOP AT rr_data_changed->mt_mod_cells INTO ls_mod_cells.
    READ TABLE i_doc_lines INDEX ls_mod_cells-row_id." Читаем текущую строку!
    if i_doc_lines-ISDEL = 'X'." Проверяем удалена или нет!
       MESSAGE 'Ошибка: Нельзя редактировать удалённую запись!' TYPE 'S' DISPLAY LIKE 'E'.
    ELSE.
    CASE ls_mod_cells-fieldname.
     WHEN 'BUDAT'.
        CALL METHOD rr_data_changed->get_cell_value
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
          IMPORTING
            e_value     = l_BUDAT.
        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
            i_value     = l_BUDAT.

     WHEN 'NUMDOC'.
        CALL METHOD rr_data_changed->get_cell_value
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
          IMPORTING
            e_value     = l_NUMDOC.
        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
            i_value     = l_NUMDOC.

     WHEN 'NAMOR'.
        CALL METHOD rr_data_changed->get_cell_value
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
          IMPORTING
            e_value     = l_NAMOR.
        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
            i_value     = l_NAMOR.

     WHEN 'VIDUS'.
        CALL METHOD rr_data_changed->get_cell_value
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
          IMPORTING
            e_value     = l_VIDUS.
        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
            i_value     = l_VIDUS.

     WHEN 'SUMDOC'.
        CALL METHOD rr_data_changed->get_cell_value
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
          IMPORTING
            e_value     = l_SUMDOC.
        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = ls_mod_cells-fieldname
            i_value     = l_SUMDOC.
    ENDCASE.

       CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = 'BUKRS'
            i_value     =  BUKRS.

       CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = 'IDUSL'
            i_value     =  IDUSL.

       CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = 'CPUDT'
            i_value     = sy-datum.

        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = 'CPUTM'
            i_value     = sy-uzeit.

        CALL METHOD rr_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_mod_cells-row_id
            i_fieldname = 'USNAME'
            i_value     = sy-uname.
     ENDIF.
  ENDLOOP.

ENDFORM.                    "data_changed

FORM save_database.
* !!! удаление из таблицы !!!
  LOOP AT deleted_rows.
    UPDATE ZFI_BEZPRAVA_BP SET CPUDT   = sy-datum
                         CPUTM   = sy-uzeit
                         USNAME  = sy-uname
                         ISDEL = 'X'
          WHERE id = deleted_rows-id.
  ENDLOOP.
* --- Проверка уникальности -------------------------------------------------
  DATA : tmp_tab_save LIKE i_doc_lines OCCURS 10 WITH HEADER LINE,
         npp TYPE I.
  tmp_tab_save[] = i_doc_lines[].
  LOOP AT i_doc_lines .
    LOOP AT tmp_tab_save WHERE IDUSL = i_doc_lines-IDUSL and BUDAT = i_doc_lines-BUDAT and numdoc = i_doc_lines-NUMDOC.
      npp = npp + 1.
      IF npp >= 2.
         MESSAGE 'Запись уже существует!!!' TYPE 'W' display like 'E'.
         RETURN.
      ENDIF.
    ENDLOOP.
    CLEAR npp.
  ENDLOOP.

* !!! модификация или добавление записей в таблицу !!!
  data : gen_id type int4.
  LOOP AT i_doc_lines WHERE ISDEL <> 'X'.
    i_doc_lines-MANDT = sy-MANDT.
    i_doc_lines-BUKRS = BUKRS.
    i_doc_lines-IDUSL = IDUSL.
     "===Получение уникального ключа "gen_id" к справочнику=========
     if sy-tabix eq 1.
       clear gen_id.
       Select single max( id ) from ZFI_BEZPRAVA_BP into gen_id .
    endif.
    if i_doc_lines-id eq 0 .
       gen_id = gen_id + 1.
       i_doc_lines-id = gen_id.
    endif.
    "===============================================================
    modify : i_doc_lines.
    clear  : i_doc_lines , ZFI_BEZPRAVA_BP.
  ENDLOOP.

  MODIFY ZFI_BEZPRAVA_BP FROM TABLE i_doc_lines. COMMIT WORK. " Finish

  IF sy-subrc = 0.
    MESSAGE text-008 TYPE 'S'.
    CLEAR change_flag.
  ELSE.
    MESSAGE text-010 TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.
ENDFORM. "update_database.

FORM data_changed_finished  USING r_modified TYPE char01 rt_good_cells TYPE lvc_t_modi.
  " здесь в сформированную строку заполняю дополнительные поля в таблицу
  DATA rt_good_cells_wa LIKE LINE OF rt_good_cells.
ENDFORM.

FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
  DATA ls_exclude TYPE ui_func.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
  APPEND ls_exclude TO pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
  APPEND ls_exclude TO pt_exclude.
  ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
  APPEND ls_exclude TO pt_exclude.
ENDFORM.

FORM f4 USING r_fieldname TYPE lvc_fname
              rs_row_no TYPE lvc_s_roid
              rr_event_data TYPE REF TO cl_alv_event_data
              rt_bad_cells TYPE lvc_t_modi.                 "#EC *
  FIELD-SYMBOLS: <lt_f4> TYPE lvc_t_modi.
  DATA: ls_f4 TYPE lvc_s_modi.
  ASSIGN rr_event_data->m_data->* TO <lt_f4>.
  ls_f4-fieldname = r_fieldname.
  ls_f4-row_id = rs_row_no-row_id.
  ls_f4-value = 'BLUBBER'.
  APPEND ls_f4 TO <lt_f4>.
  rr_event_data->m_event_handled = 'X'.
ENDFORM.                                                    " F4

FORM initial_check USING err_code TYPE c. " Проверка на правильность ввода данных
  CLEAR : err_code.
  LOOP AT i_doc_lines.
*    IF i_doc_lines-SUMDOC IS INITIAL.
*      err_code = 'X'. EXIT.
*    ENDIF.
  ENDLOOP.
ENDFORM.

FORM AUTHORITY_CHECK.
  AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
            ID 'BUKRS' FIELD BUKRS
            ID 'ACTVT' FIELD '03'.
  if sy-subrc ne 0.
     MESSAGE 'Нет прав на получение информации!!!' TYPE 'I'.
     SUBMIT Z_FI_BEZPRAVA_BP .
  endif.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 16:54 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Valeriy написал:
Вот как я делаю справочники может кому понадобится!!!

...
А я вот предпочитаю по старинке - через ракурс ведения.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 17:11 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
sy-uname написал(а):
Valeriy написал:
Вот как я делаю справочники может кому понадобится!!!

...
А я вот предпочитаю по старинке - через ракурс ведения.


Ракурсом быстрее будет но так красивееее :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 17:14 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
sy-uname написал(а):
А я вот предпочитаю по старинке - через ракурс ведения.

+1.
Зачем городить огород, когда есть стандартный инструмент.
Еще и достаточно продвинутый (*вспоминая кластеры ракурсов*).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 17:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Пономарев Артем написал:
sy-uname написал(а):
А я вот предпочитаю по старинке - через ракурс ведения.

+1.
Зачем городить огород, когда есть стандартный инструмент.
Еще и достаточно продвинутый (*вспоминая кластеры ракурсов*).


А в ракурсе филтр по данным есть? Или там сумму какуюто получить ? :?:


Последний раз редактировалось Valeriy Пт, окт 31 2008, 17:23, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 17:23 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Valeriy написал:
А в ракурсе филтр по данным есть? Или там сумму какуето получит ? :?:

А при чем здесь справочник?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 17:29 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Ну, например у вас справочник пользователей по визированию, пару тысяч.

Пользователь заходит в справочник и хочет увидеть Петровича П.П. до какого момента он может визировать документы. Как ему искать Петровича ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 18:01 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Цитата:
Как ему искать Петровича ?

Кнопка "Позиционирование" для поиска.
или sm30 - ограничение
А если нужна агрегация, то это уже и не справочник получается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 18:04 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Ладно убедили ракурс круче буду пользоватся :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 18:08 
Специалист
Специалист

Зарегистрирован:
Ср, окт 08 2008, 10:44
Сообщения: 164
Откуда: оттуда
Пол: Мужской
N/A написал(а):
Цитата:
Как ему искать Петровича ?

Кнопка "Позиционирование" для поиска.
или sm30 - ограничение
А если нужна агрегация, то это уже и не справочник получается.


А если Петрович не ключевое поле? :wink:

_________________
Мне не надо девятьсот, два по двести и пятьсот


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 31 2008, 18:29 
Специалист
Специалист

Зарегистрирован:
Ср, окт 08 2008, 10:44
Сообщения: 164
Откуда: оттуда
Пол: Мужской
Пономарев Артем написал:
sy-uname написал(а):
А я вот предпочитаю по старинке - через ракурс ведения.

+1.
Зачем городить огород, когда есть стандартный инструмент.
Еще и достаточно продвинутый (*вспоминая кластеры ракурсов*).


Поиска нет, фильтров нет... не так уж там все огорожено))) Для небольших объемов подойдет, в остальном не очень удобно.....

_________________
Мне не надо девятьсот, два по двести и пятьсот


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 26 2008, 12:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Поиска нет, фильтров нет... не так уж там все огорожено))) Для небольших объемов подойдет, в остальном не очень удобно.....

+1

_________________
С уважением.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Michael_


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB