SAP报工统计表 透明标关联内表查询优化问题

不渡之人 2019-01-03 02:43:08

DATA:BEGIN OF IT_AFPO OCCURS 0,
DWERK LIKE AFPO-DWERK,
CHARG LIKE AFPO-CHARG,
AUFNR LIKE AFPO-AUFNR,
PLNBEZ LIKE AFKO-PLNBEZ,
PSMNG LIKE AFPO-PSMNG, "投入
FEVOR LIKE AFKO-FEVOR,
END OF IT_AFPO.

DATA:BEGIN OF IT_AFRU OCCURS 0,
WERKS LIKE AFRU-WERKS,
AUFNR LIKE AFPO-AUFNR,
VORNR LIKE AFRU-VORNR,
LMNGA LIKE AFRU-LMNGA, "合格品

MEINH_t LIKE AFRU-ERNAM,
NOMNG LIKE AFRU-NOMNG,
XMNGA LIKE AFRU-XMNGA, "废品
MENGE_Z LIKE AFRU-MENGE_Z, "换算数量
MEINS_Z LIKE AFRU-MEINS_Z, "换算单位
PRDUT LIKE AFRU-PRDUT, "班组
ISDD LIKE AFRU-ISDD,
ISDZ LIKE AFRU-ISDZ,
IEDD LIKE AFRU-IEDD,
IEDZ LIKE AFRU-IEDZ,
ISBD LIKE AFRU-ISBD, " 处理时间
ISBZ LIKE AFRU-ISBZ,
IEBD LIKE AFRU-IEBD,
IEBZ LIKE AFRU-IEBZ,
ISM01 LIKE AFRU-ISM01,
ISM03 LIKE AFRU-ISM03,
LTXA1 LIKE AFRU-LTXA1,
PRDAT LIKE AFRU-PRDAT,
AENAM LIKE AFRU-AENAM,
AUFPL LIKE AFKO-AUFPL,
STZHL LIKE AFRU-STZHL,
ERSDA LIKE AFRU-ERSDA,
BUDAT LIKE AFRU-BUDAT,
MEINH LIKE AFRU-MEINH,
END OF IT_AFRU.
DATA DATE LIKE SY-DATUM.


SELECT AFPO~DWERK AFKO~AUFNR AFPO~MATNR as PLNBEZ AFPO~CHARG AFPO~PSMNG AFKO~FEVOR AFKO~AUFPL
FROM AFKO INNER JOIN AFPO
ON AFKO~AUFNR = AFPO~AUFNR
INTO CORRESPONDING FIELDS OF TABLE IT_AFPO
WHERE AFPO~DWERK = P_DWERK
AND AFPO~AUFNR IN P_AUFNR
AND AFPO~MATNR IN P_MATNR
AND AFKO~FEVOR IN P_FEVOR
and AFPO~CHARG in P_CHARG.

IF F_WR = 'X' .

SELECT *
FROM AFRU
INTO CORRESPONDING FIELDS OF TABLE IT_AFRU
FOR ALL ENTRIES IN IT_AFPO
WHERE AUFNR = IT_AFPO-AUFNR
AND WERKS = IT_AFPO-DWERK
AND ERSDA IN P_ERSDA "确认输入日期
AND PRDUT IN P_PRDUT "生产班组字段
AND STOKZ <> 'X' "标识:凭证已被冲销
AND STZHL = 0 . "被取消确认的确认计数器
ELSE.
SELECT *
FROM AFRU
INTO CORRESPONDING FIELDS OF TABLE IT_AFRU
FOR ALL ENTRIES IN IT_AFPO
WHERE AUFNR = IT_AFPO-AUFNR
AND WERKS = IT_AFPO-DWERK
AND ERSDA IN P_ERSDA
AND PRDUT IN P_PRDUT.
ENDIF.

查询结果,IT_AFPO查询结果是15000条
SELECT * FROM AFRU SELECT * FROM AFRU 这里就time out了,报表是生产工单报工统计分析表,搞了半天好像没太好的思路,各位有好的办法吗,谢谢

...全文
467 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HJimmmmy 2019-05-01
  • 打赏
  • 举报
回复
尽量不要用select * into correspondong fields of ,换种写法
不渡之人 2019-01-09
  • 打赏
  • 举报
回复
引用
在第一个SQL取AFKO & AFPO时,Where condition 可以增加 AND AFKO~GSTRI IN P_ERSDA , 另外,因为可能存在业务背景的不同,所以加上这个条件后,主要测试看是否存在数据丢失。
谢谢, 不过 工厂都是1000 订单号又没有重复,排序去重还是这么多条,效率没有提高,数据没有丢失
西陌 2019-01-08
  • 打赏
  • 举报
回复
引用 2 楼 vixou 的回复:
[quote=引用 1 楼 西陌 的回复:] select AFRU 之前,对IT_AFPO根据AUFNR,DWERK排序去重试试
工厂都是相同的,取到的有好几年的数据,选择屏幕输入的报工日期时间段,请问可以用来精简IT_AFPO吗,对应哪个字段的日期? [/quote] 在第一个SQL取AFKO & AFPO时,Where condition 可以增加 AND AFKO~GSTRI IN P_ERSDA , 另外,因为可能存在业务背景的不同,所以加上这个条件后,主要测试看是否存在数据丢失。
西陌 2019-01-07
  • 打赏
  • 举报
回复
select AFRU 之前,对IT_AFPO根据AUFNR,DWERK排序去重试试
不渡之人 2019-01-07
  • 打赏
  • 举报
回复
引用 1 楼 西陌 的回复:
select AFRU 之前,对IT_AFPO根据AUFNR,DWERK排序去重试试
工厂都是相同的,取到的有好几年的数据,选择屏幕输入的报工日期时间段,请问可以用来精简IT_AFPO吗,对应哪个字段的日期?

2,679

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 ERP/CRM
社区管理员
  • ERP/CRM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