Текущее время: Вт, апр 16 2024, 19:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Заполнение Z-таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 10:19 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Добрый день!

Такая проблема: в SE11 сделана Z-таблица, которая можем заполняться через SM30 (это работает, но мне это не надо).
В Z-программе считывается CSV файл и создается internal table с данными из этого файла. Теперь все строки из itab надо передать в Z-таблицу. Пробую разными способами (modify, insert, update, append), но ничего не передается.
Видимо, есть какой-то нюанс при создании Z-таблицы.
Может, у кого-то реализовано такое заполнение таблицы, поделитесь, пожалуйста, знаниями.

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 11:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Покажите ваш код, чтобы стало понятно, что же именно вы делаете не так

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 11:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
но я думаю, что дело не в коде, а в каких-то настройках при создании таблицы
Code:
...
TABLES: zenergo.
...

data: begin of record_zenergo_sum occurs 0,
           rnum type zenergo-rnum,
           numi type zenergo-numi,
           zadrese type zenergo-zadrese,
           PAPILD1NFO type zenergo-PAPILD1NFO,
           pakalp type zenergo-pakalp,
           menge type zenergo-menge,
           netpr type zenergo-netpr,
           wrbtr type zenergo-wrbtr,
           merv type zenergo-merv,
           eic type zenergo-eic,
           gads type zenergo-gads,
           periods type zenergo-periods,
       end of record_zenergo_sum.
     
data: wa_record_zenergo_sum like record_zenergo_sum.



append record_zenergo_sum.

и дальше были такие варианты:

insert zenergo from table record_zenergo_sum.

или

loop at record_zenergo_sum into wa_record_zenergo_sum.
UPDATE zenergo from wa_record_zenergo_sum.
COMMIT WORK.
endloop.

или

modify zenergo from record_zenergo_sum.

или

loop at record_zenergo_sum into wa_record_zenergo_sum.

zenergo-rnum = wa_record_zenergo_sum-rnum.
zenergo-numi = wa_record_zenergo_sum-numi.
zenergo-zadrese = wa_record_zenergo_sum-zadrese.
zenergo-papild1nfo = wa_record_zenergo_sum-papild1nfo.
zenergo-pakalp = wa_record_zenergo_sum-pakalp.
zenergo-menge = wa_record_zenergo_sum-menge.
zenergo-netpr = wa_record_zenergo_sum-netpr.
zenergo-wrbtr = wa_record_zenergo_sum-wrbtr.
zenergo-merv = wa_record_zenergo_sum-merv.
zenergo-eic = wa_record_zenergo_sum-eic.
zenergo-gads = wa_record_zenergo_sum-gads.
zenergo-periods = wa_record_zenergo_sum-periods.
INSERT zenergo.

endloop.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 12:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
Используйте форматирование кода на форуме

Могу предположить вы не все поля определили при перечислении в record_zenergo_sum
или записи с такими ключами уже есть в таблице.
Code:

DATA: gt_record_zenergo_sum TYPE TABLE OF zenergo,
          gs_record_zenergo_sum LIKE LINE OF gt_record_zenergo_sum.
** наполняем gt_record_zenergo_sum.

INSERT zenergo FROM TABLE gt_record_zenergo_sum.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 12:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Kuranov.Dmitry написал(а):
Используйте форматирование кода на форуме

Могу предположить вы не все поля определили при перечислении в record_zenergo_sum
или записи с такими ключами уже есть в таблице.
Code:

DATA: gt_record_zenergo_sum TYPE TABLE OF zenergo,
          gs_record_zenergo_sum LIKE LINE OF gt_record_zenergo_sum.
** наполняем gt_record_zenergo_sum.

INSERT zenergo FROM TABLE gt_record_zenergo_sum.


так тоже не работает


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 12:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Как предположил коллега Kuranov.Dmitry - скорее всего, в загружаемом файле есть и новые и уже существующие в таблице записи.
Надо определиться, что следует делать в случае, если запись уже есть в табле.
Варианты
1) писать протокол ошибок, прерывать работу, если есть хотя бы 1 такая запись
2) писать протокол ошибок, сохранять корректные записи
3) писать сообщения об обнаруженных записях, существующие записи обновлять, новые - вставлять


для случая 3 обновление самое простое
Code:
DATA: gt_record_zenergo_sum TYPE TABLE OF zenergo,
          gs_record_zenergo_sum LIKE LINE OF gt_record_zenergo_sum.
loop at gt_record_zenergo_sum into gs_record_zenergo_sum.
  modify zenergo from gs_record_zenergo_sum.
endloop.

commit work.


_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 12:57 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Кодер написал(а):
Как предположил коллега Kuranov.Dmitry - скорее всего, в загружаемом файле есть и новые и уже существующие в таблице записи.
Надо определиться, что следует делать в случае, если запись уже есть в табле.
Варианты
1) писать протокол ошибок, прерывать работу, если есть хотя бы 1 такая запись
2) писать протокол ошибок, сохранять корректные записи
3) писать сообщения об обнаруженных записях, существующие записи обновлять, новые - вставлять


для случая 3 обновление самое простое
Code:
DATA: gt_record_zenergo_sum TYPE TABLE OF zenergo,
          gs_record_zenergo_sum LIKE LINE OF gt_record_zenergo_sum.
loop at gt_record_zenergo_sum into gs_record_zenergo_sum.
  modify zenergo from gs_record_zenergo_sum.
endloop.

commit work.



Таблица ZENERGO записей не содержит, пустая :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z-таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 14:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Цитата:
Таблица ZENERGO записей не содержит, пустая

Проверьте файл тогда. Возможно он содержит дублирующиеся по ключу таблицы ZENERGO записи

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Заполнение Z-таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 14:51 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
Кодер написал(а):
Цитата:
Таблица ZENERGO записей не содержит, пустая

Проверьте файл тогда. Возможно он содержит дублирующиеся по ключу таблицы ZENERGO записи

а модифай разве не будет обновлять дубликаты?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Заполнение Z-таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 16:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Kuranov.Dmitry написал(а):
а модифай разве не будет обновлять дубликаты?

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

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Заполнение Z таблицы из internal table
СообщениеДобавлено: Вт, янв 14 2020, 19:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
irik написал(а):
Таблица ZENERGO записей не содержит, пустая :(


Обратите внимание, что в примере который вам привели есть commit work, а в вашем нет.
Вы в итоге commit work у себя в программе написали?

_________________
Удача - результат нашего желания (© А. Нортон)


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

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


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

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


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

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