‎2007 Dec 17 6:40 AM
hi,
zbapi for creating po with reference to pr
where to give pr details?
Thanks
Sagar
‎2007 Dec 17 6:43 AM
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*
‎2007 Dec 17 6:43 AM
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*