Regarding BAPI_PO_CREATE1

Hi Freinds,
I am using BAPI_PO_CREATE1 to create a purchase order based on the purchase requisition from ME21n.
but I am struck up with the following 2 errors.
1. 'Procurement without material from vendor with plant assignment is not defined'.
2. 'Subcontracting as stock transfer within a  company code not possible'.
Even I search in this forum also not found.
Please help on the above.

Hi,
For those who will have the same problem related to passing the subcontract fields
The solution is to fill the table EXTENSIONIN : example :
STRUCTURE VALUEPART1 VALUEPART2
SERRU 1 00010
DISUB_SOBKZ "Q" 00010
DISUB_PSPNR "00000289" 00010
If it is not working try :
TYPES: BEGIN OF lty_ebelp,
ebelp TYPE ebelp,
END OF lty_ebelp.
TYPES BEGIN OF lty_adsub.
include TYPE lty_ebelp.
include TYPE disub_mepoitem_data.
TYPES END OF lty_adsub.
TYPES BEGIN OF lty_adsubx.
include TYPE lty_ebelp.
include TYPE disub_mepoitem_datax.
TYPES END OF lty_adsubx.
DATA: ls_extensionin TYPE bapiparex,
lt_extensionin TYPE STANDARD TABLE OF bapiparex,
ls_adsub TYPE lty_adsub,
ls_adsubx TYPE lty_adsubx.
ls_adsub-ebelp = '00010'.
ls_adsub-serru = '1'.
ls_adsub-disub_sobkz = 'B'.
ls_adsub-disub_pspnr = '00000289'.
MOVE ls_adsub TO ls_extensionin-valuepart1.
ls_extensionin-structure = cl_adsub_constants=>extin_po_struc.
APPEND ls_extensionin TO lt_extensionin.
ls_adsubx-ebelp = '00010'.
ls_adsubx-serru = 'X'.
ls_adsubx-disub_sobkz = 'X'.
ls_adsubx-disub_pspnr = 'X'.
MOVE ls_adsubx TO ls_extensionin-valuepart1.
ls_extensionin-structure = cl_adsub_constants=>extin_po_strucx.
APPEND ls_extensionin TO lt_extensionin.
So data structure LT_EXTENSIONIN will be used when calling BAPI_PO_CREATE1.
Note : The solution is explained in the SAP Note 1566153.
Best regards
Youssef BENAAMOU

