Application Development 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: 

bapi : uploading po

Former Member
0 Kudos

hi to all experts ,

can anybody please advise as to how to upload data ( po data ) into sap using bapi , i have a long text also and also how to handle errors in bapi.

Regards ,

Kiran.

5 REPLIES 5

Former Member
0 Kudos

Use BAPI FM : BAPI_PO_CREATE

Use Parameter PO_ITEM_TEXT to upload Long text

Use Parameter RETURN to get log messages

Check the below links :

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/59ef6011-0d01-0010-bfb0-b51381e0...

Thanks

Seshu

Message was edited by:

Seshu Maramreddy

Former Member
0 Kudos

Hi Kumar,

try this code.



*&---------------------------------------------------------------------*
*& Report  ZBAPI_CREATE_PO                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*& Program demonstrates the BAPI call to create Purchase Order         *
*& Minimum required parameters are used are as per the current         *
*& system configuration                                                *
*&---------------------------------------------------------------------*
REPORT  ZBAPI_CREATE_PO                         .
*&---------------------------------------------------------------------*
*DATA DECLARATION
CONSTANTS : C_X VALUE 'X'.

*Structures to hold PO header data
DATA : HEADER LIKE  BAPIMEPOHEADER   ,
       HEADERX LIKE  BAPIMEPOHEADERX .

*Internal Tables to hold PO ITEM DATA
DATA : ITEM   LIKE BAPIMEPOITEM  OCCURS 0 WITH HEADER LINE,
       ITEMX  LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,

*Internal table to hold messages from BAPI call
       RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
data : w_header(40) value 'PO Header'.

data : ws_langu like sy-langu.

*text-001 = 'PO Header' - define as text element
selection-screen begin of block b1 with frame title text-001.
parameters : company like header-comp_code  default '2700'      ,
             doctyp  like HEADER-DOC_TYPE   default 'NB'        ,
             cdate   like HEADER-CREAT_DATE default sy-datum    ,
             vendor  like HEADER-VENDOR     default '0010000023',
             pur_org like HEADER-PURCH_ORG  default '2700'      ,
             pur_grp like HEADER-PUR_GROUP  default '001'       .

selection-screen end of block b1.

selection-screen begin of block b2 with frame title text-002.
parameters : item_num like ITEM-PO_ITEM  default '00001',
             material like ITEM-MATERIAL default 'CRANE'   ,
             plant    like ITEM-PLANT    default '2700' ,
             quantity like ITEM-QUANTITY default 100.

selection-screen end of block b2.



*&---------------------------------------------------------------------*
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*DATA POPULATION
*&---------------------------------------------------------------------*
ws_langu = sy-langu.   "Language variable

*POPULATE HEADER DATA FOR PO
HEADER-COMP_CODE  = company    .
HEADER-DOC_TYPE   = doctyp     .
HEADER-CREAT_DATE = cdate      .
HEADER-VENDOR     = vendor     .
HEADER-LANGU      = ws_langu   .
HEADER-PURCH_ORG  = pur_org    .
HEADER-PUR_GROUP  = pur_grp    .

*&---------------------------------------------------------------------*
*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-doc_date   = c_x.


*&---------------------------------------------------------------------*
*POPULATE ITEM DATA.
*&---------------------------------------------------------------------*
ITEM-PO_ITEM  = item_num.
ITEM-MATERIAL = material.
ITEM-PLANT    = plant.
ITEM-QUANTITY = quantity.
APPEND ITEM.

*&---------------------------------------------------------------------*
*POPULATE ITEM FLAG TABLE
*&---------------------------------------------------------------------*
ITEMX-PO_ITEM    = item_num.
ITEMX-MATERIAL   = C_X.
ITEMX-PLANT      = C_X .
ITEMX-STGE_LOC   = C_X .
ITEMX-QUANTITY   = C_X .
ITEMX-TAX_CODE   = C_X .
ITEMX-ITEM_CAT   = C_X .
ITEMX-ACCTASSCAT = C_X .
APPEND ITEMX.

*&---------------------------------------------------------------------*
*BAPI CALL
*&---------------------------------------------------------------------*
CALL FUNCTION 'BAPI_PO_CREATE1'
  EXPORTING
    POHEADER                     = HEADER
    POHEADERX                    = HEADERX
*   POADDRVENDOR                 =
*   TESTRUN                      =
* IMPORTING
*   EXPPURCHASEORDER             =
*   EXPHEADER                    =
*   EXPPOEXPIMPHEADER            =
 TABLES
   RETURN                       = RETURN
   POITEM                       = ITEM
   POITEMX                      = ITEMX.

*&---------------------------------------------------------------------*
*Confirm the document creation by calling database COMMIT
*&---------------------------------------------------------------------*
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
 EXPORTING
   WAIT          = 'X'
* IMPORTING
*   RETURN        =
          .

end-of-selection.
*&---------------------------------------------------------------------*
*Output the messages returned from BAPI call
*&---------------------------------------------------------------------*
LOOP AT RETURN.
 WRITE / RETURN-MESSAGE.
ENDLOOP.

Award points if useful or getbk,

Aleem.

Former Member
0 Kudos

hi

good

check this BAPI

http://www.planetsap.com/LIST_ALL_BAPIs.htm

thanks

mrutyun^

Former Member
0 Kudos

Hi,

use CALL FUNCTION 'BAPI_PO_CREATE'

check the following therd for ref

https://forums.sdn.sap.com/click.jspa?searchID=3444481&messageID=2415910

Regards

Former Member
0 Kudos

hi,

See the simple example :

REPORT ZBAPI.

DATA: BEGIN OF i_data OCCURS 0,

text(255),

END OF i_data.

DATA: i_ekko TYPE bapiekkoc.

DATA: it_ekko LIKE TABLE OF i_ekko INITIAL SIZE 0 WITH HEADER LINE.

DATA: BEGIN OF i_ekpo OCCURS 0,

po_item(5),

pur_mat(18),

plant(4),

net_price(23),

disp_quan(13),

END OF i_ekpo.

DATA: it_ekpo LIKE TABLE OF bapiekpoc INITIAL SIZE 0 WITH HEADER LINE .

DATA: BEGIN OF i_eket OCCURS 0,

po_item(5),

deliv_date(8),

quantity(13),

END OF i_eket.

DATA: it_eket LIKE TABLE OF bapieket INITIAL SIZE 0 WITH HEADER LINE.

DATA: v_index TYPE i.

DATA: return TYPE TABLE OF bapireturn INITIAL SIZE 0 WITH HEADER LINE.

DATA: po_num(10).

START-OF-SELECTION.

CALL FUNCTION 'UPLOAD'

  • EXPORTING

  • CODEPAGE = ' '

  • FILENAME = ' '

  • FILETYPE = ' '

  • ITEM = ' '

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

TABLES

data_tab = i_data

  • EXCEPTIONS

  • CONVERSION_ERROR = 1

  • INVALID_TABLE_WIDTH = 2

  • INVALID_TYPE = 3

  • NO_BATCH = 4

  • UNKNOWN_ERROR = 5

  • GUI_REFUSE_FILETRANSFER = 6

  • OTHERS = 7

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

loop at i_data.

if i_data-text(1) = 'H'.

shift i_data-text.

v_index = v_index + 1.

split i_data-text at ',' into i_ekko-doc_type

i_ekko-purch_org

i_ekko-pur_group

i_ekko-vendor.

append i_ekko to it_ekko.

elseif i_data-text(1) = 'I'.

shift i_data-text.

split i_data-text at ',' into i_ekpo-po_item

i_ekpo-pur_mat

i_ekpo-plant

i_ekpo-net_price

i_ekpo-disp_quan.

append i_ekpo.

move-corresponding i_ekpo to it_ekpo.

append it_ekpo.

clear it_ekpo.

else.

shift i_data-text.

split i_data-text at ',' into i_eket-po_item

i_eket-deliv_date

i_eket-quantity.

append it_eket .

move-corresponding i_eket to it_eket.

append it_eket.

clear it_eket.

endif.

endloop.

CALL FUNCTION 'BAPI_PO_CREATE'

EXPORTING

po_header = i_ekko

  • PO_HEADER_ADD_DATA =

  • HEADER_ADD_DATA_RELEVANT =

  • PO_ADDRESS =

  • SKIP_ITEMS_WITH_ERROR = 'X'

  • ITEM_ADD_DATA_RELEVANT =

  • HEADER_TECH_FIELDS =

  • IMPORTING

  • PURCHASEORDER =

tables

po_items = it_ekpo

  • PO_ITEM_ADD_DATA =

po_item_schedules = it_eket

  • PO_ITEM_ACCOUNT_ASSIGNMENT =

  • PO_ITEM_TEXT =

RETURN = return

  • PO_LIMITS =

  • PO_CONTRACT_LIMITS =

  • PO_SERVICES =

  • PO_SRV_ACCASS_VALUES =

  • PO_SERVICES_TEXT =

  • PO_BUSINESS_PARTNER =

  • EXTENSIONIN =

  • POADDRDELIVERY =

.

write: po_num.

loop at return.

write:/ return-message,return-type.

endloop.