点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在这篇文章中,您将学习在 AMDP 中处理 SELECT-OPTION。这篇文章还解释了如何在 AMDP 中完成客户端处理。
不能像我们在 ABAP SQL / OPEN SQL 中那样在 SQLSCRIPT 中使用选择选项或范围表。由于这个原因,我们需要特殊的代码来处理
AMDP 中的选择选项。
在本教程中,使用范围表。选择选项可以与 so_name[ ] 而不是 range 一起使用。
在上一篇文章中,创建了以单个运营商 ID 作为输入的方法。您可以轻松地将参数传递给此方法。
选择选项并没有像它那样传递。您首先需要将它们转换为 where 子句。
考虑以下运营商 ID 范围。
现在,在此范围内添加行。
将 SO/Range 表转换为 where 子句——类型为字符串。cl_shdb_seltab=>combine_seltabs
为此使用类方法。
可以传递多个选择选项,重复名称,红色框中突出显示的 dref 组合。
注意黄色框。这就是客户端的处理方式。客户端处理需要在 AMDP 中明确完成。
新的方法定义将不使用运营商 id 字段,但将有一个类型为 string 的字段来传递 where 子句。
最后一件事是应用 where 子句。这可以通过两种方式完成。
在第一次获取数据时应用
在获取数据的临时表后应用过滤器
这样,我们就可以在 AMDP 中处理 Select-Options。结果如下——
代码:
"AMDP with Select Option CLASS zjp_so_amdp_class DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES : if_amdp_marker_hdb. TYPES : tt_flights TYPE STANDARD TABLE OF /dmo/flight. DATA : r_carrier TYPE RANGE OF /dmo/flight-carrier_id. CLASS-METHODS : call_amdp, get_flights_range IMPORTING VALUE(iv_where) TYPE string EXPORTING VALUE(et_flights) TYPE tt_flights. ENDCLASS. CLASS zjp_so_amdp_class IMPLEMENTATION. METHOD call_amdp. "Create range | Directly use select option here r_carrier = VALUE #( sign = 'I' option = 'EQ' ( low = 'AZ') ( low = 'JP' ) ). "Prepare where from selection tabs DATA(lv_where) = cl_shdb_seltab=>combine_seltabs( EXPORTING it_named_seltabs = VALUE #( ( name = 'CARRIER_ID' dref = REF #( r_carrier ) ) ) iv_client_field = 'CLIENT' ). "Handle Client get_flights_range( EXPORTING iv_where = lv_where IMPORTING et_flights = DATA(lt_flights) ). ENDMETHOD. METHOD get_flights_range BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING /dmo/flight. et_flights = APPLY_FILTER ( "/DMO/FLIGHT", :iv_where ); ENDMETHOD. ENDCLASS.
"Another implementation of AMDP METHOD get_flights_range BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING /dmo/flight. temp = select * from "/DMO/FLIGHT"; et_flights = APPLY_FILTER ( :temp, :iv_where ); ENDMETHOD.