SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

checkbox slis_fieldcat_alv


Goto page 1, 2  Next
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 4:00 pm    Post subject: checkbox slis_fieldcat_alv Reply with quote

Code:
DATA: ls_fieldcat     TYPE slis_fieldcat_alv...

TYPES: BEGIN OF dat,
  id          TYPE ZDURATION-ID,
  isCheker,
END OF dat.
....

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
...
         it_fieldcat                       = gt_fieldcat[]
         is_layout                         = gs_layout
...
       TABLES
         t_outtab                          = gt_dat
       EXCEPTIONS
         PROGRAM_ERROR                     = 1
         OTHERS                            = 2.
.....
  ls_fieldcat-fieldname   = 'ISCHEKER'.
  ls_fieldcat-seltext_l     = 'TEST.'.
  ls_fieldcat-outputlen    = 5.
  ls_fieldcat-EDIT          = 'X'.
  ls_fieldcat-key            = 'X'.
  ls_fieldcat-checkbox    = 'X'.
  append ls_fieldcat to gt_fieldcat.


в АЛВ гриде есть колонка с чекбоксом, поставил я галочку (checkbox = true) как теперь программно узнать какая (какие) записи отмечены, что бы даль с ними работать?
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Mon Jun 21, 2010 4:13 pm    Post subject: Reply with quote

В вашей же таблице gt_dat, в поле ISCHEKER
Back to top
View user's profile Send private message Blog
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 4:19 pm    Post subject: Reply with quote

Тогда - значит когда ставлю в ТРУ чекбокс нужно в gt_dat-ISCHEKER занести что его чекнули, а как обработать эту ситуацию - когда я ставлю чекер в ТРУ?
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 4:29 pm    Post subject: Reply with quote

Sed0Y wrote:
Тогда - значит когда ставлю в ТРУ чекбокс нужно в gt_dat-ISCHEKER занести что его чекнули, а как обработать эту ситуацию - когда я ставлю чекер в ТРУ?

Ситуацию обработать в п/п USER_COMMAND. Цикл по таблице gt_dat, где ISCHEKER = 'X' - индикатор того, что строка выбрана.

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 4:43 pm    Post subject: Reply with quote

Dmitriy wrote:
Sed0Y wrote:
Тогда - значит когда ставлю в ТРУ чекбокс нужно в gt_dat-ISCHEKER занести что его чекнули, а как обработать эту ситуацию - когда я ставлю чекер в ТРУ?

Ситуацию обработать в п/п USER_COMMAND. Цикл по таблице gt_dat, где ISCHEKER = 'X' - индикатор того, что строка выбрана.



Нет, (или я не понял) ISCHEKER это поле где будет храниться состояние чекбокса.

а в USER_COMMAND как я понимаю обработает если я нажму два раза, а чек бокс ставиться при 1ом клике...

Как его туда занести?
Когда я ставлю чексбокс в ТРУ оно же само по себе не заносит в ISCHEKER значение ТРУ или ФОЛС.

Может спросить по другому: Как узнать какой чек бокс с состоянии TRUE?
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 5:13 pm    Post subject: Reply with quote

Сурово...
Зачем вообще этот индикатор выставляется? Чтобы потом обработать помеченные данные. Одна из типичных задач: пометили строку, в тулбаре нажали кнопку "Удалить из списка" (например), зашли в обработчик, удалили помеченное, выставили *selfield-refresh = 'X' для обновления таблицы в ALV GRID. Двойной и одинарный клик по строке/полю - это лишь некоторые из возможных обрабатываемых событий в процедуре USER_COMMAND.

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Mon Jun 21, 2010 5:20 pm    Post subject: Reply with quote

Sed0Y, посмотрите для примера программу BCALV_TEST_LIST_EVENTS.
И вообще поглядите программы пакета SLIS - они там специально для демонстрации технологии работы с ALV
Back to top
View user's profile Send private message Blog
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 5:28 pm    Post subject: Reply with quote

Пожалуй, присоединюсь к предыдущему автору. Оно вы, конечно, вопросы задавайте, поскольку не пИшете "send me code, pls!!!". Просто чувствуется, что вам нужно выбрать время и просмотреть тестовые примеры стандарта, ничего сложно там нет.
_________________
ABAP/4 You
Back to top
View user's profile Send private message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 5:45 pm    Post subject: Reply with quote

Dmitriy wrote:
Пожалуй, присоединюсь к предыдущему автору. Оно вы, конечно, вопросы задавайте, поскольку не пИшете "send me code, pls!!!". Просто чувствуется, что вам нужно выбрать время и просмотреть тестовые примеры стандарта, ничего сложно там нет.


