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
405

hi,

zbapi for creating po with reference to pr

where to give pr details?

Thanks

Sagar

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
365

Hi Sagar,

check this out,

FUNCTION zbapi3.

*"----


""Local Interface:

*" IMPORTING

*" VALUE(BANFN) LIKE ZBAPIPR-BANFN

*" VALUE(BNFPO) LIKE ZBAPIPR-BNFPO

*" EXPORTING

*" VALUE(EXPPURCHASEORDER) LIKE BAPIMEPOHEADER-PO_NUMBER

*" VALUE(EXPHEADER) LIKE BAPIMEPOHEADER STRUCTURE BAPIMEPOHEADER

*" TABLES

*" ITAB STRUCTURE ZBAPITAB

*" RETURN STRUCTURE BAPIRET2

*"----


DATA: del_date TYPE sy-datum.

CONSTANTS : c_x VALUE 'X'.

DATA: pohead TYPE bapimepoheader.

DATA: poheadx TYPE bapimepoheaderx.

DATA: exp_head TYPE bapimepoheader.

DATA: poitem TYPE TABLE OF bapimepoitem WITH HEADER LINE.

DATA: poitemx TYPE TABLE OF bapimepoitemx WITH HEADER LINE.

DATA: posched TYPE TABLE OF bapimeposchedule WITH HEADER LINE.

DATA: poschedx TYPE TABLE OF bapimeposchedulx WITH HEADER LINE.

DATA: afspoitem TYPE TABLE OF /afs/bapimepoitem WITH HEADER LINE.

DATA: afspoitemx TYPE TABLE OF /afs/bapimepoitemx WITH HEADER LINE.

DATA: afsposchedule TYPE TABLE OF /afs/bapimeposchedule WITH HEADER LINE.

DATA: afsposchedulex TYPE TABLE OF /afs/bapimeposchedulx WITH HEADER LINE.

DATA : vmatnr LIKE eban-matnr,

vwerks LIKE eban-werks,

vlgort LIKE eban-lgort,

vekorg LIKE eban-ekorg,

vekgrp LIKE eban-ekgrp,

vmenge LIKE eban-menge,

vknttp LIKE eban-knttp,

vflief LIKE eban-flief,

vbsart LIKE eban-bsart,

vpstyp LIKE eban-pstyp.

SELECT matnr werks lgort ekorg ekgrp menge knttp flief bsart pstyp INTO TABLE itab

FROM eban WHERE banfn = banfn AND bnfpo = bnfpo.

LOOP AT itab.

vmatnr = itab-matnr.

vwerks = itab-werks.

vlgort = itab-lgort.

vekorg = itab-ekorg.

vekgrp = itab-ekgrp.

vmenge = itab-menge.

vknttp = itab-knttp.

vflief = itab-flief.

vbsart = itab-bsart.

vpstyp = itab-pstyp.

ENDLOOP.

IF vpstyp = '5'.

vpstyp = 'S'.

  • else.

  • message e045.

ENDIF.

pohead-comp_code = '0001'.

pohead-doc_type = vbsart.

pohead-creat_date = sy-datum.

pohead-vendor = vflief.

pohead-purch_org = vekorg.

pohead-pur_group = vekgrp.

pohead-langu = sy-langu .

pohead-doc_date = sy-datum.

poheadx-comp_code = c_x.

poheadx-doc_type = c_x.

poheadx-creat_date = c_x.

poheadx-vendor = c_x.

poheadx-langu = c_x.

poheadx-purch_org = c_x.

poheadx-pur_group = c_x.

poheadx-doc_date = c_x.

  • Item Level Data

poitem-po_item = 00010.

poitem-material = vmatnr.

poitem-plant = vwerks.

poitem-quantity = vmenge.

poitem-item_cat = vPSTYP.

poitem-acctasscat = vknttp.

poitem-preq_no = banfn.

poitem-preq_item = bnfpo.

  • poitem-SI_CAT = 'V'.

APPEND poitem.

poitemx-po_item = 00010.

poitemx-po_itemx = c_x.

poitemx-material = c_x.

poitemx-plant = c_x .

*poitemx-stge_loc = c_x .

poitemx-quantity = c_x .

poitemx-tax_code = c_x .

poitemx-item_cat = c_x .

poitemx-acctasscat = c_x .

poitemx-preq_no = c_x.

poitemx-preq_item = c_x.

  • poitemx-SI_CAT = c_x.

APPEND poitemx.

  • Schedule Line Level Data

posched-po_item = 00010.

posched-sched_line = '0001'.

posched-preq_no = banfn.

posched-preq_item = bnfpo.

APPEND posched.

poschedx-po_item = 00010.

poschedx-sched_line = '0001'.

poschedx-po_itemx = c_x.

poschedx-sched_linex = c_x.

poschedx-preq_no = c_x.

poschedx-preq_item = c_x.

APPEND poschedx.

afspoitem-po_item = 00010.

APPEND afspoitem.

afspoitemx-po_item = 00010.

afspoitemx-po_itemx = c_x.

APPEND afspoitemx.

afsposchedule-po_item = 00010.

afsposchedule-sche_line_no = 1.

APPEND afsposchedule.

afsposchedulex-po_item = 00010.

afsposchedulex-sche_line_no = c_x.

afsposchedulex-po_itemx = c_x.

APPEND afsposchedulex.

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

poheader = pohead

poheaderx = poheadx

IMPORTING

exppurchaseorder = exppurchaseorder

expheader = expheader

TABLES

return = return

poitem = poitem

poitemx = poitemx

poschedule = posched

poschedulex = poschedx

afs_poitem = afspoitem

afs_poitemx = afspoitemx

afs_poschedule = afsposchedule

afs_poschedulex = afsposchedulex.

.

*CALL FUNCTION 'BAPI_PO_CREATE1'

  • EXPORTING

  • poheader = pohead

  • POHEADERX = poheadx

  • IMPORTING

  • EXPPURCHASEORDER = exppurchaseorder

  • EXPHEADER = EXPHEADER

    • EXPPOEXPIMPHEADER =

  • TABLES

  • RETURN = return

  • POITEM = poitem

  • POITEMX = poitemx

  • POSCHEDULE = posched

  • POSCHEDULEX = poschedx.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

IF NOT exppurchaseorder IS INITIAL.

CALL FUNCTION 'DEQUEUE_ALL'.

ELSE.

CALL FUNCTION 'DEQUEUE_ALL'.

  • message i036.

ENDIF.

ENDFUNCTION.

*Regards,

Azhar*

1 REPLY 1
Read only

Former Member
0 Likes
366

Hi Sagar,

check this out,

FUNCTION zbapi3.

*"----


""Local Interface:

*" IMPORTING

*" VALUE(BANFN) LIKE ZBAPIPR-BANFN

*" VALUE(BNFPO) LIKE ZBAPIPR-BNFPO

*" EXPORTING

*" VALUE(EXPPURCHASEORDER) LIKE BAPIMEPOHEADER-PO_NUMBER

*" VALUE(EXPHEADER) LIKE BAPIMEPOHEADER STRUCTURE BAPIMEPOHEADER

*" TABLES

*" ITAB STRUCTURE ZBAPITAB

*" RETURN STRUCTURE BAPIRET2

*"----


DATA: del_date TYPE sy-datum.

CONSTANTS : c_x VALUE 'X'.

DATA: pohead TYPE bapimepoheader.

DATA: poheadx TYPE bapimepoheaderx.

DATA: exp_head TYPE bapimepoheader.

DATA: poitem TYPE TABLE OF bapimepoitem WITH HEADER LINE.

DATA: poitemx TYPE TABLE OF bapimepoitemx WITH HEADER LINE.

DATA: posched TYPE TABLE OF bapimeposchedule WITH HEADER LINE.

DATA: poschedx TYPE TABLE OF bapimeposchedulx WITH HEADER LINE.

DATA: afspoitem TYPE TABLE OF /afs/bapimepoitem WITH HEADER LINE.

DATA: afspoitemx TYPE TABLE OF /afs/bapimepoitemx WITH HEADER LINE.

DATA: afsposchedule TYPE TABLE OF /afs/bapimeposchedule WITH HEADER LINE.

DATA: afsposchedulex TYPE TABLE OF /afs/bapimeposchedulx WITH HEADER LINE.

DATA : vmatnr LIKE eban-matnr,

vwerks LIKE eban-werks,

vlgort LIKE eban-lgort,

vekorg LIKE eban-ekorg,

vekgrp LIKE eban-ekgrp,

vmenge LIKE eban-menge,

vknttp LIKE eban-knttp,

vflief LIKE eban-flief,

vbsart LIKE eban-bsart,

vpstyp LIKE eban-pstyp.

SELECT matnr werks lgort ekorg ekgrp menge knttp flief bsart pstyp INTO TABLE itab

FROM eban WHERE banfn = banfn AND bnfpo = bnfpo.

LOOP AT itab.

vmatnr = itab-matnr.

vwerks = itab-werks.

vlgort = itab-lgort.

vekorg = itab-ekorg.

vekgrp = itab-ekgrp.

vmenge = itab-menge.

vknttp = itab-knttp.

vflief = itab-flief.

vbsart = itab-bsart.

vpstyp = itab-pstyp.

ENDLOOP.

IF vpstyp = '5'.

vpstyp = 'S'.

  • else.

  • message e045.

ENDIF.

pohead-comp_code = '0001'.

pohead-doc_type = vbsart.

pohead-creat_date = sy-datum.

pohead-vendor = vflief.

pohead-purch_org = vekorg.

pohead-pur_group = vekgrp.

pohead-langu = sy-langu .

pohead-doc_date = sy-datum.

poheadx-comp_code = c_x.

poheadx-doc_type = c_x.

poheadx-creat_date = c_x.

poheadx-vendor = c_x.

poheadx-langu = c_x.

poheadx-purch_org = c_x.

poheadx-pur_group = c_x.

poheadx-doc_date = c_x.

  • Item Level Data

poitem-po_item = 00010.

poitem-material = vmatnr.

poitem-plant = vwerks.

poitem-quantity = vmenge.

poitem-item_cat = vPSTYP.

poitem-acctasscat = vknttp.

poitem-preq_no = banfn.

poitem-preq_item = bnfpo.

  • poitem-SI_CAT = 'V'.

APPEND poitem.

poitemx-po_item = 00010.

poitemx-po_itemx = c_x.

poitemx-material = c_x.

poitemx-plant = c_x .

*poitemx-stge_loc = c_x .

poitemx-quantity = c_x .

poitemx-tax_code = c_x .

poitemx-item_cat = c_x .

poitemx-acctasscat = c_x .

poitemx-preq_no = c_x.

poitemx-preq_item = c_x.

  • poitemx-SI_CAT = c_x.

APPEND poitemx.

  • Schedule Line Level Data

posched-po_item = 00010.

posched-sched_line = '0001'.

posched-preq_no = banfn.

posched-preq_item = bnfpo.

APPEND posched.

poschedx-po_item = 00010.

poschedx-sched_line = '0001'.

poschedx-po_itemx = c_x.

poschedx-sched_linex = c_x.

poschedx-preq_no = c_x.

poschedx-preq_item = c_x.

APPEND poschedx.

afspoitem-po_item = 00010.

APPEND afspoitem.

afspoitemx-po_item = 00010.

afspoitemx-po_itemx = c_x.

APPEND afspoitemx.

afsposchedule-po_item = 00010.

afsposchedule-sche_line_no = 1.

APPEND afsposchedule.

afsposchedulex-po_item = 00010.

afsposchedulex-sche_line_no = c_x.

afsposchedulex-po_itemx = c_x.

APPEND afsposchedulex.

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

poheader = pohead

poheaderx = poheadx

IMPORTING

exppurchaseorder = exppurchaseorder

expheader = expheader

TABLES

return = return

poitem = poitem

poitemx = poitemx

poschedule = posched

poschedulex = poschedx

afs_poitem = afspoitem

afs_poitemx = afspoitemx

afs_poschedule = afsposchedule

afs_poschedulex = afsposchedulex.

.

*CALL FUNCTION 'BAPI_PO_CREATE1'

  • EXPORTING

  • poheader = pohead

  • POHEADERX = poheadx

  • IMPORTING

  • EXPPURCHASEORDER = exppurchaseorder

  • EXPHEADER = EXPHEADER

    • EXPPOEXPIMPHEADER =

  • TABLES

  • RETURN = return

  • POITEM = poitem

  • POITEMX = poitemx

  • POSCHEDULE = posched

  • POSCHEDULEX = poschedx.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

IF NOT exppurchaseorder IS INITIAL.

CALL FUNCTION 'DEQUEUE_ALL'.

ELSE.

CALL FUNCTION 'DEQUEUE_ALL'.

  • message i036.

ENDIF.

ENDFUNCTION.

*Regards,

Azhar*