BAPI
-
ABAP BAPI和函数返回消息可视化
ABAP BAPI和函数返回消息通常是包括程序名、日期、时间、操作人、消息号等。其中,bapi不管运行成功或者失败都会返回消息,而系统标准函数则如果运行失败返回的消息是空、只有出问…
-
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. -
abap se37测试bapi后显示成功但找不到单据
今天在写Hybris销售订单回传ECC的接口,需要调用ECC的bapi函数来实现电商的销售订单在ECC中创建。使用的bapi是BAPI_SALESORDER_CREATEFROMD…
-
[转]SAP ABAP 销售订单、外向交货单、交货 Bapi
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182***********SALES ORDER INPUT CREATION.REPORT soi.PARAMETERS: p_auart TYPE auart OBLIGATORY.PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.PARAMETERS: p_spart TYPE vtweg OBLIGATORY.PARAMETERS: p_sold TYPE kunnr OBLIGATORY.PARAMETERS: p_ship TYPE kunnr OBLIGATORY.*ITEMPARAMETERS: p_matnr TYPE matnr OBLIGATORY.PARAMETERS: p_menge TYPE kwmeng OBLIGATORY.PARAMETERS: p_plant TYPE werks_d OBLIGATORY.PARAMETERS: p_itcat TYPE pstyv OBLIGATORY.* DATA DECLARATIONS.DATA: v_vbeln LIKE vbak-vbeln.DATA: header LIKE bapisdhead1.DATA: headerx LIKE bapisdhead1x.DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlxWITH HEADER LINE.DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdlWITH HEADER LINE.* HEADER DATAheader-doc_type = p_auart.headerx-doc_type = 'X'.header-sales_org = p_vkorg.headerx-sales_org = 'X'.header-distr_chan = p_vtweg.headerx-distr_chan = 'X'.header-division = p_spart.headerx-division = 'X'.headerx-updateflag = 'I'.* PARTNER DATApartner-partn_role = 'AG'.partner-partn_numb = p_sold.APPEND partner.partner-partn_role = 'WE'.partner-partn_numb = p_ship.APPEND partner.* ITEM DATAitemx-updateflag = 'I'.item-itm_number = '000010'.itemx-itm_number = 'X'.item-material = p_matnr.itemx-material = 'X'.item-plant = p_plant.itemx-plant = 'X'.item-target_qty = p_menge.itemx-target_qty = 'X'.item-target_qu = 'EA'.itemx-target_qu = 'X'.item-item_categ = p_itcat.itemx-item_categ = 'X'.APPEND item.APPEND itemx.* Fill schedule lineslt_schedules_in-itm_number = '000010'.lt_schedules_in-sched_line = '0001'.lt_schedules_in-req_qty = p_menge.APPEND lt_schedules_in.* Fill schedule line flagslt_schedules_inx-itm_number = '000010'.lt_schedules_inx-sched_line = '0001'.lt_schedules_inx-updateflag = 'X'.lt_schedules_inx-req_qty = 'X'.APPEND lt_schedules_inx.* Call the BAPICALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1' " 销售订单创建bapi,创建后按现有情况需要修改 交货冻结。EXPORTINGsales_header_in = headersales_header_inx = headerxIMPORTINGsalesdocument_ex = v_vbelnTABLESreturn = returnsales_items_in = itemsales_items_inx = itemxsales_schedules_in = lt_schedules_insales_schedules_inx = lt_schedules_inxsales_partners = partner.* Check the return table.LOOP AT return WHERE type = 'E' OR type = 'A'.EXIT.ENDLOOP.IF sy-subrc = 0.WRITE: / 'Error in creating document'.ELSE.COMMIT WORK AND WAIT.WRITE: / 'Document ', v_vbeln, ' created'.ENDIF.************DELIVERY CREATION.DATA: BEGIN OF t_vbap OCCURS 0,vbeln LIKE vbap-vbeln,posnr LIKE vbap-posnr,zmeng LIKE vbap-kwmeng,matnr LIKE vbap-matnr,werks LIKE vbap-werks,END OF t_vbap.DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest WITH HEADER LINE.DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems WITH HEADER LINE.DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.SELECT vbeln posnr zmeng matnr werksINTO TABLE t_vbapFROM vbapWHERE vbeln = v_vbeln.LOOP AT t_vbap.t_request-document_numb = t_vbap-vbeln.t_request-document_item = t_vbap-posnr.t_request-quantity_sales_uom = t_vbap-zmeng.t_request-quantity_base__uom = t_vbap-zmeng.t_request-id = 1.t_request-document_type = 'A'.t_request-delivery_date = sy-datum.t_request-material = t_vbap-matnr.t_request-plant = t_vbap-werks.t_request-date = sy-datum.t_request-goods_issue_date = sy-datum.t_request-goods_issue_time = sy-uzeit.APPEND t_request.ENDLOOP.CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC' "外向交货单创建,创建后交货数量和拣配数量都为空。需要填写TABLESrequest = t_requestcreateditems = t_createdreturn = t_return.READ TABLE t_return WITH KEY type = 'E'.IF sy-subrc = 0.MESSAGE e208(00) WITH 'Delivery creation error'.ENDIF.COMMIT WORK.************Post goods issue.READ TABLE t_created INDEX 1.DATA: vbkok_wa TYPE vbkok.vbkok_wa-vbeln_vl = t_created-document_numb.vbkok_wa-wabuc = 'X'.DATA: v_error.CALL FUNCTION 'WS_DELIVERY_UPDATE' "外向交货bapiEXPORTINGvbkok_wa = vbkok_wadelivery = t_created-document_numbIMPORTINGef_error_in_goods_issue_0 = v_error.COMMIT WORK. -
取得成本中心组、成本要素组层级的几个BAPI
BAPI_COSTCENTERGROUP_GETDETAIL 取出成中心组下的成本中心组和成本中心HIERARCHYNODES 返回成本中心组内表HIERARCHYVALUES 返…