Текущее время: Вт, июл 22 2025, 15:13

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Драгметаллы. LSMW
СообщениеДобавлено: Вт, фев 11 2014, 16:05 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 19 2012, 16:02
Сообщения: 10
Коллеги, добрый день!

Возникла такая ситуация (система 6.4): необходимо массово добавить в карточку аналитику по драгметаллам. При этом количество драгметаллов в карточке должно быть больше, чем помещается на экране. Пробовали использовать для этих целей LSMW (т.к. количество ОС большое - переносим аналитику по остаткам). Однако, при написании проекта система позволяет добавить в карточку только то количество записей драгметаллов, которое помещается на экране (в нашем случае - 5). Далее она перетирает последнюю запись, когда записей должно быть 6, например.
Вручную вносить данные долго и не особо весело.

Сталкивался ли кто-нибудь с такой ситуацией и как решали?

Заранее спасибо за совет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Драгметаллы. LSMW
СообщениеДобавлено: Вт, фев 11 2014, 16:30 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пт, июл 08 2005, 13:07
Сообщения: 5274
Откуда: Geneva
Пол: Мужской
я не знаю, подойдет здесь такой подход или нет, но обычно для внесения множества записей в одну таблицу дробят LSMW на куски по 1 записи и добавляют 1 запись за проход. В Вашем случае понадобится 5 или 6 проходов.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Драгметаллы. LSMW
СообщениеДобавлено: Ср, фев 12 2014, 14:41 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 19 2012, 16:02
Сообщения: 10
Цитата:
darkduck написал:
я не знаю, подойдет здесь такой подход или нет, но обычно для внесения множества записей в одну таблицу дробят LSMW на куски по 1 записи и добавляют 1 запись за проход. В Вашем случае понадобится 5 или 6 проходов.

Спасибо за совет.
Однако, к сожалению, данный подход не релевантен для таблицы по драгметаллам. LSMW при всех последующих проходах перетирает первую запись.
Было предположение, что причина в длине поля таблицы, в котором она хранит данные по массе (MASS). Однако, и этот вариант ошибочный.
В нашем случае, загрузили lsmw то количество, которое она позволяет загрузить массово. Остальное - ручками.

Только ведь должен же существовать инструмент для массовой загрузки такой аналитики!?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Драгметаллы. LSMW
СообщениеДобавлено: Чт, фев 13 2014, 15:02 
Специалист
Специалист

Зарегистрирован:
Ср, фев 14 2007, 17:14
Сообщения: 231
Для абапера - это задачка на пол дня не больше.
Можно за основу взять ФМ J_3RF_PRECM_ASSET_READ и написать обратную прогу, которая записывает записи в glofaaassetdata
Главное знать что записи в таблички идут одной строкой т.е. если у оса есть драг металлы 100 и 200 с весом 35 и 67 грамм, то в glofaaassetdata
будет одна строчка:
где в полях: glofaaassetdata-glo_rus_precct = '100200' - коды металлов в строчку без пробела
и glofaaassetdata-glo_rus_precw = '35 67' - значения веса в строчку через пробел

делаете файлик с номером оса и кодами драг металлов.
Делаете код по его считыванию и изменяете записи в glofaaassetdata примерно таким кодом :
(может и кривой код, писал сразу на коленке), но у нормального абапера все это должно занять 1-2 часа.
Code:
основной цикл по gt_file_temp - где только уникальные записи по номерам anln1 и anln2

      CLEAR : gs_glofaaassetdata
      SELECT SINGLE * FROM glofaaassetdata
        INTO gs_glofaaassetdata
        WHERE bukrs = p_bukrs
            AND anln1 = gs_file_temp-anln1
            AND anln2 = gs_file_temp-anln2.
      IF sy-subrc NE 0.
        gs_glofaaassetdata-bukrs = p_bukrs.
        gs_glofaaassetdata-anln1 = gs_file_temp-anln1.
        gs_glofaaassetdata-anln2 = gs_file_temp-anln2.
      ENDIF.

      CLEAR :gs_glofaaassetdata-glo_rus_precct,
                  gs_glofaaassetdata-glo_rus_precw.

* делаете цикл по всем кодам металлов для конкретной карточки anln1 и anln2
LOOP AT gt_file INTO gs_file WHERE bukrs = p_bukrs                   
                                              anln1 = gs_file_temp-anln1
                                              anln2 = gs_file_temp-anln2.

     IF sy-tabix = 1. " Первая запись
       gs_glofaaassetdata-glo_rus_precct = gs_file-code. "добавляем код металла
       gs_glofaaassetdata-glo_rus_precw  = gs_file-mass.  "добавляем вес металла
       gs_glofaaassetdata-GLO_RUS_PRECQ = gs_file-quat. " исчисляемые если их нет , то должен быть 0.
     ELSE." начиная со второй записи - вес и количество должны идти через пробел.
       CONCATENATE gs_glofaaassetdata-glo_rus_precct gs_file-code INTO gs_glofaaassetdata-glo_rus_precct. " добавляем код металла
       CONCATENATE gs_glofaaassetdata-glo_rus_precw gs_file-mass INTO gs_glofaaassetdata-glo_rus_precw SEPARATED BY space. " добавляем вес металла
       CONCATENATE gs_glofaaassetdata-GLO_RUS_PRECQ gs_file-quat INTO ggs_glofaaassetdata-GLO_RUS_PRECQ SEPARATED BY space.
     ENDIF.
ENDLOOP.
APPEND gs_glofaaassetdata TO gt_glofaaassetdata.

Закрываем цикл по gt_file_temp.

и можем обновлять БД через MODIFY.
MODIFY glofaaassetdata FROM TABLE gt_glofaaassetdata.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Драгметаллы. LSMW
СообщениеДобавлено: Пн, фев 17 2014, 08:41 
Специалист
Специалист

Зарегистрирован:
Ср, июн 13 2007, 15:01
Сообщения: 102
Пол: Мужской
Сталкивался с такой проблемой, в итоге частично решил с помощью LSMW.
На этапе присвоения полей был написан код, который выполнял обновление таблицы glofaaassetdata.
Суть примерно сводится к тому же, что описано в предыдущем сообщении.
LSMW на этапе конвертации апдейтил таблицу, после конвертации никаких доп. действий не требуется.
Необходимо учитывать ограниченную длину полей glo_rus_precct и glo_rus_precw. Если их не хватит, а драг.металлы нужны, то придется делать Z* таблицу для хранения или менять размер элемента данных.


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

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


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

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


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

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