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

Problem in BAPI_PO_CREATE1

Former Member
0 Likes
474

I m getting this error, please enter cost center, as i have passed the cost center in both table and Xtable, but stilli am getting,

attaching the code below

LOOP AT IT_FINAL_UPLOAD INTO WA_FINAL_UPLOAD.

REFRESH : IT_ITEM, IT_ASIGN.

WA_FINAL_UPLOADC = WA_FINAL_UPLOAD.

AT NEW OLD_PO.

CALL FUNCTION 'BAPI_PO_GETDETAIL'

EXPORTING

PURCHASEORDER = WA_FINAL_UPLOAD-OLD_PO

ITEMS = 'X'

ACCOUNT_ASSIGNMENT = 'X'

SCHEDULES = 'X'

IMPORTING

PO_HEADER = L_POHEADER

TABLES

PO_ITEMS = IT_ITEM

PO_ITEM_ACCOUNT_ASSIGNMENT = IT_ASIGN

PO_ITEM_SCHEDULES = it_sch

.

LOOP AT IT_ITEM INTO WA_ITEM_FILL..

*move-corresponding WA_ITEM_FILL to W_PO_ITEM .

READ TABLE IT_COMPANY INTO WA_COMPANY WITH KEY OLD_CO =

WA_ITEM_FILL-CO_CODE.

IF SY-SUBRC = 0.

IF WA_COMPANY-OLD_CO = '1200' AND L_POHEADER-DOC_TYPE = 'VPE' .

PO_HEADER-COMP_CODE = '2000'.

ELSEIF WA_COMPANY-OLD_CO = '1200' AND L_POHEADER-DOC_TYPE <> 'VPE' .

PO_HEADER-COMP_CODE = '1100'.

ELSE.

PO_HEADER-COMP_CODE = WA_COMPANY-NEW_CO.

ENDIF.

else.

PO_HEADER-COMP_CODE = WA_ITEM_FILL-CO_CODE.

ENDIF.

W_PO_ITEM-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

W_PO_ITEM-MATERIAL = WA_ITEM_FILL-MATERIAL.

W_PO_ITEM-SHORT_TEXT = WA_ITEM_FILL-SHORT_TEXT.

W_PO_ITEM-ACCTASSCAT = WA_ITEM_FILL-ACCTASSCAT.

W_PO_ITEM-NET_PRICE = WA_ITEM_FILL-NET_PRICE.

W_PO_ITEM-PO_UNIT = WA_ITEM_FILL-UNIT.

W_PO_ITEM-MATL_GROUP = WA_ITEM_FILL-MAT_GRP.

READ TABLE IT_ASIGN INTO wa_ASIGN WITH KEY PO_ITEM =

WA_ITEM_FILL-PO_ITEM.

if sy-subrc = 0.

move-corresponding wa_ASIGN to W_PO_ASIG .

endif.

READ TABLE it_sch INTO wa_sch WITH KEY PO_ITEM =

WA_ITEM_FILL-PO_ITEM.

if sy-subrc = 0.

move-corresponding wa_sch to wa_sch1.

it_schX-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

it_schX-PO_ITEMX = 'X'.

it_schX-SCHED_LINEX = 'X'.

it_schX-DEL_DATCAT_EXT = 'X'.

it_schX-DELIVERY_DATE = 'X'.

it_schX-QUANTITY = 'X'.

it_schX-DELIV_TIME = 'X'.

it_schX-STAT_DATE = 'X'.

it_schX-PREQ_NO = 'X'.

it_schX-PREQ_ITEM = 'X'.

it_schX-PO_DATE = 'X'.

it_schX-ROUTESCHED = 'X'.

it_schX-MS_DATE = 'X'.

it_schX-MS_TIME = 'X'.

it_schX-LOAD_DATE = 'X'.

it_schX-LOAD_TIME = 'X'.

it_schX-TP_DATE = 'X'.

it_schX-TP_TIME = 'X'.

it_schX-GI_DATE = 'X'.

it_schX-GI_TIME = 'X'.

append it_schx.

append wa_sch1 to it_sch1.

endif.

IF WA_ITEM_FILL-ACCTASSCAT = 'K'.

READ TABLE IT_ASIGN INTO WA_ASIGN WITH KEY PO_ITEM =

