Текущее время: Вт, июл 22 2025, 16:27

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 11:10 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
Доброго всем времени суток! Я начинающий ABAP-er. Мне нужен ваш совет в написании некоторого кода, а конкретней экрана выбора. Есть такое начало кода выбора на экране
Code:
tables: bulk, " наименования организаций                   
     bulk2. " Идентификационный номер организаций       
data: im_bulk like bulk,
     im_bulk2 like bulk2.
DATA: begin of im_tab,
  im_name1  LIKE bulk2-name1,   
  im_name2  LIKE bulk-name2,   
  im_name3 LIKE bulk-name3, 
  im_name4 LIKE bulk-name4,          "эти поля нужны для вывода на экран
  im_name5  LIKE bulk-name5, 
  im_name6 LIKE bulk-name6,
  im_name7  LIKE bulk-name7, 
  im_name8  LIKE bulk-name8,   
END OF im_tab.

SELECTION-SCREEN BEGIN OF BLOCK LB WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS im_name1 for bulk2-name1.
SELECT-OPTIONS im_name2 for bulk-name1 DEFAULT 'AA' to 'ZZ'.
select-OPTIONS im_name3 for bulk-name3.
SELECTION-SCREEN END OF BLOCK LB.


SELECTION-SCREEN BEGIN OF BLOCK LB1 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 5.
    PARAMETERS: button1 RADIOBUTTON GROUP bt.
    SELECTION-SCREEN COMMENT  10(30) text-003.
  SELECTION-SCREEN END OF LINE.

  SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 5.
    PARAMETERS: button2 RADIOBUTTON GROUP bt.
    SELECTION-SCREEN COMMENT 10(30) text-004.
  SELECTION-SCREEN END OF LINE.

  SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 5.
    PARAMETERS: button3 RADIOBUTTON GROUP bt.
    SELECTION-SCREEN COMMENT 10(30) text-005.
  SELECTION-SCREEN END OF LINE.
  SELECTION-SCREEN END OF BLOCK LB1.



после этого я пытаюсь сделать просто вывод на экран при нажатой button 1



Code:

START-OF-SELECTION.

  select single * from bulk2  where  = im_name1.
    SELECT * from bulk  where name2 in im_name2
                       and name3 in im_name3.
      ENDSELECT.

  if button1 = 'X'.
      loop at bulk.
        loop at bulk2.
      write : / bulk-name1.
    ENDLOOP.
    ENDLOOP.
ENDIF.


Но ничего, как вы понимаете, не происходит, просто для примера хотел для начала вывести одно поле на экран, видимо я не так пишу, может кто нить чо нить подскажет?А то чота я совсем не вывожу, а вообще конечно нужен вывод на экран по выбору радиобаттнона всех необходимых полей, мне хотя бы приблизительный синтаксис...подтолкнуть меня так сказать. Буду признателен за любую помощь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 11:27 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
SELECTION_SCREEN не так богат на события как хотелось бы
Если меняется выбор в RADIOBUTTON, никакого отлавливаемого события не происходит
нужно еще нажать ENTER чтобы PAI и PBO отработали
или кнопку Выполнить для START_OF_SELECTION

и там уже анализируете значения ваших кнопок
смотрите встроенный хелп AT SELECTION-SCREEN

Code:
  select single * from bulk2  where  = im_name1.
    SELECT * from bulk  where name2 in im_name2
                       and name3 in im_name3.
      ENDSELECT.

этот кусок кода у вас правда компилится? :shumlol:


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

Зарегистрирован:
Пт, янв 18 2008, 10:34
Сообщения: 716
Откуда: Moscow
Пол: Мужской
MantiCore1977 написал:
Если меняется выбор в RADIOBUTTON, никакого отлавливаемого события не происходит
нужно еще нажать ENTER чтобы PAI и PBO отработали
или кнопку.


надеюсь это была шутка :?

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 12:22 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
Даже Почетный гуру был озадачен этим в далеком 2008, так что не страшно :wink: . Не всем и не всегда дают поработать с экранной логикой selection-screen :rtfm:

viewtopic.php?f=13&t=39816

_________________
Ничто так не заразительно, как смех начальника...


