销售订单
-
SAP销售退货业务
如果发生客诉等原因需要退回货物,则可以使用退货销售订单收回货物并冲减收入和成本。退货的核准以及退回货物的QC可以在线下做也可以在SAP做,退货订单可以参考Billing或者SO创建…
-
删除销售订单BAPI
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364REPORT zdelete_sales_order.TABLES vbak.DATA: itab_vbak LIKE TABLE OF vbak.DATA: itab_vbap LIKE TABLE OF vbap.DATA: itab_vbkd LIKE TABLE OF vbkd.DATA: wa_vbak LIKE vbak.DATA: wa_vbap LIKE vbap.DATA: wa_vbkd LIKE vbkd.DATA: lt_order_header_in LIKE bapisdh1,lt_order_header_inx LIKE bapisdh1x,lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,lt_order_item_in LIKE bapisditm OCCURS 0 WITH HEADER LINE,lt_order_item_inx LIKE bapisditmx OCCURS 0 WITH HEADER LINE.DATA lt_vbak LIKE TABLE OF vbak WITH HEADER LINE.SELECT-OPTIONS s_vbeln FOR vbak-vbeln OBLIGATORY.*SELECT * INTO TABLE itab_vbak FROM vbak WHERE vbeln IN s_vbeln.*SELECT * INTO TABLE itab_vbap FROM vbap WHERE vbeln IN s_vbeln.*SELECT * INTO TABLE itab_vbkd FROM vbkd WHERE vbeln IN s_vbeln.SELECT vbeln INTO CORRESPONDING FIELDS OF TABLE lt_vbakFROM vbakWHERE vbeln IN s_vbeln.LOOP AT lt_vbak.lt_order_header_inx-updateflag = 'D'.CALL FUNCTION 'BAPI_SALESORDER_CHANGE'EXPORTINGsalesdocument = lt_vbak-vbeln* ORDER_HEADER_IN = LT_ORDER_HEADER_INorder_header_inx = lt_order_header_inxTABLESreturn = lt_return.LOOP AT lt_return WHERE type = 'E' OR type = 'A'.ENDLOOP.IF sy-subrc = 0.ROLLBACK WORK.WRITE:lt_vbak-vbeln,' E'.ELSE.COMMIT WORK AND WAIT.WRITE:lt_vbak-vbeln,' S'.ENDIF.ENDLOOP.*LOOP AT ITAB_VBAK INTO WA_VBAK.** DELETE FROM VBAK WHERE VBELN = WA_VBAK-VBELN.* DELETE FROM VBAP WHERE VBELN = WA_VBAK-VBELN.* DELETE FROM VBKD WHERE VBELN = WA_VBAK-VBELN.* DELETE FROM VBEP WHERE VBELN = WA_VBAK-VBELN.* DELETE FROM VBPA WHERE VBELN = WA_VBAK-VBELN.**ENDLOOP. -
BAPI To Update Sales Order Reason For Rejection
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181REPORT ztestbapiso1.*&--------------------------------------------------------------------&**& Program Description: &**& ----------------------- &**& This demo program will update the reason for rejection for all &**& items in a selected sales order. &**& &**& The program demonstrate the use of the 'BAPI_SALESORDER_CHANGE'. &**& &**& Author: ABAPCOOKBOOK &**& Website: www.abapcookbook.com &************************************************************************************************************************************************** DATA DECLARATIONS **************************************************************************Tables:TABLES:vbap.*Internal tables:DATA:gt_vbap TYPE STANDARD TABLE OF vbap,gt_item_in TYPE STANDARD TABLE OF bapisditm,gt_item_inx TYPE STANDARD TABLE OF bapisditmx,gt_return TYPE STANDARD TABLE OF bapiret2.*Field Symbols:FIELD-SYMBOLS:<fs_vbap> TYPE vbap.*Structures:DATA:gst_item_hedx TYPE bapisdh1x,gst_item_in TYPE bapisditm,gst_item_inx TYPE bapisditmx.*Variables:DATA:gv_msg TYPE string.*Constants:CONSTANTS:gc_error TYPE string VALUE ': An error occured, no change done to the sales order.',gc_success TYPE string VALUE ': Sales order changed successfully.'.************************************************************************* SELECTION SCREEN *************************************************************************SELECT-OPTIONS:* Sales Order Number.s_vbeln FOR vbap-vbeln OBLIGATORY.PARAMETERS:* Reason for Rejection.p_abgru TYPE vbap-abgru OBLIGATORY.************************************************************************* CODE LOGIC **************************************************************************Select sales order data from table VBAP.SELECT *FROM vbapINTO TABLE gt_vbapWHERE vbeln IN s_vbeln.IF sy-subrc EQ 0.LOOP AT gt_vbap ASSIGNING <fs_vbap>.* (Order Header Level)* Setting the update flag at order header level to update mode.gst_item_hedx-updateflag = 'U'.* (Order Item Level)* Setting of the material number(MATNR) at order item level.gst_item_in-material = <fs_vbap>-matnr.* Setting of the item number(POSNR) at order item level.gst_item_in-itm_number = <fs_vbap>-posnr.gst_item_inx-itm_number = <fs_vbap>-posnr.* Setting of the reason for rejection(ABGRU) at order item level.gst_item_in-reason_rej = p_abgru.gst_item_inx-reason_rej = 'X'.* Setting the update flag at order item level to update mode.gst_item_inx-updateflag = 'U'.* BAPI items level tables:APPEND:gst_item_in TO gt_item_in,gst_item_inx TO gt_item_inx.* Calling BAPI to update reason for rejection in the selected sales order.CALL FUNCTION 'BAPI_SALESORDER_CHANGE'EXPORTINGsalesdocument = <fs_vbap>-vbelnorder_header_inx = gst_item_hedxTABLESreturn = gt_returnorder_item_in = gt_item_inorder_item_inx = gt_item_inx.* Preparing the result message.CONCATENATE <fs_vbap>-vbeln " Sales Order Number<fs_vbap>-posnr " Item NumberINTO gv_msg " MessageSEPARATED BY space. " Space* Check if at least one error was raised by the BAPI. Loop inside* loop is not advise, however, the return table will contains small* amount of entries. We can use that for our demo.LOOP AT gt_return TRANSPORTING NO FIELDSWHERE type EQ 'E'OR type EQ 'A'.* Exit and rollback changes.EXIT.ENDLOOP.* If error found, rollback database changes.IF sy-subrc EQ 0.* Rollback changes.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.* Preparing error message.CONCATENATE gv_msg "Sales Order and Item Numbergc_error "Error MessageINTO gv_msgSEPARATED BY space.* Output message.WRITE / gv_msg.* Else, no error found, commit database changes.ELSE.* Commit changes.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = abap_true.* Preparing success message.CONCATENATE gv_msg "Sales Order and Item Numbergc_success "Success MessageINTO gv_msgSEPARATED BY space.* Output message.WRITE / gv_msg.ENDIF.* Write a line after each sales order.AT END OF vbeln.WRITE: sy-uline.ENDAT.* Clearing of variables and structures:CLEAR:* Variables:gv_msg,* Structures:gst_item_hedx,gst_item_in,gst_item_inx.* Refreshing internal tables:REFRESH:gt_item_in,gt_item_inx,gt_return.ENDLOOP.ENDIF. -
销售订单的行项目里条件的增强
如果要设置销售订单行项目里的某个类型下的金额数据可能要用到增强来做比如项目类别为TANN时,设置价格为空在LV69AFZZ里面控制代码如下:[crayon-6634ba119e83…
-
创建销售订单-用外部给号的方法步骤
For this create the number range in VN01 with the number range object. Go to VOV8 select y…