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

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


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

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


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

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