Использование SELECT-OPTIONS в качестве параметров экспорта для метода класса?

В настоящее время у меня возникают проблемы с вызовом метода с использованием типа данных select option. Это дает мне ошибку: S_NETWR не совместим по типу с формальным параметром 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.

Заранее спасибо!


person Richard    schedule 19.08.2012    source источник
comment
Пожалуйста, вставьте код как часть вашего вопроса вместо того, чтобы вставлять его на какой-либо внешний сайт, который может хранить или не хранить код в течение длительного периода времени.   -  person vwegert    schedule 20.08.2012
comment
... и, пожалуйста, включите сигнатуры метода, а также тело метода.   -  person vwegert    schedule 20.08.2012


Ответы (3)


SELECT-OPTIONS создает внутреннюю таблицу со строкой заголовка. Проблема в том, что строки заголовков больше не разрешены при использовании ABAP OO. Вам придется избавиться от строки заголовка, передав методу so_foo[] вместо so_foo. Скобки гарантируют, что адресуется только компонент таблицы, а строка заголовка игнорируется.

person vwegert    schedule 19.08.2012
comment
Я передал параметры как s_netwr[] и s_datvr[], но все равно получаю ту же ошибку. Я что-то упускаю? Спасибо еще раз. - person Richard; 20.08.2012
comment
Как я уже сказал, предоставьте полный код, включая метод SIGNATURES. - person vwegert; 21.08.2012

Я не вижу, какой у вас тип параметра метода. Но нужно, чтобы оно было из следующего. Знак char 1 option char 2 low netwr High netwr. Создайте структуру в словаре данных этого типа, а затем тип таблицы этой структуры и используйте этот тип таблицы в качестве типа данных для параметра.

person Nathan Jones    schedule 19.08.2012

Мне нужно было определить диапазон типов в моем классе и экспортировать s_netwr [] и s_datvr []. Это устранило проблему. Спасибо всем!

person Richard    schedule 22.08.2012