DATA: lt_item TYPE STANDARD TABLE OF bapisditm WITH HEADER LINE, lt_itemx TYPE STANDARD TABLE OF bapisditmx WITH HEADER LINE, lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE, ls_headerx TYPE bapisdh1x. DATA: lv_msg(220). FIELD-SYMBOLS: <fs_alv> TYPE typ_alv, <fs_field> TYPE any. DATA: lt_alv TYPE STANDARD TABLE OF typ_alv WITH HEADER LINE. lt_alv[] = gt_alv[]. DELETE lt_alv WHERE sel = ''. IF lt_alv[] IS INITIAL. MESSAGE '请选择需要修改的行!' TYPE 'S' DISPLAY LIKE 'E'. EXIT. ENDIF. SORT lt_alv BY vbeln posnr. LOOP AT lt_alv. AT NEW vbeln. CLEAR: lt_item[],lt_item,lt_itemx[],lt_itemx. ENDAT. lt_item = VALUE #( itm_number = lt_alv-posnr plant = lt_alv-werks "修改库存地点的时候要带上工厂,不然会被自动清掉,离谱 store_loc = lt_alv-lgort ). APPEND lt_item. CLEAR lt_item. lt_itemx = VALUE #( itm_number = lt_alv-posnr updateflag = 'U' store_loc = 'X' ). APPEND lt_itemx. CLEAR lt_itemx. AT END OF vbeln. CLEAR: lt_return[],lt_return,ls_headerx,lt_alv-msg. ls_headerx-updateflag = 'U'. CALL FUNCTION 'BAPI_SALESORDER_CHANGE' EXPORTING salesdocument = lt_alv-vbeln order_header_inx = ls_headerx TABLES order_item_in = lt_item order_item_inx = lt_itemx return = lt_return. LOOP AT lt_return WHERE type CA 'EAX'. MESSAGE ID lt_return-id TYPE lt_return-type NUMBER lt_return-number INTO lv_msg WITH lt_return-message_v1 lt_return-message_v2 lt_return-message_v3 lt_return-message_v4. lt_alv-msg = lt_alv-msg && lv_msg && ';'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. lt_alv-type = 'E'. lt_alv-sicon = c_red. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. lt_alv-type = 'S'. lt_alv-sicon = c_green. lt_alv-msg = '修改成功!'. ENDIF. LOOP AT gt_alv ASSIGNING <fs_alv> WHERE vbeln = lt_alv-vbeln AND sel = 'X'. <fs_alv>-type = lt_alv-type. <fs_alv>-sicon = lt_alv-sicon. <fs_alv>-msg = lt_alv-msg. ENDLOOP. ENDAT. ENDLOOP.
下一篇: 屏幕上定位光标...