Добавить 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 как написано выше.

Другие вопросы по тегам