在开发说明中,取最高价格和最低价格。
但是,在测试代码的过程中,用AT NEW 却出现这种情况:
****采购价格和供应商************************************:
***EKKO-EKPO取供应商***********************************************
DATA: BEGIN OF itab_ekko OCCURS 0 ,
matnr LIKE eban-matnr,
aedat LIKE ekpo-aedat,
netpr LIKE ekpo-netpr,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekko-ebeln,
END OF itab_ekko.
DATA: lt_ekko LIKE itab_ekko OCCURS 0 WITH HEADER LINE.
DATA: lt_ekko1 LIKE itab_ekko OCCURS 0 WITH HEADER LINE. " 放最低采购价格
DATA: BEGIN OF wa,
matnr LIKE eban-matnr,
aedat LIKE ekpo-aedat,
netpr LIKE ekpo-netpr,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekko-ebeln,
END OF wa.
SELECT
ekpo~matnr
ekpo~ebeln
ekpo~aedat
ekpo~netpr
ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE lt_ekko
FROM ekpo
INNER JOIN ekko ON ekko~ebeln = ekpo~ebeln
WHERE ekpo~matnr IN w_matnr
AND ekpo~aedat IN w_date .
SORT lt_ekko BY matnr netpr ASCENDING.
CLEAR: wa.
LOOP AT lt_ekko INTO wa.
AT NEW matnr.
lt_ekko1-matnr = wa-matnr.
lt_ekko1-lifnr = wa-lifnr.
lt_ekko1-netpr = wa-netpr.
APPEND lt_ekko1.
CLEAR: lt_ekko1.
CLEAR: wa.
ENDAT.
ENDLOOP.
这时,wa里的数据除了第一个字段MATNR是正确的之外,其他后边的字段有的是"***"掩码,有的是“0”。这是在AT NEW里进行內表赋值时,不能正常处理的原因。
解决办法是:用外部的变量把数据传输到新的內表之中。代码如下:
***EKKO-EKPO取供应商***********************************************
DATA: BEGIN OF itab_ekko OCCURS 0 ,
matnr LIKE eban-matnr,
aedat LIKE ekpo-aedat,
netpr LIKE ekpo-netpr,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekko-ebeln,
END OF itab_ekko.
DATA: lt_ekko LIKE itab_ekko OCCURS 0 WITH HEADER LINE.
DATA: lt_ekko1 LIKE itab_ekko OCCURS 0 WITH HEADER LINE. " 放最低采购价格
DATA: BEGIN OF wa,
matnr LIKE eban-matnr,
aedat LIKE ekpo-aedat,
netpr LIKE ekpo-netpr,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekko-ebeln,
END OF wa.
DATA: matnr LIKE eban-matnr,
lifnr LIKE ekko-lifnr,
netpr LIKE ekpo-netpr.
SELECT
ekpo~matnr
ekpo~ebeln
ekpo~aedat
ekpo~netpr
ekko~lifnr
INTO CORRESPONDING FIELDS OF TABLE lt_ekko
FROM ekpo
INNER JOIN ekko ON ekko~ebeln = ekpo~ebeln
WHERE ekpo~matnr IN w_matnr
AND ekpo~aedat IN w_date .
SORT lt_ekko BY matnr netpr ASCENDING.
CLEAR: wa .
LOOP AT lt_ekko INTO wa .
matnr = wa-matnr.
lifnr = wa-lifnr.
netpr = wa-netpr.
AT NEW matnr.
lt_ekko1-matnr = matnr.
lt_ekko1-lifnr = lifnr.
lt_ekko1-netpr = netpr.
APPEND lt_ekko1.
CLEAR: lt_ekko1.
CLEAR: wa.
ENDAT.
ENDLOOP.

浙公网安备 33010602011771号