Последний раз редактировалось LinevskiySV Ср, окт 24 2012, 12:35, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 12:26 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
MantiCore1977 написал:
SELECTION_SCREEN не так богат на события как хотелось бы
Если меняется выбор в RADIOBUTTON, никакого отлавливаемого события не происходит
нужно еще нажать ENTER чтобы PAI и PBO отработали
или кнопку Выполнить для START_OF_SELECTION

и там уже анализируете значения ваших кнопок
смотрите встроенный хелп AT SELECTION-SCREEN

Code:
  select single * from bulk2  where  = im_name1.
    SELECT * from bulk  where name2 in im_name2
                       and name3 in im_name3.
      ENDSELECT.

этот кусок кода у вас правда компилится? :shumlol:


ну пусть будет такой кусок кода


Code:
if button1 eq 'X'.
       select name2 name3 name4 name5
           name6 name7 name8 name9
      from bulk  into CORRESPONDING FIELDS OF TABLE im_bulk.
ELSEIF button1 = 'X'.
  select * FROM bulk2 into TABLE im_bulk2 WHERE name1 = im_bulk2-name1.
endif.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 12:45 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
ghost написал:
MantiCore1977 написал:
Если меняется выбор в RADIOBUTTON, никакого отлавливаемого события не происходит
нужно еще нажать ENTER чтобы PAI и PBO отработали
или кнопку.


надеюсь это была шутка :?

имелось ввиду данная конкретная описанная в коде RADIOBUTTON без USER-COMMAND :mrgreen:
или и такую можно как-то мгновенно поймать?

В такое все равно не верю
Code:
tables: bulk, " наименования организаций                   
     bulk2. " Идентификационный номер организаций       
data: im_bulk like bulk,
     im_bulk2 like bulk2.

Code:
select name2 name3 name4 name5
           name6 name7 name8 name9
      from bulk  into CORRESPONDING FIELDS OF TABLE im_bulk.

