Posted: Tue Jan 25, 2011 8:09 pm Post subject: Проблема с field symbol при парсинге
Добрый вечер, уважаемые знатоки!
Так уж получилось, что на практике field symbols - у меня слабое звено.
Подскажите, пожалуйста, как решить следующую задачу!
Посредством ФМ SMUM_XML_PARSE получил пропарсеную XMLку в структуре вывода модуля.
Далее я имею внутреннюю таблицу с полями аналогичными значениям cname структуры вывода ФМ и необходимо присвоить значения в нужные поля.
Н-р:
Вывод ФМ
cname cvalue
A 11
B 22
C 33
и моя структура zmy с полями A,B,C. Необходимо запихнуть нужные данные из вывода ФМ в нужные поля zmy, но без привязки к конкретным именам полей, так как их, мягко говоря, много и порядок рандомный.
Буду рад любому совету, так как перерыл уже много инфы, но чтот в силу слабости с fs не очень помогло.
Заранее благодарен! _________________ Приятно когда программа из стадии "Блин, она не компилится!" переходит в стадию "Блин, она не работает!"
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Wed Jan 26, 2011 9:39 am Post subject:
Мне лично не очень понятна задача. Может и другим тоже. Откуда вы получили данные и где будете их использовать не так важно. Опишите структуру исходной таблицы, если важно, какие в ней данные. И в какую таблицу нужно их перенести, какой структуры. набросайте простой пример, чтобы было понятно. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
ФМ отдает таблицу типа SMUM_XMLTB. В ней идут поля колонки hier, type, cname, cvalue.
Парсится строка XML: <BLDAT>20110125</BLDAT>
Получаем в cname указано имя ноды XML - BLDAT (для примера) и в cvalue значение ноды 20110125.
У меня своя таблица zmy, в которой тоже есть колонка BLDAT.
Нужно по сути:
case t_smum_xmltb-cname.
WHEN 'BLDAT'.
zmy-BLDAT = t_smum_xmltb-cvalue.
.....
но полей много и огромный case делать грустно. Прошу прощения за возможную сумбурность описания - но где-то так )) _________________ Приятно когда программа из стадии "Блин, она не компилится!" переходит в стадию "Блин, она не работает!"
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Wed Jan 26, 2011 10:30 am Post subject:
Что-то в этом роде. И нажмите F1 на фразе FIELD-SYMBOLS - в справке достаточно подробно описано применение field-symbols.
Code:
FIELD-SYMBOLS: <fs> TYPE any.
...
LOOP AT t_smum_xmltb.
ASSIGN COMPONENT t_smum_xmltb-cname OF STRUCTURE zmu TO <fs>.
IF sy-subrc = 0. "Если поле с именем t_smum_xmltb-cname существует в zmu, присваиваем ему значение value.
ENDIF.
IF <конец записи>.
APPEND zmu.
CLEAR zmu. "Подготавливаем рабочую область
ENDIF.
ENDLOOP.
Удав, очередной огромнейший респект и спасибо!
Разгребусь ток с условием конца записи и будет все ок ) _________________ Приятно когда программа из стадии "Блин, она не компилится!" переходит в стадию "Блин, она не работает!"
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.