‎2007 Oct 22 8:57 AM
‎2007 Oct 22 9:06 AM
Hi Mahesh..
This program is for changing Sales order thru BAPI.
Delete item and create new item using BAPI
Fill sales order number
L_SALESDOCUMENT = LS_VBAP-VBELN.
if temp ne L_SALESDOCUMENT
Fill header level details
CLEAR: LS_ORDER,
LS_ORDERX.
LS_ORDER-SALES_ORG = SO_VKORG.
LS_ORDER-DISTR_CHAN = SO_VTWEG.
LS_ORDERX-UPDATEFLAG = 'U'.
Assign Docno to Temp Doc no.
delete Sales item
LS_ITEM-ITM_NUMBER = LS_VBAP-POSNR.
LS_ITEM-MATERIAL = LS_VBAP-MATNR.
LS_ITEMX-ITM_NUMBER = LS_VBAP-POSNR.
LS_ITEMX-UPDATEFLAG = 'D'.
APPEND LS_ITEM TO LT_ITEM.
APPEND LS_ITEMX TO LT_ITEMX.
*else . fill itab .continue.
Call BAPI to delete item of the sales order
CALL FUNCTION 'BAPI_SALESDOCUMENT_CHANGE'
EXPORTING
SALESDOCUMENT = L_SALESDOCUMENT
ORDER_HEADER_IN = LS_ORDER
ORDER_HEADER_INX = LS_ORDERX
INT_NUMBER_ASSIGNMENT = int_num_assign
SIMULATION = ' '
TABLES
RETURN = LT_RETURN
ITEM_IN = LT_ITEM
ITEM_INX = LT_ITEMX.
DESCRIBE TABLE LT_RETURN LINES L_LINES.
READ TABLE LT_RETURN INTO LS_RETURN INDEX L_LINES.
IF NOT LS_RETURN-TYPE EQ 'E'.
Commit work
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = l_subrc.
CLEAR: LS_ITEM,
LS_ITEMX,
Lt_ITEM[],
Lt_ITEMX[],
lt_return[],
ls_return,
LS_SCD,
LS_SCDX,
LT_SCD[],
LT_SCDX[],
l_lines.
Create again the deleted item
fill quantity
LS_SCD-ITM_NUMBER = LS_VBAP-POSNR.
LS_SCD-REQ_QTY = LS_VBAP-KWMENG.
LS_SCD-REQ_DATE = LS_VBAP-EDATU.
APPEND LS_SCD TO LT_SCD.
LS_SCDX-ITM_NUMBER = LS_VBAP-POSNR.
LS_SCDX-REQ_QTY = 'X'.
LS_SCDX-REQ_DATE = 'X'.
APPEND LS_SCDX TO LT_SCDX.
fill sales unit and material and item number
LS_ITEM-ITM_NUMBER = LS_VBAP-POSNR.
LS_ITEM-MATERIAL = LS_VBAP-MATNR.
LS_ITEM-SALES_UNIT = LS_VBAP-VRKME.
LS_ITEM-PLANT = LS_VBAP-WERKS.
LS_ITEMX-ITM_NUMBER = LS_VBAP-POSNR.
LS_ITEMX-UPDATEFLAG = 'I'.
LS_ITEMX-MATERIAL = 'X'.
LS_ITEMX-SALES_UNIT = 'X'.
LS_ITEMX-PLANT = 'X'.
APPEND LS_ITEM TO LT_ITEM.
APPEND LS_ITEMX TO LT_ITEMX.
Call BAPI to create item of the sales order
CALL FUNCTION 'BAPI_SALESDOCUMENT_CHANGE'
EXPORTING
SALESDOCUMENT = L_SALESDOCUMENT
ORDER_HEADER_IN = LS_ORDER
ORDER_HEADER_INX = LS_ORDERX
INT_NUMBER_ASSIGNMENT = int_num_assign
SIMULATION = ' '
TABLES
RETURN = LT_RETURN
ITEM_IN = LT_ITEM
ITEM_INX = LT_ITEMX
SCHEDULE_IN = LT_SCD
SCHEDULE_INX = LT_SCDX.
DESCRIBE TABLE LT_RETURN LINES L_LINES.
READ TABLE LT_RETURN INTO LS_RETURN INDEX L_LINES.
IF NOT LS_RETURN-TYPE EQ 'E'.
Commit work
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = l_subrc.
GS_OUT-ERROR = LS_RETURN-MESSAGE.
GS_OUT-VBELN = LS_VBAP-VBELN.
GS_OUT-MATNR = LS_VBAP-MATNR.
GS_OUT-POSNR = LS_VBAP-POSNR.
<b>Reward if Helpful.</b>
‎2007 Oct 22 9:11 AM
When i cut paste the prgm it asks for the declaration..Can u send me the full program..Becoz i dnt know abt BAPI,Just now am starting
‎2007 Oct 22 9:12 AM
Hi,
use these....
&----
*& Report ZSAN_BAPI_PURCHASE_ORDER *
*& *
&----
*& *
*& *
&----
REPORT ZSAN_BAPI_PURCHASE_ORDER .
DATA: HEADER LIKE BAPIMEPOHEADER,
" Header
HEADER_IND LIKE BAPIMEPOHEADERX,
" Header index
PO_ITEMS LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,
" Item table
ITEMS_IND LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,
" Item index table
RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE
" Message Return table
.
SET PF-STATUS 'SANKET'.
**Initialize Header values
*HEADER-DOC_TYPE = 'NB'.
*HEADER-ITEM_INTVL = '00001'.
*HEADER-VENDOR = '0000001000'.
*HEADER-PURCH_ORG = '1000'.
*HEADER-PUR_GROUP = '001'.
*HEADER-CURRENCY = 'EUR'.
*HEADER-COMP_CODE = '1000'.
*HEADER-PMNTTRMS = '00001'.
*
**Initialize Index values
*HEADER_IND-DOC_TYPE = 'X'.
*HEADER_IND-ITEM_INTVL = 'X'.
*HEADER_IND-VENDOR = 'X'.
*HEADER_IND-PURCH_ORG = 'X'.
*HEADER_IND-PUR_GROUP = 'X'.
*HEADER_IND-CURRENCY = 'X'.
*HEADER_IND-COMP_CODE = 'X'.
*HEADER_IND-PMNTTRMS = 'X'.
*Initialize Header values
HEADER-DOC_TYPE = 'NB'.
HEADER-ITEM_INTVL = '00001'.
HEADER-VENDOR = '0000003020'.
HEADER-PURCH_ORG = '3000'.
HEADER-PUR_GROUP = '000'.
HEADER-CURRENCY = 'USD'.
*Initialize Index values
HEADER_IND-DOC_TYPE = 'X'.
HEADER_IND-ITEM_INTVL = 'X'.
HEADER_IND-VENDOR = 'X'.
HEADER_IND-PURCH_ORG = 'X'.
HEADER_IND-PUR_GROUP = 'X'.
HEADER_IND-CURRENCY = 'X'.
*Initialize Item values
PO_ITEMS-PO_ITEM = '00001'.
PO_ITEMS-MATERIAL = '100-100'.
PO_ITEMS-PLANT = '3000'.
PO_ITEMS-QUANTITY = '4'.
PO_ITEMS-NET_PRICE = '1'.
APPEND PO_ITEMS.
*Initialize Item index values
ITEMS_IND-PO_ITEM = '00001'.
ITEMS_IND-MATERIAL = 'X'.
ITEMS_IND-PLANT = 'X'.
ITEMS_IND-QUANTITY = 'X'.
PO_ITEMS-NET_PRICE = '1'.
APPEND ITEMS_IND.
*Initialize Item values
PO_ITEMS-PO_ITEM = '00002'.
PO_ITEMS-MATERIAL = '200-200'.
PO_ITEMS-PLANT = '3100'.
PO_ITEMS-QUANTITY = '20'.
PO_ITEMS-NET_PRICE = '3'.
APPEND PO_ITEMS.
*Initialize Item index values
ITEMS_IND-PO_ITEM = '00002'.
ITEMS_IND-MATERIAL = 'X'.
ITEMS_IND-PLANT = 'X'.
ITEMS_IND-QUANTITY = 'X'.
ITEMS_IND-NET_PRICE = 'X'.
APPEND ITEMS_IND.
*Initialize Item values
PO_ITEMS-PO_ITEM = '00003'.
PO_ITEMS-MATERIAL = '102-510'.
PO_ITEMS-PLANT = '3000'.
PO_ITEMS-QUANTITY = '20'.
PO_ITEMS-NET_PRICE = '246'.
APPEND PO_ITEMS.
*Initialize Item index values
ITEMS_IND-PO_ITEM = '00003'.
ITEMS_IND-MATERIAL = 'X'.
ITEMS_IND-PLANT = 'X'.
ITEMS_IND-QUANTITY = 'X'.
ITEMS_IND-NET_PRICE = 'X'.
APPEND ITEMS_IND.
*Create Production order
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
POHEADER = HEADER
POHEADERX = HEADER_IND
TABLES
RETURN = RETURN
POITEM = PO_ITEMS
POITEMX = ITEMS_IND.
*Commit BAPI
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
*Display PO number
FORMAT COLOR 6 INVERSE ON.
READ TABLE RETURN WITH KEY TYPE = 'S'.
IF SY-SUBRC <> 0.
WRITE: /,'Purchase Order not created'.
ELSE.
WRITE: /, RETURN-MESSAGE.
ENDIF.
FORMAT COLOR OFF INVERSE OFF.
2----
&----
*& Report ZSAN_BAPI_TEST1 *
*& *
&----
*& *
*& *
&----
REPORT ZSAN_BAPI_TEST1.
DATA: ORDER_HEADER LIKE BAPISDHEAD,
" Sales and Distribution Document Header
ORDERPARTNER LIKE BAPIPARTNR OCCURS 0 WITH HEADER LINE,
" SD Document Partner
ORDER_ITEM_IN LIKE BAPIITEMIN OCCURS 0 WITH HEADER LINE,
" Create SD Document Item
HEADER_IND LIKE BAPISDHEADX,
" Checkbox Fields for Sales and Distribution Document Header
RETURN LIKE BAPIRETURN1 OCCURS 0 WITH HEADER LINE,
" Return Parameter
W_ORDER LIKE BAPIVBELN-VBELN.
" Sales Document
*Initialize values
ORDER_HEADER-DOC_TYPE = 'TA'.
ORDER_HEADER-SALES_ORG = '5555'.
ORDER_HEADER-DISTR_CHAN = '55'.
ORDER_HEADER-DIVISION = '55'.
ORDERPARTNER-PARTN_NUMB = '0000003002'.
ORDERPARTNER-PARTN_ROLE = 'SP'.
APPEND ORDERPARTNER.
CLEAR ORDERPARTNER.
ORDER_ITEM_IN-MATERIAL = 'MAT1'.
ORDER_ITEM_IN-REQ_QTY = '2.000'.
APPEND ORDER_ITEM_IN.
CLEAR ORDER_ITEM_IN.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
EXPORTING
ORDER_HEADER_IN = ORDER_HEADER
CONVERT_PARVW_AUART = 'X'
IMPORTING
SALESDOCUMENT = W_ORDER
RETURN = RETURN
TABLES
ORDER_ITEMS_IN = ORDER_ITEM_IN
ORDER_PARTNERS = ORDERPARTNER.
*Commit BAPI's process
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
FORMAT COLOR 6 INVERSE ON.
READ TABLE RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0.
WRITE: 'Sales order not created' .
ELSE.
WRITE: ' Sales order NO.',W_ORDER COLOR 5, 'created successfully'.
ENDIF.
FORMAT COLOR OFF INVERSE OFF.
3----
&----
*& Report ZSAN_BAPI_PROFIT_CTR *
*& *
&----
*& *
*& *
&----
REPORT ZSAN_BAPI_PROFIT_CTR .
PARAMETERS: PR_CTR LIKE BAPI0015ID2-PROFIT_CTR,
VLD_TO LIKE BAPI0015_3-DATE.
DATA: PROFITCENTERID LIKE BAPI0015ID2 OCCURS 0 WITH HEADER LINE,
VALID_FORM LIKE BAPI0015_3-DATE,
VALID_TO LIKE BAPI0015_3-DATE,
BASICDATA LIKE BAPI0015_4 OCCURS 0 WITH HEADER LINE,
RETURN LIKE BAPIRET2 ,
PROFITCENTER LIKE BAPI0015ID2-PROFIT_CTR,
CONTROLLINGAREA LIKE BAPI0015ID2-CO_AREA.
*Fill PROFITCENTERID
PROFITCENTERID-PROFIT_CTR = PR_CTR.
PROFITCENTERID-CO_AREA = '1000'.
APPEND PROFITCENTERID.
*Fill VALID_FORM
VALID_FORM = '19940101'.
*Fill VALID_TO
VALID_TO = VLD_TO.
*Fill BASICDATA
BASICDATA-PRCTR_NAME = 'Sanket'.
BASICDATA-PRCTR_HIER_GRP = 'H1010'.
BASICDATA-IN_CHARGE = 'Sanket'.
APPEND BASICDATA.
*Get Profit center
CALL FUNCTION 'BAPI_PROFITCENTER_CREATE'
EXPORTING
PROFITCENTERID = PROFITCENTERID
VALIDFROM = VALID_FORM
VALIDTO = VALID_TO
BASICDATA = BASICDATA
IMPORTING
RETURN = RETURN
PROFITCENTER = PROFITCENTER
CONTROLLINGAREA = CONTROLLINGAREA.
*Commit BAPI
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
*Display profit center
FORMAT COLOR 6 INVERSE ON.
IF RETURN-TYPE = 'E'.
WRITE: /,RETURN-MESSAGE.
ELSE.
WRITE: /,RETURN-MESSAGE.
ENDIF.
FORMAT COLOR OFF INVERSE OFF.
Hope it works,
Thanks,
Sandeep.
‎2007 Oct 22 9:17 AM
<b>BAPI-step by step procedure
http://www.sapgenie.com/abap/bapi/example.htm
list of all BAPI's
http://www.planetsap.com/LIST_ALL_BAPIs.htm</b>;
Rewards if useful.................
Minal
‎2007 Oct 22 9:25 AM
Hi Mahesh,
Please find the below link.
http://www.sapdev.co.uk/java/jco/bapi_jco.pdf
http://sapabaplive.blogspot.com/search/label/BAPI
Please Reward.