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

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


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

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


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

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