一对多的内表处理

一对多的内表处理

比较笨,一开始没转过弯来=。=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

posted @ 2012-02-28 22:55  VerySky  阅读(504)  评论(0)    收藏  举报