代码之家  ›  专栏  ›  技术社区  ›  Esti

如何使用sapinfoset查询执行SELECT DISTINCT?

sap
  •  1
  • Esti  · 技术社区  · 15 年前

    例如:使用表ITOB;如果我选择EQUNR和ANLNR,我会得到多个条目(主要是由于非唯一的ILOAN、TPLNR和DATBI记录)。我怎样才能做到:

    select distinct equnr anlnr from itob into (itob-equnr, itob-anlnr)
      where (some_wherclause).
    

    或者

    1 回复  |  直到 5 年前
        1
  •  2
  •   Esti    15 年前

    在extras的代码区域中,我可以使用哪些变量?

    从这里我可以看到,只有您在连接条件中定义的选择表的标题行在编码块中可用。即,如果您从ITOB选择加入ANLA,则 标题行 可提供ITOB和ANLA。(这仅与记录处理块相关)。但是,您可以在数据块中定义自己的变量。

    选择后如何访问数据集和限制记录:

    免责声明: 这感觉很像一个黑客,它并不适用于所有的输出类型,但它确实显示了如何访问数据集。

    在代码块初始化中,添加以下语句:

    * Dummy comment to force generation 
    * of END-OF-SELECTION Block
    

    任何注释都可以-所有这些都会强制程序生成器生成我们访问数据集所需的结束选择块。

    在代码块选择末尾添加以下内容:

    data: lv_table type char100 value '%G00[]'.
    field-symbols: <table> type any table.
    assign (lv_table) to <table>.
    if <table> is assigned.
      sort <table>.
      delete adjacent duplicates from <table>.
    endif.
    

    %G00是生成程序中结果集的变量名(使用[]访问表,而不仅仅是标题行)。 由于生成的程序变量在信息集中不可用,因此必须使用字段符号来访问任何变量。如果变量不存在,那么检查赋值将避免任何运行时错误。

    我最后做的是: