Текущее время: Ср, май 07 2025, 15:04

Часовой пояс: 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
Сообщения: 5273
Откуда: Cyprus
Пол: Мужской
я не знаю, подойдет здесь такой подход или нет, но обычно для внесения множества записей в одну таблицу дробят 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 часа


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

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


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

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