Текущее время: Вт, апр 16 2024, 14:36

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 14:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Здравствуйте.
Нужно было после экрана выбора выполнить проверку, есть ли введенные данные в таблице, которую мы сохранили.
Я вызвал perform list_matnr.

здесь я объявил необходимые данные для проверки
и выполнил свою проверку
Code:
select * from zuznospis_log into corresponding fields of table it_zuznospis_log_second
    where MATNR_IZD = p_matnr and charg = p_charg and node = ''.
  if lt_zuznospis_log_second is not initial.


далее
Code:
try.
    cl_salv_table=>factory(
    importing
      r_salv_table = gc_alv_table
    changing
      t_table = it_zuznospis_log_second[] ).
    catch cx_salv_data_error cx_salv_not_found.
   endtry.

создал статус
Code:
SET PF-STATUS 'SALV_STANDARD'.
   gc_alv_table->SET_SCREEN_STATUS(
     PFSTATUS      =  'SALV_STANDARD'
     REPORT        = SY-REPID
     SET_FUNCTIONS = gc_alv_table->C_FUNCTIONS_ALL ).

описал таблицу с ячейками и столбцами
и вызвал экран CALL METHOD gc_alv_table->display.

здесь было все отлично, я создал на экране две свои кнопки, НО у меня не получается их запрограммировать О_о?
я обычно описывал все действия в PBO и PAI..

я не понимаю куда мне внедриться для описания своих действий.
Может мне надо создать свой статус? и обработать все события именно там ? input и output? подскажите пожалуйста.
грубо говоря этот кусок
Code:
data: answer type c value space.
data: gi_index_rows type lvc_t_row.
case sy-ucomm.
  when 'MYFUNCTION'.
    set SCREEN 0.
    LEAVE SCREEN.
endcase.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 14:17 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
:evil:
Смотрите стандартные примеры! Ваши вопросы элементарны и лежат на поверхности.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 14:20 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Besa написал:
:evil:
Смотрите стандартные примеры! Ваши вопросы элементарны и лежат на поверхности.

не ругайтесь, я salv вдоль и поперек пробежался по примерам.
старые транзакции свои просмотрел, подскажите подробнее, у меня явная проблема по структуре. Т.к. мне дают уже готовую транзакцию, которую нужно доработать и это вызывает много вопросов т.к. я пока что разрабатывал только свои с нуля... и не получается внедриться в разработку.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 14:33 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
ALV Object Model – Simple 2D Table – Event Handling


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 16:52 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
John Doe написал:

эта маленькая книжка просто восхитительна, но к сожалению у меня возникла ошибка в Event Handlers - Event ADDED_FUNCTION
ругается что gc_table null ...

Code:
FORM LIST_MATNR.

  select * from zuznospis_log into corresponding fields of table it_zuznospis_log_second
    where MATNR_IZD = p_matnr and charg = p_charg and node = ''.
  if lt_zuznospis_log_second is not initial.


  data: gc_table type ref to cl_salv_table.
  data: gc_selections type ref to cl_salv_selections.
  data: gc_events TYPE REF TO cl_salv_events_table.
  data: event_handler type ref to lcl_handle_events.

    cl_salv_table=>factory(
    importing
      r_salv_table = gc_alv_table
    changing
      t_table = it_zuznospis_log_second[] ).

    gc_alv_table->SET_SCREEN_STATUS(
     PFSTATUS      =  'SALV_STANDARD'
     REPORT        = SY-REPID
     SET_FUNCTIONS = gc_alv_table->C_FUNCTIONS_ALL ).

тут идет именование столбцов всех

ругается на нее  ->>>>> gc_events = gc_table->get_event( ).
    create object event_handler.
    set handler event_handler->on_user_command for gc_events.

    gc_selections = gc_alv_table->get_selections( ).
    gc_selections->set_selection_mode( 1 ).

    CALL METHOD gc_alv_table->display.
   endif.

ENDFORM.


Code:
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS:
    on_user_command FOR EVENT added_function OF cl_salv_events
      IMPORTING e_salv_function.
ENDCLASS.                    "lcl_handle_events DEFINITION