Similar Messages

  • Data is not updating in Bapi_po_Create1

    Hi Gurus,
    I have Small Problem regarding Bapi_po_create1
    bapi is running succesfully and in return table it is returning po number generated but this po number is not getting updated to databse table ekko or any where.
    Can You plz give me soln what is going wrong or in case of bapi it takes times?
    plz help out.
    Thanks & Regards,
    Vijay Pawar

    hi got the soln by using fm
    BAPI_TRANSACTION_COMMIT.

  • Regarding skip the availability check in BAPI_PO_CREATE1

    Hi Abapers,
         Can you suggest any enhancement, to skip the availability check in function module BAPI_PO_CREATE1?
    (My requirement is, availability check should not be triggered, because delivery has been completed already).
    Regards
    Subash
    Edited by: subash Arthanari on Dec 2, 2008 10:56 AM

    u can pass field  Delivery Completed" Indicator
    structure BAPIMEPOITEM
    field   NO_MORE_GR
    like:-
    wa_item-material = p_matnr.
    wa_item-plant = '3200'.
    wa_item-quantity = 100.
    wa_item-conf_ctrl = 'Z01'.
    wa_item-ACKN_REQD = 'X'.
    WA_ITEM-ERS = ''.
    wa_item-NO_MORE_GR= 'X'.
    APPEND wa_item TO it_item.
    wa_itemx-po_item = p_int.
    wa_itemx-material = c_x.
    wa_itemx-plant = c_x .
    wa_itemx-stge_loc = c_x .
    wa_itemx-quantity = c_x .
    wa_itemx-item_cat = c_x .
    wa_itemx-acctasscat = c_x .
    wa_itemx-conf_ctrl = 'X'.
    wa_itemx-ACKN_REQD = 'X'.
    WA_ITEMX-ERS = 'X'.
    wa_itemx-NO_MORE_GR= 'X'.
    APPEND wa_itemx TO it_itemx.

  • Regarding availability check in BAPI_PO_CREATE1

    Hi Abapers,
         In BAPI_PO_CREATE1 function module, while creating the STO, by default 'Availability check' has been performed.
      But in my scenario, Delivery has been completed already. So this availability check should not be happened.
    How can I achiev it?
    Please give me ur solutions as early as possible.
    Thanks and regards
    Subash

    u can pass field  Delivery Completed" Indicator
    structure BAPIMEPOITEM
    field   NO_MORE_GR
    like:-
    wa_item-material = p_matnr.
    wa_item-plant = '3200'.
    wa_item-quantity = 100.
    wa_item-conf_ctrl = 'Z01'.
    wa_item-ACKN_REQD = 'X'.
    WA_ITEM-ERS = ''.
    wa_item-NO_MORE_GR= 'X'.
    APPEND wa_item TO it_item.
    wa_itemx-po_item = p_int.
    wa_itemx-material = c_x.
    wa_itemx-plant = c_x .
    wa_itemx-stge_loc = c_x .
    wa_itemx-quantity = c_x .
    wa_itemx-item_cat = c_x .
    wa_itemx-acctasscat = c_x .
    wa_itemx-conf_ctrl = 'X'.
    wa_itemx-ACKN_REQD = 'X'.
    WA_ITEMX-ERS = 'X'.
    wa_itemx-NO_MORE_GR= 'X'.
    APPEND wa_itemx TO it_itemx.

  • Regarding problem in function module BAPI_PO_CREATE1

    Hi Guys,
                I have created a program for the creation of Purchase Order using Bapi_PO_CREATE1 with account assignment category as 'M' and item category as 'L'.Here when i am doing it manually i was asked to give the details of the components.But I am unable to find where to include these fields in my program.
                       Please help me out.Any program template would be of great help to me.
    Thanks in Advance
    Srikanth.

    hello muva,
    this prog may help u ...check this
    *& Report  ZBAPI                                                       *
    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.

  • BAPI_PO_CREATE1 - Delivery date regarding

    Hi experts.
    I am creating PO by function module above. Problem is, that delivery date of order is calculating by system, not by my own proposal.
    Is there any method, field in structure or something else to turn off that proposal ... ?
    Thanks a lot.

    POSCHEDULE structure is filled. Problem is when for example delivery date is in some other date than system wants.
    I mean when I want to create PO with long deliv.date like 1 year, system will generate warning (we can see that in ME21). I want omit that warning and create PO with my own deliv.date ...
    Thanks.

  • Error  while creating a Service PO using BAPI_PO_CREATE1

    Hi,
    Im facing Error as "In case of account assignment, please enter acc. assignment data for item" while creating Service PO using BAPI_PO_CREATE1.
    Header Data
          w_poheader-comp_code = w_src-bukrs.  "Company Code
          w_poheader-doc_type = w_src-bsart.   "Document type
         w_poheader-delete_ind = w_src-vrtkz. "Deletion Indicator
          CLEAR: lv_date.
          CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
            EXPORTING
              date_external            = w_src-aedat
            IMPORTING
              date_internal            = lv_date
            EXCEPTIONS
              date_external_is_invalid = 1
              OTHERS                   = 2.
          w_poheader-creat_date = lv_date.    "Creation Date
          w_poheader-created_by = sy-uname.    "Creator Name
          w_poheader-vendor = w_src-lifnr.     "Vendor
          w_poheader-pmnttrms = w_src-zterm.   "Payment Terms
          w_poheader-purch_org = w_src-ekorg.  "Purchase Organization
          w_poheader-pur_group = w_src-ekgrp.  "Purchase Group
          w_poheader-ref_1    = w_src-ihrez.   "OLD PO
          w_poheaderx-comp_code = 'X'.  "Company Code
          w_poheaderx-doc_type = 'X'.   "Document type
         w_poheaderx-delete_ind = 'X'.      "Deletion Indicator
          w_poheaderx-creat_date = 'X'.    "Creation Date
          w_poheaderx-created_by = 'X'.
          w_poheaderx-vendor = 'X'.
          w_poheaderx-pmnttrms = 'X'.   "Payment Terms
          w_poheaderx-purch_org = 'X'.  "Purchase Organization
          w_poheaderx-pur_group = 'X'.  "Purchase Group
          w_poheaderx-ref_1 = 'X'.
    Item Data
          w_poitem-po_item = w_src-ebelp.
          IF NOT w_src-elikz IS INITIAL.
            w_poitem-delete_ind = w_src-elikz.
          ENDIF.
          IF NOT w_src-txz01 IS INITIAL.
            w_poitem-short_text = w_src-txz01.
          ENDIF.
          IF NOT w_src-werks IS INITIAL.
            w_poitem-plant = w_src-werks.
          ENDIF.
    Material group
          IF NOT w_src-matkl IS INITIAL.
            w_poitem-matl_group = w_src-matkl.
          ENDIF.
    Open or Partial Qty
          IF w_src-opqty IS  NOT INITIAL.
            w_poitem-quantity = w_src-opqty.
          ELSEIF NOT w_src-paqty IS INITIAL.
            w_poitem-quantity = w_src-paqty.
          ENDIF.
          IF NOT w_src-meins IS INITIAL.
            w_poitem-po_unit = w_src-meins. "Base Unit of Measure
          ENDIF.
          IF NOT w_src-netpr IS INITIAL.
            w_poitem-net_price = w_src-netpr.  "Net Price
          ENDIF.
          IF NOT w_src-mwskz IS INITIAL.
            w_poitem-tax_code = w_src-mwskz.
          ENDIF.
          IF NOT w_src-pstyp IS INITIAL.
            w_poitem-item_cat = w_src-pstyp.
          ENDIF.
          IF NOT w_src-knttp IS INITIAL.
            w_poitem-acctasscat = w_src-knttp.
          ENDIF.
          IF NOT w_src-vrtkz IS INITIAL.
            w_poitem-distrib = w_src-vrtkz.
          ENDIF.
    Package No
          IF NOT w_src-packno IS INITIAL.
            w_poitem-pckg_no = w_src-packno.  "Package no
          ENDIF.
          IF w_poitem-delete_ind IS INITIAL AND
             w_poitem-short_text IS INITIAL AND
             w_poitem-plant IS INITIAL AND
             w_poitem-matl_group IS INITIAL AND
             w_poitem-quantity IS INITIAL AND
             w_poitem-po_unit IS INITIAL AND
             w_poitem-net_price IS INITIAL AND
             w_poitem-tax_code IS INITIAL.
            CLEAR lv_item.
          ELSE.
            APPEND w_poitem TO i_poitem.
            CLEAR: w_poitem.
            lv_item = 'X'.
          ENDIF.
          w_poitemx-po_item = w_src-ebelp.
          w_poitemx-delete_ind = 'X'.
          w_poitemx-short_text = 'X'.
          w_poitemx-plant = 'X'.
          w_poitemx-matl_group = 'X'.
          w_poitemx-quantity = 'X'.
          w_poitemx-po_unit = 'X'.
          w_poitemx-net_price = 'X'.
          w_poitemx-tax_code = 'X'.
          w_poitemx-item_cat = 'X'.
          w_poitemx-acctasscat = 'X'.
          w_poitemx-distrib = 'X'.
          IF NOT w_src-packno IS INITIAL.
            w_poitemx-pckg_no = 'X'.
          ENDIF.
          IF lv_item = 'X'.
            APPEND w_poitemx TO i_poitemx.
            CLEAR: w_poitemx,
                   lv_item.
          ENDIF.
    PO Deliery Address
          w_poaddrdelivery-po_item = w_src-ebelp.
          IF NOT w_src-adrn2 IS INITIAL.
            w_poaddrdelivery-addr_no = w_src-adrn2.
            APPEND w_poaddrdelivery TO i_poaddrdelivery.
            CLEAR w_poaddrdelivery.
          ENDIF.
    POschedule
          w_poschedule-po_item = w_src-ebelp.
          CLEAR: lv_date.
          CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
            EXPORTING
              date_external            = w_src-eindt
            IMPORTING
              date_internal            = lv_date
            EXCEPTIONS
              date_external_is_invalid = 1
              OTHERS                   = 2.
          IF NOT lv_date IS INITIAL.
            w_poschedule-del_datcat_ext = 'D'. "Delivery Date in Day Format
            w_poschedule-delivery_date = lv_date.
            w_poschedule-quantity = w_src-menge.
            APPEND w_poschedule TO i_poschedule.
            CLEAR w_poschedule.
            lv_schd = 'X'.
          ENDIF.
          w_poschedulex-po_item = w_src-ebelp.
          w_poschedulex-del_datcat_ext = 'X'.
          w_poschedulex-delivery_date = 'X'.
          w_poschedulex-quantity = 'X'.
          IF lv_schd = 'X'.
            APPEND w_poschedulex TO i_poschedulex.
            CLEAR : w_poschedulex,
                    lv_schd.
          ENDIF.
    PO Account Assignment
          w_poaccount-po_item = w_src-ebelp.
          w_poaccount-serial_no = w_src-zekkn.
    Distribution Indicator is 1
          IF w_src-vrtkz EQ '1'.
            w_poaccount-distr_perc = w_src-vproz.
            IF NOT w_src-menge IS INITIAL.
              CLEAR lv_menge.
              lv_menge = w_src-menge.
            ENDIF.
            lv_acct_qty = lv_menge * w_src-vproz / 100.
    Get Round value of Quanity
            frac = FRAC( lv_acct_qty ).
            IF frac EQ 0.
              lv_acct_qty = FLOOR( lv_acct_qty ).
            ELSE.
              lv_acct_qty = CEIL( lv_acct_qty ).
            ENDIF.
            w_poaccount-quantity = lv_acct_qty.
          ELSEIF w_src-vrtkz IS INITIAL.
            w_poaccount-quantity = w_src-menge.
          ENDIF.
          w_poaccount-gl_account = w_src-saknr.
          w_poaccount-costcenter = w_src-kostl.
          w_poaccount-asset_no = w_src-anln1.
          w_poaccount-wbs_element = w_src-wbs.
          w_poaccount-network = w_src-nplnr.
          w_poaccount-tax_code = w_src-mwskz.
          w_poaccount-activity = w_src-vornr.
          APPEND w_poaccount TO i_poaccount.
          CLEAR w_poaccount.
          w_poaccountx-po_item = w_src-ebelp.
          w_poaccountx-serial_no = w_src-zekkn.
          IF w_src-vrtkz EQ '1'.
            w_poaccountx-distr_perc =  'X'.
          ENDIF.
          w_poaccountx-quantity = 'X'.
          w_poaccountx-gl_account = 'X'.
          w_poaccountx-costcenter = 'X'.
          w_poaccountx-wbs_element = 'X'.
          w_poaccountx-network = 'X'.
          w_poaccountx-tax_code = 'X'.
          w_poaccountx-activity = 'X'.
          APPEND w_poaccountx TO i_poaccountx.
          CLEAR w_poaccountx.
    PO Services
          w_poservices-pckg_no = w_src-packno.  "Package no
          w_poservices-line_no = w_src-srv_line_no.    "Line item
          w_poservices-ext_line = w_src-extrow.    "External line
         w_poservices-outl_level = 0.
         w_poservices-outl_ind = 'X'.
          w_poservices-subpckg_no = w_src-sub_packno.  "Sub package no
          w_poservices-quantity = w_src-srqty.  "Service Quantity
          w_poservices-base_uom = w_src-srmeins.  "Service Basic unit of Measure
          w_poservices-price_unit = '1'.
         w_poservices-from_line = '1'.
          w_poservices-gr_price  = w_src-brtwr.  "GR Price
          w_poservices-short_text = w_src-sh_text1.    "Service Short Text
         w_poservices-matl_group = w_src-matkl.  "Material Group
          APPEND w_poservices TO i_poservices.
          CLEAR w_poservices.
    PO Service Access values
          w_posrvacc-pckg_no = w_src-packno.  "Package no
          w_posrvacc-line_no = w_src-srv_line_no. "Line item
          w_posrvacc-serno_line = w_src-zekkn.                  "'01'..
          IF w_src-vproz IS INITIAL.
            w_posrvacc-percentage = '100.0'.
          ENDIF.
          w_posrvacc-serial_no = w_src-zekkn.                   "'01'.
          w_posrvacc-quantity = w_src-srqty.  "Service Quantity
          w_posrvacc-net_value = w_src-srqty.  "Net value
          APPEND w_posrvacc TO i_posrvacc.
          CLEAR w_posrvacc.
        ENDIF.
    ***Create a NEW PO
        AT END OF ihrez.
    Call BAPI
          CALL FUNCTION 'BAPI_PO_CREATE1'
            EXPORTING
              poheader          = w_poheader
              poheaderx         = w_poheaderx
            IMPORTING
              exppurchaseorder  = gv_ebeln
            TABLES
              return            = i_return
              poitem            = i_poitem[]
              poitemx           = i_poitemx[]
              poaddrdelivery    = i_poaddrdelivery[]
              poschedule        = i_poschedule[]
              poschedulex       = i_poschedulex[]
              poaccount         = i_poaccount[]
              poaccountx        = i_poaccountx[]
              poservices        = i_poservices[]
              posrvaccessvalues = i_posrvacc[]
              extensionin       = i_extensionin[].
    Commit the Transaction
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
             WAIT          = 'X'.
    Regards,
    Deepthi.

    1. If we get error as  "In case of account assignment, please enter acc. assignment data for item" than First cehck whetaher u have authorization to Tcode ME23n or not. In my case, I din't had authorization to Me23n tcode.
    2. If we get Error as "Please Mainatain Services or Limits". Please create a Service PO in the following Order.
    *& Internal Table Declaration
    DATA : i_intern         TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE,
           i_poitem         TYPE STANDARD TABLE OF bapimepoitem,
           i_poitemx        TYPE STANDARD TABLE OF bapimepoitemx,
           i_poaddrdelivery TYPE STANDARD TABLE OF bapimepoaddrdelivery,
           i_poschedule     TYPE STANDARD TABLE OF bapimeposchedule,
           i_poschedulex    TYPE STANDARD TABLE OF bapimeposchedulx,
           i_poaccount      TYPE STANDARD TABLE OF bapimepoaccount,
           i_poaccountx     TYPE STANDARD TABLE OF bapimepoaccountx,
           i_poservices     TYPE STANDARD TABLE OF bapiesllc,
           i_posrvacc       TYPE STANDARD TABLE OF bapiesklc,
           i_extensionin    TYPE STANDARD TABLE OF bapiparex,
           i_return         TYPE STANDARD TABLE OF bapiret2.
    *& Work Area Declaration
    DATA:
          w_poheader       TYPE bapimepoheader,
          w_poheaderx      TYPE bapimepoheaderx,
          w_poitem         TYPE bapimepoitem,
          w_poitemx        TYPE bapimepoitemx,
          w_poaddrdelivery TYPE bapimepoaddrdelivery,
          w_poschedule     TYPE bapimeposchedule,
          w_poschedulex    TYPE bapimeposchedulx,
          w_poaccount      TYPE bapimepoaccount,
          w_poaccountx     TYPE bapimepoaccountx,
          w_poservices     TYPE bapiesllc,
          w_posrvacc       TYPE bapiesklc,
          w_extensionin    TYPE bapiparex,
          w_return         TYPE bapiret2.
    START-OF-SELECTION.
    Header Data
      w_poheader-comp_code = '5791'.  "Company Code
      w_poheader-doc_type = 'Z0CM'.   "Document type
      w_poheader-creat_date = sy-datum.  "lv_date.    "Creation Date
      w_poheader-created_by = sy-uname.    "Creator Name
      w_poheader-vendor = '0005012343'.     "Vendor
      w_poheader-pmnttrms = 'Z004'.   "Payment Terms
      w_poheader-purch_org = 'P000'.  "Purchase Organization
      w_poheader-pur_group = '001'.  "Purchase Group
      w_poheader-ref_1    = '004500007671'.   "OLD PO
      w_poheaderx-comp_code = 'X'.  "Company Code
      w_poheaderx-doc_type = 'X'.   "Document type
      w_poheaderx-creat_date = 'X'.    "Creation Date
      w_poheaderx-created_by = 'X'.
      w_poheaderx-vendor = 'X'.
      w_poheaderx-pmnttrms = 'X'.   "Payment Terms
      w_poheaderx-purch_org = 'X'.  "Purchase Organization
      w_poheaderx-pur_group = 'X'.  "Purchase Group
      w_poheaderx-ref_1 = 'X'.
    Item Data
      w_poitem-po_item = '000010'.
      w_poitem-short_text = 'Z0CM - Default Appr. Test  '.
      w_poitem-plant = '5368'.
      Trackign no
      w_poitem-trackingno = ''.
    Material group
      w_poitem-matl_group = '119'.
      w_poitem-po_unit = 'EA'. "Base Unit of Measure
      w_poitem-net_price = '17500.00'.  "Net Price
      w_poitem-tax_code = 'I0'.
      w_poitem-item_cat = '9'.
      w_poitem-acctasscat = 'K'.
      w_poitem-distrib = space.
    Package must be given in item to create Service PO
      w_poitem-pckg_no = 0000000001.
      APPEND w_poitem TO i_poitem.
      CLEAR: w_poitem.
      w_poitemx-po_item = '000010'.
      w_poitemx-delete_ind = 'X'.
      w_poitemx-short_text = 'X'.
      w_poitemx-plant = 'X'.
      w_poitemx-trackingno = 'X'.
      w_poitemx-matl_group = 'X'.
      w_poitemx-quantity = 'X'.
      w_poitemx-po_unit = 'X'.
      w_poitemx-net_price = 'X'.
      w_poitemx-tax_code = 'X'.
      w_poitemx-item_cat = 'X'.
      w_poitemx-acctasscat = 'X'.
      w_poitemx-distrib = 'X'.
      w_poitemx-pckg_no = 'X'.
      APPEND w_poitemx TO i_poitemx.
      CLEAR: w_poitemx.
    PO Deliery Address
          w_poaddrdelivery-po_item = '000010'.
            w_poaddrdelivery-addr_no = '0000061208'.
            APPEND w_poaddrdelivery TO i_poaddrdelivery.
            CLEAR w_poaddrdelivery.
    POschedule
          w_poschedule-po_item = '000010'..
    DATA : LV_DATE TYPE SY-DATUM,
           lv_schd.
          CLEAR: lv_date.
          CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
            EXPORTING
              date_external            = '12/2/2009'
            IMPORTING
              date_internal            = lv_date
            EXCEPTIONS
              date_external_is_invalid = 1
              OTHERS                   = 2.
          IF NOT lv_date IS INITIAL.
            w_poschedule-del_datcat_ext = 'D'. "Delivery Date in Day Format
            w_poschedule-delivery_date = lv_date.
            w_poschedule-quantity = '1.000'.
            APPEND w_poschedule TO i_poschedule.
            CLEAR w_poschedule.
            lv_schd = 'X'.
          ENDIF.
          w_poschedulex-po_item = '000010'.
          w_poschedulex-del_datcat_ext = 'X'.
          w_poschedulex-delivery_date = 'X'.
          w_poschedulex-quantity = 'X'.
          IF lv_schd = 'X'.
            APPEND w_poschedulex TO i_poschedulex.
            CLEAR : w_poschedulex,
                    lv_schd.
          ENDIF.
    PO Account Assignment
      w_poaccount-po_item = '000010'.
      w_poaccount-serial_no = '01'.
      w_poaccount-distr_perc = ''.
      w_poaccount-quantity = '1.000'.
      w_poaccount-gl_account = '0000603064'.
      w_poaccount-costcenter = '0053680100'.
      w_poaccount-asset_no = ''.
      w_poaccount-wbs_element = ''.
      w_poaccount-network = ''.
      w_poaccount-tax_code = 'I0'.
      w_poaccount-activity = ''.
      APPEND w_poaccount TO i_poaccount.
      CLEAR w_poaccount.
      w_poaccountx-po_item = '000010'.
      w_poaccountx-serial_no = '01'.
      w_poaccountx-distr_perc =  'X'.
      w_poaccountx-quantity = 'X'.
      w_poaccountx-gl_account = 'X'.
      w_poaccountx-costcenter = 'X'.
      w_poaccountx-wbs_element = 'X'.
      w_poaccountx-network = 'X'.
      w_poaccountx-tax_code = 'X'.
      w_poaccountx-activity = 'X'.
      w_poaccountx-cmmt_item = 'X'.
      APPEND w_poaccountx TO i_poaccountx.
      CLEAR w_poaccountx.
    Extension for ZZSub
      w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTING'.
      w_extensionin-valuepart1+0(5) = '00010'..
      w_extensionin-valuepart1+5(2) = '01'.
      w_extensionin-valuepart1+28(5) = ''.
      APPEND w_extensionin TO i_extensionin.
      CLEAR w_extensionin.
      w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTINGX'.
      w_extensionin-valuepart1+0(5) = '00010'.
      w_extensionin-valuepart1+5(2) = '01'.
      w_extensionin-valuepart1+11(1) = 'X'.
      APPEND w_extensionin TO i_extensionin.
      CLEAR w_extensionin.
    Extension to add Expense Type only
      w_extensionin-structure = 'BAPI_TE_MEPOHEADER'.
      w_extensionin-valuepart1+10(4) = '0131'.
      APPEND w_extensionin TO i_extensionin.
      CLEAR w_extensionin.
      w_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.
      w_extensionin-valuepart1+10(4) = 'X'.
      APPEND w_extensionin TO i_extensionin.
      CLEAR w_extensionin.
      EXPORT i_extensionin[] TO MEMORY ID 'SUB'.
    PO Services
    PO Services( One Line Iem)
    Assign the dummy no as Pacakage no
      w_poservices-pckg_no = 0000000001.  "(assign package no as a dummy number)
      w_poservices-line_no = 0000000001.      "Line item
      w_poservices-outl_ind = 'X'.
    Assign Dummy no as sub package no
      w_poservices-subpckg_no = 0000000003.   "(Dummy No.) "Sub package no
      w_poservices-from_line = '1'.
      APPEND w_poservices TO i_poservices.
      CLEAR w_poservices.
    PO Services(Second Line Item )
    Assign the same sub package dummy no which is mentioned above
      w_poservices-pckg_no = 0000000003.   "(Dummy No.) "Sub package no
      w_poservices-line_no = 0000000002.
      w_poservices-ext_line = '0000000010'.     "External line
      w_poservices-quantity = '17500.0'.    "Service Quantity
      w_poservices-base_uom = 'EA'.    "Service Basic unit of Measure
      w_poservices-price_unit = '1'.
      w_poservices-gr_price  = '1'.    "GR Price
      w_poservices-short_text = 'Z0CM - Default Appr. T'.      "Service Short Text
    w_poservices-matl_group = '119'.  "w_src-matkl.  "Material Group
      APPEND w_poservices TO i_poservices.
      CLEAR w_poservices.
    PO Service Access values
      w_posrvacc-pckg_no = 0000000003.  "w_src-sub_packno.  "Sub package no
      w_posrvacc-line_no = 0000000002.  "w_src-srv_line_no. "Line item
      w_posrvacc-serno_line = '01'.
      w_posrvacc-percentage = '100.0'.
      w_posrvacc-serial_no = '01'.
      w_posrvacc-quantity = '17500.0'.  "w_src-srqty.  "Service Quantity
      APPEND w_posrvacc TO i_posrvacc.
      CLEAR w_posrvacc.
      DATA : gv_ebeln TYPE ebeln.
    Call BAPI
      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader          = w_poheader
          poheaderx         = w_poheaderx
        IMPORTING
          exppurchaseorder  = gv_ebeln
        TABLES
          return            = i_return
          poitem            = i_poitem[]
          poitemx           = i_poitemx[]
          poaddrdelivery    = i_poaddrdelivery[]
          poschedule        = i_poschedule[]
          poschedulex       = i_poschedulex[]
          poaccount         = i_poaccount[]
          poaccountx        = i_poaccountx[]
          poservices        = i_poservices[]
          posrvaccessvalues = i_posrvacc[]
          extensionin       = i_extensionin[].
    Commit the Transaction
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      WRITE:/5 gv_ebeln COLOR 5.
      SKIP 2.
      DATA : lv_msg TYPE string.
      LOOP AT i_return INTO w_return WHERE type = 'E'.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id        = w_return-id
            lang      = 'EN'
            no        = w_return-number
            v1        = w_return-message_v1
            v2        = w_return-message_v2
            v3        = w_return-message_v3
            v4        = w_return-message_v4
          IMPORTING
            msg       = lv_msg
          EXCEPTIONS
            not_found = 1
            OTHERS    = 2.
        WRITE:/10 lv_msg.
      ENDLOOP.

  • Service PO for Multiple Acct Assig is not created using BAPI_PO_CREATE1

    Hi,
    Im unable to create the Service po with multiple acct assiignment using BAPI_PO_CREATE1
    Header Data
          w_poheader-comp_code = w_src-bukrs.  "Company Code
          w_poheader-doc_type = w_src-bsart.   "Document type
         w_poheader-delete_ind = w_src-vrtkz. "Deletion Indicator
          CLEAR: lv_date.
          CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
            EXPORTING
              date_external            = w_src-aedat
            IMPORTING
              date_internal            = lv_date
            EXCEPTIONS
              date_external_is_invalid = 1
              OTHERS                   = 2.
          w_poheader-creat_date = lv_date.    "Creation Date
          w_poheader-created_by = sy-uname.    "Creator Name
          w_poheader-vendor = w_src-lifnr.     "Vendor
          w_poheader-pmnttrms = w_src-zterm.   "Payment Terms
          w_poheader-purch_org = w_src-ekorg.  "Purchase Organization
          w_poheader-pur_group = w_src-ekgrp.  "Purchase Group
          w_poheader-ref_1    = w_src-ihrez.   "OLD PO
          w_poheaderx-comp_code = 'X'.  "Company Code
          w_poheaderx-doc_type = 'X'.   "Document type
         w_poheaderx-delete_ind = 'X'.      "Deletion Indicator
          w_poheaderx-creat_date = 'X'.    "Creation Date
          w_poheaderx-created_by = 'X'.
          w_poheaderx-vendor = 'X'.
          w_poheaderx-pmnttrms = 'X'.   "Payment Terms
          w_poheaderx-purch_org = 'X'.  "Purchase Organization
          w_poheaderx-pur_group = 'X'.  "Purchase Group
          w_poheaderx-ref_1 = 'X'.
    Item Data
          w_poitem-po_item = w_src-ebelp.
          IF NOT w_src-elikz IS INITIAL.
            w_poitem-delete_ind = w_src-elikz.
          ENDIF.
          IF NOT w_src-txz01 IS INITIAL.
            w_poitem-short_text = w_src-txz01.
          ENDIF.
          IF NOT w_src-werks IS INITIAL.
            w_poitem-plant = w_src-werks.
          ENDIF.
    Material group
          IF NOT w_src-matkl IS INITIAL.
            w_poitem-matl_group = w_src-matkl.
          ENDIF.
    Open or Partial Qty
          IF w_src-opqty IS  NOT INITIAL.
            w_poitem-quantity = w_src-opqty.
          ELSEIF NOT w_src-paqty IS INITIAL.
            w_poitem-quantity = w_src-paqty.
          ENDIF.
          IF NOT w_src-meins IS INITIAL.
            w_poitem-po_unit = w_src-meins. "Base Unit of Measure
          ENDIF.
          IF NOT w_src-netpr IS INITIAL.
            w_poitem-net_price = w_src-netpr.  "Net Price
          ENDIF.
          IF NOT w_src-mwskz IS INITIAL.
            w_poitem-tax_code = w_src-mwskz.
          ENDIF.
          IF NOT w_src-pstyp IS INITIAL.
            w_poitem-item_cat = w_src-pstyp.
          ENDIF.
          IF NOT w_src-knttp IS INITIAL.
            w_poitem-acctasscat = w_src-knttp.
          ENDIF.
          w_src-vrtkz = '2'.    "Added
          IF NOT w_src-vrtkz IS INITIAL.
            w_poitem-distrib = w_src-vrtkz.
          ENDIF.
    Package No
          IF w_src-srv_line_no EQ '2'.
            w_poitem-pckg_no = 0000000001. "Assign dummy package no "w_src-packno.  "Package no
          ELSEIF w_src-srv_line_no EQ '3'.
            w_poitem-pckg_no = 0000000004. "Assign dummy package no "w_src-packno.  "Package no
          ENDIF.
          IF w_poitem-delete_ind IS INITIAL AND
             w_poitem-short_text IS INITIAL AND
             w_poitem-plant IS INITIAL AND
             w_poitem-matl_group IS INITIAL AND
             w_poitem-quantity IS INITIAL AND
             w_poitem-po_unit IS INITIAL AND
             w_poitem-net_price IS INITIAL AND
             w_poitem-tax_code IS INITIAL.
            CLEAR lv_item.
          ELSE.
            APPEND w_poitem TO i_poitem.
            CLEAR: w_poitem.
            lv_item = 'X'.
          ENDIF.
          w_poitemx-po_item = w_src-ebelp.
          w_poitemx-delete_ind = 'X'.
          w_poitemx-short_text = 'X'.
          w_poitemx-plant = 'X'.
          w_poitemx-matl_group = 'X'.
          w_poitemx-quantity = 'X'.
          w_poitemx-po_unit = 'X'.
          w_poitemx-net_price = 'X'.
          w_poitemx-tax_code = 'X'.
          w_poitemx-item_cat = 'X'.
          w_poitemx-acctasscat = 'X'.
          w_poitemx-distrib = 'X'.
          w_poitemx-pckg_no = 'X'.
          IF lv_item = 'X'.
            APPEND w_poitemx TO i_poitemx.
            CLEAR: w_poitemx,
                   lv_item.
          ENDIF.
    PO Deliery Address
          w_poaddrdelivery-po_item = w_src-ebelp.
          IF NOT w_src-adrn2 IS INITIAL.
            w_poaddrdelivery-addr_no = w_src-adrn2.
            APPEND w_poaddrdelivery TO i_poaddrdelivery.
            CLEAR w_poaddrdelivery.
          ENDIF.
    POschedule
          w_poschedule-po_item = w_src-ebelp.
       w_poschedule-SCHED_LINE = w_src-
          CLEAR: lv_date.
          CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
            EXPORTING
              date_external            = w_src-eindt
            IMPORTING
              date_internal            = lv_date
            EXCEPTIONS
              date_external_is_invalid = 1
              OTHERS                   = 2.
          IF NOT lv_date IS INITIAL.
            w_poschedule-del_datcat_ext = 'D'. "Delivery Date in Day Format
            w_poschedule-delivery_date = lv_date.
            w_poschedule-quantity = w_src-menge.
            APPEND w_poschedule TO i_poschedule.
            CLEAR w_poschedule.
            lv_schd = 'X'.
          ENDIF.
          w_poschedulex-po_item = w_src-ebelp.
       w_poschedule-SCHED_LINE = 'X'.
          w_poschedulex-del_datcat_ext = 'X'.
          w_poschedulex-delivery_date = 'X'.
          w_poschedulex-quantity = 'X'.
          IF lv_schd = 'X'.
            APPEND w_poschedulex TO i_poschedulex.
            CLEAR : w_poschedulex,
                    lv_schd.
          ENDIF.
    PO Account Assignment
          w_poaccount-po_item = w_src-ebelp.
          w_poaccount-serial_no = w_src-zekkn.
    Distribution Indicator is 1
          IF w_src-vrtkz EQ '1'.
            w_poaccount-distr_perc = w_src-vproz.
            IF NOT w_src-menge IS INITIAL.
              CLEAR lv_menge.
              lv_menge = w_src-menge.
            ENDIF.
            lv_acct_qty = lv_menge * w_src-vproz / 100.
    Get Round value of Quanity
            frac = FRAC( lv_acct_qty ).
            IF frac EQ 0.
              lv_acct_qty = FLOOR( lv_acct_qty ).
            ELSE.
              lv_acct_qty = CEIL( lv_acct_qty ).
            ENDIF.
            w_poaccount-quantity = lv_acct_qty.
          ELSEIF w_src-vrtkz IS INITIAL.
            w_poaccount-quantity = w_src-menge.
          ENDIF.
      w_poaccount-quantity = w_src-menge.    "added
          w_poaccount-gl_account = w_src-saknr.
          w_poaccount-costcenter = w_src-kostl.
          w_poaccount-asset_no = w_src-anln1.
          w_poaccount-wbs_element = w_src-wbs.
          w_poaccount-network = w_src-nplnr.
          w_poaccount-tax_code = w_src-mwskz.
          w_poaccount-activity = w_src-vornr.
          APPEND w_poaccount TO i_poaccount.
          CLEAR w_poaccount.
          w_poaccountx-po_item = w_src-ebelp.
          w_poaccountx-serial_no = w_src-zekkn.
          IF w_src-vrtkz EQ '1'.
            w_poaccountx-distr_perc =  'X'.
          ENDIF.
          w_poaccountx-quantity = 'X'.
          w_poaccountx-gl_account = 'X'.
          w_poaccountx-costcenter = 'X'.
          w_poaccountx-wbs_element = 'X'.
          w_poaccountx-network = 'X'.
          w_poaccountx-tax_code = 'X'.
          w_poaccountx-activity = 'X'.
          w_poaccountx-cmmt_item = 'X'.
          APPEND w_poaccountx TO i_poaccountx.
          CLEAR w_poaccountx.
    Extension for ZZSub
          IF NOT w_src-zzsub IS INITIAL.
            w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTING'.
            w_extensionin-valuepart1+0(5) = w_src-ebelp.
            w_extensionin-valuepart1+5(2) = '01'.
            w_extensionin-valuepart1+28(5) = w_src-zzsub.
            APPEND w_extensionin TO i_extensionin.
            CLEAR w_extensionin.
            w_extensionin-structure = 'BAPI_TE_MEPOACCOUNTINGX'.
            w_extensionin-valuepart1+0(5) = w_src-ebelp.
            w_extensionin-valuepart1+5(2) = '01'.
            w_extensionin-valuepart1+11(1) = 'X'.
            APPEND w_extensionin TO i_extensionin.
            CLEAR w_extensionin.
          ENDIF.
    Extension to add Expense Type only
          IF NOT  w_src-zzexptype IS INITIAL.
            w_extensionin-structure = 'BAPI_TE_MEPOHEADER'.
            w_extensionin-valuepart1+10(4) = w_src-zzexptype.
            APPEND w_extensionin TO i_extensionin.
            CLEAR w_extensionin.
            w_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.
            w_extensionin-valuepart1+10(4) = 'X'.
            APPEND w_extensionin TO i_extensionin.
            CLEAR w_extensionin.
          ENDIF.
          EXPORT i_extensionin[] TO MEMORY ID 'SUB'.
    PO Services( One Line Iem)
          IF w_src-srv_line_no EQ '2'.
            w_poservices-pckg_no = 0000000001.  "w_src-packno. "(assign package no as a dummy number)
            w_poservices-line_no = 0000000001.  "w_src-srv_line_no.    "Line item
            w_poservices-outl_ind = 'X'.
            w_poservices-subpckg_no = 0000000003.  "w_src-sub_packno. "(Dummy No.) "Sub package no
         w_poservices-quantity = w_src-srqty.  "Service Quantity
         w_poservices-base_uom = w_src-srmeins.  "Service Basic unit of Measure
         w_poservices-price_unit = '1'.
            w_poservices-from_line = '1'.
         w_poservices-gr_price  = w_src-brtwr.  "GR Price
         w_poservices-short_text = w_src-sh_text1.    "Service Short Text
            APPEND w_poservices TO i_poservices.
            CLEAR w_poservices.
    PO Services(Second Line Item )
            w_poservices-pckg_no = 0000000003.  "w_src-sub_packno. "(Dummy No.) "Sub package no
            w_poservices-line_no = 0000000002.
            w_poservices-ext_line = w_src-extrow.    "External line
            w_poservices-quantity = w_src-srqty.  "Service Quantity
            w_poservices-base_uom = w_src-srmeins.  "Service Basic unit of Measure
            w_poservices-price_unit = '1'.
            w_poservices-gr_price  = w_src-brtwr.  "GR Price
            w_poservices-short_text = w_src-sh_text1.    "Service Short Text
            APPEND w_poservices TO i_poservices.
            CLEAR w_poservices.
    PO Service Access values
            w_posrvacc-pckg_no = 0000000003.  "w_src-sub_packno.  "Sub package no
            w_posrvacc-line_no = 0000000002.  "w_src-srv_line_no. "Line item
            w_posrvacc-serno_line = w_src-zekkn.                "'01'.
            IF w_src-vproz IS INITIAL.
              w_posrvacc-percentage = '100.0'.
            ENDIF.
            w_posrvacc-serial_no = '01'.
            w_posrvacc-quantity = w_src-srqty.  "Service Quantity
            APPEND w_posrvacc TO i_posrvacc.
            CLEAR w_posrvacc.
          ELSEIF w_src-srv_line_no EQ '3'.
    PO Services
            if w_src-srv_line_no EQ '2'.
            w_poservices-pckg_no = 0000000004.  "(assign package no as a dummy number)
            w_poservices-line_no = 0000000001.  "Line item
            w_poservices-outl_ind = 'X'.
            w_poservices-subpckg_no = 0000000005.  "(Dummy No.) "Sub package no
            w_poservices-from_line = '1'.
            APPEND w_poservices TO i_poservices.
            CLEAR w_poservices.
            w_poservices-pckg_no = 0000000005.  "w_src-sub_packno. "(Dummy No.) "Sub package no
            w_poservices-line_no = 0000000002.
            w_poservices-ext_line = w_src-extrow.    "External line
            w_poservices-quantity = w_src-srqty.  "Service Quantity
            w_poservices-base_uom = w_src-srmeins.  "Service Basic unit of Measure
            w_poservices-price_unit = '1'.
            w_poservices-gr_price  = w_src-brtwr.  "GR Price
            w_poservices-short_text = w_src-sh_text1.    "Service Short Text
            APPEND w_poservices TO i_poservices.
            CLEAR w_poservices.
            endif.
            if  w_src-srv_line_no EQ '3'.
            w_poservices-pckg_no = 0000000005.  "w_src-sub_packno. "(Dummy No.) "Sub package no
            w_poservices-line_no = 0000000003.
            w_poservices-ext_line = w_src-extrow.    "External line
            w_poservices-quantity = w_src-srqty.  "Service Quantity
            w_poservices-base_uom = w_src-srmeins.  "Service Basic unit of Measure
            w_poservices-price_unit = '1'.
            w_poservices-gr_price  = w_src-brtwr.  "GR Price
            w_poservices-short_text = w_src-sh_text1.    "Service Short Text
            APPEND w_poservices TO i_poservices.
            CLEAR w_poservices.
            endif.
    PO Service Access values
           if  w_src-srv_line_no EQ '2'.
            w_posrvacc-pckg_no = 0000000005.  "w_src-sub_packno.  "Sub package no
            w_posrvacc-line_no = 0000000002.  "w_src-srv_line_no. "Line item
            w_posrvacc-serno_line = '01'.
            w_posrvacc-percentage = '100.0'.
            w_posrvacc-serial_no = '01'.    "w_src-zekkn.
            w_posrvacc-quantity = w_src-srqty.  "Service Quantity
            APPEND w_posrvacc TO i_posrvacc.
            CLEAR w_posrvacc.
            endif.
            if  w_src-srv_line_no EQ '3'.
            w_posrvacc-pckg_no = 0000000005.  "w_src-sub_packno.  "Sub package no
            w_posrvacc-line_no = 0000000003.  "w_src-srv_line_no. "Line item
            w_posrvacc-serno_line = '01'.
            w_posrvacc-percentage = '100.0'.
            w_posrvacc-serial_no = '02'.  "w_src-zekkn.  "'01'.
            w_posrvacc-quantity = w_src-srqty.  "Service Quantity
            APPEND w_posrvacc TO i_posrvacc.
            CLEAR w_posrvacc.
            endif.
          ENDIF.
        ENDIF.
    ***Create a NEW PO
    Call BAPI
          CALL FUNCTION 'BAPI_PO_CREATE1'
            EXPORTING
              poheader          = w_poheader
              poheaderx         = w_poheaderx
              TESTRUN           = ' '
            IMPORTING
              exppurchaseorder  = gv_ebeln
            TABLES
              return            = i_return
              poitem            = i_poitem[]
              poitemx           = i_poitemx[]
              poaddrdelivery    = i_poaddrdelivery[]
              poschedule        = i_poschedule[]
              poschedulex       = i_poschedulex[]
              poaccount         = i_poaccount[]
              poaccountx        = i_poaccountx[]
              poservices        = i_poservices[]
              posrvaccessvalues = i_posrvacc[]
              extensionin       = i_extensionin[].
    Commit the Transaction
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
    Regards,
    Deepthi.

    it is solved

  • BAPI_PO_CREATE1 missing GL a/c no. and cost center in every 100th PO line item

    We have a strange issue. We are creating Service Purchase Orders by using BAPI_PO_CREATE1 function module. The source for creating PO is a Z table wherein it contains approximately 1000 records. We create one PO per Vendor and all POs are creating successfully but strangely GL account number and cost centers are missing in every 100, 200, 300, 400, 500, etc. line items and have NO issue with other line items. Our purchase order line item interval is 1 which means at every 100th line item we have an issue in missing GL account number and cost centers. We also checked by changing line item interval to '10' and still we have issue at every 1000th line item.
    We searched for OSS notes but no luck. Did anyone come across this kind of issue ? Could you please advise.
    Regards,
    Krish

    you can either share your code and your source file to have the people check if the error is on your part or you can directly contact SAP if you are the opinion that it is an error in their BAPI code.
    But without looking at code and source file it is not possible to do any evaluation except you are looking for clairvoyants

  • BAPI_PO_CREATE1 multiple schedule lines cann't create ECC500

    Dear all:
       I want to use BAPI_PO_CREATE1 to create more than one purchase order schedule item for a purchase order item .However, the system either posts the first purchase order schedule line or the BAPI terminates the posting with an error message. I have found SAP NOTES (828582) try to solve the problem . But it was no use.
       My SAP system component information is SAP_APPL     500     0012     SAPKH50012 .
       I attach test program as follows:
       REPORT  ZPO_CREATE.
    DATA: HEADER LIKE BAPIMEPOHEADER,
          HEADERX LIKE BAPIMEPOHEADERX,
          EXPHEADER LIKE BAPIMEPOHEADER,
          TESTRUN  LIKE BAPIFLAG-BAPIFLAG,
          ITEM LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,
          ITEMX LIKE BAPIMEPOITEMX OCCURS 0 WITH HEADER LINE,
          POSCHEDULE LIKE BAPIMEPOSCHEDULE OCCURS 0 WITH HEADER LINE,
          POSCHEDULEX LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE,
          POTEXTHEADER LIKE BAPIMEPOTEXTHEADER OCCURS 0 WITH HEADER LINE,
          POTEXTITEM LIKE BAPIMEPOTEXT OCCURS 0 WITH HEADER LINE,
          RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
    START-OF-SELECTION.
    *<<<< HEADER
      HEADER-COMP_CODE = '1000'.
      HEADER-DOC_TYPE = 'NB'.
      HEADER-CREAT_DATE = SY-DATUM.
      HEADER-CREATED_BY = SY-UNAME.
      HEADER-VENDOR = '0000000063'.
      HEADER-LANGU = SY-LANGU.
      HEADER-PURCH_ORG = '1000'.
      HEADER-PUR_GROUP = '100'.
      HEADER-CURRENCY = 'RMB'.
      HEADER-DOC_DATE = SY-DATUM.
      HEADERX-COMP_CODE = 'X'.
      HEADERX-DOC_TYPE = 'X'.
      HEADERX-CREAT_DATE = 'X'.
      HEADERX-CREATED_BY = 'X'.
      HEADERX-VENDOR = 'X'.
      HEADERX-LANGU = 'X'.
      HEADERX-PURCH_ORG = 'X'.
      HEADERX-PUR_GROUP = 'X'.
      HEADERX-CURRENCY = 'X'.
      HEADERX-DOC_DATE = 'X'.
    <<<< ITEM
      CLEAR ITEM.
      ITEM-PO_ITEM = '00010'.
      ITEM-MATERIAL = 'K01060'.
      ITEM-PLANT = '1000'.
      ITEM-QUANTITY = 20.
      ITEM-PO_UNIT = 'LIN'.
      ITEM-NET_PRICE = 310.
      ITEM-TAX_CODE = 'J2'.
      ITEM-PO_PRICE = 1.
      ITEM-FINAL_INV = 'X'.
      ITEM-IR_IND = 'X'.
      APPEND ITEM.
      ITEMX-PO_ITEM = '00010'.
      ITEMX-MATERIAL = 'X'.
      ITEMX-PLANT = 'X'.
      ITEMX-QUANTITY = 'X'.
      ITEMX-PO_UNIT = 'X'.
      ITEMX-NET_PRICE = 'X'.
      ITEMX-TAX_CODE = 'X'.
      ITEMx-PO_PRICE = 'X'.
      ITEMX-FINAL_INV = 'X'.
      ITEMX-IR_IND = 'X'.
      APPEND ITEMX.
    **************schedule lines   doesn't effect or make error when post po
    POSCHEDULE-PO_ITEM = 10 .
    POSCHEDULE-SCHED_LINE = 1.
    POSCHEDULE-DELIVERY_DATE = SY-DATUM .
    POSCHEDULE-QUANTITY = 5 .
    APPEND POSCHEDULE.
    POSCHEDULE-PO_ITEM = 10 .
    POSCHEDULE-SCHED_LINE = 2 .
    POSCHEDULE-DELIVERY_DATE = SY-DATUM .
    POSCHEDULE-QUANTITY = 15 .
    APPEND POSCHEDULE.
    POSCHEDULEX-PO_ITEM = 10 .
    POSCHEDULEX-SCHED_LINE = 1.
    POSCHEDULEX-DELIVERY_DATE = 'X' .
    POSCHEDULEX-QUANTITY = 'X' .
    APPEND POSCHEDULEX.
    POSCHEDULEX-PO_ITEM = 10 .
    POSCHEDULEX-SCHED_LINE = 2.
    POSCHEDULEX-DELIVERY_DATE = 'X' .
    POSCHEDULEX-QUANTITY = 'X' .
    APPEND POSCHEDULEX.
    CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          POHEADER                     = HEADER
          POHEADERX                    = HEADERX
          NO_PRICE_FROM_PO             = 'X'
        IMPORTING
         EXPHEADER                    = EXPHEADER
        TABLES
          RETURN                      = RETURN
         POITEM                       = ITEM
         POITEMX                      = ITEMX
         POSCHEDULE                   = POSCHEDULE
         POSCHEDULEX                  = POSCHEDULEX 
      LOOP AT RETURN .
        WRITE : /  RETURN-TYPE,
                   RETURN-ID,
                   RETURN-NUMBER,
                   RETURN-MESSAGE.
        CLEAR RETURN.
      ENDLOOP.
      IF NOT EXPHEADER IS INITIAL.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'  .
      ENDIF.
      I am full of grateful for you can solve my problem . Thanks a lot!
      Best regards.
                                       Daniel fu  2006-08-27

    I guess u need to add
    POSCHEDULEX-PO_ITEMX = X.
    before appending the table Parameter POSCHEDULEX
    One for each append statement on table internal table POSCHEDULEX
    Regards
    Alok Pathak

  • Not updating G/L account and cost center with BAPI BAPI_PO_CREATE1

    Hello Friends,
    The two fields G/L ACCOUNT and Cost Center is not updated using BAPI BAPI_PO_CREATE1. I am unable to understand why? This is what i am passing to account assignment structure( POACCOUNT). Filled POACCOUNTX structre as well. I have passed company code at the header level.
    PO_ITEM = 00010
    SERIAL_NO = 01
    CREAT_DATE = sy-datum
    GL_ACCOUNT = 621000
    COSTCENTER = 1000
    CO_AREA = 4000
    Please let me know why it is not updating anything i missed while passing?
    2>I need to update GR quantity but this field is not available in the BAPI ..Please let me know how to update this field.
    Any help is highly appreciated.
    Regards,
    Raj

    Hi, I have a problem I use the bapi BAPI_PO_CREATE1, I pass the table pt_poaccount in the parameter poaccount but the bapi when register my purchase order doesn't register correctly the values KOSTL, AUFNR, PS_PSP_PNR, NPLNR of the tablepoaccount and register the default values of the contract. Please i need help with this.
    CLEAR s_poaccount.
         s_poaccount-po_item     = <fs_datos>-ebelp.
         s_poaccount-serial_no   = w_serial.
         s_poaccount-costcenter  = <fs_datos>-kostl.
         s_poaccount-orderid     = <fs_datos>-aufnr.
         s_poaccount-wbs_element = <fs_datos>-ps_psp_pnr.
         s_poaccount-network     = <fs_datos>-nplnr.
         s_poaccount-activity    = <fs_datos>-vornr.
         s_poaccount-quantity    = <fs_datos>-menge.
         s_poaccount-net_value   = <fs_datos>-brtwr.
         s_poaccount-creat_date  = sy-datum.          
         s_poaccount-itm_number  = <fs_datos>-ebelp.  
         s_poaccount-co_area = '1001'.               
         APPEND s_poaccount TO pt_poaccount.
    CLEAR s_poaccountx.
         s_poaccountx-po_item     = <fs_datos>-ebelp.
         s_poaccountx-serial_no   = w_serial.
         s_poaccountx-po_itemx = 'X'.
         s_poaccountx-serial_nox = 'X'.
         s_poaccountx-creat_date = 'X'.
         s_poaccountx-itm_number = 'X'.
         s_poaccountx-co_area = 'X'.
         s_poaccountx-costcenter = 'X'.
         s_poaccountx-orderid = 'X'.
         s_poaccountx-wbs_element = 'X'.
         s_poaccountx-network = 'X'.
         s_poaccountx-activity = 'X'.
         s_poaccountx-quantity = 'X'.
         s_poaccountx-net_value = 'X'.
         APPEND s_poaccountx TO  pt_poaccountx.
    CALL FUNCTION 'BAPI_PO_CREATE1'
         EXPORTING
           poheader          = pe_poheader
           poheaderx         = pe_poheaderx
         IMPORTING
           exppurchaseorder  = pi_exppurchaseorder
         TABLES
           return             = pt_return
           poitem           = pt_poitem
           poitemx         = pt_poitemx
           poschedule    = pt_poschedule
           poschedulex  = pt_poschedulex
           poaccount      = pt_poaccount
           poaccountx    = pt_poaccountx
           poservices     = pt_poservices
           posrvaccessvalues = pt_posrvaccessvalues.
    The BAPI is register with these values as default however i pass other values in table
    pt_poaccount

  • BAPI_PO_CREATE1 in background

    Hi,
    How to suppress the E and A type messages from BAPI_PO_CREATE1 in the background to avoid that messages in Job log?
    Ie. I want to avoid those messages which is automatically written to Job log in background mode.
    I will process the return table and then will write the relevant messages to the job log.
    Can anyone help?
    Deepu

    What currently happening is i have used this BAPI_PO_CREATE1 in one program.
    We can excecute the program either in foreground or background.
    In foreground the errors are written to a list.<b>--->good</b>
    In backgroung the errors are written to the Job log from the program, but what is actually happening is from BAPI_PO_CREATE1 all the E and A type messages are automatically logged into Job log and I wanted to avoid that.--->u can skip if it is back ground
    <b>if sy-batch = 'X'.
    dont display errors.
    else.
    errors.
    endif.</b>
    I will write the error log depending on my requirement.
    now irrespective of my error log some other messages are also comming in the error log from BAPI_PO_CREATE1 in background.
    I wanted to avoid those messages populating from the BAPI in the background.
    <b>But question is : how to u come to know which records got uploaded into SAP ? how to u recorrect errrors?</b>
    Regards
    Prabhu

  • Creating Service PO using BAPI_PO_CREATE1

    Hi gurus,
    I am trying to create a PO with service lines using BAPI_PO_CREATE1 but am getting the following errror even though i have passed values to the structures POSERVICES POSRVACCESSVALUES and POACCOUNT along with item and header details:
    Please maintain services or limits
    Please suggest what are the basic details that need to be passed to the structures for creating a PO with service lines.

    Hi,
    You need to use Package Number to link the services with the item. Check the tables like ESKN to know how the linking works with your existing data.
    There are lot of posts related to this. Please do a search to get detailed answers. Thanks for your patience!!
    Regards,
    Yogesh

  • Creation of invoicing plan while creating the PO using BAPI_PO_CREATE1

    Hi, basically I'm creating a PO using BAPI_PO_CREATE1 and then creating Invoicing plan thru ME22 using BDC.
    Could anyone please help me if there is any possibility of creation of invoicing plan while creating the PO itself using BAPI_PO_CREATE1.
    thanks in advance.

    Hi,
    Have you tried filling up the invoicing plan related tables of the bapi ?
    *"      INVPLANHEADER STRUCTURE  BAPI_INVOICE_PLAN_HEADER OPTIONAL
    *"      INVPLANHEADERX STRUCTURE  BAPI_INVOICE_PLAN_HEADERX OPTIONAL
    *"      INVPLANITEM STRUCTURE  BAPI_INVOICE_PLAN_ITEM OPTIONAL
    *"      INVPLANITEMX STRUCTURE  BAPI_INVOICE_PLAN_ITEMX OPTIONAL
    Regards.

  • Error in PO using  BAPI_PO_CREATE1

    Hi ,
    I got a error in the po  that in my template the netpr is 8.00 but in the output always displaying the amount 1.00 only in POITEM-NET_PRICE.even i change in the template different values but no change in the output.why like this and how to solve this.
    Thanks,
    Regards,
    Rajendra.

    Hi Eswar,
           Below is the code,
    tables: T100.
    DATA : POHEADER         LIKE BAPIMEPOHEADER ,    
           POHEADERX        LIKE BAPIMEPOHEADERX,   
           POITEM           LIKE BAPIMEPOITEM     OCCURS 0 WITH HEADER LINE,
           POITEMX          LIKE BAPIMEPOITEMX    OCCURS 0 WITH HEADER LINE,
           POSCHEDULE       LIKE BAPIMEPOSCHEDULE OCCURS 0 WITH HEADER LINE,
           POSCHEDULEX      LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE,
           POACCOUNT        LIKE BAPIMEPOACCOUNT  OCCURS 0 WITH HEADER LINE,
           POACCOUNTX       LIKE BAPIMEPOACCOUNTX OCCURS 0 WITH HEADER LINE,
           POCOND           LIKE BAPIMEPOCOND     OCCURS 0 WITH HEADER LINE,
           POCONDX          LIKE BAPIMEPOCONDX    OCCURS 0 WITH HEADER LINE,
           RETURN           LIKE BAPIRET2         OCCURS 0 WITH HEADER LINE,
           EXPPURCHASEORDER LIKE BAPIMEPOHEADER-PO_NUMBER.
           POHEADER-COMP_CODE = '2006'.
    DATA : BEGIN OF DATA_TAB OCCURS 0,
               BSART(4)  TYPE C,
               LIFNR(10) TYPE C,
               EKORG(4)  TYPE C,
               EKGRP(3)  TYPE C,
               EBELP(5)  TYPE C,
               MATNR(18) TYPE C,
               MAKTX(40) TYPE C,
               WERKS(4)  TYPE C,
               CHARG(10) TYPE C,
               BEDNR(10) TYPE C,
               PSTYP(1)  TYPE C,
               KNTTP(1)  TYPE C,
               ANLN1(12) TYPE C,
               ANLN2(4)  TYPE C,
               AUFNR(12) TYPE C,
               PS_PSP_PNR(8) TYPE C,
               EINDT(8)  TYPE C,
               WAERS(5)  TYPE C,
               NETPR(11) TYPE C,
               WKURS(9)  TYPE C,
               BEDAT(8)  TYPE C,
               SAKTO(10) TYPE C,
               KOSTL(10) TYPE C,
               MENGE(13) TYPE C,
               MEINS(3)  TYPE C,
               KWERT(13) TYPE C,
               KSCHL(4)  TYPE C,
            END OF DATA_TAB.
    Data
    DATA : wc_file    type string,
           wc_tabix   like sy-tabix,
           wc_fl(40)  type c,
           wc_tot(19) type n.
    data: i_tab1        like alsmex_tabline occurs 0 with header line,
         w_Data_tab    like Data_tab occurs 0 with header line,
          w_Data_tab    like Data_tab,
          w_totlines    type i,
          w_end_col     type i.
    DATA : C_X(1) TYPE c VALUE 'X'.
    DATA : W_ERRSTAT(18)   TYPE C.
    DATA : W_ERRMSG(18)    TYPE C.
    DATA : I_EKKO LIKE EKKO OCCURS 0 WITH HEADER LINE.
    DATA : BEGIN OF I_RETURN OCCURS 0.
    DATA : EBELN   LIKE EKKO-EBELN.
            INCLUDE STRUCTURE DATA_TAB.
    DATA : MESSAGE LIKE RETURN-MESSAGE.
    DATA : END OF I_RETURN.
    ALV
    type-pools: slis.
    data: txt_report          like dokhl-object. "Reportname für Erläuterungsaufruf
    data: gt_fieldcat         type slis_t_fieldcat_alv,
          gt_events           type slis_t_event,
          gt_sort             type slis_t_sortinfo_alv,
          gt_list_top_of_page type slis_t_listheader,
          gs_layout           type slis_layout_alv.
    *Parameters
    selection-screen begin of block mysel1 with frame.
    parameters: pc_file like rlgrap-filename.  " obligatory default 'C:'." default 'C:mat.xls'.
    selection-screen end of block mysel1.
    *AT SELECTION-SCREEN
    at selection-screen on pc_file.
    call function 'WS_QUERY'
           exporting
                query    = 'FL'
                filename = pc_file
           importing
                return   = wc_fl.
           condense wc_fl no-gaps.
        if wc_fl eq space.
          message e009 raising pc_file.
           exit.
        endif.
    at selection-screen on value-request for pc_file.
                   wc_file = pc_file.
    call function 'WS_FILENAME_GET'
         exporting
               mask        = ' '
               title       = text-001
        importing
               filename    = pc_file
        exceptions
          inv_winsys       = 1
          no_batch         = 2
          selection_cancel = 3
          selection_error  = 4
          others           = 5.
    SELECTION-SCREEN
    start-of-selection.
              perform 1000_getfile.
              perform 2000_process_bapi.
              perform fieldcat_init  using gt_fieldcat[].
              perform layout_init    using gs_layout.
              perform comment_build  using gt_list_top_of_page[].
              perform eventtab_build using gt_events[].
              PERFORM sort_build     USING gt_sort[].
              perform 3000_updation_log.
       end-of-selection.
    *&      Form  1000_getfile
          text
    -->  p1        text
    <--  p2        text
    FORM 1000_getfile .
    *w_data_tab = data_tab.
    Get the No of Rows in the file
                      CALL FUNCTION 'AA_FILE_UPLOAD_EXCEL'
                        EXPORTING
                          I_FILENAME                 = pc_file
                        I_TEST                     =
                        I_UCOMM                    =
                        I_MAXCOLS                  =
                         I_DELIMITER                = ','
                        TABLES
                          ET_FILECONTENT             = DATA_TAB
                       EXCEPTIONS
                         ERROR_ACCESSING_FILE       = 1
                         OTHERS                     = 2
                      IF SY-SUBRC <> 0.
                         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
                      ENDIF.
         describe table Data_tab lines w_totlines.
         w_end_col = 27.
        w_totlines = 1.
    Upload the data from file to Internal Table
         refresh Data_tab.
       call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
             exporting
                  filename    = pc_file
                  i_begin_col = 1 " Starting col on each row from the upload excel file
                  i_begin_row = 4 " Starting row from the upload excel file
                  i_end_col   = w_end_col " No. of columns in the upload excel file
                  i_end_row   = w_totlines " Possible no. of rows in the upload excel file
             tables
                   intern     = i_tab1
             exceptions
                   inconsistent_parameters = 1
                   upload_ole              = 2
                   others                  = 3.
             endif.
        sort i_tab1 by row col.
        loop at i_tab1.
           case i_tab1-col.
          when 1.
             clear w_Data_tab.
              move i_tab1-value to w_Data_tab-bsart.
          when 2.
              move i_tab1-value to w_Data_tab-lifnr.
          when 3.
              move i_tab1-value to w_Data_tab-ekorg.
          when 4.
              move i_tab1-value to w_Data_tab-ekgrp.
          when 5.
              move i_tab1-value to w_Data_tab-ebelp.
          when 6.
              move i_tab1-value to w_Data_tab-matnr.
          when 7.
              move i_tab1-value to w_Data_tab-maktx.
          when 8.
              move i_tab1-value to w_Data_tab-werks.
          when 9.
              move i_tab1-value to w_Data_tab-charg.
          when 10.
              move i_tab1-value to w_Data_tab-bednr.
          when 11.
              move i_tab1-value to w_Data_tab-pstyp.
          when 12.
              move i_tab1-value to w_Data_tab-knttp.
          when 13.
              move i_tab1-value to w_Data_tab-anln1.
          when 14.
              move i_tab1-value to w_Data_tab-anln2.
          when 15.
              move i_tab1-value to w_Data_tab-aufnr.
          when 16.
              move i_tab1-value to w_Data_tab-ps_psp_pnr.
          when 17.
              move i_tab1-value to w_Data_tab-eindt.
          when 18.
              move i_tab1-value to w_Data_tab-waers.
          when 19.
              move i_tab1-value to w_Data_tab-netpr.
          when 20.
              move i_tab1-value to w_Data_tab-wkurs.
          when 21.
              move i_tab1-value to w_Data_tab-bedat.
          when 22.
              move i_tab1-value to w_Data_tab-sakto.
          when 23.
              move i_tab1-value to w_Data_tab-kostl.
          when 24.
              move i_tab1-value to w_Data_tab-menge.
          when 25.
              move i_tab1-value to w_Data_tab-meins.
          when 26.
              move i_tab1-value to w_Data_tab-kwert.
          when 27.
              move i_tab1-value to w_Data_tab-kschl.
         endcase.
            at end of row.
              append w_Data_tab to Data_tab.
              clear  w_Data_tab.
             endat.
        endloop.
              clear wc_tot.
              describe table Data_tab lines wc_tot.
    ENDFORM.                                      " 1000_getfile
    *&      Form  2000_process_bapi
          text
    -->  p1        text
    <--  p2        text
    FORM 2000_process_bapi .
    LOOP AT DATA_TAB.
      POHEADER-DOC_TYPE   = DATA_TAB-BSART.
      POHEADER-VENDOR     = DATA_TAB-LIFNR.
      POHEADER-PURCH_ORG  = DATA_TAB-EKORG.
      POHEADER-PUR_GROUP  = DATA_TAB-EKGRP.
      POHEADER-DOC_DATE   = DATA_TAB-BEDAT.
      POHEADER-EXCH_RATE  = DATA_TAB-WKURS.
      POHEADER-CURRENCY   = DATA_TAB-WAERS.
    APPEND POHEADER.
      POHEADERX-DOC_TYPE   = 'X'.
      POHEADERX-VENDOR     = 'X'.
      POHEADERX-PURCH_ORG  = 'X'.
      POHEADERX-PUR_GROUP  = 'X'.
      POHEADERX-DOC_DATE   = 'X'.
      POHEADERX-EXCH_RATE  = 'X'.
      POHEADERX-CURRENCY   = 'X'.
    APPEND POHEADERX.
      POITEM-PO_ITEM        = DATA_TAB-EBELP.
      POITEM-MATERIAL       = DATA_TAB-MATNR.
    POITEM-SHORT_TEXT     = DATA_TAB-MAKTX.
      POITEM-PLANT          = DATA_TAB-WERKS.
      POITEM-BATCH          = DATA_TAB-CHARG.
      POITEM-TRACKINGNO     = DATA_TAB-BEDNR.
      POITEM-ITEM_CAT       = DATA_TAB-PSTYP.
      POITEM-ACCTASSCAT     = DATA_TAB-KNTTP.
      POITEM-NET_PRICE      = DATA_TAB-NETPR.
      POITEM-QUANTITY       = DATA_TAB-MENGE.
      POITEM-PO_UNIT        = DATA_TAB-MEINS.
    APPEND POITEM.
      POITEMX-PO_ITEM             = DATA_TAB-EBELP.
    POITEMX-PO_ITEM        = 'X'.
      POITEMX-MATERIAL       = 'X'.
    POITEMX-SHORT_TEXT     = 'X'.
      POITEMX-PLANT          = 'X'.
      POITEMX-BATCH          = 'X'.
      POITEMX-TRACKINGNO     = 'X'.
      POITEMX-ITEM_CAT       = 'X'.
      POITEMX-ACCTASSCAT     = 'X'.
      POITEMX-NET_PRICE      = 'X'.
      POITEMX-QUANTITY       = 'X'.
      POITEMX-PO_UNIT        = 'X'.
    APPEND POITEMX.
      POACCOUNT-PO_ITEM           = DATA_TAB-EBELP.
      POACCOUNT-ASSET_NO     = DATA_TAB-ANLN1.
      POACCOUNT-SUB_NUMBER   = DATA_TAB-ANLN2.
      POACCOUNT-ORDERID      = DATA_TAB-AUFNR.
      POACCOUNT-WBS_ELEMENT  = DATA_TAB-PS_PSP_PNR.
      POACCOUNT-GL_ACCOUNT   = DATA_TAB-SAKTO.
      POACCOUNT-COSTCENTER   = DATA_TAB-KOSTL.
    POACCOUNT-QUANTITY           = DATA_TAB-MENGE.
    APPEND POACCOUNT.
      POACCOUNTX-PO_ITEM           = DATA_TAB-EBELP.
      POACCOUNTX-ASSET_NO    = 'X'.
      POACCOUNTX-SUB_NUMBER  = 'X'.
      POACCOUNTX-ORDERID     = 'X'.
      POACCOUNTX-WBS_ELEMENT = 'X'.
      POACCOUNTX-GL_ACCOUNT  = 'X'.
      POACCOUNTX-COSTCENTER  = 'X'.
    APPEND POACCOUNTX.
      POCOND-ITM_NUMBER              = DATA_TAB-EBELP.
      POCOND-COND_VALUE              = DATA_TAB-KWERT.
      POCOND-CURRENCY         = DATA_TAB-WAERS.
      POCOND-COND_TYPE        = DATA_TAB-KSCHL.
      POCOND-CHANGE_ID        = ' I '.
    APPEND POCOND.
      POCONDX-ITM_NUMBER             = DATA_TAB-EBELP.
      POCONDX-COND_VALUE             = 'X'.
      POCONDX-CURRENCY       = 'X'.
      POCONDx-COND_TYPE      = 'X'.
      POCONDx-CHANGE_ID       = ' I '.
    APPEND POCONDX.
      POSCHEDULE-PO_ITEM        = DATA_TAB-EBELP.
      POSCHEDULE-DELIVERY_DATE  = DATA_TAB-EINDT.
      POSCHEDULE-QUANTITY             = DATA_TAB-MENGE.
      APPEND POSCHEDULE.
      POSCHEDULEX-PO_ITEM        = DATA_TAB-EBELP.
      POSCHEDULEX-DELIVERY_DATE  = 'X'.
      POSCHEDULEx-QUANTITY             = 'X'.
    APPEND POSCHEDULEX.
    ENDLOOP.
    CALL FUNCTION 'BAPI_PO_CREATE1'
      EXPORTING
        POHEADER                     = POHEADER
        POHEADERX                    = POHEADERX
    IMPORTING
        EXPPURCHASEORDER             = EXPPURCHASEORDER
      EXPHEADER                    =
      EXPPOEXPIMPHEADER            =
    TABLES
        RETURN                       = RETURN
        POITEM                       = POITEM
        POITEMX                      = POITEMX
      POADDRDELIVERY               =
        POSCHEDULE                   = POSCHEDULE
        POSCHEDULEX                  = POSCHEDULEX
        POACCOUNT                    = POACCOUNT
      POACCOUNTPROFITSEGMENT       =
        POACCOUNTX                   = POACCOUNTX
      POCONDHEADER                 =
      POCONDHEADERX                =
        POCOND                       = POCOND
        POCONDX                      = POCONDX
      POPARTNER                    =
    IF SY-SUBRC = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
       WAIT          = C_X
    ENDIF.
    data : w_ekko like ekko-ebeln.
      LOOP AT DATA_TAB.
       READ TABLE RETURN index 1.
        MOVE-CORRESPONDING RETURN    TO I_RETURN.
        MOVE-CORRESPONDING DATA_TAB  TO I_RETURN.
      TO GET THE PO NUMBER     *************
       SELECT single EBELN  FROM EKKO INTO  w_EKKO
                          WHERE BSART EQ DATA_TAB-BSART
                            AND LIFNR EQ DATA_TAB-LIFNR
                            AND EKORG EQ DATA_TAB-EKORG
                            AND EKGRP EQ DATA_TAB-EKGRP.
               MOVE w_EKKO TO I_RETURN-EBELN.
        APPEND I_RETURN.
        CLEAR  I_RETURN.
      ENDLOOP.
      ENDFORM.                                     " 2000_process_bapi
    *&      Form  fieldcat_init
    FORM fieldcat_init  USING lt_fieldcat type slis_t_fieldcat_alv.
        data: ls_fieldcat type slis_fieldcat_alv.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'EBELN'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-001.
    ls_fieldcat-seltext_m     = text-001.
    ls_fieldcat-seltext_s     = text-001.
    ls_fieldcat-reptext_ddic  = text-001.
    ls_fieldcat-outputlen     = '10'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'WERKS'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-002.
    ls_fieldcat-seltext_m     = text-002.
    ls_fieldcat-seltext_s     = text-002.
    ls_fieldcat-reptext_ddic  = text-002.
    ls_fieldcat-outputlen     = '4'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'KNTTP'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-003.
    ls_fieldcat-seltext_m     = text-003.
    ls_fieldcat-seltext_s     = text-003.
    ls_fieldcat-reptext_ddic  = text-003.
    ls_fieldcat-outputlen     = '4'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'MATNR'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-004.
    ls_fieldcat-seltext_m     = text-004.
    ls_fieldcat-seltext_s     = text-004.
    ls_fieldcat-reptext_ddic  = text-004.
    ls_fieldcat-outputlen     = '18'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'MENGE'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-005.
    ls_fieldcat-seltext_m     = text-005.
    ls_fieldcat-seltext_s     = text-005.
    ls_fieldcat-reptext_ddic  = text-005.
    ls_fieldcat-outputlen     = '10'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'NETPR'.
    ls_fieldcat-datatype      = 'CURR'.
    ls_fieldcat-seltext_l     = text-006.
    ls_fieldcat-seltext_m     = text-006.
    ls_fieldcat-seltext_s     = text-006.
    ls_fieldcat-reptext_ddic  = text-006.
    ls_fieldcat-outputlen     = '11'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    ls_fieldcat-fieldname     = 'MESSAGE'.
    ls_fieldcat-datatype      = 'C'.
    ls_fieldcat-seltext_l     = text-007.
    ls_fieldcat-seltext_m     = text-007.
    ls_fieldcat-seltext_s     = text-007.
    ls_fieldcat-reptext_ddic  = text-007.
    ls_fieldcat-outputlen     = '50'.
    append ls_fieldcat to lt_fieldcat.
    clear ls_fieldcat.
    ENDFORM.                                       " fieldcat_init
    *&      Form  layout_init
          text
         -->P_GS_LAYOUT  text
    FORM layout_init  USING  ls_layout type slis_layout_alv.
          ls_layout-zebra = 'X'.
    ENDFORM.                                          " layout_init
    *&      Form  comment_build
          text
         -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM comment_build  USING Lt_top_of_page type slis_t_listheader.
      field-symbols: .
      data: ls_line type slis_listheader.
      data: i_sel   like textpool occurs 0 with header line.
            read  textpool sy-repid into i_sel language sy-langu.
            delete i_sel where id ne 'S'.
       LIST HEADING LINE: TYPE H
        clear ls_line.
          ls_line-typ    = 'H'.
          ls_line-info   = text-020.
        append ls_line to lt_top_of_page.
        clear ls_line.
          ls_line-typ    = 'S'.
          ls_line-key    = text-021.
        append ls_line to lt_top_of_page.
       Selection-screen
      loop at i_sel.
        assign (i_sel-key) to .
        append ls_line to lt_top_of_page.
    endloop.
    ENDFORM.                                          " comment_build
    *&      Form  eventtab_build
          text
         -->P_GT_EVENTS[]  text
    FORM eventtab_build  USING lt_events type slis_t_event.
    data: ls_event type slis_alv_event.
             move 'PF_STATUS_SET' to ls_event-name.
             move 'Z2006RMMPOUPLOAD' to ls_event-form.
          append ls_event to lt_events.
        clear ls_event.
    ENDFORM.                                          "eventtab_build
    FORM PF_STATUS_SET
    form Z2006RMMPOUPLOAD using extab type slis_t_extab. "#EC CALLED
             set pf-status 'Z2006RMMPOUPLOAD'. "EXCLUDING extab.
    endform.                                          "Z2006RMMPOUPLOAD
    FORM TOP_OF_PAGE *
    form top_of_page.
         call function 'REUSE_ALV_COMMENTARY_WRITE'
            exporting
                i_logo             = 'MECOMB'
                it_list_commentary = gt_list_top_of_page.
    endform.                                           "top_of_page
    *&      Form  3000_updation_log
    FORM 3000_updation_log .
                   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
                    EXPORTING
                     I_INTERFACE_CHECK                 = ' '
                     I_BYPASSING_BUFFER                = ' '
                     I_BUFFER_ACTIVE                   = ' '
                       I_CALLBACK_PROGRAM                = 'Z2006RMMPOUPLOAD'
                     I_CALLBACK_PF_STATUS_SET          = ' '
                     I_CALLBACK_USER_COMMAND           = ' '
                       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
                     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
                     I_CALLBACK_HTML_END_OF_LIST       = ' '
                     I_STRUCTURE_NAME                  =
                     I_BACKGROUND_ID                   = ' '
                     I_GRID_TITLE                      =
                     I_GRID_SETTINGS                   =
                       IS_LAYOUT                         = gs_layout
                       IT_FIELDCAT                       = gt_fieldcat[]
                       IT_EVENTS                         = gt_events[]
                     TABLES
                       T_OUTTAB                          = I_RETURN
                     EXCEPTIONS
                       PROGRAM_ERROR                     = 1
                       OTHERS                            = 2
    ENDFORM.                                      " 3000_updation_log
    *&      Form  sort_build
    FORM sort_build  USING lt_sort type slis_t_sortinfo_alv.
    data: ls_sort type slis_sortinfo_alv.
    ls_sort-fieldname = 'EBELN'.
    ls_sort-up = 'X'.
    ls_sort-subtot = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    ls_sort-fieldname = 'MATNR'.
    ls_sort-up = 'X'.
    append ls_sort to lt_sort.
    clear ls_sort.
    ENDFORM.                                          " sort_build
    Thanks,
    Rajendra.

