1

我无法将参数的 Select-Option 正确添加到信息集中。我在选择屏幕中得到了这个参数:

    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 中的屏幕截图): 在此处输入图像描述

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

提前感谢您提供任何帮助/建议。S。

4

1 回答 1

2

我们走吧。

1.信息:

你检查过这个功能模块 BAPI_PLANNEDORDER_GET_DETAIL 吗?它不接受任何范围表/选择选项作为其参数的参数。

2.假设:

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

it_data type standard table of BAPI_PLDORDCOMP_E1.

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

3. 方法:

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

SELECT-OPTIONS: so_matnr FOR marc-matnr.

如果程序哀悼,请在开头或顶部添加语句:

TABLES: "TheTableNameYouWantForFor".

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

在此处输入图像描述

你现在必须

  • a)分析这个范围表,以便正确解析它这并不容易,(可能有一个功能模块/方法,但我不知道)。您基本上要做的是,提取那些需要的材料编号。这听起来并不那么明显,因为用户还可以输入几个范围/几个排除/几个单一值/几个包含。SIGN 和 OPTION 字段负责上述组合。SAP 提供了很多。

这张照片会告诉你,这可能意味着什么。

在此处输入图像描述

  • b)一旦您正确解析了所有内容并真正识别出,还应该选择哪些材料(可能是第二个中介表),您可以将 so_xxx-implicit-table 或 mediator-table 循环到一个结构中,获取值,传递它对于 bapi 调用和 HOPE 的参数表的结构,materialnumber 足以让 BAPI 结构传递材料(您应该首先使用 se37 进行测试)。如何从隐式选择选项表中检索材料?

在此处输入图像描述

但是,据我所知,这将是正确的方法,是自定义 F4 回调,因为您已经输入了计划订单的密钥。这意味着,您将拥有系统中所有物料的子集,减少为计划订单的组成部分。

这将涉及自定义 F4-Helps、自定义 F4-HelpExits、自定义 F4-Callbacks。

再努力一点。

事实上,对于这样一个简单的查询来说,意义重大。

4。结论:

检查 BAPI 做了什么,部分重新实现它(检查选定的表,se37 和 st05 在 se37 之前会告诉你),自己编写正确的代码(或从 bapi 复制粘贴),你可以使用 matnr-range正如上面发布的那样。

于 2015-12-02T09:19:56.333 回答