Для абапера - это задачка на пол дня не больше.
Можно за основу взять ФМ 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.