Текущее время: Пт, мар 29 2024, 02:44

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


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

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


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

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