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

Работа с cl_gui_calendar



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Anton_bs
Участник
Участник


Age: 44
Joined: 22 Sep 2009
Posts: 30

PostPosted: Tue Sep 22, 2009 5:11 pm    Post subject: Работа с cl_gui_calendar Reply with quote

Добрый день, господа. Работая с cl_gui_calendar столкнулся с такой непонятной проблемой - при выборе
view_style = cnca_style_dtpicker не могу получить выбранную дату.
Т.е. могу кнопками изменять день, месяц и год, но вот как получить это значение не знаю.
Кто работал с cl_gui_calendar подскажите, пожалуйста, что можно придумать?
Back to top
View user's profile Send private message
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Tue Sep 22, 2009 6:15 pm    Post subject: Reply with quote

Думаю вот здесь есть все ответы
SAPCALENDAR_DEMO1

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
Anton_bs
Участник
Участник


Age: 44
Joined: 22 Sep 2009
Posts: 30

PostPosted: Wed Sep 23, 2009 9:02 am    Post subject: Reply with quote

В примере все понятно. но вот - пример:
сам каендарь выглядит как поле ввода с кнопками как у spinedit(up,down), если пользователь введет дату с их по мощью, то откуда можно вытащить это значение. т.е. не было события data_selected
Back to top
View user's profile Send private message
Crystal_Ra
Старший специалист
Старший специалист



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Wed Sep 23, 2009 12:28 pm    Post subject: Reply with quote

Anton_bs wrote:
В примере все понятно. но вот - пример:
сам каендарь выглядит как поле ввода с кнопками как у spinedit(up,down), если пользователь введет дату с их по мощью, то откуда можно вытащить это значение. т.е. не было события data_selected


пример еще более изощренный Very Happy SAPCALENDAR_NAVIGATOR

надо как минимум вот что:

Code:

* определяем переменные
" класс для регистрации прерываний
data evt_receiver  TYPE REF TO lcl_event_handler.

* структры для объекта календаря )))
data myevent_tab TYPE cntl_simple_events.
data myevent     TYPE cntl_simple_event.


PBO ---->>>>
Code:


MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '100'.
*  SET TITLEBAR 'xxx'.
  If cont IS INITIAL.
    CREATE OBJECT cont EXPORTING CONTAINER_NAME = 'PANEL'.



    create object calendar Exporting Parent    = cont
                          View_Style = 4
                          selection_style = cnca_sel_day

                          .
*******что бы прерывания заработали надо!*********
*   handling as system event
    myevent-appl_event = ' '.
    myevent-eventid = calendar->m_id_date_selected.
    APPEND myevent TO myevent_tab.

    CALL METHOD calendar->set_registered_events
        EXPORTING
           events = myevent_tab.

    CREATE OBJECT evt_receiver.

    SET HANDLER evt_receiver->on_date_selected
                FOR calendar.


  ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT


PAI --->>>
ed_date_begin - имеетт свое отражение на скрине

Code:

MODULE USER_COMMAND_0100 INPUT.
*  SET PF-STATUS '100'.
  CASE sy-ucomm.
    WHEN 'EXIT' or 'CANCEL' or 'BACK'.
         leave to screen 0.

    WHEN 'EVENT_DATE_SELECTED'.
*    покажем на экран дату выбранную
      ed_date_begin = evt_receiver->dt_1.
      ed_date_end   = evt_receiver->dt_2.

      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = c.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT




Класс event_handler имеет свойства для хранения выбранных
данных даты ))) это как то приятней чем мусорить глобально в репорте Idea

Code:


CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
     data dt_1 TYPE cnca_utc_date.
     data dt_2 TYPE cnca_utc_date.

    METHODS: on_date_selected
               FOR EVENT date_selected OF cl_gui_calendar
                 IMPORTING
                   date_begin
                   date_end.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION.
  METHOD  on_date_selected.
    dt_1 = date_begin.
    dt_2 = date_end.

    CALL METHOD cl_gui_cfw=>set_new_ok_code
      EXPORTING
        new_code = 'EVENT_DATE_SELECTED'.                   

  ENDMETHOD.
ENDCLASS.



_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
Back to top
View user's profile Send private message
Anton_bs
Участник
Участник


Age: 44
Joined: 22 Sep 2009
Posts: 30

PostPosted: Wed Sep 23, 2009 2:26 pm    Post subject: Reply with quote

Все так и сделал. Только в том-то и вопрос, что при нажатии клавиш вверх и вниз у календаря (увеличивается на 1 день, месяц или год) событие date_selected не возникает. еще раз уточню, что на экране выбора календарь представлен в стиле cnca_style_dtpicker. т.е. возможности мышкой выбрать дату нет. или ввод с клавы или кнопки up и down. вот как в таком случае вытащить дату?
Back to top
View user's profile Send private message
Anton_bs
Участник
Участник


Age: 44
Joined: 22 Sep 2009
Posts: 30

PostPosted: Fri Sep 25, 2009 8:50 am    Post subject: Reply with quote

Неужели никто не сталкивался с такой проблемой? может есть другой похожий класс с которым будет легче?
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Fri Sep 25, 2009 11:15 am    Post subject: Reply with quote

Большинство для выбора даты использует стандартное средство поиска. Smile
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


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

PostPosted: Fri Sep 25, 2009 12:16 pm    Post subject: Reply with quote

Удав wrote:
Большинство для выбора даты использует стандартное средство поиска. Smile

Это точно... К тому же нормально работает п/п проверки и преобразования введенных в поле значений, быстрее вбить 6 цифр.

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



Joined: 12 Mar 2008
Posts: 108
Location: Белгород

PostPosted: Fri Sep 25, 2009 6:09 pm    Post subject: Reply with quote

Dmitriy wrote:
Удав wrote:
Большинство для выбора даты использует стандартное средство поиска. Smile

Это точно... К тому же нормально работает п/п проверки и преобразования введенных в поле значений, быстрее вбить 6 цифр.


Поддерживаю пред. оратора - для данного случая лучше, а главное быстрее, будет что-то из стандарта.
Sad прерывание какоето не уловимое ))

_________________
(SAP) Система нипель... выпускает лучше, чем впускает!

Crystal_Ra
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
Page 1 of 1

 
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.