Добавить SELECT-OPTIONS для инфо-набора
Я не могу правильно добавить опцию выбора для параметра в информационный набор. Я получил эти параметры на экране выбора:
REPORT RSAQDVP_TEMPLATE .
*
*---------------------------------------------------------------------*
* declarations
* (insert your declarations in this section)
*---------------------------------------------------------------------*
data:
BAPI_PLDORDCOMP_E1 type BAPI_PLDORDCOMP_E1,
it_data type standard table of BAPI_PLDORDCOMP_E1.
field-symbols: <struc> type BAPI_PLDORDCOMP_E1.
*-------------------------------------------------------------------*
* selection screen statements
*-------------------------------------------------------------------*
* (define your selection-screen here)
parameters: plant_in like MARC-WERKS default 'IX09',
pln_orde type PLAF-PLNUM.
* !! the following comment MUST NOT BE CHANGED !!
*<QUERY_HEAD>
*-------------------------------------------------------------------*
* read data into IT_DATA
*-------------------------------------------------------------------*
* (select your data here into internal table IT_DATA)
call function 'BAPI_PLANNEDORDER_GET_DETAIL'
EXPORTING
PLANNEDORDER = pln_orde
TABLES
componentsdata = it_data.
Итак, в основном 2 параметра (см. Скриншот в SQ01):
Я не понимаю, как вставить параметр выбора диапазона с помощью satement "SELECT-OPTION".
Заранее спасибо за любую помощь / предложение. С.
1 ответ
Поехали.
1. Информация:
Вы проверяли этот функциональный модуль BAPI_PLANNEDORDER_GET_DETAIL? Он не принимает никаких таблиц диапазонов / опций выбора в качестве аргументов своих параметров.
2. Предположение:
Единственное, чем может быть Ваша цель, исходя из типа объявления переменной в начале,
it_data type standard table of BAPI_PLDORDCOMP_E1.
заставляет меня предположить, что Вы, возможно, захотите предоставить список компонентов, и поэтому Вы думаете, что Вам нужна таблица диапазонов, чтобы были выбраны ТОЛЬКО НЕКОТОРЫЕ КОМПОНЕНТЫ.
3. How-To:
Если это Ваш случай, то Вам нужно создать опции выбора на экране выбора, просто так: (Тем не менее, это может быть способ, но Вы должны найти правильную таблицу, где хранятся все компоненты планового заказа, и использовать его "имя"-matnr в "ЗА".). Это просто показывает, как это делается.
SELECT-OPTIONS: so_matnr FOR marc-matnr.
Если программа оплакивает, добавьте оператор в начале или в верхнем включите:
TABLES: "TheTableNameYouWantForFor".
Если вы добавите SO_xxx в раздел вашего параметра, это косвенно создаст в коде переменную, которая будет служить таблицей диапазонов. В отладчике вы можете увидеть что-то вроде этого:
Теперь вы должны
- a) АНАЛИЗИРУЙТЕ ЭТОТ ДИАПАЗОН ТАБЛИЦЫ, чтобы разобрать его правильно. Это не легко (для этого может быть функциональный модуль / метод, но я не знаю). Что вам в основном нужно сделать, так это извлечь те материальные номера, которые желательны. Это не так очевидно, как кажется, потому что пользователь также МОЖЕТ ввести НЕСКОЛЬКО ДИАПАЗОНОВ / НЕСКОЛЬКО ИСКЛЮЧЕНИЙ / НЕСКОЛЬКО ЗНАЧЕНИЙ / НЕСКОЛЬКО ВКЛЮЧЕНИЙ. Поля SIGN и OPTION отвечают за комбинацию, упомянутую выше. И SAP предлагает много.
Эта картинка покажет Вам, что это может означать.
- б) После того, как вы все правильно проанализировали и определили, какие материалы должны быть также выбраны (возможно, вторая таблица-посредник), вы можете зациклить таблицу so_xxx-implicit-table или mediator-table в структуру, получить значение, передать его что касается структуры таблицы аргументов вызова bapi и HOPE, то, что номер материала достаточен для BAPI-структуры для доставки материалов (вы должны сначала проверить это с помощью se37). Как получить материалы из неявной таблицы выбора опций?
Но из того, что я вижу, и это было бы правильным способом, является самоопределение обратного вызова F4, потому что Вы уже вводите ключ планового заказа. Это будет означать, что у вас будет подмножество всех материалов в системе, сокращенное до тех, которые являются компонентами планового заказа.
Это будет включать в себя пользовательские F4-Helps, пользовательские F4-HelpExits, пользовательские F4-Callbacks.
Чуть больше усилий.
На самом деле очень много для простого запроса, как это.
4. Вывод:
Проверьте, что делает BAPI, частично переопределите его (проверьте выбранные таблицы, se37 и st05 до того, как se37 скажет вам), напишите правильный код самостоятельно (или скопируйте вставку из bapi), и вы можете использовать matnr-range как написано выше.