Текущее время: Чт, мар 28 2024, 19:53

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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