Code:
CLASS lcl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    DATA: lr_selections TYPE REF TO cl_salv_selections.
    DATA: lt_rows TYPE salv_t_row.
    DATA: ls_rows TYPE i.
    DATA: message TYPE string.

    CASE e_salv_function.
      WHEN 'MYFUNCTION'.
        CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT_LO'
          EXPORTING
            titel        = 'Внимание!'
            textline1    = 'Сообщение!'
            start_column = 15
            start_row    = 6.

    ENDCASE.
  ENDMETHOD.                    "on_user_command

ENDCLASS.     


не совсем понимаю. где я мог ошибиться, если как "обезъянка" передирал код к себе
и этот кусок
Code:
gc_events = gc_table->get_event( ).
    create object event_handler.
    set handler event_handler->on_user_command for gc_events.

у меня вызывает вопросы
грубо говоря мы gc_events - передает gc_table со всеми событиями
но как и говорится в ошибке, gc_table пуста же, мы же нигде не перемещаем данные
создаем новый объект - событие ?
и отправляем событие к реализации - а там мы уже забираем функцию myfunction.
но стопорится на gc_events = gc_table->get_event( ).
Подтолкните к решению пожалуйста.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Чт, фев 07 2019, 17:01 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Создали gc_alv_table, а пытаетесь с gc_table работать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 07:50 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
John Doe написал:
Создали gc_alv_table, а пытаетесь с gc_table работать.

блин, извините за тупейшие ошибки, уже не соображал под конец рабочего дня.
спасибо за помощь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Дальше сложнее...
Code:
CALL METHOD gc_alv_table->get_selected_rows
        IMPORTING
          et_index_rows = gi_index_rows.
        IF gi_index_rows[] IS INITIAL.
          CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT_LO'
            EXPORTING
              titel        = 'Внимание!'
              textline1    = 'Вы не выделили строку!'
              start_column = 15
              start_row    = 6.
        ELSE.
        ENDIF.

этим методом я хотел проверить выделена ли строка или нет....
в последствии получить ее и забрать параметры для дальнейшей выборки из другой таблицы.
но
Цитата:
Method "GET_SELECTED_ROWS" does not exist. There is, however a method with the similar name "GET_SELECTIONS".

но у CL_SALV_SELECTIONS - в который входыт класс get_selections есть метод GET_SELECTED_ROWS.
где я снова туплю?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
gc_alv_table как объявлено?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:18 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
sonics написал(а):
где я снова туплю?

То что Вы не понимаете что такое ABAP OO, и как работает factory, это еще куда не шло, но почему хотя бы не посмотреть примеры и просто не повторить?
SALV_DEMO_TABLE_SELECTIONS


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:24 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
но у CL_SALV_SELECTIONS - в который входыт класс get_selections есть метод GET_SELECTED_ROWS.
где я снова туплю?


Все очень просто, gc_alv_table не является экземпляром класса CL_SALV_SELECTIONS

Code:
data rows type SALV_T_ROW.

gc_selections = gc_table->GET_SELECTIONS( ).
rows = gc_selections->GET_SELECTED_ROWS( ).



Последний раз редактировалось Kuranov.Dmitry Пт, фев 08 2019, 11:27, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:26 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Kuranov.Dmitry написал(а):
gc_alv_table как объявлено?

как cl_salv_table


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:27 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Besa написал:
sonics написал(а):
где я снова туплю?

То что Вы не понимаете что такое ABAP OO, и как работает factory, это еще куда не шло, но почему хотя бы не посмотреть примеры и просто не повторить?
SALV_DEMO_TABLE_SELECTIONS

напротив, именно этот пример у меня и открыт
я пытаюсь разобраться


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:28 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
Kuranov.Dmitry написал(а):
gc_alv_table как объявлено?

как cl_salv_table

Я вас огорчу, но класс cl_salv_table не имеет метода GET_SELECTED_ROWS.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Событие выделение строки cl_salv_table
СообщениеДобавлено: Пт, фев 08 2019, 11:31 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Kuranov.Dmitry написал(а):
Я вас огорчу, но класс cl_salv_table не имеет метода GET_SELECTED_ROWS.

получается, придется переделать отчет в alv grid?
чтобы я мог проверить выделенную строку пуста она или нет и забрать данные из строки для дальнейшей выборки?


Последний раз редактировалось sonics Пт, фев 08 2019, 11:41, всего редактировалось 1 раз.

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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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