WA_ITEM_FILL-PO_ITEM.

IF SY-SUBRC = 0.

SELECT SINGLE KOSTL_NEW INTO L_KOSTL FROM T9INFI04

WHERE KOSTL = WA_ASIGN-COST_CTR.

IF SY-SUBRC = 0.

W_PO_ASIG-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

W_PO_ASIG-COSTCENTER = L_KOSTL .

APPEND W_PO_ASIG TO L_PO_ASIG .

CLEAR: W_PO_ASIG .

w_ACTX-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

w_ACTX-COSTCENTER = C_X.

APPEND w_ACTX to ACTX.

ENDIF.

ENDIF.

ELSEIF WA_ITEM_FILL-ACCTASSCAT = 'A'.

READ TABLE IT_FINAL_UPLOAD INTO WA_FINAL_UPLOAD WITH KEY OLD_PO =

WA_ITEM_FILL-PO_NUMBER OLD_ITEM = WA_ITEM_FILL-PO_ITEM.

IF SY-SUBRC = 0.

W_PO_ASIG-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

W_PO_ASIG-ASSET_NO = WA_FINAL_UPLOAD-N_ANLN1 .

W_PO_ASIG-SUB_NUMBER = WA_FINAL_UPLOAD-N_ANLN2 .

w_ACTX-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

w_ACTX-ASSET_NO = C_X.

w_ACTX-SUB_NUMBER = C_X.

APPEND w_ACTX to ACTX.

APPEND W_PO_ASIG TO L_PO_ASIG .

CLEAR:W_PO_ASIG.

ENDIF.

ELSEIF WA_ITEM_FILL-ACCTASSCAT = 'P'.

READ TABLE IT_ASIGN INTO WA_ASIGN WITH KEY PO_ITEM =

WA_ITEM_FILL-PO_ITEM.

IF SY-SUBRC = 0.

W_PO_ASIG-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

CONCATENATE C_X WA_ASIGN-WBS_ELEM_E INTO W_PO_ASIG-WBS_ELEMENT.

CONDENSE W_PO_ASIG-WBS_ELEMENT.

APPEND W_PO_ASIG TO L_PO_ASIG .

CLEAR:W_PO_ASIG.

w_ACTX-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

w_ACTX-WBS_ELEMENT = C_X.

APPEND w_ACTX to ACTX.

ENDIF.

ENDIF.

READ TABLE IT_PLANT INTO WA_PLANT WITH KEY WERKS_OLD =

WA_ITEM_FILL-PLANT.

IF SY-SUBRC = 0.

IF WA_PLANT-WERKS_OLD = '1200' AND L_POHEADER-DOC_TYPE = 'VPE' .

W_PO_ITEM-PLANT = '2000'.

ELSEIF WA_PLANT-WERKS_OLD = '1200' AND L_POHEADER-DOC_TYPE <> 'VPE' .

W_PO_ITEM-PLANT = '1120'.

ELSE.

W_PO_ITEM-PLANT = WA_PLANT-WERKS_NEW.

ENDIF.

else.

W_PO_ITEM-PLANT = WA_ITEM_FILL-PLANT.

ENDIF.

READ TABLE IT_FINAL_UPLOAD INTO WA_FINAL_UPLOAD WITH KEY OLD_PO =

WA_ITEM_FILL-PO_NUMBER OLD_ITEM = WA_ITEM_FILL-PO_ITEM.

IF SY-SUBRC = 0.

W_PO_ITEM-QUANTITY = WA_FINAL_UPLOAD-MENGE .

ENDIF.

APPEND W_PO_ITEM TO L_PO_ITEM.

w_ITEMX-PO_ITEM = WA_ITEM_FILL-PO_ITEM.

w_ITEMX-MATERIAL = C_X.

w_ITEMX-PLANT = C_X .

*ITEMX-STGE_LOC = C_X .

w_ITEMX-QUANTITY = C_X .

w_ITEMX-NET_PRICE = c_x.

*ITEMX-TAX_CODE = C_X .

*w_ITEMX-ITEM_CAT = C_X .

w_ITEMX-ACCTASSCAT = C_X .

w_ITEMX-SHORT_TEXT = C_X .

w_ITEMX-PO_UNIT = c_x.

w_ITEMX-MATL_GROUP = c_x.

APPEND w_ITEMX to ITEMX.

ENDLOOP..

PO_HEADER-CREAT_DATE = SY-DATUM.

PO_HEADER-CURRENCY = L_POHEADER-CURRENCY.

PO_HEADER-DOC_TYPE = L_POHEADER-DOC_TYPE.

PO_HEADER-PURCH_ORG = L_POHEADER-PURCH_ORG.

PO_HEADER-PUR_GROUP = L_POHEADER-PUR_GROUP.

READ TABLE IT_T9INFI02 INTO WA_T9INFI02 WITH KEY BUKRS =

WA_ITEM_FILL-CO_CODE LIFNR =

L_POHEADER-VENDOR .

IF SY-SUBRC = 0.

PO_HEADER-VENDOR = WA_T9INFI02-LIFNR_NEW.

else.

PO_HEADER-VENDOR = L_POHEADER-VENDOR.

ENDIF.

*&----


*POPULATE HEADER FLAG.

*&----


HEADERX-COMP_CODE = C_X.

HEADERX-DOC_TYPE = C_X.

*HEADERX-creat_date = c_x.

HEADERX-VENDOR = C_X.

*HEADERX-langu = c_x.

HEADERX-PURCH_ORG = C_X.

HEADERX-PUR_GROUP = C_X.

HEADERX-CURRENCY = C_X.

*HEADERX-doc_date = c_x.

*&----


*POPULATE ITEM FLAG TABLE

*&----


CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = PO_HEADER

POHEADERX = HEADERX

IMPORTING

EXPPURCHASEORDER = PO

EXPHEADER = EXPHEADER

TABLES

RETURN = L_RETURN

POITEM = L_PO_ITEM

POITEMX = ITEMX

  • POADDRDELIVERY =

POSCHEDULE = it_sch1

POSCHEDULEX = it_schX

POACCOUNT = L_PO_ASIG

  • POACCOUNTPROFITSEGMENT =

POACCOUNTX = ACTX

  • POCOND =

  • POCONDX =

  • POLIMITS =

  • POCONTRACTLIMITS =

  • POSERVICES =

  • POSRVACCESSVALUES =

  • POSERVICESTEXT =

  • EXTENSIONIN =

  • EXTENSIONOUT =

.

IF NOT PO IS INITIAL.

CONCATENATE 'Purchase Order:' PO 'is created'

INTO WA_LOG_SUCESS-MESSAGE.

APPEND WA_LOG_SUCESS TO IT_LOG_SUCCESS.

CLEAR: WA_LOG_SUCESS.

IT_T9LERPO-OLD_PO_NUMBER = WA_FINAL_UPLOAD-OLD_PO.

IT_T9LERPO-NEW_PO_NUMBER = PO .

APPEND IT_T9LERPO.

CLEAR: IT_T9LERPO.

ENDIF.

LOOP AT L_RETURN INTO W_RETURN WHERE TYPE = 'E'.

MOVE-CORRESPONDING WA_FINAL_UPLOADC TO WA_FINAL_UPLOAD_ER.

CONCATENATE 'E:' W_RETURN-MESSAGE INTO WA_FINAL_UPLOAD_ER-MESSAGE

SEPARATED BY SPACE..

APPEND WA_FINAL_UPLOAD_ER TO IT_FINAL_UPLOAD_ER.

CLEAR: WA_FINAL_UPLOAD_ER.

ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

.ENDAT.

CLEAR: WA_FINAL_UPLOAD, WA_ITEM_FILL,WA_FINAL_UPLOADC.

REFRESH : L_RETURN, L_PO_ITEM, L_PO_ASIG.

ENDLOOP.

kindly help me out with this

1 REPLY 1
Read only

Former Member
0 Likes
419

Hi,

IF WA_ITEM_FILL-ACCTASSCAT = 'K'.

Cost centre is filled.

IF WA_ITEM_FILL-ACCTASSCAT = 'A'.

Cost centre is not filled.

IF WA_ITEM_FILL-ACCTASSCAT = 'P'.

Cost centre is not filled.

This may be the reason.

Reward if helpful.

Regards,

Subbu