Текущее время: Пн, авг 04 2025, 20:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Сохранение/Изменение данных из ALV-GRID в таблицу.
СообщениеДобавлено: Чт, фев 21 2008, 07:57 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
Ув. коллеги подскажите как правильно сохранить данные из ALV-GRID в таблиу БД.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 09:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Если данные из вашей внутренней таблицы, лежащей под ALV GRID должны лечь в несколько таблиц БД, то построчно пройтись в LOOP AT it_table ...и разложить их. INSERT-ом строки, которых <я не знать русский языка>, UPDATE-ом те, что были изменены. Выполнить можно по команде сохранения... масса вариантов


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 09:45 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
Если на затруднит можно на примере какого либо кода?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 10:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Code:
************************************
В TOOLBARE создаем кнопку "SAVE" и
по нажатию обрабатываем
************************************
     MODULE user_command_0100 INPUT.

  CALL METHOD grid1->check_changed_data.

   CASE ok_code.
   
    WHEN 'SAVE'.

      PERFORM save_data using gt_os[].

   ENDCASE.

ENDMODULE.

**********************************
* Подпрограмма сохранения данных
**********************************
FORM save_data USING pt_os LIKE gt_os.

  bdc_dynpro 'SAPMSVMA' '0100'.
  bdc_field 'BDC_OKCODE' '=UPD'.
  bdc_field 'VIEWNAME'  'V_T087U'.

  LOOP AT pt_os INTO wa_os WHERE updkz CA 'HV' .

    tabix = sy-tabix.

    CASE  wa_os-updkz.

* Добавляем записи
      WHEN 'H'.
        PERFORM create_record USING wa_os.

* Обновляем записи
      WHEN 'V'.
        PERFORM  modify_record USING wa_os.

    ENDCASE.

    wa_os-updkz = space.
    MODIFY gt_os FROM wa_os INDEX tabix.
  ENDLOOP.

  SORT gt_os BY anlue.

  bdc_dynpro 'SAPL0A03'       '0200'.
  bdc_field 'BDC_OKCODE'      '=BACK'.

  bdc_dynpro 'SAPMSVMA' '0100'.
  bdc_field 'BDC_OKCODE'      '/EBACK'.

  bdc_transaction 'SM30'.

ENDFORM.                                   " save_data

***************************************
Подпрограмма создания записи в таблице
***************************************
FORM create_record  USING p_os LIKE wa_os.
  bdc_dynpro 'SAPL0A03'       '0200'.
  bdc_field 'BDC_OKCODE'      '=NEWL'.

  CALL FUNCTION 'NUMBER_GET_NEXT'
         EXPORTING
           nr_range_nr                   = '1'
           object                        = 'ZN_GRNROS'
*         QUANTITY                      = '1'
          subobject                     = pbukrs
*         TOYEAR                        = '0000'
*         IGNORE_BUFFER                 = ' '
        IMPORTING
           number                        = p_os-anlue

*         QUANTITY                      =
*         RETURNCODE                    =
     EXCEPTIONS
       interval_not_found            = 1
       number_range_not_intern       = 2
       object_not_found              = 3
       quantity_is_0                 = 4
       quantity_is_not_1             = 5
       interval_overflow             = 6
       buffer_overflow               = 7
       OTHERS                        = 8
                 .

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  bdc_dynpro 'SAPL0A03'       '0200'.
  bdc_field 'BDC_OKCODE'      '=SAVE'.

  bdc_field 'V_T087U-ANLUE(01)' p_os-anlue.
  bdc_field 'V_T087U-ANLUE_TXT(01)'  p_os-anlue_txt.

  bdc_dynpro 'SAPL0A03'       '0200'.
  bdc_field 'BDC_OKCODE'      '=BACK'.

ENDFORM.                    " create_record

****************************************
Подпрограмма обновления записей в таблице
****************************************
FORM modify_record USING value(p_os) LIKE wa_os.

         
  bdc_dynpro 'SAPL0A03'  '0200'.
                                                                                                                                               

  bdc_field   'BDC_CURSOR'   'V_T087U-ANLUE(01)'.
  bdc_field    'BDC_OKCODE'   '=POSI'.

  bdc_dynpro 'SAPLSPO4'    '0300'.                                                                                                                                             

  bdc_field  'BDC_CURSOR'   'SVALD-VALUE(01)'.
  bdc_field  'BDC_OKCODE'   '=FURT'.
  bdc_field  'SVALD-VALUE(01)'   p_os-anlue.

  bdc_dynpro 'SAPL0A03'  '0200'.                                                                                                                                      

  bdc_field     'BDC_CURSOR'   'V_T087U-ANLUE_TXT(01)'.
  bdc_field     'BDC_OKCODE'   '=SAVE'.
  bdc_field     'V_T087U-ANLUE_TXT(01)'   p_os-anlue_txt.

ENDFORM.                    "modify_record


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 12:33 
Начинающий
Начинающий

Зарегистрирован:
Вт, янв 08 2008, 09:19
Сообщения: 11
Спасибо, а как сделать так чтобы при вводе в ALV-GRID поля Дата изменения автоматически заполнялось


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 21 2008, 15:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1006
Откуда: 37 МИКРОРАЙОН
Пол: Мужской
Аким написал(а):
Спасибо, а как сделать так чтобы при вводе в ALV-GRID поля Дата изменения автоматически заполнялось

Используйте событие DATA_CHANGED:
Code:
FORM data_changed USING  er_data_changed TYPE REF TO
                                                   cl_alv_changed_data_protocol.

  DATA: ls_inserted_row TYPE lvc_s_moce,
        ls_deleted_row TYPE lvc_s_moce,
        ls_modify_row  TYPE lvc_s_modi,
        l_row TYPE i.

  LOOP AT er_data_changed->mt_inserted_rows INTO  ls_inserted_row .

        CALL METHOD er_data_changed->modify_cell
        EXPORTING
          i_row_id    = l_row
          i_fieldname = 'DATA'
          i_value     = sy-datum.

  ENDLOOP.

Примечание: Событие DATA_CHANGED будет вызываться при нажатии на кнопку "Добавить строку" либо по нажатию кнопки "ENTER" или кнопки мыши или какой-либо другой кнопки ПРИ ИЗМЕНЕНИИ СТРОКИ!!!.


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

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


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

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


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

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