2

我目前在使用选择选项数据类型调用方法时遇到问题。它给了我错误:S_NETWRis not type-compatible with form parameter IN_NETWR

我不确定我需要做什么才能将它们作为参数导出。抱歉,我是 ABAP 新手。任何帮助将不胜感激。

源代码片段:

"set the audit at $50,000
lv_max = 50000.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_netwr FOR ekpo-netwr,
                s_datvr FOR nast-datvr NO INTERVALS.
SELECTION-SCREEN END OF BLOCK blk1.

*sets last run date from tvarvc
INITIALIZATION.
  PERFORM get_lastrun.

CALL METHOD lcl_audit->get_po
  EXPORTING
    in_netwr = s_netwr
    in_datvr = s_datvr
  IMPORTING
    out_po   = it_po
    .

get_po我班上的方法zcl_audit_02

METHOD get_po.

  SELECT DISTINCT ekko~ebeln ekpo~netwr ekko~lifnr ekko~ekorg 
                  ekpo~werks ekko~ekgrp t024~eknam
  FROM ( ekpo
  INNER JOIN ekko
  ON ekko~ebeln = ekpo~ebeln

  INNER JOIN t024
  ON ekko~ekgrp = t024~ekgrp

  INNER JOIN nast
  ON nast~objky = ekko~ebeln )

  INTO TABLE out_po
  WHERE ekpo~netwr = in_netwr
  AND   nast~datvr = in_datvr.

  IF sy-subrc = 0.
    SORT out_po BY ebeln ASCENDING.
  ELSE.
    MESSAGE 'No Purchase Orders Found' TYPE 'I'.
  ENDIF.

ENDMETHOD.

先感谢您!

4

3 回答 3

3

SELECT-OPTIONS创建带有标题行的内部表。问题是当您使用 ABAP OO 时不再允许标题行。您必须通过传递so_foo[]给方法而不是so_foo. 括号确保只有表格组件被寻址并且标题行被忽略。

于 2012-08-19T21:36:49.297 回答
1

我看不到您的方法参数是什么类型。但是你需要它是以下的。签名 char 1 option char 2 low netwr High netwr。在此类型的数据字典中创建一个结构,然后创建该结构的表类型,并将该表类型用作参数的数据类型。

于 2012-08-19T21:39:33.760 回答
1

我需要在我的类中定义一个类型范围并导出 s_netwr[] 和 s_datvr[]。这解决了问题。谢谢大家!

于 2012-08-22T16:19:02.340 回答