Спасибо.
Просто я сделал все так как вы и писали, но ничего не получилось, вот сижу и думаю где же я сделал ошибку... (
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 5:54 pm    Post subject: Reply with quote

Sed0Y wrote:
Просто я сделал все так как вы и писали, но ничего не получилось, вот сижу и думаю где же я сделал ошибку... (

Отлаживать надо. Что хотите с этими строками делать, зачем их выделяете? Если память мне не изменяет, вы как-то еще спрашивали, как PF-статус свой выставить для REUSE_ALV_GRID_DISPLAY, похоже это всё одна задача, да не важно. Ставьте точку останова на цикле по внутренней таблице в USER_COMMAND. Или в отладку тоже не заходит? Rolling Eyes

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 6:09 pm    Post subject: Reply with quote

Dmitriy wrote:
Sed0Y wrote:
Просто я сделал все так как вы и писали, но ничего не получилось, вот сижу и думаю где же я сделал ошибку... (

Отлаживать надо. Что хотите с этими строками делать, зачем их выделяете? Если память мне не изменяет, вы как-то еще спрашивали, как PF-статус свой выставить для REUSE_ALV_GRID_DISPLAY, похоже это всё одна задача, да не важно. Ставьте точку останова на цикле по внутренней таблице в USER_COMMAND. Или в отладку тоже не заходит? Rolling Eyes


У меня есть собственная таблица для хранения настроек - условий для работы одной Z* программы....
И я решил сделать ректор этой таблицы, что бы не заполнять ее через код (select, insert, update...)

Вот у меня и работает все (Инсерт, Эдит) а Делит не работает для чего собственно и нужны мне эти чек боксы, выделил строку(ки) нажал удалить...

Отладчик работает, только там ничего нет интересного, у меня в таблицу не попадает статус выделения ЧЕКбокса, то есть чекбоксы ставлю в ТРУ, а во внутреней таблице ничего нет, не могу понять почему не попадает...


По поводу ПФ статуса может быть то был и я, тогда это было давно...

П.С. Не судите строго, я программирую всего лишь 3 месяца, спросить больше не у кого, потому и получается что иногда дурацкие вопросы Sad
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 6:19 pm    Post subject: Reply with quote

Для ведения настроечной таблицы в подавляющем большинстве случаев обходятся генерацией диалога ведения к таблице, редактирование записей - транзакция SM30. А причин того, что "делит не работает" может быть много - код нужно смотреть.

P.S. Да вас вроде никто и не судит, просто качество ответа напрямую зависит от качества (информативности) вопроса, как и везде.

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 6:42 pm    Post subject: Reply with quote

Dmitriy wrote:
Для ведения настроечной таблицы в подавляющем большинстве случаев обходятся генерацией диалога ведения к таблице, редактирование записей - транзакция SM30. А причин того, что "делит не работает" может быть много - код нужно смотреть.

P.S. Да вас вроде никто и не судит, просто качество ответа напрямую зависит от качества (информативности) вопроса, как и везде.


А Вы можете просмотреть мой код? Может вы своим эксперт-глазом уведите в чем у меня проблема, и может дадите какой-то совет?

Потому что я в тупике и не знаю как решить задачу, разве что могу все переделать по другому, что не есть выход..



cod.txt
 Description:

Download
 Filename:  cod.txt
 Filesize:  7.21 KB
 Downloaded:  1805 Time(s)

Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Mon Jun 21, 2010 6:59 pm    Post subject: Reply with quote

В п/п DELLDATA отсутствует код для удаления записи из таблицы БД ZDURATION, синтаксис оператора DELETE см. в хелпе.
Еще из п/п user_command нужно убрать вот этот ацкий код:
Code:
SELECT * FROM ZDURATION INTO CORRESPONDING FIELDS OF TABLE gt_dat.

  IF alv_grid IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = alv_grid.
  ENDIF.

  CALL METHOD alv_grid->refresh_table_display
    EXPORTING
      i_soft_refresh = ' '.

Для обновления ALV_GRID выставляйте просто rs_selfield-refresh = 'X', если изменения были.

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Sed0Y
Специалист
Специалист


Age: 41
Joined: 17 Mar 2010
Posts: 88
Location: Ukraine - Kiev

PostPosted: Mon Jun 21, 2010 7:06 pm    Post subject: Reply with quote

Dmitriy wrote:
В п/п DELLDATA отсутствует код для удаления записи из таблицы БД ZDURATION, синтаксис оператора DELETE см. в хелпе.


Спасибо, но проблема не в этом, слава Богу я знаю как удалять, это в этом цикле я пытаюсь (проверяю) занеслось ли в таблицу ЧЕКЕР = 'X' как только будет заноситься то переделаю на DELETE FROM... WHERE...

Dmitriy wrote:

Еще из п/п user_command нужно убрать вот этот ацкий код
Для обновления ALV_GRID выставляйте просто rs_selfield-refresh = 'X', если изменения были.


Супер, большое спасибо за "rs_selfield-refresh = 'X',"
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.