Maybe you are looking for

  • Replication of Business Transaction (CRM to R/3)

    Hi All, We are creating the contracts in CRM & we maintained the Int no ranges in crm & external in R/3, still contracts are not flowing to R/3, Can any one tel me why the contracts r not flowing to R/3, if any configuration are required pls help me.

  • Problem installing Flash

    I am having three problems with Adobe Flash and would like some assistance in resolving them. 1)  Problem number ONE:  Several months ago installing an antivirus program broke my Internet Explorer.  All attempts to fix or upgrade IE have failed.  Not

  • Error with JCO connection ?

    Hi, I used the example TutWD_FlightList yo test Web-dynpro , Then after I deployed to the Server . I enter 'Web-dynpro' to create 2 JCO connections . There were 2 cases : 1. If I chose Application Data & Single Server Connection . Test is OK ( Connec

  • Hard code username & password for system

    Hi All,   I'm using this piece of code to connect to the back-end via a defined system (with alias='CN') try {      con = cgservice.getConnection("CN", cp);      catch (Exception e)                   e.printStackTrace(); Is there a way I can hard cod

  • Scrambled Music with Itunes

    I recently reinstalled Windows XP on my computer and backed up and restored the Itunes playlists and music through Itunes (ver 7). What has happened is that for some of the songs - about every 10 or 15 or so has been altered so when I play the song w