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

Me21 Bapi

Former Member
0 Likes
1,463

Hi Experts,

I am Trying to use a Bapi for Po , by me21,

I am using flat file to import a po no.

I am getting Eror like

1. Please Enter Material no. and Account Assignment

2. Document Contain no items.

DcDATE DcTYP COCOD porg PGRP VENDOR ITEM MATERIAL AC.ASSIGN PLANT ITPRICE DELIV DATE

23012010 ZINC 1200 1200 JOB 0000150013 100 W40SS930 D 1210 19.00 25012010

Thanks..

Regards:

Heman

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,241

Dear Heman,

I think u r using BAPI_PO_CREATE. Read the Documentation of that BAPI . Then u come to know that where to insert the values.

See the Structures of the BAPI .

With Regards,

Sumodh.P

9 REPLIES 9
Read only

Former Member
0 Likes
1,242

Dear Heman,

I think u r using BAPI_PO_CREATE. Read the Documentation of that BAPI . Then u come to know that where to insert the values.

See the Structures of the BAPI .

With Regards,

Sumodh.P

Read only

0 Likes
1,241

Hi Sumodh,

Yes You are right I am using bapi po create,

i have already seen the whole structure of bapi me21,

but still confused about those errors

Thanks.

Read only

0 Likes
1,241

Hi Hemant ,

I have given a sample code to upload purchase order using the BAPi "BAPI_PO_CREATE1" for a single record . You could use that for uploading flat file also .

REPORT ZBAPI_CREATE_PO.

DATA:

PO_HEADER TYPE TABLE OF BAPIMEPOHEADER WITH HEADER LINE,

PO_HEADERX TYPE TABLE OF BAPIMEPOHEADERX WITH HEADER LINE,

PURITEM TYPE TABLE OF BAPIMEPOITEM WITH HEADER LINE,

PURITEMX TYPE TABLE OF BAPIMEPOITEMX WITH HEADER LINE,

RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

DATA: PURORDNUMBER LIKE BAPIMEPOHEADER-PO_NUMBER,

CTR type I ,

CTR2 TYPE STRING,

CTR1 TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE HEADERS.

PARAMETERS:

P_LIFNR TYPE EKKO-LIFNR, "Vendor Account Number

P_BUKRS TYPE EKKO-BUKRS, "Company Code

P_BSART TYPE EKKO-BSART default 'NB', "Purchasing Document Type

P_AEDAT TYPE EKKO-AEDAT DEFAULT sy-datum, "Date on Which Record Was Created

P_EKORG TYPE EKKO-EKORG, "Purchasing Organization

P_EKGRP TYPE EKKO-EKGRP. "Purchasing Group

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE ITEMZ.

PARAMETERS:

P_MATNR TYPE EKPO-MATNR, "Material Number

P_WERKS TYPE EKPO-WERKS, "Plant

P_MENGE TYPE EKPO-MENGE. "Purchase Order Quantity

SELECTION-SCREEN PUSHBUTTON /10(08) CMD1 USER-COMMAND NE1.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE ACTZ.

PARAMETERS:

P_PONUMB TYPE BAPIMEPOHEADER-PO_NUMBER.

SELECTION-SCREEN PUSHBUTTON /10(08) CMD2 USER-COMMAND CR1.

SELECTION-SCREEN END OF BLOCK B3.

INITIALIZATION.

HEADERS = 'Purchase Header Data'.

ITEMZ = 'Purchase Item Data'.

ACTZ = 'Actions'.

CMD1 = 'Next'.

CMD2 = 'Create'.

CTR = 10.

AT SELECTION-SCREEN.

CASE SY-UCOMM.

WHEN 'NE1'.

PERFORM ClearItems.

WHEN 'CR1'.

PERFORM createpurchaseorder.

ENDCASE.

START-OF-SELECTION.

&----


*& Form CREATEPURCHASEORDER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CREATEPURCHASEORDER .

PO_HEADER-VENDOR = P_LIFNR. "VENDOR

PO_HEADER-COMP_CODE = P_BUKRS. "COMPANY CODE

PO_HEADER-DOC_TYPE = P_BSART. "DOCUMENT TYPE

PO_HEADER-CREAT_DATE = P_AEDAT. "DATE ON WHICH RECORD WAS CREATED

PO_HEADER-PURCH_ORG = P_EKORG. "PURCHASING ORGANIZATION

PO_HEADER-PUR_GROUP = P_EKGRP. "PURCHASING GROUP

APPEND PO_HEADER.

PO_HEADERX-VENDOR = 'X'.

PO_HEADERX-COMP_CODE = 'X'.

PO_HEADERX-DOC_TYPE = 'X'.

PO_HEADERX-CREAT_DATE = 'X'.

PO_HEADERX-PURCH_ORG = 'X'.

PO_HEADERX-PUR_GROUP = 'X'.

PO_HEADERX-LANGU = 'X'.

APPEND PO_HEADERX.

*PURITEM-PO_ITEM = 1000.

*PURITEM-MATERIAL = P_MATNR.

*PURITEM-PLANT = P_WERKS.

*PURITEM-QUANTITY = P_MENGE.

*

*APPEND PURITEM.

*

*

*PURITEMX-PO_ITEM = 1000.

*PURITEMX-MATERIAL = 'X'.

*PURITEMX-PLANT = 'X'.

*PURITEMX-QUANTITY = 'X'.

*

*APPEND PURITEMX.

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = PO_HEADER

POHEADERX = PO_HEADERX

IMPORTING

EXPPURCHASEORDER = PURORDNUMBER

TABLES

RETURN = RETURN

POITEM = PURITEM

POITEMX = PURITEMX

.

IF sy-subrc = 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = RETURN.

MESSAGE 'Purchase order created and stored' TYPE 'S'.

P_PONUMB = PURORDNUMBER.

ELSE.

MESSAGE 'Purchase order not created' TYPE 'S'.

ENDIF.

ENDFORM. " CREATEPURCHASEORDER

&----


*& Form CLEARITEMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CLEARITEMS .

CTR2 = CTR.

CONCATENATE '00' CTR2 INTO CTR1.

PURITEM-PO_ITEM = CTR1.

PURITEM-MATERIAL = P_MATNR.

PURITEM-PLANT = P_WERKS.

PURITEM-QUANTITY = P_MENGE.

APPEND PURITEM.

PURITEMX-PO_ITEM = CTR1.

PURITEMX-MATERIAL = 'X'.

PURITEMX-PLANT = 'X'.

PURITEMX-QUANTITY = 'X'.

APPEND PURITEMX.

CTR = CTR + 10.

CLEAR P_MATNR.

CLEAR P_WERKS.

CLEAR P_MENGE.

ENDFORM. " CLEARITEMS

END-OF-SELECTION.

Read only

0 Likes
1,241

Hi gurunath pandiyarajan

I am using ur Sample code for a single item and passing data through selection screen

after filling header and item data , i am pushing create button,

then msg come purchacr order has been created and save,

But when i debug the progrm its shows blank,

thanks

heman

Read only

0 Likes
1,241

Dear Hament,

This is the first time u r getting a blank screen while debugging.? If so please check ur autthorisation for debugging.

With Regards,

Sumodh.P

Read only

0 Likes
1,241

hello friend, I have authorization for debugging , i want to say when i debug on my z program where i m using

bapi_po_create1, every thing is going ok

no wrror occurs but po no is not coming???

wats the reason Behind this?

Thanks:

Regards Hemant

Read only

0 Likes
1,241

Hi,

You will get the purchasing document number in the export parameter EXPPURCHASEORDER.

and use BAPI BAPI_TRANSACTION_COMMIT after BAPI BAPO_PO_CREATE1.

Read only

0 Likes
1,241

hi Niraj I am doing the same procedure,

i a sending you my sorce code,

if there I am doing some thing wrong plz tell me.

REPORT ZBAPI_CREATE_PO.

DATA:

PO_HEADER TYPE TABLE OF BAPIMEPOHEADER WITH HEADER LINE,

PO_HEADERX TYPE TABLE OF BAPIMEPOHEADERX WITH HEADER LINE,

PURITEM TYPE TABLE OF BAPIMEPOITEM WITH HEADER LINE,

PURITEMX TYPE TABLE OF BAPIMEPOITEMX WITH HEADER LINE,

RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

DATA: PURORDNUMBER LIKE BAPIMEPOHEADER-PO_NUMBER,

CTR type I ,

CTR2 TYPE STRING,

CTR1 TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE HEADERS.

PARAMETERS:

P_LIFNR TYPE EKKO-LIFNR, "Vendor Account Number

P_BUKRS TYPE EKKO-BUKRS, "Company Code

P_BSART TYPE EKKO-BSART default 'NB', "Purchasing Document Type

P_AEDAT TYPE EKKO-AEDAT DEFAULT sy-datum, "Date on Which Record Was Created

P_EKORG TYPE EKKO-EKORG, "Purchasing Organization

P_EKGRP TYPE EKKO-EKGRP. "Purchasing Group

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE ITEMZ.

PARAMETERS:

P_MATNR TYPE EKPO-MATNR, "Material Number

P_WERKS TYPE EKPO-WERKS, "Plant

P_MENGE TYPE EKPO-MENGE. "Purchase Order Quantity

SELECTION-SCREEN PUSHBUTTON /10(08) CMD1 USER-COMMAND NE1.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE ACTZ.

PARAMETERS:

P_PONUMB TYPE BAPIMEPOHEADER-PO_NUMBER.

SELECTION-SCREEN PUSHBUTTON /10(08) CMD2 USER-COMMAND CR1.

SELECTION-SCREEN END OF BLOCK B3.

INITIALIZATION.

HEADERS = 'Purchase Header Data'.

ITEMZ = 'Purchase Item Data'.

ACTZ = 'Actions'.

CMD1 = 'Next'.

CMD2 = 'Create'.

CTR = 10.

AT SELECTION-SCREEN.

CASE SY-UCOMM.

WHEN 'NE1'.

PERFORM ClearItems.

WHEN 'CR1'.

PERFORM createpurchaseorder.

ENDCASE.

START-OF-SELECTION.

FORM CREATEPURCHASEORDER .

PO_HEADER-VENDOR = P_LIFNR. "VENDOR

PO_HEADER-COMP_CODE = P_BUKRS. "COMPANY CODE

PO_HEADER-DOC_TYPE = P_BSART. "DOCUMENT TYPE

PO_HEADER-CREAT_DATE = P_AEDAT. "DATE ON WHICH RECORD WAS CREATED

PO_HEADER-PURCH_ORG = P_EKORG. "PURCHASING ORGANIZATION

PO_HEADER-PUR_GROUP = P_EKGRP. "PURCHASING GROUP

APPEND PO_HEADER.

PO_HEADERX-VENDOR = 'X'.

PO_HEADERX-COMP_CODE = 'X'.

PO_HEADERX-DOC_TYPE = 'X'.

PO_HEADERX-CREAT_DATE = 'X'.

PO_HEADERX-PURCH_ORG = 'X'.

PO_HEADERX-PUR_GROUP = 'X'.

PO_HEADERX-LANGU = 'X'.

APPEND PO_HEADERX.

*

*CTR2 = CTR.

*CONCATENATE '00' CTR2 INTO CTR1. .

PURITEM-PO_ITEM = '10'.

PURITEM-MATERIAL = P_MATNR.

PURITEM-PLANT = P_WERKS.

PURITEM-QUANTITY = P_MENGE.

APPEND PURITEM.

.

PURITEMX-PO_ITEM = 'X'.

PURITEMX-MATERIAL = 'X'.

PURITEMX-PLANT = 'X'.

PURITEMX-QUANTITY = 'X'.

APPEND PURITEMX.

CALL FUNCTION 'BAPI_PO_CREATE1'

EXPORTING

POHEADER = PO_HEADER

POHEADERX = PO_HEADERX

IMPORTING

EXPPURCHASEORDER = PURORDNUMBER

TABLES

RETURN = RETURN

POITEM = PURITEM

POITEMX = PURITEMX

.

IF sy-subrc = 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = RETURN.

MESSAGE 'Purchase order created and stored' TYPE 'S'.

P_PONUMB = PURORDNUMBER.

ELSE.

MESSAGE 'Purchase order not created' TYPE 'S'.

ENDIF.

ENDFORM. " CREATEPURCHASEORDER

&----


*& Form CLEARITEMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CLEARITEMS .

CTR2 = CTR.

CONCATENATE '00' CTR2 INTO CTR1.

PURITEM-PO_ITEM = CTR1.

PURITEM-MATERIAL = P_MATNR.

PURITEM-PLANT = P_WERKS.

PURITEM-QUANTITY = P_MENGE.

APPEND PURITEM.

PURITEMX-PO_ITEM = CTR1.

PURITEMX-MATERIAL = 'X'.

PURITEMX-PLANT = 'X'.

PURITEMX-QUANTITY = 'X'.

APPEND PURITEMX.

CTR = CTR + 10.

CLEAR P_MATNR.

CLEAR P_WERKS.

CLEAR P_MENGE.

ENDFORM. " CLEARITEMS

END-OF-SELECTION.

Read only

Former Member
0 Likes
1,241

Hi,

Check:

BAPI_PO_CREATE1

Thanks,

Krishna