首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信息集中VBAK/VBAP字段的条件聚合为单行

信息集中VBAK/VBAP字段的条件聚合为单行
EN

Stack Overflow用户
提问于 2019-07-02 10:17:49
回答 3查看 1K关注 0票数 2

我遇到了以下问题。

我想做什么

我想要创建一个信息集,为给定的采购订单重新组合来自VBAK表的数据,其中包含来自VBPA表的几行数据,这些行应该被分派到不同的字段。

示例:对于下面的PO 111005229,我想在第一个字段中检索KUNNR字段,其中PARVW = 'ER'字段检索第二个字段,在第二个字段中检索PARVW = 'BP'字段。

期望产出:

我试过的

在SQ02中连接两个表

我试图在运行VBAKVBAP时声明两个表-- SQ02 TCode,并选择所需的字段:

这不管用:

  • 就像在SE16N中一样,当需要过滤数据的单行时,查询会返回采购订单的每一行;
  • 当在CHECK VBPA-PARVW = 'ER'.代码部分中使用Record processing时,希望这将使给定PO的行数减少到1,则根本不返回任何值。

在SQ02中只声明VBAK表

我还尝试只在SQ02中声明SQ02表,创建我想要的附加字段PERNR_ER,然后使用与这些特定字段相关的openSQL代码加入VBAKVBPA

我创建了附加字段PARVW_ERPERNR_ER,嵌入了以下代码:

代码语言:javascript
复制
SELECT PARVW
    INTO PARVW_ER
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.
    AND PARVW = 'ER'.
ENDSELECT.

SELECT PERNR
    INTO PERNR_ER
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.
    AND PARVW = 'ER'.
ENDSELECT.

作为输出

我也试过

代码语言:javascript
复制
TYPES: begin of TY_TABLE,
    PARVW LIKE VBPA-PARVW,
    PERNR LIKE VBPA-PERNR,
    END OF TY_TABLE.

DATA: WA_TABLE TYPE TY_TABLE,
      IT_TABLE  TYPE TABLE OF TY_TABLE.

SELECT PARVW PERNR
    APPENDING CORRESPONDING FIELDS OF TABLE IT_TABLE
    FROM VBPA
    WHERE VBELN = VBPA~VBELN.

LOOP AT IT_TABLE INTO WA_TABLE.
  IF WA_TABLE-PARVW = 'ER'.
    PARVW_ER = WA_TABLE-PARVW.
    PERNR_ER = WA_TABLE-PERNR.
  ENDIF.
ENDLOOP.

但它还是回来了。

我应该如何取得预期的结果?

EN

回答 3

Stack Overflow用户

发布于 2019-07-02 11:13:58

在同一表上使用INNER JOIN,然后通过PARVW筛选出不必要的行。

代码语言:javascript
复制
REPORT YYY.

TABLES: vbpa.

START-OF-SELECTION.
  vbpa = VALUE #( vbeln = '111005229' parvw = 'SP' kunnr = '100007760' adrnr = '9000002718' ).
  INSERT vbpa.
  vbpa = VALUE #( vbeln = '111005229' parvw = 'BP' kunnr = '100007760' adrnr = '38110' ).
  INSERT vbpa.
  vbpa = VALUE #( vbeln = '111005229' parvw = 'PY' kunnr = '100007760' adrnr = '38110' ).
  INSERT vbpa.
  vbpa = VALUE #( vbeln = '111005229' parvw = 'SH' kunnr = '100007760' adrnr = '38110' ).
  INSERT vbpa.
  vbpa = VALUE #( vbeln = '111005229' parvw = 'ER' pernr = '8071' ).
  INSERT vbpa.

  SELECT t1~vbeln, t2~pernr AS field1, t1~adrnr AS field2
    FROM vbpa AS t1
    INNER JOIN vbpa AS t2
    ON t1~vbeln = t2~vbeln
    INTO TABLE @DATA(l_tab_vbpa)
      WHERE t1~parvw = 'BP'
        AND t2~parvw = 'ER'.

  LOOP AT l_tab_vbpa ASSIGNING FIELD-SYMBOL(<str_vbpa>).
    WRITE: / <str_vbpa>-vbeln, <str_vbpa>-field1, <str_vbpa>-field2.
  ENDLOOP.

  ROLLBACK WORK.

结果

测试 111005229 00008071 38110

票数 1
EN

Stack Overflow用户

发布于 2019-07-04 00:46:21

您可以通过这个简单的双FOR循环来实现这一点:

代码语言:javascript
复制
TYPES: BEGIN OF ty_res,
         vbeln  TYPE vbeln,
         field1 TYPE vbpa-pernr,
         field2 TYPE vbpa-adrnr,
       END OF ty_res,
       tt_res TYPE STANDARD TABLE OF ty_res WITH EMPTY KEY.

DATA(lt_vbpa) = VALUE tab_vbpa( ).

APPEND VALUE #( vbeln = '111005229' parvw = 'SP' kunnr = '100007760' adrnr = '9000002718' ) TO lt_vbpa.
APPEND VALUE #( vbeln = '111005229' parvw = 'BP' kunnr = '100007760' adrnr = '38110' ) TO lt_vbpa.
APPEND VALUE #( vbeln = '111005229' parvw = 'PY' kunnr = '100007760' adrnr = '38110' ) TO lt_vbpa.
APPEND VALUE #( vbeln = '111005229' parvw = 'SH' kunnr = '100007760' adrnr = '38110' ) TO lt_vbpa.
APPEND VALUE #( vbeln = '111005229' parvw = 'ER' pernr = '8071' ) TO lt_vbpa.

DATA(result) = VALUE tt_res( FOR ls_vbpa_bp IN lt_vbpa WHERE ( parvw = 'BP' )
                             FOR ls_vbpa_er IN lt_vbpa WHERE ( parvw = 'ER' )
( vbeln  = ls_vbpa_bp-vbeln
  field1 = ls_vbpa_er-pernr
  field2 = ls_vbpa_bp-adrnr ) ).

result选项卡包含所需的输出。

但是,这只在特殊情况下起作用,在这种特殊情况下,只有一条带BP函数的行和带有ER伙伴函数的one,它们都附带了适当的PERNR/ADRNR值。在其他情况下,您需要分组。

票数 1
EN

Stack Overflow用户

发布于 2019-07-04 09:32:07

这条来自@SandraRossi评论的贴士帮助了我:

我认为您没有意识到外部和内部格式之间的转换。对于PARVW,如果您与英语连接,则当您看到ER时,它意味着内部值ZM (cf表TPAUM)。

我不知道即使使用事务代码SE16N,字段也可以显示转换后的数据,即它以我的语言显示ER

因此,解决方案是简单地在ZM上过滤:

代码语言:javascript
复制
SELECT PERNR
    INTO PERNR_ER
    FROM VBPA
    WHERE VBPA~VBELN = VBAK-VBELN AND PARVW = 'ZM'.
ENDSELECT.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56850225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档