多个表中的Select-Options如何在CDS VIEW上下文中工作?

2020-09-23 22:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我基本上在主题标题中问我的问题。 对于ABAP和一般编程,我还是很陌生。 我创建了一个程序,将一些表连接在一起,您可以通过选择选项来优化搜索。

 *&Selectionsbildschirm
 带有标题标题文本001的b1块的选择屏幕开始。
 选择屏幕跳过。
 选择选项:bsart for ls_ekko-bsart,
                 ebeln FOR ls_ekko-ebeln,
                 ekgrp FOR ls_ekko-ekgrp,
                 banfn FOR ls_ekpo-banfn,
                 ls_ekpo-werks强制默认为" 0001"到" 0004"。
 块b的选择屏幕结束。

 跳跃。

 参数:布局,如不变变量默认值"/img/B"。

 
 ...在代码的后面,我有select语句,在这里选择我的表,还有连接条件,然后是:

所以,当我正确的时候,这就是选择选项的可能性。 现在,我正在尝试实现CDS VIEW。 我尝试了一些从互联网上获得的东西,但是我基本上不知道如何实现选择选项。 它必须在DDL源代码中吗?

 @ AbapCatalog.sqlViewName:'Z_PSP_CDS'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:" CDS_VIEW_PSP"
 @ VDM.viewType:#BASIC
 @ Analytics.dataExtraction.enabled:是



 定义视图Z_PSP
     从ekko中选择作为左外部

     以b的身份加入ekkn
     在b.ebeln = a.ebeln

     以C身份加入ekpo
     在a.ebeln = c.ebeln
    
     以d身份加入zs1ek_banf_tools
     在d.banfn = c.banfn

     以e身份加入user_addr
     在e.bname = d.aussteller上
       {
     巴萨特
     伊达
     艾伯伦
     a.ekgrp,
     埃贝尔普
     萨克托
     b.ps_psp_pnr,
     班芬
     c.matnr,
     c.txz01,
     c.werks,
     奥斯特勒
     盖蒂普
     昆德
     e.name_last
     }
//其中a.bsart = bsart
//和a.ebeln = a.ebeln
//和a.ekgrp = ekgrp
//和c.banfn = c.banfn

 

还是报告本身?

 ** 1 ...声明选择选项
 选择选项:bsart对于ekko-bsart,
                 ebeln FOR ekko-ebeln,
                 banfn FOR ekpo-banfn。
 选择开始。

 * 2 ...使用IDA创建对象引用ALV
  DATA(lo_alv_display)= cl_salv_gui_table_ida => create(iv_table_name ='EKKO')。

 * 3 ...构建范围表
 DATA(lo_range_collector)= NEW cl_salv_range_tab_collector()。

 lo_range_collector-> add_ranges_for_name(iv_name ='BSART'

                                          it_ranges = bsart [])。

 lo_range_collector-> add_ranges_for_name(iv_name ='EBELN'

                                          it_ranges = ebeln [])。
                                      
 lo_range_collector-> add_ranges_for_name(iv_name ='BANFN'

                                          it_ranges = banfn [])。

 lo_range_collector-> get_collected_ranges(
                     输入
                        et_named_ranges = DATA(lt_select_options))。

 * 4 ...设置选择选项

 lo_alv_display-> set_select_options(it_ranges = lt_select_options)。


 * 5 ...显示ALV
 * lo_alv_display-> fullscreen()-> display()。
 cl_salv_gui_table_ida => create_for_cds_view('Z_PSP')-> fullscreen()-> display()。

 

我不知道该怎么办以及应该怎么做。 任何建议将不胜感激

问候达斯汀

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我基本上在主题标题中问我的问题。 对于ABAP和一般编程,我还是很陌生。 我创建了一个程序,将一些表连接在一起,您可以通过选择选项来优化搜索。

 *&Selectionsbildschirm
 带有标题标题文本001的b1块的选择屏幕开始。
 选择屏幕跳过。
 选择选项:bsart for ls_ekko-bsart,
                 ebeln FOR ls_ekko-ebeln,
                 ekgrp FOR ls_ekko-ekgrp,
                 banfn FOR ls_ekpo-banfn,
                 ls_ekpo-werks强制默认为" 0001"到" 0004"。
 块b的选择屏幕结束。

 跳跃。

 参数:布局,如不变变量默认值"/img/B"。

 
 ...在代码的后面,我有select语句,在这里选择我的表,还有连接条件,然后是:

所以,当我正确的时候,这就是选择选项的可能性。 现在,我正在尝试实现CDS VIEW。 我尝试了一些从互联网上获得的东西,但是我基本上不知道如何实现选择选项。 它必须在DDL源代码中吗?

 @ AbapCatalog.sqlViewName:'Z_PSP_CDS'
 @ AbapCatalog.compiler.compareFilter:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:" CDS_VIEW_PSP"
 @ VDM.viewType:#BASIC
 @ Analytics.dataExtraction.enabled:是



 定义视图Z_PSP
     从ekko中选择作为左外部

     以b的身份加入ekkn
     在b.ebeln = a.ebeln

     以C身份加入ekpo
     在a.ebeln = c.ebeln
    
     以d身份加入zs1ek_banf_tools
     在d.banfn = c.banfn

     以e身份加入user_addr
     在e.bname = d.aussteller上
       {
     巴萨特
     伊达
     艾伯伦
     a.ekgrp,
     埃贝尔普
     萨克托
     b.ps_psp_pnr,
     班芬
     c.matnr,
     c.txz01,
     c.werks,
     奥斯特勒
     盖蒂普
     昆德
     e.name_last
     }
//其中a.bsart = bsart
//和a.ebeln = a.ebeln
//和a.ekgrp = ekgrp
//和c.banfn = c.banfn

 

还是报告本身?

 ** 1 ...声明选择选项
 选择选项:bsart对于ekko-bsart,
                 ebeln FOR ekko-ebeln,
                 banfn FOR ekpo-banfn。
 选择开始。

 * 2 ...使用IDA创建对象引用ALV
  DATA(lo_alv_display)= cl_salv_gui_table_ida => create(iv_table_name ='EKKO')。

 * 3 ...构建范围表
 DATA(lo_range_collector)= NEW cl_salv_range_tab_collector()。

 lo_range_collector-> add_ranges_for_name(iv_name ='BSART'

                                          it_ranges = bsart [])。

 lo_range_collector-> add_ranges_for_name(iv_name ='EBELN'

                                          it_ranges = ebeln [])。
                                      
 lo_range_collector-> add_ranges_for_name(iv_name ='BANFN'

                                          it_ranges = banfn [])。

 lo_range_collector-> get_collected_ranges(
                     输入
                        et_named_ranges = DATA(lt_select_options))。

 * 4 ...设置选择选项

 lo_alv_display-> set_select_options(it_ranges = lt_select_options)。


 * 5 ...显示ALV
 * lo_alv_display-> fullscreen()-> display()。
 cl_salv_gui_table_ida => create_for_cds_view('Z_PSP')-> fullscreen()-> display()。

 

我不知道该怎么办以及应该怎么做。 任何建议将不胜感激

问候达斯汀

付费偷看设置
发送
1条回答
吹牛啤
1楼-- · 2020-09-23 23:41

您不能直接在CDS中使用选择选项。

从CDS实体读取数据时,可以在Open SQL的WHERE条件下使用选择选项。

一周热门 更多>