Потому что знакомое каждому русскому человеку слово tables вопреки переводу не делает bulk(и im_bulk, которая like bulk) таблицей :twisted:
И компилятор должен заругаться на это дело ( into CORRESPONDING FIELDS OF TABLE)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 14:43 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
[В такое все равно не верю
Code:
tables: bulk, " наименования организаций                   
     bulk2. " Идентификационный номер организаций       
data: im_bulk like bulk,
     im_bulk2 like bulk2.

Code:
select name2 name3 name4 name5
           name6 name7 name8 name9
      from bulk  into CORRESPONDING FIELDS OF TABLE im_bulk.

Потому что знакомое каждому русскому человеку слово tables вопреки переводу не делает bulk(и im_bulk, которая like bulk) таблицей :twisted:
И компилятор должен заругаться на это дело ( into CORRESPONDING FIELDS OF TABLE)[/quote]

Ну я извиняюсь какбы...за интеллект, я человек не опытный, таблицы bulk и bulk2 они физически существуют, может поэтому компилятор не заругался, в общем событие я вроде бы на писал, вроде срабатывает
Code:
START-OF-SELECTION.

  IF button1 EQ 'X'.
    SELECT * FROM bulk2  INTO TABLE im_bulk2 WHERE name1 IN im_name1.

    SELECT   name2 name3
           name4 name5 name6 name7
         FROM bulk  INTO CORRESPONDING FIELDS OF TABLE im_bulk.


    LOOP AT im_bulk2.

      LOOP AT im_bulk
      WHERE name1= im_bulk2-name.
        WRITE: / im_bulk2-name1,im_bulk-name2, im_bulk-name3,
                 im_bulk-name4,im_bulk-name5, im_bulk-name6,
                 im_bulk-name7.
      ENDLOOP.
    ENDLOOP.

ENDIF.


Но \это только когда радиобаттон стоит на Все, теперь какбы мне с уловием вывести второй экран когда пользователь нажимает второй радиобаттон, а там не заблокированные организации должны быть


Последний раз редактировалось Novohud Ср, окт 24 2012, 15:30, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 15:12 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Не знаю, может я заработался, или у меня SAP "не той системы" (с)
таблицы bulk у меня нет, пишу аналогичный код для eban
Code:
TABLES eban.
DATA im_eban LIKE eban.
SELECT * FROM eban INTO TABLE im_eban UP TO 10 ROWS.

не компилируется, и правильно делает, потому что im_eban получается по описанию не таблица, а переменная (строка таблицы)
Цитата:
TABLES table_wa.
Effect
This statement is not allowed in classes and declares a data object table_wa as a table work area whose data type is adopted from the identically named structured data type table_wa from the ABAP Dictionary. table_wa must be defined as a flat structure in the ABAP Dictionary.

если заменить на DATA im_eban LIKE STANDARD TABLE OF eban или DATA im_eban TYPE STANDARD TABLE OF eban или OCCURS добавить, тогда все в порядке.
как у вас все проходит компиляцию - я хз

Code:
LOOP AT im_bulk2.
опять же так только для таблиц with header line можно делать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 15:29 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
[/quote]
если заменить на DATA im_eban LIKE STANDARD TABLE OF eban или DATA im_eban TYPE STANDARD TABLE OF eban или OCCURS добавить, тогда все в порядке.
как у вас все проходит компиляцию - я хз

Code:
LOOP AT im_bulk2.
опять же так только для таблиц with header line можно делать[/quote]

Да всё правильно вы говорите, физически таблицы называются по другому, это я так...поменял просто название их, и with header line я тоже добавил, а то компилятор ругался, может вы мне посдкажете, как мне теперь сделать чтобы щёлкнув на радио баттоне 2 выходили не все как на радио баттоне 1, а только не блокированные организации, там пару полей есть в таблице где обозначается что организация блокирована, вот бы синтаксис мне кто нить приблизительный подсказал, я был очень признателен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 15:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, апр 18 2012, 14:20
Сообщения: 252
Откуда: РБ, г. Гомель
Пол: Мужской
Цитата:
with header line я тоже добавил

едрен батон, так же можно и в запой уйти :lol:
а по поводу button2 у вас же все написано уже
только ELSE добавить перед ENDIF и вывести то что надо.
Code:
ELSE.
  IF button2 EQ 'X'.
  " тут пишете что вам надо, свои лупы по таблицам, в которых там пару полей есть (с)
   
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Ср, окт 24 2012, 16:26 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
MantiCore1977 написал:
Цитата:
with header line я тоже добавил

едрен батон, так же можно и в запой уйти :lol:
а по поводу button2 у вас же все написано уже
только ELSE добавить перед ENDIF и вывести то что надо.
Code:
ELSE.
  IF button2 EQ 'X'.
  " тут пишете что вам надо, свои лупы по таблицам, в которых там пару полей есть (с)
   
  ENDIF.


Ну спасибо, вроде бы написал, теперь бы выходящий экран почитабельней сделать было ваще классно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Чт, окт 25 2012, 08:19 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
В продолжении темы: хочется вывести данные на экран с помощью ALV Grid-a. Получится ли у меня не меняя основного кода программы, т.е. все if-ы и селекты оставить, урать только loop-ы, добавить класс туда CL_GUI_Custom_Container CL_GUI_ALV_Grid, допустим создаём ссылку на класы:
Code:
data: r_container type ref to CL_GUI_Custom_Container,
          r_grid  type ref to CL_GUI_ALV_Grid


Потом создаём на них объекты
Code:
create object r_container
exporting container_name = 'container_1'.
create object r_grid
exporting i_parent = r_container.
r_grid->set_table_for_first_display (i_structure_name = 'bulk'
                                                    it_outtab = im_bulk ).


можно ли засунурть это класс в ой основной код не меняя его сильно? И хотелось бы знать, вот в в параметре IT_OUTTAB надо указать текущую внутреннюю таблицу, а у меня их если две эти таблицы, как мне в этом случае реализовать? Я вот немножно не допонимаю..., может кто разъяснит?! Буду ну оооочень признателен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Select-option
СообщениеДобавлено: Чт, окт 25 2012, 13:57 
Начинающий
Начинающий

Зарегистрирован:
Ср, окт 24 2012, 05:58
Сообщения: 11
Не совсем подходящий класс какой то я выбрал лучше наверное этим воспользуюсь
Code:
DATA: gc_alv_table TYPE REF TO cl_salv_table.
cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table
                           CHANGING t_table = bulk3[] ).
  gc_alv_table->display( ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


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

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


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

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