Abap 为信息集添加选择选项

Abap 为信息集添加选择选项,abap,sap-selection-screens,sap-query,Abap,Sap Selection Screens,Sap Query,我无法将参数的选择选项正确添加到信息集中。 我在选择屏幕中获得了以下参数: REPORT RSAQDVP_TEMPLATE . * *---------------------------------------------------------------------* * declarations * (insert your declarations in this section) *------------------------------------------

我无法将参数的选择选项正确添加到信息集中。 我在选择屏幕中获得了以下参数:

    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.
报告RSAQDVP_模板。
*
*---------------------------------------------------------------------*
*声明
*(在本节中插入您的声明)
*---------------------------------------------------------------------*
数据:
BAPI_PLDORDCOMP_E1型BAPI_PLDORDCOMP_E1,
它是BAPI_PLDORDCOMP_E1的数据类型标准表。
字段符号:键入BAPI\U PLDORDCOMP\U E1。
*-------------------------------------------------------------------*
*选择屏幕语句
*-------------------------------------------------------------------*
*(在此处定义您的选择屏幕)
参数:MARC-WERKS中的plant_默认值为“IX09”,
pln命令类型PLAF-PLNUM。
* !! 不得更改以下注释!!
*
*-------------------------------------------------------------------*
*将数据读入IT\u数据
*-------------------------------------------------------------------*
*(在此将您的数据选择到内部表IT_数据中)
调用函数“BAPI\u PLANNEDORDER\u GET\u DETAIL”
出口
计划订单=计划订单
桌子
componentsdata=it\u数据。
因此基本上有两个参数(参见SQ01中的屏幕截图):

我不明白如何使用“SELECT-OPTION”语句插入范围可选参数

提前感谢您的任何帮助/建议。 我们走吧

1。信息:

您是否检查了此功能模块BAPI\u PLANNEDORDER\u GET\u详情?它不接受任何范围表/选择选项作为其参数的参数

2。假设:

唯一可能是你的目标,基于开始时变量声明的类型

it_data type standard table of BAPI_PLDORDCOMP_E1.
让我假设,您可能想提供一个组件列表,因此您认为,您需要一个范围表,以便只选择某些组件

3。如何:

如果这是您的情况,那么您必须在选择屏幕中创建选择选项,简单如下:(这可能是一种方法,但是,您应该找到适当的表,其中存储了plannedorder的所有组件,并在“FOR”中使用其“name”-matnr)。这里简单地展示了它是如何完成的

SELECT-OPTIONS: so_matnr FOR marc-matnr.
如果程序失败,请在开头或顶部添加语句,包括:

TABLES: "TheTableNameYouWantForFor".
如果将SO_xxx添加到参数的部分,这将在代码中隐式创建一个变量,用作范围表。 在调试器中,您可以看到如下内容:

你现在必须

  • a) 分析这个RANGE-TABLE,以便正确地解析它 这并不容易(可能有一个功能模块/方法,但我不知道)。 你基本上要做的是,提取那些材料编号 是需要的。这并不像听起来那么明显,因为用户也可以 已输入多个范围/多个排除项/多个单一值/多个包含项。 符号和选项字段负责上述组合。 SAP提供了很多
这张照片会告诉你,这可能意味着什么

  • b) 一旦您正确地解析了所有内容并真正确定了它们,那么还应该选择哪些材料(可能是第二个中介表),您就可以 将so_xxx-implicit-table或mediator表循环到一个结构中,获取值,将其传递给bapi调用的参数表的结构,并希望materialnumber足以让bapi结构交付材料(您应该首先使用se37进行测试)。如何从隐式选择选项表中检索材质

但是,从我所看到的,这将是正确的方法,是自我定义一个F4回调,因为您已经输入了计划订单的键。 这意味着您将拥有系统中所有物料的子集,并将其缩减为计划订单的组成部分

这将涉及自定义F4帮助、自定义F4帮助退出、自定义F4回调

再努力一点

事实上,对于这样一个简单的查询,这是非常重要的

4。结论:

检查BAPI的功能,部分重新实现(检查选定的表,se37和se37之前的st05会告诉您),自己编写正确的代码(或从BAPI复制粘贴),您可以使用上面发布的matnr范围