<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: bapi for creating purchase order in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455904#M215530</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;iam updating extra fields which are not standard which are not being updated by bapi... iam uploading po from an external file&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 07 Jul 2006 13:56:47 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-07-07T13:56:47Z</dc:date>
    <item>
      <title>bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455901#M215527</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi, iam using BAPI_PO_CREATE1 to create PO's for service. after creating opne PO if i go and create another po within a short span of a minute or so then it does not create the second PO. it gives message that doc does not contain any items.&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
TABLES: ekpo,zcta_podates,ekko.

DATA iekpo LIKE ekpo OCCURS 0 WITH HEADER LINE.
DATA iekko LIKE ekko OCCURS 0 WITH HEADER LINE.
DATA ipodates LIKE zcta_podates OCCURS 0 WITH HEADER LINE.
DATA : wabldat1 LIKE zcta_podates-podat.
DATA : wabldat2 LIKE zcta_podates-podat.
DATA : wabldat3 LIKE zcta_podates-podat.
DATA : wabldat4 LIKE zcta_podates-podat.
DATA : wabldat5 LIKE zcta_podates-podat.
DATA : wabldat6 LIKE zcta_podates-podat.
DATA : wabldat7 LIKE zcta_podates-podat.


DATA :fname1 TYPE string.
DATA :w_fname1 TYPE string.
DATA : BEGIN OF itab1 OCCURS 0 ,
       txz01 LIKE mepo1211-txz01,
       werks LIKE mepo1211-name1,
       srvpos  LIKE esll-srvpos,
       gross(15),
       val1(10),   "LIKE esll-frmval1,
       val2(10),   " LIKE esll-frmval2
       val3(10),
      zzformat LIKE ekpo-zzformat,
      zzcampaign LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzcity  LIKE ekpo-zzcity,
      zzlangu  LIKE ekpo-zzlangu,
      zzedition LIKE ekpo-zzedition,
      zzcolorhue  LIKE ekpo-zzcolorhue,
      zztypeofad LIKE ekpo-zztypeofad,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
       END OF itab1.

DATA :BEGIN OF itab2 OCCURS 0,         " radio
         txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      zzformat LIKE ekpo-zzformat,
      zzcampaign  LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzcity      LIKE ekpo-zzcity,
      zzprogramname LIKE ekpo-zzprogramname,
      zzdealstructure LIKE ekpo-zzdealstructure,
      zztimeband    LIKE ekpo-zztimeband,
     date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),

      END OF itab2.

DATA :BEGIN OF itab3 OCCURS 0,   "tv
      txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      zzformat LIKE ekpo-zzformat,
      zzcampaign    LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzgenre        LIKE ekpo-zzgenre,
      zzprogramname LIKE ekpo-zzprogramname,
      zzdealstructure LIKE ekpo-zzdealstructure,
      zztimeband    LIKE ekpo-zztimeband,
      zzlangu       LIKE ekpo-zzlangu,
      zzcity(20),  "      LIKE ekpo-zzcity,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab3.

DATA :BEGIN OF itab4 OCCURS 0,   "OUTDOOR
         txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      cond(12),
      zzformat LIKE ekpo-zzformat,
      zzcampaign    LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzcity      LIKE ekpo-zzcity,
      zzlocationorroad LIKE ekpo-zzlocationorroad,
      zztypeofad  LIKE ekpo-zztypeofad,
      zztrafficdirtn LIKE ekpo-zztrafficdirtn,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab4.

DATA :BEGIN OF itab5 OCCURS 0,  "INTERNET
      txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      cond(12),
      zzformat LIKE ekpo-zzformat,
      zzcampaign    LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zztypeofad  LIKE ekpo-zztypeofad,
      zzsection      LIKE ekpo-zzsection,
     date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab5.

DATA :BEGIN OF itab6 OCCURS 0,  "CINEMA
      txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      cond(12),
      zzformat LIKE ekpo-zzformat,
      zzcampaign    LIKE ekpo-zzcampaign,
      zzcity      LIKE ekpo-zzcity,
      zzlocationorroad LIKE ekpo-zzlocationorroad,
      zzcinemaname   LIKE ekpo-zzcinemaname,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab6.
DATA :BEGIN OF itab7 OCCURS 0,   "OTHER MEDIA
         txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      gross(12),
      val1(10),   "LIKE esll-frmval1,
      val2(10),   " LIKE esll-frmval2
      val3(10),
      val4(10),
      zzformat LIKE ekpo-zzformat,
      zcampaign    LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzcity      LIKE ekpo-zzcity,
      zzedition   LIKE ekpo-zzedition,
      zzcolorhue  LIKE ekpo-zzcolorhue,
      zztypeofad  LIKE ekpo-zztypeofad,
      zzlangu       LIKE ekpo-zzlangu,
      zzgenre        LIKE ekpo-zzgenre,
      zzprogramname LIKE ekpo-zzprogramname,
      zzdealstructure LIKE ekpo-zzdealstructure,
      zztimeband    LIKE ekpo-zztimeband,
      zzlocationorroad LIKE ekpo-zzlocationorroad,
      zzsection      LIKE ekpo-zzsection,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab7.
DATA :BEGIN OF itab8 OCCURS 0,    "NO MEDIA
        txz01 LIKE mepo1211-txz01,
      werks LIKE mepo1211-name1,
      srvpos  LIKE esll-srvpos,
      qty(12),
      gross(12),
      zzformat LIKE ekpo-zzformat,
      zzcampaign    LIKE ekpo-zzcampaign,
      zzcity      LIKE ekpo-zzcity,
      date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
      END OF itab8.

DATA : BEGIN OF str OCCURS 0,
       txz01 LIKE mepo1211-txz01,
       werks LIKE mepo1211-name1,
       srvpos  LIKE esll-srvpos,
       gross(15),
       val1(10),   "LIKE esll-frmval1,
       val2(10),   " LIKE esll-frmval2
       val3(10),
      val4(10),
      zzformat LIKE ekpo-zzformat,
      zzcampaign LIKE ekpo-zzcampaign,
      zzmeansofad LIKE ekpo-zzmeansofad,
      zzcity  LIKE ekpo-zzcity,
      zzlangu  LIKE ekpo-zzlangu,
      zzedition LIKE ekpo-zzedition,
      zzcolorhue  LIKE ekpo-zzcolorhue,
      zztypeofad LIKE ekpo-zztypeofad,
      zzillumination LIKE ekpo-zzillumination ,
     zztrafficdirtn LIKE ekpo-zztrafficdirtn ,
    zzstore LIKE ekpo-zzstore ,
    zzcasting LIKE ekpo-zzcasting ,
    zzgenre LIKE ekpo-zzgenre ,
    zzsection LIKE ekpo-zzsection ,
    zznumberofdays LIKE ekpo-zznumberofdays ,
    zzprogramname LIKE ekpo-zzprogramname ,
    zzdealstructure LIKE ekpo-zzdealstructure ,
    zztimeband LIKE ekpo-zztimeband ,
    zzdate LIKE ekpo-zzdate ,
zzdaysofwk LIKE ekpo-zzdaysofwk ,
zzasnum LIKE ekpo-zzasnum ,
zzlocationorroad LIKE ekpo-zzlocationorroad ,
zzcinemaname LIKE ekpo-zzcinemaname ,
zzcapacity LIKE ekpo-zzcapacity ,
zzfield2 LIKE ekpo-zzfield2 ,
 zzfield3 LIKE ekpo-zzfield3 ,
       date1(10),
       date2(10),
       date3(10),
       date4(10),
       date5(10),
       date6(10),
       date7(10),
       END OF str.


DATA :package(10) TYPE n VALUE '4747'.
DATA :subpackage(10) TYPE n VALUE '4748'.
DATA : l_po_header LIKE bapimepoheader.
DATA : l_po_headerx LIKE bapimepoheaderx.
DATA : l_purchaseorder LIKE bapimepoheader-po_number.
DATA : t_po_account LIKE bapimepoaccount OCCURS 0 WITH HEADER LINE.
DATA : t_po_accountx LIKE bapimepoaccountx OCCURS 0 WITH HEADER LINE.
DATA : t_po_servalue LIKE bapiesklc OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF t_po_items OCCURS 0.
        INCLUDE STRUCTURE bapimepoitem.
DATA : END OF t_po_items.


DATA : BEGIN OF t_po_itemsx OCCURS 0.
        INCLUDE STRUCTURE bapimepoitemx.
DATA : END OF t_po_itemsx.

DATA : BEGIN OF t_return OCCURS 0.
        INCLUDE STRUCTURE bapiret2.
DATA : END OF t_return.

DATA : BEGIN OF t_po_services OCCURS 0.
        INCLUDE STRUCTURE bapiesllc.
DATA : END OF t_po_services.

DATA: l_item(5) TYPE n,l_last_po(10).
*TABLES : zerror.
DATA lcounter(3) TYPE n.
DATA : l_errflag.

SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME.
PARAMETER:x_lifnr LIKE ekko-lifnr .
PARAMETER:x_ekorg LIKE ekko-ekorg DEFAULT '9000' .
PARAMETER:x_ekgrp LIKE ekko-ekgrp .
PARAMETER:x_bukrs LIKE ekko-bukrs DEFAULT '0101' .
PARAMETER:x_bsart LIKE ekko-bsart DEFAULT 'ZNB1'.
PARAMETER:x_sdate LIKE ekko-bedat.
PARAMETER : x_edate LIKE ekko-bedat.
PARAMETER: pr_fn1 LIKE ibipparms-path OBLIGATORY.
PARAMETER: rad1 RADIOBUTTON GROUP gr1.
PARAMETER: rad2 RADIOBUTTON GROUP gr1.
PARAMETER: rad3 RADIOBUTTON GROUP gr1.
PARAMETER: rad4 RADIOBUTTON GROUP gr1.
PARAMETER: rad5 RADIOBUTTON GROUP gr1.
PARAMETER: rad6 RADIOBUTTON GROUP gr1.
PARAMETER: rad7 RADIOBUTTON GROUP gr1.
PARAMETER: rad8 RADIOBUTTON GROUP gr1.
SELECTION-SCREEN:END OF BLOCK b1 .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_fn1.
*
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = pr_fn1.

  MOVE pr_fn1 TO w_fname1.

START-OF-SELECTION.

  IF rad1 = 'X'.

    PERFORM table_upload  TABLES itab1.
  ELSEIF rad2 = 'X'.
    PERFORM table_upload  TABLES itab2.
  ELSEIF rad3 = 'X'.
    PERFORM table_upload  TABLES itab3.
  ELSEIF rad4 = 'X'.
    PERFORM table_upload  TABLES itab4.
  ELSEIF rad5 = 'X'.
    PERFORM table_upload  TABLES itab5.
  ELSEIF rad6 = 'X'.
    PERFORM table_upload  TABLES itab6.
  ELSEIF rad7 = 'X'.
    PERFORM table_upload  TABLES itab7.
  ELSEIF rad8 = 'X'.
    PERFORM table_upload  TABLES itab8.

  ENDIF.
  LOOP AT str.
    SHIFT str-srvpos RIGHT DELETING TRAILING ' '.
    OVERLAY str-srvpos WITH '00000000000000000'.
    MODIFY str.

  ENDLOOP.
  CLEAR : l_po_header.
  PERFORM create_po_header.
  LOOP AT str FROM 2 .
    PERFORM append_item.
  ENDLOOP.



  PERFORM create_po.
  WAIT UP TO 5 SECONDS.
  SELECT * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE iekpo WHERE ebeln = l_purchaseorder.
  COMMIT WORK.
  WAIT UP TO  5 SECONDS.

  LOOP AT iekpo.
    l_item =  sy-tabix + 1.
    READ TABLE str INDEX  l_item.
    iekpo-zzfield2 = str-zzfield2 .
    iekpo-zzfield3 = str-zzfield3 .
    iekpo-zzformat = str-zzformat .
    iekpo-zzmeansofad = str-zzmeansofad .
    iekpo-zzedition = str-zzedition .
    iekpo-zzcolorhue = str-zzcolorhue .
    iekpo-zztypeofad = str-zztypeofad .
    iekpo-zzcity = str-zzcity .
    iekpo-zzlangu = str-zzlangu .
    iekpo-zzdaysofwk = str-zzdaysofwk .
    iekpo-zzasnum = str-zzasnum .
    iekpo-zzlocationorroad = str-zzlocationorroad .
    iekpo-zzcinemaname = str-zzcinemaname .
    iekpo-zzcapacity = str-zzcapacity .
    iekpo-zzcampaign = str-zzcampaign .
    iekpo-zzillumination = str-zzillumination .
    iekpo-zztrafficdirtn = str-zztrafficdirtn .
    iekpo-zzstore = str-zzstore .
    iekpo-zzcasting = str-zzcasting .
    iekpo-zzgenre = str-zzgenre .
    iekpo-zzsection = str-zzsection .
    iekpo-zznumberofdays = str-zznumberofdays .
    iekpo-zzprogramname = str-zzprogramname .
    iekpo-zzdealstructure = str-zzdealstructure .
    iekpo-zztimeband = str-zztimeband .
    iekpo-zzdate = str-zzdate .

    MODIFY iekpo.

  ENDLOOP.
  WAIT UP TO 2 SECONDS.
  COMMIT WORK.
  WAIT UP TO 15 SECONDS.
  UPDATE ekpo FROM TABLE iekpo.
  COMMIT WORK.
  WAIT UP TO 2 SECONDS.
  SELECT * FROM ekko INTO CORRESPONDING FIELDS OF TABLE iekko WHERE ebeln = l_purchaseorder.
  LOOP AT iekko.
    iekko-kdatb = x_sdate.
    iekko-kdate = x_edate.
    MODIFY iekko.
  ENDLOOP.
  UPDATE ekko FROM TABLE iekko.
  COMMIT WORK.
  WAIT UP TO 1 SECONDS.

  CLEAR l_item.
  l_item = 10.
  LOOP AT str FROM 2 .
    CONCATENATE str-date1+6(4)  str-date1+3(2)  str-date1(2)  INTO wabldat1.
    CONCATENATE str-date2+6(4)  str-date2+3(2)  str-date2(2)  INTO wabldat2.
    CONCATENATE str-date3+6(4)  str-date3+3(2)  str-date3(2)  INTO wabldat3.
    CONCATENATE str-date4+6(4)  str-date4+3(2)  str-date4(2)  INTO wabldat4.
    CONCATENATE str-date5+6(4)  str-date5+3(2)  str-date5(2)  INTO wabldat5.
    CONCATENATE str-date6+6(4)  str-date6+3(2)  str-date6(2)  INTO wabldat6.
    CONCATENATE str-date7+6(4)  str-date7+3(2)  str-date7(2)  INTO wabldat7.

    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '001'.
    ipodates-podat = wabldat1.
    APPEND ipodates.

    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '002'.
    ipodates-podat = wabldat2.
    APPEND ipodates.

    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '003'.
    ipodates-podat = wabldat3.
    APPEND ipodates.

    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '004'.
    ipodates-podat = wabldat4.
    APPEND ipodates.
    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '005'.
    ipodates-podat = wabldat5.
    APPEND ipodates.
    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '006'.
    ipodates-podat = wabldat6.
    APPEND ipodates.
    ipodates-ebeln = l_purchaseorder.
    ipodates-ebelp = l_item.
    ipodates-linno = '007'.
    ipodates-podat = wabldat7.
    APPEND ipodates.
    l_item = l_item + 10.
  ENDLOOP.
  WAIT UP TO 1 SECONDS.
  MODIFY zcta_podates FROM TABLE ipodates.
  COMMIT WORK.
  WAIT UP TO 2 SECONDS.
ipodates-podat,ipodates-ebeln,ipodates-ebelp,ipodates-linno.

  WAIT UP TO 5 SECONDS.
  LOOP AT t_return.
    WRITE :/ t_return-message.
  ENDLOOP.
free : ipodates,iekpo,str,itab1,itab2,itab3,itab4,itab5,itab6,itab7,itab8.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  create_po_header
*&amp;amp;---------------------------------------------------------------------*
FORM create_po_header .
  l_po_header-comp_code = '0101'.             " Company Code
  l_po_header-doc_type = x_bsart.         "'ZNB1'.            " Order Typr BSART
  l_po_header-creat_date = sy-datum.        " P.O Dt - BEDAT
  l_po_header-doc_date  = sy-datum.
  l_po_header-vendor   =   x_lifnr.
  l_po_header-vper_start  = x_sdate.
  l_po_header-vper_end  =     x_edate.
  l_po_header-purch_org = '9000'.           " Purch. Org - EKKO-EKORG
  l_po_header-pur_group = x_ekgrp.        " Purch Group - EKKO-EKGRP
  l_po_header-currency_iso = 'INR'.

  CLEAR : l_po_headerx.
  l_po_headerx-po_number = 'X'.
  l_po_headerx-comp_code = 'X'." Company Code
  l_po_headerx-doc_type = 'X'. " Order Typr BSART

  l_po_headerx-vendor = 'X'. "Vendor - EKKO-LIFNR
  l_po_headerx-purch_org = 'X'. " Purch. Org - EKKO-EKORG
  l_po_headerx-pur_group = 'X'. " Purch Group - EKKO-EKGRP
  l_po_headerx-currency_iso = 'X'. " Currency Default field for Enjoy
  l_po_headerx-ref_1       = 'X'.

ENDFORM.                    " create_po_header
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  APPEND_ITEM
*&amp;amp;---------------------------------------------------------------------*
FORM append_item .
  package  = package + 2.
  subpackage = package + 1.
  l_item = l_item + 10.

  t_po_items-po_item =  l_item.
  t_po_items-acctasscat = 'K'.
  t_po_items-item_cat = 'D'.
  t_po_items-short_text = str-txz01. .
  t_po_items-plant = str-werks  . " P
  t_po_items-tax_code = 'S1'.

  t_po_items-pckg_no  =    package.            " 4748.             "package.

  APPEND t_po_items.
  CLEAR t_po_items.

  t_po_itemsx-po_item =  l_item.
  t_po_itemsx-po_itemx = 'X'.
  t_po_itemsx-acctasscat = 'X'.
  t_po_itemsx-item_cat = 'X'.
  t_po_itemsx-short_text = 'X'.
  t_po_itemsx-plant = 'X'.
  t_po_itemsx-tax_code = 'X'.
  t_po_itemsx-pckg_no  = 'X'.

  APPEND t_po_itemsx.
  CLEAR t_po_itemsx.

  t_po_account-po_item =  l_item.
  t_po_account-serial_no = 1.
  t_po_account-quantity = 1.
  t_po_account-distr_perc = '00'.
  t_po_account-costcenter = '0006079000'.                   " 'BR034'.
  t_po_account-gl_account = '0054014071'.        "'0000135075'.
  t_po_account-co_area    =  '1001'.
  APPEND t_po_account.
  CLEAR t_po_account.

  t_po_accountx-po_item =  l_item.
  t_po_accountx-serial_no = 1.
 t_po_accountx-quantity = 'X'.
  t_po_accountx-distr_perc = 'X'.
  t_po_accountx-costcenter = 'X'.
  t_po_accountx-gl_account = 'X'.
  t_po_accountx-co_area  = 'X'.
  APPEND t_po_accountx.
  CLEAR t_po_accountx.
  t_po_services-pckg_no =  package.                         "'4748'.
  t_po_services-line_no = '0000000001' .
  t_po_services-ext_line = '0000000000' .
  t_po_services-outl_level = '0'.
  t_po_services-outl_no = ' '.
  t_po_services-outl_ind = 'X'.


  t_po_services-subpckg_no =  subpackage .                  "'4749'.
  APPEND t_po_services. CLEAR t_po_services .

  t_po_services-pckg_no = subpackage .                      "'4749'.
  t_po_services-line_no = '0000000002' .
  t_po_services-ext_line = '10' .
  t_po_services-outl_level = '0'.
  t_po_services-service = str-srvpos.          "'000000000003000045'.
  t_po_services-gr_price = str-gross.                       "'2000.00'.
  t_po_services-form_val1 =  str-val1.                      "'10.000'.

  t_po_services-form_val2 = str-val2.                       "'33.000'.
if rad1 = 'x'.
  t_po_services-form_val3 = str-val3.                       " '3.000'.
endif.
  t_po_services-tax_code   = 'S1'.
  APPEND t_po_services. CLEAR t_po_services .


  t_po_servalue-pckg_no = subpackage .                      "'4749'.
  t_po_servalue-line_no = '0000000002' .
  t_po_servalue-serial_no = '01'.
  APPEND t_po_servalue . CLEAR t_po_servalue.

ENDFORM.                    " APPEND_ITEM
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  create_po
*&amp;amp;---------------------------------------------------------------------*
FORM create_po .

  CALL FUNCTION 'BAPI_PO_CREATE1'
      EXPORTING
        poheader                     = l_po_header
       poheaderx                    =  l_po_headerx
     IMPORTING
       exppurchaseorder             = l_purchaseorder
     TABLES
       return                       = t_return
       poitem                       =  t_po_items
       poitemx                      =  t_po_itemsx
       poaccount                    = t_po_account
       poaccountx                   = t_po_accountx
       poservices                   = t_po_services
     posrvaccessvalues            =   t_po_servalue
              .


  WAIT UP TO 15 SECONDS.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
         .

ENDFORM.                    " create_po


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  TABLE_UPLOAD
*&amp;amp;---------------------------------------------------------------------*
FORM table_upload  TABLES   p_itab1.  " structure &amp;lt; itab1 #local# &amp;gt;
  "Insert correct name for &amp;lt;...&amp;gt;.


  CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                      = w_fname1
   filetype                      = 'ASC'
   has_field_separator           = 'X'

   read_by_line                  = 'X'
   replacement                   = '#'
  TABLES
    data_tab                      =  p_itab1.


  LOOP AT p_itab1.
    MOVE-CORRESPONDING p_itab1 TO str.
    APPEND str.
    CLEAR p_itab1.

  ENDLOOP.
*  WAIT UP TO 5 SECONDS.
ENDFORM.                    " TABLE_UPLOAD
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 13:36:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455901#M215527</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T13:36:54Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455902#M215528</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Why are you updating the standard tables directly?&lt;/P&gt;&lt;P&gt;YOu should not do that.&lt;/P&gt;&lt;P&gt;Wher are you calling the bapi by the way?&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;ravi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 13:43:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455902#M215528</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T13:43:15Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455903#M215529</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this sample code..how to use the BAPI_PO_CREATE1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;REPORT  Z_TEST_PO   .


*DATA DECLARATION
CONSTANTS : C_X VALUE 'X'.

*Structures to hold PO header data
DATA : HEADER LIKE BAPIMEPOHEADER ,
HEADERX LIKE BAPIMEPOHEADERX .

*Structures to hold PO account data
DATA : ACCOUNT LIKE BAPIMEPOACCOUNT OCCURS 0 WITH HEADER LINE ,
ACCOUNTX LIKE BAPIMEPOACCOUNTX OCCURS 0 WITH HEADER LINE .

*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,

*Internal table to hold messages from BAPI call
POCONTRACTLIMITS LIKE BAPIESUCC OCCURS 0 WITH HEADER LINE.

DATA : W_HEADER(40) VALUE 'PO Header',
PURCHASEORDER LIKE BAPIMEPOHEADER-PO_NUMBER,
DELIVERY_DATE LIKE BAPIMEPOSCHEDULE-DELIVERY_DATE.

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 '122' ,
DOCTYP LIKE HEADER-DOC_TYPE DEFAULT 'NB' ,
CDATE LIKE HEADER-CREAT_DATE DEFAULT SY-DATUM ,
VENDOR LIKE HEADER-VENDOR DEFAULT '2000000012' ,
PUR_ORG LIKE HEADER-PURCH_ORG DEFAULT 'PU01' ,
PUR_GRP LIKE HEADER-PUR_GROUP DEFAULT '005' .
*sociedad like HEADER-COMP_CODE default '122' ,
*vendedor like HEADER-SALES_PERS default 'sale person'.


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 '00010',
MATERIAL LIKE ITEM-MATERIAL DEFAULT '12000000' ,
TIPO_IMP LIKE ITEM-ACCTASSCAT DEFAULT 'K' ,
*pos_doc like ITEM-ITEM_CAT default 'F' ,
SHORTTXT LIKE ITEM-SHORT_TEXT DEFAULT 'PRUEBA BAPI' ,
GRUP_ART LIKE ITEM-MATL_GROUP DEFAULT '817230000' ,
PLANT LIKE ITEM-PLANT DEFAULT '3001' ,
MPE LIKE ITEM-TRACKINGNO DEFAULT '9999' ,
*contrato like ITEM-AGREEMENT default '4904000003' ,
*quantity like ITEM-QUANTITY default 1 .
PO_UNIT LIKE ITEM-PO_UNIT DEFAULT 'EA'.

SELECTION-SCREEN END OF BLOCK B2.

* Par?mnetros de imputaci?n
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-004.
PARAMETERS : CENTRO LIKE ACCOUNT-COSTCENTER DEFAULT '1220813150',
CUENTA LIKE ACCOUNT-GL_ACCOUNT DEFAULT '6631400' ,
NUM_POS LIKE ACCOUNT-PO_ITEM DEFAULT '10' ,
SERIAL LIKE ACCOUNT-SERIAL_NO DEFAULT '01' ,
IND_IMP LIKE ACCOUNT-TAX_CODE DEFAULT 'I2' .

SELECTION-SCREEN END OF BLOCK B3.


*&amp;amp;---------------------------------------------------------------------*
START-OF-SELECTION.
*&amp;amp;---------------------------------------------------------------------*
*DATA POPULATION
*&amp;amp;---------------------------------------------------------------------*
  WS_LANGU = SY-LANGU. "Language variable

*POPULATE HEADER DATA FOR PO
*HEADER-COMP_CODE = sociedad .
  HEADER-DOC_TYPE = DOCTYP .
  HEADER-VENDOR = VENDOR .
  HEADER-CREAT_DATE = CDATE .
  HEADER-CREATED_BY = 'TD17191' .
  HEADER-PURCH_ORG = PUR_ORG .
  HEADER-PUR_GROUP = PUR_GRP .
  HEADER-COMP_CODE = COMPANY .
  HEADER-LANGU = WS_LANGU .
*HEADER-SALES_PERS = vendedor .
*HEADER-CURRENCY = 'DOP' .
*HEADER-ITEM_INTVL = 10 .
*HEADER-PMNTTRMS = 'N30' .
*HEADER-EXCH_RATE = 1 .


*&amp;amp;---------------------------------------------------------------------*
*POPULATE HEADER FLAG.
*&amp;amp;---------------------------------------------------------------------*
  HEADERX-COMP_CODE = C_X.
  HEADERX-DOC_TYPE = C_X.
  HEADERX-VENDOR = C_X.
  HEADERX-CREAT_DATE = C_X.
  HEADERX-CREATED_BY = C_X.
  HEADERX-PURCH_ORG = C_X.
  HEADERX-PUR_GROUP = C_X.
  HEADERX-LANGU = C_X.
*HEADERX-sales_pers = c_x.
*HEADERX-CURRENCY = c_x.
*HEADER-ITEM_INTVL = c_x.
*HEADER-PMNTTRMS = c_x.
*HEADER-EXCH_RATE = c_x.
*HEADER-EXCH_RATE = c_x.

*&amp;amp;---------------------------------------------------------------------*
*POPULATE ITEM DATA.
*&amp;amp;---------------------------------------------------------------------*
  ITEM-PO_ITEM = ITEM_NUM.
  ITEM-QUANTITY = '1'.
*ITEM-MATERIAL = material .
  ITEM-SHORT_TEXT = 'prueba bapi_po_create1'.
*ITEM-TAX_CODE = ''.
  ITEM-ACCTASSCAT = 'K' .
*ITEM-ITEM_CAT = 'D' .
  ITEM-MATL_GROUP = '817230000' .
  ITEM-PLANT = '3001' .
  ITEM-TRACKINGNO = '99999'.
  ITEM-PREQ_NAME = 'test'.
*ITEM-AGREEMENT = '' .
*ITEM-AGMT_ITEM = ''.
  ITEM-QUANTITY = '1' .
  ITEM-PO_UNIT = 'EA'.
*ITEM-ORDERPR_UN = 'EA'.
  ITEM-CONV_NUM1 = '1'.
  ITEM-CONV_DEN1 = '1'.
  ITEM-NET_PRICE = '1000000' .
  ITEM-PRICE_UNIT = '1'.
  ITEM-GR_PR_TIME = '0'.
  ITEM-PRNT_PRICE = 'X'.
  ITEM-UNLIMITED_DLV = 'X'.
  ITEM-GR_IND = 'X' .
  ITEM-IR_IND = 'X' .
  ITEM-GR_BASEDIV = 'X'.
*ITEM-PCKG_NO = '' .


  APPEND ITEM. CLEAR ITEM.

*&amp;amp;---------------------------------------------------------------------*
*POPULATE ITEM FLAG TABLE
*&amp;amp;---------------------------------------------------------------------*
  ITEMX-PO_ITEM = ITEM_NUM.
  ITEMX-PO_ITEMX = C_X.
*ITEMX-MATERIAL = C_X.
  ITEMX-SHORT_TEXT = C_X.
  ITEMX-QUANTITY = C_X.
*ITEMX-TAX_CODE = C_X.
  ITEMX-ACCTASSCAT = C_X.
*ITEMX-ITEM_CAT = c_x.
  ITEMX-MATL_GROUP = C_X.
  ITEMX-PLANT = C_X.
  ITEMX-TRACKINGNO = C_X.
  ITEMX-PREQ_NAME = C_X.
*ITEMX-AGREEMENT = C_X.
*ITEMX-AGMT_ITEM = c_x.
  ITEMX-STGE_LOC = C_X.
  ITEMX-QUANTITY = C_X.
  ITEMX-PO_UNIT = C_X.
*ITEMX-ORDERPR_UN = C_X.
  ITEMX-CONV_NUM1 = C_X.
  ITEMX-CONV_DEN1 = C_X.
  ITEMX-NET_PRICE = C_X.
  ITEMX-PRICE_UNIT = C_X.
  ITEMX-GR_PR_TIME = C_X.
  ITEMX-PRNT_PRICE = C_X.
  ITEMX-UNLIMITED_DLV = C_X.
  ITEMX-GR_IND = C_X .
  ITEMX-IR_IND = C_X .
  ITEMX-GR_BASEDIV = C_X .
  APPEND ITEMX. CLEAR ITEMX.

*&amp;amp;---------------------------------------------------------------------*
*POPULATE ACCOUNT DATA.
*&amp;amp;---------------------------------------------------------------------*
  ACCOUNT-PO_ITEM = ITEM_NUM.
  ACCOUNT-SERIAL_NO = SERIAL .
  ACCOUNT-CREAT_DATE = SY-DATUM .
  ACCOUNT-COSTCENTER = CENTRO .
  ACCOUNT-GL_ACCOUNT = CUENTA .
  ACCOUNT-GR_RCPT = 'tester'.
  APPEND ACCOUNT. CLEAR ACCOUNT.

*&amp;amp;---------------------------------------------------------------------*
*POPULATE ACCOUNT FLAG TABLE.
*&amp;amp;---------------------------------------------------------------------*
  ACCOUNTX-PO_ITEM = ITEM_NUM .
  ACCOUNTX-PO_ITEMX = C_X .
  ACCOUNTX-SERIAL_NO = SERIAL .
  ACCOUNTX-SERIAL_NOX = C_X .
  ACCOUNTX-CREAT_DATE = C_X .
  ACCOUNTX-COSTCENTER = C_X .
  ACCOUNTX-GL_ACCOUNT = C_X .
  ACCOUNT-GR_RCPT = C_X.
  APPEND ACCOUNTX. CLEAR ACCOUNTX.


*&amp;amp;---------------------------------------------------------------------*
*BAPI CALL
*&amp;amp;---------------------------------------------------------------------*
  CALL FUNCTION 'DIALOG_SET_NO_DIALOG'.

  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      POHEADER         = HEADER
      POHEADERX        = HEADERX
    IMPORTING
      EXPPURCHASEORDER = PURCHASEORDER
    TABLES
      RETURN           = RETURN
      POITEM           = ITEM
      POITEMX          = ITEMX
      POACCOUNT        = ACCOUNT
      POACCOUNTX       = ACCOUNTX.


*&amp;amp;---------------------------------------------------------------------*
*Confirm the document creation by calling database COMMIT
*&amp;amp;---------------------------------------------------------------------*
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
  WAIT = 'X'
* IMPORTING
* RETURN =
  .

END-OF-SELECTION.
*&amp;amp;---------------------------------------------------------------------*
*Output the messages returned from BAPI call
*&amp;amp;---------------------------------------------------------------------*
  LOOP AT RETURN.
    WRITE / RETURN-MESSAGE.
  ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 13:49:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455903#M215529</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T13:49:49Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455904#M215530</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;iam updating extra fields which are not standard which are not being updated by bapi... iam uploading po from an external file&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 13:56:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455904#M215530</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T13:56:47Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455905#M215531</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi navid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use the extension parameters to do that.why you updating them manually. Try to use the BAPI for all updations.&lt;/P&gt;&lt;P&gt;are those fields are include structure fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 14:10:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455905#M215531</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T14:10:50Z</dc:date>
    </item>
    <item>
      <title>Re: bapi for creating purchase order</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455906#M215532</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;the problem is that these extra fields are 8 to 15 depending upon a particular service type. the fields in extensions are only 4. and theses pos are for service which are populated differently. the problem in the above code is that 1 po works but if i upload the other po within a short time then it doesnt work...kindly suggest&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Jul 2006 14:25:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-creating-purchase-order/m-p/1455906#M215532</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-07-07T14:25:10Z</dc:date>
    </item>
  </channel>
</rss>

