Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI

Former Member
0 Likes
586

Can anybody give me anysample program for BAPI(simple prgm)

5 REPLIES 5
Read only

varma_narayana
Active Contributor
0 Likes
554

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>

Read only

0 Likes
554

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

Read only

Former Member
0 Likes
554

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.

Read only

Former Member
0 Likes
554

<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

Read only

Former Member
0 Likes
554