Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_SALESORDER_CREATEFROMDAT1 - Route not determined

Former Member
0 Likes
567

I am using BAPI BAPI_SALESORDER_CREATEFROMDAT1 and it is not automatically determining the route. Everything on the sales order is complete except for the route. If we go into the sales order, delete the plant, save, the put the plant back in the route is automatically determined. This tells me that the config/mater data is setup and it is something with the BAPI itself. Below are the fields I am populating:

      LOOP AT items.

        CLEAR ls_order_items_in.
*      PERFORM add_items.
        d_posnr = d_posnr + 10.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input         = d_posnr
         IMPORTING
           OUTPUT        = d_posnr
                  .

        ls_order_items_in-itm_number = d_posnr.
        ls_order_items_in-cust_mat = items-kdmat.
        ls_order_items_in-plant = d_werks.
        ls_order_items_in-material = items-matnr.
        ls_order_items_in-req_qty = items-zmeng * 1000.
        ls_order_items_in-sales_unit = items-zieme.
        ls_order_items_in-req_date = d_req_date.

*Check to see if this item is free of charge.  If it is then item category is TANN
        d_packed = items-cd_value2 * 100.
        IF d_packed = '100.0000' OR d_packed = '100' OR d_packed > '99.9999'.
          ls_order_items_in-item_categ = 'TANN'.
        ELSE.
          ls_order_items_in-cond_type = 'PN00'.
          ls_order_items_in-currency = 'US$$'.
          d_packed = items-cond_value.
          d_packed = d_packed / items-zmeng.
          d_packed = d_packed * 100.
          ls_order_items_in-cond_value = d_packed.
          d_packed = items-cd_value2 * 100.
          ls_order_items_in-cd_value2 = d_packed.
          ls_order_items_in-cd_type2 = 'ZCGD'.
        ENDIF.



        APPEND: ls_order_items_in TO lt_order_items_in.
      ENDLOOP.

************************************************************************
* FILL PARTNER DATA
************************************************************************
      READ TABLE lt_order_partners_out INTO ls_order_partners_out
                                        WITH KEY partn_role = 'AG'.
      IF sy-subrc = 0.
        ls_order_partners-partn_role = 'AG'.
        ls_order_partners-partn_numb   = ls_order_partners_out-customer.
        ls_order_partners-address = ls_order_partners_out-address.
        APPEND ls_order_partners TO lt_order_partners.
      ENDIF.

      READ TABLE lt_order_partners_out INTO ls_order_partners_out
                                  WITH KEY partn_role = 'WE'.
      IF sy-subrc = 0.
        ls_order_partners-partn_role = 'WE'.
        ls_order_partners-partn_numb   = ls_order_partners_out-customer.

        SELECT SINGLE * FROM adrc WHERE addrnumber = ls_order_partners_out-address.
        IF sy-subrc = 0.
*          ls_order_partners-title = adrc-title.
          ls_order_partners-name = adrc-name1.
          ls_order_partners-name_2 = adrc-name2.
*          ls_order_partners-name_3 = adrc-name3.
*          ls_order_partners-name_4 = adrc-name4.
          ls_order_partners-street = adrc-street.
          ls_order_partners-country = adrc-country.
          ls_order_partners-postl_code = adrc-post_code1.
*          ls_order_partners-pobx_pcd = adrc-post_code2.
*          ls_order_partners-pobx_cty = adrc-city_code2.
          ls_order_partners-city = adrc-city1.
          ls_order_partners-district = adrc-city2.
          ls_order_partners-region = adrc-region.
*          ls_order_partners-po_box = adrc-po_box.
          ls_order_partners-telephone = adrc-tel_number.
          ls_order_partners-fax_number = adrc-fax_number.
*          ls_order_partners-langu = adrc-langu.
          ls_order_partners-transpzone = adrc-transpzone.
          ls_order_partners-taxjurcode = adrc-taxjurcode.
*          ls_order_partners-addr_link = ls_order_partners_out-address.
        ELSE.
          ls_order_partners-address = ls_order_partners_out-address.
        ENDIF.


        APPEND ls_order_partners TO lt_order_partners.
      ENDIF.

************************************************************************
* FILL LOGIC SWITCH
************************************************************************
      lv_logic_switch-pricing = pa_prart.

***********************************************************************


CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
        EXPORTING
          order_header_in           = ls_order_header_in
*   WITHOUT_COMMIT            = ' '
*   CONVERT_PARVW_AUART       = ' '
       IMPORTING
         salesdocument             = e_vbeln
*   SOLD_TO_PARTY             =
*   SHIP_TO_PARTY             =
*   BILLING_PARTY             =
         return                    = ls_return
        TABLES
          order_items_in            = lt_order_items_in
          order_partners            = lt_order_partners
*   ORDER_ITEMS_OUT           =
*   ORDER_CFGS_REF            =
*   ORDER_CFGS_INST           =
*   ORDER_CFGS_PART_OF        =
*   ORDER_CFGS_VALUE          =
*   ORDER_CCARD               =
*   ORDER_CFGS_BLOB           =
       order_schedule_ex         = lt_order_schedules_out
       .

*    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait          = '1'.

Do you have any idea why the route can't be determined when I run the BAPI?

Regards,

Davis

I am using BAPI BAPI_SALESORDER_CREATEFROMDAT1 and it is not automatically determining the route. Everything on the sales order is complete except for the route. If we go into the sales order, delete the plant, save, the put the plant back in the route is automatically determined. This tells me that the config/mater data is setup and it is something with the BAPI itself. Below are the fields I am populating:

      LOOP AT items.

        CLEAR ls_order_items_in.
*      PERFORM add_items.
        d_posnr = d_posnr + 10.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input         = d_posnr
         IMPORTING
           OUTPUT        = d_posnr
                  .

        ls_order_items_in-itm_number = d_posnr.
        ls_order_items_in-cust_mat = items-kdmat.
        ls_order_items_in-plant = d_werks.
        ls_order_items_in-material = items-matnr.
        ls_order_items_in-req_qty = items-zmeng * 1000.
        ls_order_items_in-sales_unit = items-zieme.
        ls_order_items_in-req_date = d_req_date.

*Check to see if this item is free of charge.  If it is then item category is TANN
        d_packed = items-cd_value2 * 100.
        IF d_packed = '100.0000' OR d_packed = '100' OR d_packed > '99.9999'.
          ls_order_items_in-item_categ = 'TANN'.
        ELSE.
          ls_order_items_in-cond_type = 'PN00'.
          ls_order_items_in-currency = 'US$$'.
          d_packed = items-cond_value.
          d_packed = d_packed / items-zmeng.
          d_packed = d_packed * 100.
          ls_order_items_in-cond_value = d_packed.
          d_packed = items-cd_value2 * 100.
          ls_order_items_in-cd_value2 = d_packed.
          ls_order_items_in-cd_type2 = 'ZCGD'.
        ENDIF.



        APPEND: ls_order_items_in TO lt_order_items_in.
      ENDLOOP.

************************************************************************
* FILL PARTNER DATA
************************************************************************
      READ TABLE lt_order_partners_out INTO ls_order_partners_out
                                        WITH KEY partn_role = 'AG'.
      IF sy-subrc = 0.
        ls_order_partners-partn_role = 'AG'.
        ls_order_partners-partn_numb   = ls_order_partners_out-customer.
        ls_order_partners-address = ls_order_partners_out-address.
        APPEND ls_order_partners TO lt_order_partners.
      ENDIF.

      READ TABLE lt_order_partners_out INTO ls_order_partners_out
                                  WITH KEY partn_role = 'WE'.
      IF sy-subrc = 0.
        ls_order_partners-partn_role = 'WE'.
        ls_order_partners-partn_numb   = ls_order_partners_out-customer.

        SELECT SINGLE * FROM adrc WHERE addrnumber = ls_order_partners_out-address.
        IF sy-subrc = 0.
*          ls_order_partners-title = adrc-title.
          ls_order_partners-name = adrc-name1.
          ls_order_partners-name_2 = adrc-name2.
*          ls_order_partners-name_3 = adrc-name3.
*          ls_order_partners-name_4 = adrc-name4.
          ls_order_partners-street = adrc-street.
          ls_order_partners-country = adrc-country.
          ls_order_partners-postl_code = adrc-post_code1.
*          ls_order_partners-pobx_pcd = adrc-post_code2.
*          ls_order_partners-pobx_cty = adrc-city_code2.
          ls_order_partners-city = adrc-city1.
          ls_order_partners-district = adrc-city2.
          ls_order_partners-region = adrc-region.
*          ls_order_partners-po_box = adrc-po_box.
          ls_order_partners-telephone = adrc-tel_number.
          ls_order_partners-fax_number = adrc-fax_number.
*          ls_order_partners-langu = adrc-langu.
          ls_order_partners-transpzone = adrc-transpzone.
          ls_order_partners-taxjurcode = adrc-taxjurcode.
*          ls_order_partners-addr_link = ls_order_partners_out-address.
        ELSE.
          ls_order_partners-address = ls_order_partners_out-address.
        ENDIF.


        APPEND ls_order_partners TO lt_order_partners.
      ENDIF.

************************************************************************
* FILL LOGIC SWITCH
************************************************************************
      lv_logic_switch-pricing = pa_prart.

***********************************************************************


CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
        EXPORTING
          order_header_in           = ls_order_header_in
*   WITHOUT_COMMIT            = ' '
*   CONVERT_PARVW_AUART       = ' '
       IMPORTING
         salesdocument             = e_vbeln
*   SOLD_TO_PARTY             =
*   SHIP_TO_PARTY             =
*   BILLING_PARTY             =
         return                    = ls_return
        TABLES
          order_items_in            = lt_order_items_in
          order_partners            = lt_order_partners
*   ORDER_ITEMS_OUT           =
*   ORDER_CFGS_REF            =
*   ORDER_CFGS_INST           =
*   ORDER_CFGS_PART_OF        =
*   ORDER_CFGS_VALUE          =
*   ORDER_CCARD               =
*   ORDER_CFGS_BLOB           =
       order_schedule_ex         = lt_order_schedules_out
       .

*    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait          = '1'.

Do you have any idea why the route can't be determined when I run the BAPI?

Regards,

Davis

2 REPLIES 2
Read only

Former Member
0 Likes
518

Hello Davis,

Check are you passing proper values to the Partners internal table to the BAPI call.

Thanks,

Greetson

Read only

0 Likes
518

All of the data, that I am passing in, is correct. All of the data except for the line items is coming from the referenced quote (all header and partner data).

Regards,

Davis