您的位置:首页 > 其它

VL01N销售订单拣配bapi

2016-07-01 16:38 369 查看
  data:wa_items type bapidlvreftosalesorder,

       begin of temp_item occurs 0,

         item(2000),

       end   of temp_item,

       begin of it_item occurs 0,

         sequence,

         item(6) type n,

       end   of it_item,

       wa_item like line of it_item,

       begin of item_list occurs 0,

         item(6) type n,

       end   of item_list,

       l_it_orderitem type standard table of bapidlvreftosalesorder with header line.

  data:lx_vbkok type vbkok,

       it_prott like table of prott with header line,

       it_vbpok like table of vbpok with header line.
*& 因过账时,有行项目的限制,需要对过账项目进行拆分,拣配的次数之间用'-'分割
*& 项目内用','

  refresh:temp_item.

  split item_divison at '-' into table temp_item.

  loop at temp_item.

    clear:it_item.

    it_item-sequence = sy-tabix.

    refresh:item_list.

    shift temp_item-item left deleting leading ''.

    split temp_item-item at ',' into table item_list.

    loop at item_list.

      it_item-item = item_list-item.

      collect it_item.

    endloop.

  endloop.

  sort it_item by sequence item.

  sort sales_order_items by ref_doc ref_item.
*& 按拆分的项目,进行创建交货单

  loop at it_item.

    wa_item = it_item.

    at end of sequence.

      refresh:l_it_orderitem .

      loop at sales_order_items where ref_item <= wa_item-item.

        l_it_orderitem = sales_order_items.

        append l_it_orderitem.

        clear:l_it_orderitem.

        delete sales_order_items.

      endloop.

      call function 'BAPI_OUTB_DELIVERY_CREATE_SLS'

        exporting

          ship_point        = ship_point

          due_date          = due_date

          debug_flg         = debug_flg

        importing

          delivery          = delivery

          num_deliveries    = num_deliveries

        tables

          sales_order_items = l_it_orderitem

          serial_numbers    = serial_numbers

          extension_in      = extension_in

          deliveries        = deliveries

          created_items     = created_items

          extension_out     = extension_out

          return            = return.

      read table return with key type = 'E'.

      if sy-subrc ne 0.

        call function 'BAPI_TRANSACTION_COMMIT'

          exporting

            wait = 'X'.

        refresh:it_vbpok.

        clear:it_vbpok,lx_vbkok.

        loop at  l_it_orderitem.

          if sy-tabix = 1.

            lx_vbkok-vbeln_vl = delivery.

            lx_vbkok-vbtyp_vl = 'J' .

            lx_vbkok-vbeln = l_it_orderitem-ref_doc.

            lx_vbkok-wabuc = 'X'.

          endif.

          it_vbpok-vbeln_vl = delivery.

          read table created_items index sy-tabix.

          it_vbpok-posnr_vl = created_items-deliv_item.

          it_vbpok-vbeln = l_it_orderitem-ref_doc.

          it_vbpok-posnn = l_it_orderitem-ref_item.
*it_vbpok-matnr = fp_afpo-matnr.
*it_vbpok-charg = fp_afpo-charg.
*it_vbpok-werks = fp_afpo-dwerk.

          it_vbpok-taqui = 'X'.
*& 拣配数量

          it_vbpok-pikmg = l_it_orderitem-dlv_qty.

          append it_vbpok.

        endloop.

*&更改拣配数量,当不自动过帐时,需要更改参数如下,并且需要再提交一次

        call function 'WS_DELIVERY_UPDATE'

          exporting

            vbkok_wa                 = lx_vbkok

*&            synchron                 = 'X'

            commit                   = 'X'

            delivery                 = delivery

            update_picking           = 'X'

*&            nicht_sperren            = 'X'

*&            if_database_update       = 'X'

*&            if_error_messages_send_0 = 'X'

          tables

            vbpok_tab                = it_vbpok

            prot                     = it_prott.

           

         read table it_prott with key msgty = 'E'.

        if sy-subrc <> 0.

          call function 'BAPI_TRANSACTION_COMMIT'
*            EXPORTING
*              WAIT          =
*            IMPORTING
*              RETURN        =

                    .

        endif.

 

            

      else.

        call function 'BAPI_TRANSACTION_ROLLBACK'.

      endif.

    endat.

  endloop.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: