Changing value EBAN-BADAT with bapi BAPI_REQUISITION_CHANGE.

Now, a real question.
I need to modify the value of the field BADAT from EBAN.
Do you know if I can do that using bapi BAPI_REQUISITION_CHANGE.
Thanks!!!!

Hi,
You can use the FM  BAPI_REQUISITION_GETDETAIL  to get the details and BAPI_REQUISITION_CHANGE to change the same.
Else you can go for the FMs
MASS_CHANGE_PURCHASE_REQ
ME_UPDATE_REQUISITION
to update EBAN Table's entries.
Regards,
S.Dakshna Nagaratnam

Similar Messages

  • I do not obtain to change value in price conditions bapi CHANGE_SALES_ORDER

    Hi all,  
    We are developing a new solution using this RFC to maintain Sales Orders from the Legacy System.
    In some situations, it will be necessary to change values of the Item Price Conditions in Sales Orders already created, in order to attend a Legacy Systems requests.
    We tried to use the follow keys, but without a good result:
    IX_KONVKOMX-UPDKZ = D (Delete) - Doesn't works
    IX_KONVKOMX-UPDKZ = U (Update) - Insert a new line in Pricing
    IX_KONVKOMX-UPDKZ = I (Insert) - Works as U (Update)
    Could you please clarify why the key "U" doesn't works as Update and
    if there is any way to make this kind of modification?
    I verified you vary answers in this forum, but none was useful.
    Thanks a lot

    example:-
    *& Report  ZSALESORDER_CHANGE
    REPORT  ZSALESORDER_CHANGE MESSAGE-ID 38.
    Selection Screen Definitions *
    PARAMETERS: p_vbeln TYPE vbap-vbeln OBLIGATORY, "Order Number
    p_posnr TYPE vbap-posnr OBLIGATORY, "Order Item
    p_etenr TYPE vbep-etenr OBLIGATORY, "Schedule Line
    p_reqqty TYPE bapischdl-req_qty OBLIGATORY. " Order Qty
    Internal Tables/Structures/Variables for calling BAPI. *
    DATA: i_hdr TYPE bapisdh1,
    i_hdrx TYPE bapisdh1x,
    i_ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
    wa_ret TYPE bapiret2.
    DATA: BEGIN OF i_sched OCCURS 10.
    INCLUDE STRUCTURE bapischdl.
    DATA: END OF i_sched.
    DATA: BEGIN OF i_schedx OCCURS 10.
    INCLUDE STRUCTURE bapischdlx.
    DATA: END OF i_schedx.
    START-OF-SELECTION Event *
    START-OF-SELECTION.
    *" Initialize internal tables.
    REFRESH: i_sched, i_schedx, i_ret.
    CLEAR: i_sched, i_schedx, i_ret.
    *" Fill required ORDER_HEADER_IN data.
    i_hdrx-updateflag = 'U'.
    *" Fill required SCHEDULE_LINES data.
    i_sched-itm_number = p_posnr.
    i_sched-sched_line = p_etenr.
    i_sched-req_qty = p_reqqty.
    i_schedx-updateflag = 'U'.
    i_schedx-itm_number = p_posnr.
    i_schedx-sched_line = p_etenr.
    i_schedx-req_qty = 'X'.
    APPEND i_sched.
    APPEND i_schedx.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
    salesdocument = p_vbeln
    order_header_in = i_hdr
    order_header_inx = i_hdrx
    TABLES
    return = i_ret
    schedule_lines = i_sched
    schedule_linesx = i_schedx.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    LOOP AT i_ret.
    WRITE / i_ret-message.
    ENDLOOP.

  • Variants -- with changing value!!!

    Hi,
    I want to run a program by using the SUBMIT keyword and passing a variant using USING SELECTION-SET <variant name>
    And the variant changes its values for each execution of the SUBMIT statement.
    According to the replies to a similar question posted in this forum, I found that we can have constant input values in a VARIANT and pass the changing values using the WITH keyword.
    is there any other way to achieve this other than the above solution..........
    any help wud greatly be appreciated.!!!!!

    Hmm, you could set up multiple variants and change which variant you call the program with each time you SUBMIT.  Example:
    SUBMIT program_name USING SELECTION-SET variant1 AND RETURN.
    SUBMIT program_name USING SELECTION-SET variant2 AND RETURN.
    (and so on).
    Another way to do it is to specify the fields separately, like this:
    SUBMIT program_name WITH parameter1 = w_field1 AND parameter2 = w_field2
    AND RETURN.
    You can use this same statement multiple times, changing the values of w_field1 and w_field2 between calls (for instance, by putting the submit statement inside a LOOP, ENDLOOP).  I hope this helps.
    - April King

  • Change of EBAN-KNTTP - BI or BAPI - does not work!

    Hello,
    I need to develop a program to change the account assignement category (EBAN-KNTTP) of a service purchase requisition from u2018U u2013 Unknownu2019 to another one, for instance, u2018K u2013 Cost Centeru2019.
    Iu2019m getting the following difficulties:
    -     the old transaction ME52 does not allow to do this change (error message ME456 occurs), so I cannot use Batch Input (since SAP does not recommend BI to new  transactions like ME52N);
    -     the new transaction ME52N allows this change, so Iu2019ve tried to use BAPI_REQUISITION_CHANGE, but, accordingly to note 204689, this BAPI does not make this change due to gaps in its design!
    Can anyone suggest an alternative?
    Thanks in advance for your help.
    Best regards,
    Mónica Rodrigues

    1>Close all microsoft office suite products.
    2>Find MSComctlLib.exd inside "C:\Documents and Settings\<YOUR USER NAME>\Application Data\Microsoft\forms
    3>rename to MSComctlLib.exd_bak
    4> Done :)

  • Changing media start time with soundtrack, fcx doesnt read same value.

    i have tryied to change the time stamp with soundtrack to use file in fcx but it  doesn-t read it same value, why _

    i have tryied to change the time stamp with soundtrack to use file in fcx but it  doesn-t read it same value, why _

  • How to Change a Sales Order using BAPI

    Hi All
    How can we change the sales document using BAPI as the requirement is
    --> First we create a Sales order using a BAPI.
    --> If the sales order is changed then we get the changed order information alonge with the old order data in a CSV file.
    here i have the problem that we are uncertain which fields will be changed some times we may get the item changes or some times we may get the quantity changed information and some times the condition type may be changed . So how to handle this ?
    Thanks,
    Chindam

    Hi,
    try this
    DATA: IT_MESSAGE TYPE STANDARD TABLE OF BAPIRET2,
          WA_VBELN TYPE BAPIVBELN-VBELN.
    DATA: WA_BAPIHEAD TYPE BAPISDH1,
          WA_BAPIHEADX TYPE BAPISDH1X,
          WA_HEADDATA TYPE BAPISDH1.
    DATA: I_BAPIITEM TYPE STANDARD TABLE OF BAPISDITM,
          WA_BAPIITEM TYPE BAPISDITM,
            WA_DATA TYPE BAPISDITM,
          I_BAPIITEMX TYPE STANDARD TABLE OF BAPISDITMX,
          WA_BAPIITEMX TYPE BAPISDITMX.
    CHANGE ITEM DATA
    WA_BAPIITEM-ITM_NUMBER =WA_DATA-ITM_NUMBER.
    WA_BAPIITEM-REASON_REJ = WA_DATA-REASON_REJ. "(REASON FOR REJECTION)
    WA_BAPIITEMX-ITM_NUMBER = WA_DATA-ITM_NUMBER. "(ITEM NUMBER)
    WA_BAPIITEMX-UPDATEFLAG = 'X'.
    WA_BAPIITEMX-REASON_REJ = 'X'.
    APPEND WA_BAPIITEM TO I_BAPIITEM.
    APPEND WA_BAPIITEMX TO I_BAPIITEMX.
    TO CHANGE HEADER DATA
    WA_BAPIHEADX-UPDATEFLAG = 'U'.
    WA_BAPIHEADX-DLV_BLOCK = 'X'.
    WA_BAPIHEAD-SALES_ORG = WA_HEADDATA-SALES_ORG. "(COMPANY CODE)
    WA_BAPIHEAD-DLV_BLOCK = WA_HEADDATA-DLV_BLOCK. "(DELIVERY BLOCK)
    WA_VBELN = '0000000168'.
    CALL BAPI AND PASS THE VALUE
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
       EXPORTING
         SALESDOCUMENT               = WA_VBELN " (SALES AND DOCUMENT NO)
        ORDER_HEADER_IN             = WA_BAPIHEAD
         ORDER_HEADER_INX           = WA_BAPIHEADX
       TABLES
         RETURN                     = IT_MESSAGE
        ORDER_ITEM_IN               = I_BAPIITEM
        ORDER_ITEM_INX              = I_BAPIITEMX
    CLEAR IT_MESSAGE.

  • Need to change CONTRACT End date using Bapi BAPI_CUSTOMERCONTRACT_CHANGE

    Hi,
    I need to change date of a contract and for the same I am using Bapi "BAPI_CUSTOMERCONTRACT_CHANGE".
    I am passing the following Parameters to the BAPI.
    SALESDOCUMENT  -- Have passed the Contract Number in this.
    CONTRACT_HEADER_IN -- Have passed the values of the following fields ::
    COLLECT_NO -- Sales Document number
    Sales_Org  -- Sales Organization
    Distribution Channes -- Dist. Channel
    Division -- Division
    CT_VALID_T -- New date which I want as the contract end date.
    CONTRACT_HEADER_INX -- Following values have been paased in this Structure.
    UPDATEFLAG -- 'U'.
    CT_VALID_T -- 'X'.
    Now when I run the BAPI with these inputs I get the output as ' Field 'GUEEN' cannot be copied, because it is not ready for input'.This is a information message. But the changes are not reflected in the contract. I have done the commit work after BAPI.
    When I changes the value for CT_VALID_T flag from 'X' to 'U' the message mentioned above does not come but the end result is same and changes are not reflected in the contract.
    I would be really helpful to you if get any kind of helf to know ehy the output is not coming.
    Thanks a Lot for your kind help!!!!
    Regards,
    Lalit Kabra

    Hi Lalit,
    The value for CT_VALID_T flag has to be 'X' in the CONTRACT_HEADER_INX structure.
    In this case, you receive an informative message "Field 'GUEEN' cannot be copied, because it is not ready for input'"
    That is the problem. You cannot change this field because your functional team has this field as "not ready for input" in change mode.
    Can you change this field in transaction VA42? If you can't modify it in dialog, you can't modify it with BAPI.
    Regards,

  • ME21N-ME51N - change value of field at item level

    Hello All,
    We create a purchase requisition from a sales order and after a purchase order in reference to the purchase requisition.
    We would like to have the sales order number in the EBAN-BSTNR and/or in EKPO-BEDNR.
    We found some user-exits but it seems that we can't change value of standard fields with these.
    Could someone help us to find a solution ?
    May be with a BADI ?
    Thanks
    Véronique

    The code below should work for you, as for explanation why it will work look at SAP note 178328 over some coffee! )
    I gave some explanation below the code but the SAP note explains it in more detail
    DATA: ls_yvbap LIKE yvbap.
    * Sales doc is in creation mode
    IF t180-trtyp = charh.
      LOOP AT xvbap.
        xvbap-spart = cobl-spart.
        MODIFY xvbap.
      ENDLOOP.
    ENDIF.
    * Sales doc is in change mode
    IF t180-trtyp = charv.
      LOOP AT xvbap.
    *   Append Y-table and set update flag if necessary
        IF xvbap-updkz EQ space.
    *     Save unchanged version of XVBAP to YVBAP
          ls_yvbap = xvbap.
          APPEND ls_yvbap TO yvbap.
          <xvbap-updkz = charu.
          upd_vbap = charu.
        ENDIF.
        xvbap-spart = cobl-spart.
        MODIFY xvbap.
      ENDLOOP.
    ENDIF.
    SAP uses two internal tables XVBAP and YVBAP in sales document processing. XVBAP which contains the order items as they are currently after the user changed them on the screen, whereas YVBAP stores only changed item records the way they were before change. So YVBAP is only populated in change mode and not in creation mode. So if we are updating XVBAP when sales document is in change mode, we should ensure that YVBAP also contains the same record the way it was before our change.
    SAP will only update the records to database if we ensure the integrity of XVBAP and YVBAP internal tables.

  • Change value of a typedef in parallels to another running action

    Hello,
    Well, I have a problem with my VI.
    To summarize I use a Vi « IdsVg.vi » to achieve some measurements process.
    This one uses an action engine as a sub-vi to store data of the front panel and to precede complementary actions. The front panel is a strict typedef…
    I programmed the Vi avoiding to use sequence structures in order to be able to do other actions on the front panel in parallels. Nevertheless I’m running out of ideas for solving my problem.
    The problem:
    I would like to change values (time constant, Boolean of graph) of the front panel at any instant when the main vi is running. The actual problem is: when I start the program, using register event I can change values of the front panel, but when the program is running the while loop in which it gets the measurement, it isn’t possible to change parameter of the front panel…  
    Is there a solution or a trick??
    Thank you for help
    Attachments:
    MyProblem.lvproj ‏10 KB

    Putting in the project file does not help much, good try though. The actual files are missing though, so nothing shows up.
    I suggest you create a separate producer consumer loop in your main vi. The vi retrieving the data could pass the relevant data (producer) and the consumer loop will then process the data and update the fron tpannel. Note, only the producer consumer loop will update the front pannel.
    You would not need a sequence structure to control the update. The producer consumer loop will only execute when you provide the necessary data.

  • Save the selected value from listbox with its respective tab control dropdown selcted values in another listbox

    Hi all,
    I am making a vi where I have to save the selected value from listbox with its respective tab control dropdown selcted values in another listbox.Whenever I select Item1 then the heading change and respective tab will open for that item.But Now I just want to save the selection and put it in another ListBox.SO that I can renmove or add according to my wish. Plz help me.
    Solved!
    Go to Solution.
    Attachments:
    my_vi.png ‏83 KB

    Hi, I successfully make the vi to insert itmes from listbox1 to listbox2.Whenever I select itmes 1 in listbox 1 it display same elected item in listbox2 , but it not appending the items in listbox2.Like If 1 is selected in listbox1 then 1 will display , next time after saving when I selct next item like 3 then in listbox 2, 1 is replaced by 3,it dont come in second row of listbox2.Hope I am able to explain.\
    Plz help me to resolve this.
    Attachments:
    listbox_update.vi ‏11 KB

  • Getting change values from a collection

    Title says it all. I have a collection connected to a
    datagrid and have a simple form that allows me to add/modify/delete
    entries from the collection. Now I want to send the changes to the
    collection back to the server. How do I read/parse the collection
    for these changes? Examples would be helpful. Below is what I have
    so far to examine the collection (found elsewhere) how do I extract
    the name/value pairs that have changed?
    public function
    collectionEventHandler(event:CollectionEvent):void {
    switch(event.kind) {
    case CollectionEventKind.ADD:
    addLog("Item "+ event.location + " added");
    break;
    case CollectionEventKind.REMOVE:
    addLog("Item "+ event.location + " removed");
    break;
    case CollectionEventKind.REPLACE:
    addLog("Item "+ event.location + " Replaced");
    break;
    case CollectionEventKind.UPDATE:
    addLog("Item updated");
    break;
    }

    ArrayCollection supports the length property, so you can
    simply iterate over it with a for loop and use the bracket notation
    to return each item. Build the structure you want to sent, then
    away you go.
    If you are wanting to only select changed values, you will
    have to track this yourself.
    Tracy

  • Smartview 11.1.2.5- Cannot change value in Text-List Dropdowns- Excel Crashes

    Using latest/greatest Smartview with 64-bit Office and Windows 7.  I have a native essbase app utilizing text-lists. I am trying to update text-value through smartview. Smartview automatically produces a drop down to select a value from the linked text-list. However- as soon as a different value is entered or selcted in this cell with the drop-down list- Excel crashs. I have reproduced this consistently everytime. I have no way to change values for text-measure accounts linked to text-lists. I feel this is and incompatabiliyt issue with office 64-bit.  

    SmartView using the forms. It appears this issue has been logged as issue number 6566082 as seen here: http://docs.oracle.com/cd/E17236_01/epm.1112/readme/sv_1112200_readme.html
    But I can't seem to find out where I can get information on the status of this issue and whether it's been patched in future versions.

  • How to change value of instance variable and local variable at run time?

    As we can change value at run time using debug mode of Eclipse. I want to do this by using a standalone prgram from where I can change the value of a variable at runtime.
    Suppose I have a class, say employee like -
    class employee {
    public String name;
    employee(String name){
    this.name = name;
    public int showSalary(){
    int salary = 10000;
    return salary;
    public String showName()
    return name;
    i want to change the value of instance variable "name" and local variable "salary" from a stand alone program?
    My standalone program will not use employee class; i mean not creating any instance or extending it. This is being used by any other calss in project.
    Can someone tell me how to change these value?
    Please help
    Regards,
    Sujeet Sharma

    This is the tutorial You should interest in. According to 'name' field of the class, it's value can be change with reflection. I'm not sure if local variable ('salary') can be changed - rather not.

  • All changes in sales orders with in a week

    Hi gurus,
    I want to display a report to display all the changes in sales orders with in a week,
    Can anybody help me .If anybody already developed this report can you send to me.
    regards,
    D..

    Query table CDHDR and CDPOS with the following fields:
    CDHDR-TCODE = VA01 or VA02
    CDHDR-UDATE = <specified date range>
    Now select from CDPOS where
    CDPOS-OBJECTCLAS = CDHDR-OBJECTCLAS
    CDPOS-OBJECTID = CDHDR-OBJECTID
    CDPOS-CHANGENR = CDHDR-CHANGENR
    The rest of the details for the change can be found from the other fields in CDPOS. like tablename, fieldname, old value, new value etc.
    Hope this helps.
    Sudha

  • Service PO creation with BAPI

    Hi All,
    I have to create a file upload program to create service PO's with BAPI_PO_CREATE1. Please if anyone can give me a example of it it would be great.
    Thanks.
    Malinda

    Hi ,
           Check out this program .
    use this program for creating service po's using bapi.
    *& Report ZMM_PO_CREATE1 *
    REPORT ZMM_PO_CREATE1 .
    data : POHEADER like BAPIMEPOHEADER occurs 0 with header line,
    POHEADERX like BAPIMEPOHEADERX occurs 0 with header line,
    POITEM like BAPIMEPOITEM occurs 0 with header line,
    POITEMX like BAPIMEPOITEMX occurs 0 with header line,
    POESLLC like BAPIESLLC occurs 0 with header line,
    POACCOUNT like BAPIMEPOACCOUNT occurs 0 with header line,
    POACCOUNTX like BAPIMEPOACCOUNTX occurs 0 with header line,
    POCONDHEADER like BAPIMEPOCONDHEADER occurs 0 with header line,
    POCONDHEADERX like BAPIMEPOCONDHEADERX occurs 0 with header line,
    POCOND like BAPIMEPOCOND occurs 0 with header line,
    RETURN like BAPIRET2 occurs 0 with header line.
    data : po_no(10).
    data : begin of it_head occurs 0,
    ref(10),
    bsart like ekko-bsart,
    lifnr like ekko-lifnr,
    ekorg like ekko-ekorg,
    ekgrp like ekko-ekgrp,
    bukrs like ekko-bukrs,
    verkf like ekko-verkf,
    telf1 like ekko-telf1,
    ihrez like ekko-ihrez,
    unsez like ekko-unsez,
    kdatb(10),
    kdate(10),
    end of it_head.
    data : begin of it_det occurs 0,
    ref(10),
    knttp like ekpo-knttp,
    pstyp like ekpo-pstyp,
    txz01 like ekpo-txz01,
    matkl like ekpo-matkl,
    werks like ekpo-werks,
    afnam like ekpo-afnam,
    ktext1 like esll-ktext1,
    srvpos like esll-srvpos,
    frmval1 like esll-frmval1,
    frmval2 like esll-frmval2,
    menge like esll-menge,
    kostl like eskn-kostl,
    sakto like eskn-sakto,
    zzcode like eskn-zzcode,
    kbetr like konv-kbetr,
    end of it_det.
    data : c_col1 TYPE i VALUE '0001',
    c_col2 TYPE i VALUE '0002',
    c_col3 TYPE i VALUE '0003',
    c_col4 TYPE i VALUE '0004',
    c_col5 TYPE i VALUE '0005',
    c_col6 TYPE i VALUE '0006',
    c_col7 TYPE i VALUE '0007',
    c_col8 TYPE i VALUE '0008',
    c_col9 TYPE i VALUE '0009',
    c_col10 TYPE i VALUE '0010',
    c_col11 TYPE i VALUE '0011',
    c_col12 TYPE i VALUE '0012',
    c_col13 TYPE i VALUE '0013',
    c_col14 TYPE i VALUE '0014',
    c_col15 TYPE i VALUE '0015',
    c_col16 TYPE i VALUE '0016'.
    data : v_currentrow type i,
    v_currentrow1 type i.
    data : itab_head like ALSMEX_TABLINE occurs 0 with header line,
    itab_det like ALSMEX_TABLINE occurs 0 with header line.
    data : file_head type RLGRAP-FILENAME,
    file_item type RLGRAP-FILENAME.
    file_head = 'C:Documents and SettingsDesktophead.xls'.
    file_item = 'C:Documents and SettingsDesktopitem.xls'.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    filename = file_head
    i_begin_col = 1
    i_begin_row = 1
    i_end_col = 12
    i_end_row = 50
    tables
    intern = itab_head
    EXCEPTIONS
    INCONSISTENT_PARAMETERS = 1
    UPLOAD_OLE = 2
    OTHERS = 3
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    filename = file_item
    i_begin_col = 1
    i_begin_row = 1
    i_end_col = 16
    i_end_row = 50
    tables
    intern = itab_det
    EXCEPTIONS
    INCONSISTENT_PARAMETERS = 1
    UPLOAD_OLE = 2
    OTHERS = 3
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    IF itab_head[] IS INITIAL.
    WRITE:/ 'No Header Data Exists '.
    STOP.
    ELSE.
    sort itab_head by row col.
    read table itab_head index 1.
    v_currentrow = itab_head-row.
    loop at itab_head.
    if itab_head-row ne v_currentrow.
    APPEND it_head.
    v_currentrow = itab_head-row.
    ENDIF.
    CASE itab_head-col.
    WHEN c_col1.
    it_head-ref = itab_head-value.
    WHEN c_col2.
    it_head-bsart = itab_head-value.
    WHEN c_col3.
    it_head-lifnr = itab_head-value.
    WHEN c_col4.
    it_head-ekorg = itab_head-value.
    WHEN c_col5.
    it_head-ekgrp = itab_head-value.
    WHEN c_col6.
    it_head-bukrs = itab_head-value.
    WHEN c_col7.
    it_head-verkf = itab_head-value.
    WHEN c_col8.
    it_head-telf1 = itab_head-value.
    WHEN c_col9.
    it_head-ihrez = itab_head-value.
    WHEN c_col10.
    it_head-unsez = itab_head-value.
    WHEN c_col11.
    it_head-kdatb = itab_head-value.
    WHEN c_col12.
    it_head-kdate = itab_head-value.
    ENDCASE.
    ENDLOOP.
    APPEND it_head.
    CLEAR it_head.
    ENDIF.
    IF itab_det[] IS INITIAL.
    WRITE:/ 'No Item Data Exists '.
    STOP.
    ELSE.
    sort itab_det by row col.
    read table itab_det index 1.
    v_currentrow1 = itab_det-row.
    loop at itab_det.
    if itab_det-row ne v_currentrow1.
    APPEND it_det.
    v_currentrow1 = itab_det-row.
    ENDIF.
    CASE itab_det-col.
    WHEN c_col1.
    it_det-ref = itab_det-value.
    WHEN c_col2.
    it_det-knttp = itab_det-value.
    WHEN c_col3.
    it_det-pstyp = itab_det-value.
    WHEN c_col4.
    it_det-txz01 = itab_det-value.
    WHEN c_col5.
    it_det-matkl = itab_det-value.
    WHEN c_col6.
    it_det-werks = itab_det-value.
    WHEN c_col7.
    it_det-afnam = itab_det-value.
    WHEN c_col8.
    it_det-srvpos = itab_det-value.
    WHEN c_col9.
    it_det-ktext1 = itab_det-value.
    WHEN c_col10.
    it_det-frmval1 = itab_det-value.
    WHEN c_col11.
    it_det-frmval2 = itab_det-value.
    WHEN c_col12.
    it_det-menge = itab_det-value.
    WHEN c_col13.
    it_det-kostl = itab_det-value.
    WHEN c_col14.
    it_det-sakto = itab_det-value.
    WHEN c_col15.
    it_det-zzcode = itab_det-value.
    WHEN c_col16.
    it_det-kbetr = itab_det-value.
    ENDCASE.
    ENDLOOP.
    APPEND it_det.
    CLEAR it_det.
    ENDIF.
    loop at it_head.
    poheader-doc_type = it_head-bsart.
    poheader-vendor = it_head-lifnr.
    poheader-purch_org = it_head-ekorg.
    poheader-pur_group = it_head-ekgrp.
    poheader-comp_code = it_head-bukrs.
    poheader-sales_pers = it_head-verkf.
    poheader-telephone = it_head-telf1.
    poheader-REF_1 = it_head-ihrez.
    poheader-OUR_REF = it_head-unsez.
    poheader-VPER_START = it_head-kdatb.
    poheader-VPER_END = it_head-kdate.
    loop at it_det where ref = it_head-ref.
    poitem-acctasscat = it_det-knttp.
    poitem-item_cat = it_det-pstyp.
    poitem-short_text = it_det-txz01.
    poitem-matl_group = it_det-matkl.
    poitem-plant = it_det-werks.
    poitem-PREQ_NAME = it_det-afnam.
    POESLLC-SERVICE = it_det-srvpos.
    POESLLC-SHORT_TEXT = it_det-ktext1.
    POESLLC-FORM_VAL1 = it_det-frmval1.
    POESLLC-FORM_VAL2 = it_det-frmval2.
    POESLLC-QUANTITY = it_det-menge.
    POACCOUNT-COSTCENTER = it_det-kostl.
    POACCOUNT-GL_ACCOUNT = it_det-sakto.
    POCONDHEADER-COND_TYPE = 'R000'.
    POCONDHEADER-COND_VALUE = it_det-kbetr.
    endloop.
    endloop.
    poheaderx-doc_type = 'X'.
    poheaderx-vendor = 'X'.
    poheaderx-purch_org = 'X'.
    poheaderx-pur_group = 'X'.
    poheaderx-comp_code = 'X'.
    poheaderx-sales_pers = 'X'.
    poheaderx-telephone = 'X'.
    poheaderx-REF_1 = 'X'.
    poheaderx-OUR_REF = 'X'.
    poheaderx-VPER_START = 'X'.
    poheaderx-VPER_END = 'X'.
    poitemx-acctasscat = 'X'.
    poitemx-item_cat = 'X'.
    poitemx-short_text = 'X'.
    poitemx-matl_group = 'X'.
    poitemx-plant = 'X'.
    poitemx-PREQ_NAME = 'X'.
    *POESLLCx-SHORT_TEXT = 'X'.
    POACCOUNTx-COSTCENTER = 'X'.
    POACCOUNTx-GL_ACCOUNT = 'X'.
    POCONDHEADER-cond_type = 'X'.
    CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
    poheader = poheader
    POHEADERX = poheaderx
    POADDRVENDOR =
    TESTRUN =
    MEMORY_UNCOMPLETE =
    MEMORY_COMPLETE =
    POEXPIMPHEADER =
    POEXPIMPHEADERX =
    VERSIONS =
    NO_MESSAGING =
    NO_MESSAGE_REQ =
    NO_AUTHORITY =
    NO_PRICE_FROM_PO =
    IMPORTING
    EXPPURCHASEORDER = po_no
    EXPHEADER =
    EXPPOEXPIMPHEADER =
    TABLES
    RETURN = return
    POITEM = poitem
    POITEMX = poitemx
    POADDRDELIVERY =
    POSCHEDULE =
    POSCHEDULEX =
    POACCOUNT = poaccount
    POACCOUNTPROFITSEGMENT =
    POACCOUNTX = poaccountx
    POCONDHEADER = pocondheader
    POCONDHEADERX = pocondheaderx
    POCOND =
    POCONDX =
    POLIMITS =
    POCONTRACTLIMITS =
    POSERVICES = poesllc
    POSRVACCESSVALUES =
    POSERVICESTEXT =
    EXTENSIONIN =
    EXTENSIONOUT =
    POEXPIMPITEM =
    POEXPIMPITEMX =
    POTEXTHEADER =
    POTEXTITEM =
    ALLVERSIONS =
    POPARTNER =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    WAIT =
    IMPORTING
    RETURN =
    if sy-subrc = 0.
    loop at return.
    write return-MESSAGE_V1.
    write po_no.
    endloop.
    endif.
    Also check this link
    [Service Order through BAPI|Service PO creation with BAPI;

Maybe you are looking for