1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
OPEN CURSOR gd_cursor_bsid FOR SELECT (bsid_fields) FROM bseg AS i LEFT OUTER JOIN bkpf AS h ON h~mandt = i~mandt AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr AND h~belnr = i~belnr WHERE kunnr IN dd_kunnr AND koart = 'D' AND i~h_bstat <> 'D' AND i~h_bstat <> 'M' AND i~bukrs IN dd_bukrs AND zuonr IN dd_zuonr AND shkzg IN dd_shkzg AND umskz IN dd_umskz AND bschl IN dd_bschl AND h_budat IN dd_budat AND (bsid_where_hdb) ORDER BY i~mandt kunnr i~bukrs i~belnr i~buzei i~gjahr. ENDIF. lv_index = lines( k_kunnr ). READ TABLE k_kunnr INDEX 1 INTO DATA(lv_smallest_kunnr). READ TABLE k_kunnr INDEX lv_index INTO DATA(lv_highest_kunnr). CLEAR lv_index. DO. IF NOT gd_xbsid_save IS INITIAL. xbsid[] = gd_xbsid_save. CLEAR gd_xbsid_save. ELSE. FETCH NEXT CURSOR gd_cursor_bsid APPENDING CORRESPONDING FIELDS OF TABLE xbsid PACKAGE SIZE 150000. IF sy-subrc <> 0. *keep the entries corresponding to k_kunnr, save the other ones for the next call gd_xbsid_save = xbsid[]. DELETE gd_xbsid_save WHERE kunnr LE lv_highest_kunnr-low. DELETE xbsid WHERE kunnr GT lv_highest_kunnr-low OR kunnr LT lv_smallest_kunnr-low. EXIT. ENDIF. IF xbsid[] IS INITIAL. EXIT. ENDIF. ENDIF. *keep the entries corresponding to k_kunnr, save the other ones for the next call gd_xbsid_save = xbsid[]. DELETE gd_xbsid_save WHERE kunnr LE lv_highest_kunnr-low. DELETE xbsid WHERE kunnr GT lv_highest_kunnr-low OR kunnr LT lv_smallest_kunnr-low. IF gd_xbsid_save IS NOT INITIAL. EXIT. "group change ENDIF. ENDDO. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/3086.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。