一对多的内表处理
一对多的内表处理
比较笨,一开始没转过弯来=。=select之后append的位置~
A表列是已根据条件选出的记录,关联B表后字段即列数增多,A对B有可能是1对多关系,即要求扩展行。B又对C是1对多关系,最后行数是A*B*C。在purchase report里,request date/qty在EEKO里取出来之后,在EKES里添加promised dlvy date/qty,然后在ekbe表中添加actually date/qty.如果B,C表为空,仍然要保持A表记录行,BC标列为空。B=0,行数就是A*C.
LOOP AT gt_ekpo1. "已取出需求数量时间的记录
MOVE-CORRESPONDING gt_ekpo1 TO gt_ekpo2.
CLEAR:gt_ekpo2-budat,
gt_ekpo2-menge3,
gt_ekpo2-shkzg,
gt_ekpo2-lfbnr,
gt_ekpo2-etens1,
gt_ekpo2-belnr.
SELECT budat menge shkzg lfbnr etens belnr
FROM ekbe
INTO (gt_ekpo2-budat, "Actually dlvy. date
gt_ekpo2-menge3, "Actually dlvy. Qty
gt_ekpo2-shkzg,
gt_ekpo2-lfbnr,
gt_ekpo2-etens1,
gt_ekpo2-belnr)
WHERE ebelp = gt_ekpo1-ebelp
AND ebeln = gt_ekpo1-ebeln
AND etens = gt_ekpo1-etens.
"Sequential Number of Vendor Confirmation
APPEND gt_ekpo2.
ENDSELECT. "select 和endselect之间添加append到新表
IF sy-subrc EQ 4. "空行亦保留空到新行
APPEND gt_ekpo2.
ENDIF.
CLEAR gt_ekpo2.
ENDLOOP.
http://hi.baidu.com/zhangjigang/blog/item/6a47542c5be9e4e98a1399b4.html

浙公网安备 33010602011771号