Переместить структуры FMOIX / FMCOX во внутреннюю таблицу

Я новичок в ABAP (3 дня опыта), и в настоящее время я занимаюсь написанием отчетов с использованием кода ABAP. Это похоже на перемещение некоторых данных из конкретной базы данных SAP в промежуточную область Business Intelligence.

Таким образом, основная трудность заключается в том, что некоторые данные на сервере SAP находятся в формате словарных структур (FMOIX, FMCOX и т. Д.), И мне нужно переместить эти данные во внутренние таблицы во время выполнения программы. Мне сказали, что OPENSQL в этом случае работать не будет.

Если вы все еще не понимаете, что я имею в виду, я могу предложить несколько способов, фактически предложенных моим руководителем. Во-первых, использовать событие GET, скажем

GET FMOIX.
    IF FMOIX-zhdlt > From_dat and FMOIX-zhdlt < to_dat.
        Append FMOIX to itab.
    ENDIF.

Дело в том, что я до сих пор не очень понимаю это событие GET. Это просто обработчик событий или он может перебирать записи данных?

То, что я гуглил более двух дней, дает мне что-то вроде

LOOP at FMOIX.
    MOVE FMOIX to itab.
ENDLOOP.

Итак, как можно переместить структуру транзакций, такую ​​как FMOIX, во внутренние таблицы, скажем, внутреннее имя таблицы - ITAB?

Ваш ответ будет очень признателен. Хотя у меня есть время, я совершенно новичок. Большое спасибо.


person Alex    schedule 20.06.2012    source источник


Ответы (2)


Если ваш руководитель предлагает вам использовать событие GET, это означает, что ваша программа использует (или должна использовать) логическую базу данных - в данном случае, вероятно, FMF или FMF_BCS.

При выполнении GET FMOIX считывается набор полей, определенных в логической базе данных (как узел). Под оператором GET вы можете использовать FMOIX как структуру, например WRITE FMOIX-field1. Программа будет (неявно, это не явно определено в коде, как LOOP...ENDLOOP is) перебирает все строки, возвращаемые в соответствии с вашими критериями выбора. Вы должны иметь возможность использовать MOVE-CORRESPONDING для перемещения содержимого каждой строки в правильную структуру, а затем APPEND эту структуру в свой itab.

Быстрая ссылка на GET в ABAPDocu

Примечание: этот ответ является предположением, поскольку я использовал логическую базу данных только один раз, а документация на местах немного тонка по сравнению с существующими томами о стандартных SELECTs и внутренних таблицах.

person Smigs    schedule 20.06.2012
comment
Да, я проверил Интернет, но не нашел много информации о том, как работать с логической базой данных, особенно со структурой. Итак, вы имеете в виду, что сначала мне нужно объявить промежуточную структуру в программе, помимо FMOIX; затем загрузить данные времени выполнения из FMOIX в структуру, а затем добавить в itab? - person Alex; 20.06.2012
comment
Ага, звучит примерно правильно. Итак, DATA: ls_fmoix type fmoix, lt_fmoix type table of fmoix (или что-то в этом роде, я не уверен в типах словаря, о которых идет речь). Я не думаю, что добавление структуры LDB прямо к itab сработает (но вы можете попробовать!) - person Smigs; 20.06.2012

Вы можете создать свою внутреннюю таблицу в виде этой структуры, например:

data: itab like table of fmoix with header line.

И вы можете использовать эту внутреннюю таблицу для заполнения везде, где вы используете выбранные вами коды. Такие как:

select * from ____
   into corresponding fields of itab 
   where zhdlt gt from_dat
   and   zhdlt lt to_dat.

Я не уверен, что это то, что вы ищете, но я могу сказать вам, что создание itab типа этой структуры может быть заполнено всеми соответствующими данными, поступающими из вашего выбора. Вы не можете зациклить FMOIX, потому что это не таблица, а структура. Так есть ли какая-то конкретная причина хранить ваши данные в структурах?

Надеюсь, это было полезно.

Тальха

person Mtu    schedule 20.06.2012