Inbound pick confirmation

Hello,
We have built an outbound picking request interface in which we send idocs from outbound delivery. The idocs are converted in middleware into EDI files and sent to third  party warehouse for picking.
If our outbound delivery has 100 litres, we convert it into 5 Case ( as per alt uom in material master, 20 litres=1 case ) and send 5 qty in LFIMG field but litres in VRKME field in E1EDL24 segment.
We have batch no in the delivery but we do not send batch number to third party warehouse. MY questions are :
1)  When in inbound picking idoc, if we receive a different batch number than what was in the outbound delivery, will our  inbound pick idoc fails. ( or do we need to have the batch no  and stock qty(inbound idoc ) also  to be exisitng  in sap at least if not in outbound delivery  ) ?
2) How do we handle delivery split  in our inbound pick idoc from warehouse. For instance we send 5 qty of stock information to warehouse and in return they send five batch  numbers with 1 qty each... so how do we handle this since in our outbound  delivery, there is only one line  item of 20  qty ?
In which segment such batch split information arrives in inbound pick idoc and which fields and how does the system knows that it needs to do picking against one line item in outbound  delivery ?
Also do we need to do any configuration in sap for receiving batch split qty's in inbound idoc ? if yes, then what config is required ?
3) Since we send converted qty (20 litres in sap converted to 5 )  to warehouse and the warehouse sends the same qty  of 5 back to us. we need to re-convert the same 5 qty back into 20 ( by looking at alt UOM in material master ). I need to know how can we achieve the same and in which function module and which fields/tables does this needs to pass ?
4) what is HIPOS field ?
5) How do middle ware handles the batch split  from warehouse. Do they need to make separate E1EDL24 segments for inbound batch split qty's. If yes, then how do all the  inbound idoc  E1EDL24 segments  sum up the qty to be able to post picking against one line item in outbound delivery.
would request pointwise answers.
regards
Pamela

Hi,
Try using the FM WS_DELIVERY_UPDATE...Also for inbound delivery do we require Picking??
Ok..Check this sample code for doing PGI..
PARAMETERS: p_vbeln LIKE likp-vbeln.
DATA: vbkok_wa TYPE vbkok.
vbkok_wa-vbeln_vl = p_vbeln.
vbkok_wa-wabuc = 'X'.
DATA: v_error.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
     EXPORTING
          vbkok_wa                  = vbkok_wa
          delivery                  = p_vbeln
     IMPORTING
          ef_error_in_goods_issue_0 = v_error.
COMMIT WORK.
Thanks,
Naren

Similar Messages

  • Enhancement for picking confirmation inbound idoc

    Hi Friends,
             I'm using Message type SHPCON , Basic Type Delvry03 and process code DELV for picking confirmation. where as i have to extend the basic type for a field LIPS-UECHA ( Batch split Indicator) which is not avilable in basic type. which userexit or badi i have to use to plopoualte this filed data in to SAP? Can any one help.
    Thanks&Regards,
    Naren.

    Hi,
    You exttend the basic IDOC type DELVRY03. To which Segment you want to add this under E1EDL24 or E1EDL37. Change the process code inorder to fetch the data from the application.
    WE31 to add the field to the segments and create a new segment
    WE30 extend the basic type and add the newly created segment
    WE82 to add the extended basic type to  Message type.
    change the process code.
    Regards
    Kannaiah

  • IDOC inbound: delivery confirm - set storage location at position

    Hi all,
    I have the issue to set with an inbound IDOC for shipping confirmation the storage location on item level. We are working with an external logistic provider so the final storage location where the goods are taken from is not not at creation time of the delivery. We have two possible storage locations.
    EDI message type SDPICK cannot be used, there is no place for the storage location information LGORT.
    So we tried SHPCON with process code DELV. FM: IDOC_INPUT_DELVRY
    The field is in the IDOC type DELVRY03 but it is not used.
    Do you have any idea how we could set the storage location on item level in the delivery with an incoming shipping / picking confirmation idoc?
    Thanx a lot
    regards
    Hans

    used a userexit in the inbound function module to get the IDOC field to the internal tables.

  • IDoc Message Type to create Inbound Delivery + Confirm +  GR

    Hi Experts,
    I need IDoc message type which can create Inbound Delivery / Confirm / Create GR with Inbound Delivery as reference and i dont want to use DELVRY05
    because I need to create Inbound Delivery / PICK / Confirm but not with Transfer Order Creation means Unnecessarily  we dont want to create Transfer Orders. We need to exclude Transfer Orders and create GR.
    Please do the needful.

    Dear Kishore,
    It's possible via writing code in enhancement spots of transaction code VL31N, MIGO_GR/MB01.
    R,
    Amala

  • User-exit / BAdi for Pick Confirmation

    Does anyone know any user-exit/BAdi that can be used on 'Pick confirm all entries' option in Delivery change (VL02N) in ECC6.0 environment.
    Thanks

    Hi,
    Try out from the following user exits-----
    Transaction Code - VL02N                    Change Outbound Delivery
    Exit Name           Description
    V02V0001            Sales area determination for stock transport order
    V02V0002            User exit for storage location determination
    V02V0003            User exit for gate + matl staging area determination (headr)
    V02V0004            User Exit for Staging Area Determination (Item)
    V50PSTAT            Delivery: Item Status Calculation
    V50Q0001            Delivery Monitor: User Exits for Filling Display Fields
    V50R0001            Collective processing for delivery creation
    V50R0002            Collective processing for delivery creation
    V50R0004            Calculation of Stock for POs for Shipping Due Date List
    V50S0001            User Exits for Delivery Processing
    V53C0001            Rough workload calculation in time per item
    V53C0002            W&S: RWE enhancement - shipping material type/time slot
    V53W0001            User exits for creating picking waves
    VMDE0001            Shipping Interface: Error Handling - Inbound IDoc
    VMDE0002            Shipping Interface: Message PICKSD (Picking, Outbound)
    VMDE0003            Shipping Interface: Message SDPICK (Picking, Inbound)
    VMDE0004            Shipping Interface: Message SDPACK (Packing, Inbound)
    No of Exits:         17
    Regards,
    Prashant.

  • 'Picking request file' and 'Picking confirmation file'...

    Hi,
    Suppose the business scenario like this:
    After delivery created in SAP system, then the system generate an 'Picking request file' to 3rd party shipper service provider.
    And then 3rd party shipper service provide will generate an 'Picking confirmation file' to our SAP system.
    Upon receiving the picking confimation, then further invoice or PGI will be done.
    In your previous experience, what kind of data exchaging mechanism is used for this kind of exchanging??
    And what the exact content or data in your case for these 2 documents??
    One is Picking request..
    One is Picking confirmation...
    Thank you very much.

    You can explore using EDI
    u2022     943: Receiving Schedule
    u2022     944: Receiving Confirmation
    regards
    Biju

  • Partial Pick Confirming Sales Order

    Hi Folks,
    I have a requirement where I have to Pick Confirm and Ship confirm Sales Order through API.
    1. When the quantites to be picked are same as quantity ordered the code seems to work just fine.
    But suppose in my example my quantity in SO line is 50 and I want to partially Ship confirm the lines lets say 20 quantites.
    then which API i need to use?
    The approach I am following is while pick confirming I am passing 20 quantites only and the ship confirming it.
    I researched and found that we can use the following API to update shipping attributes 'WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes' but when I run it (I tried before and after Pick confirm) the API runs fine but no changes are getting affected and the code Pick confirms all the quantity.
    Could some please help me with this.
    Please find the codes for pick confirm and updating shipping attributes
    Pick confirm code
    DECLARE
      lv_order_num        number := 700145812;
      vMoveOrderLineId    NUMBER;
      p_pick_conf_qty     NUMBER;
      pStatus             VARCHAR2(100);
      pMsgData            VARCHAR2(4000);
      v_movehdr_rec       INV_MOVE_ORDER_PUB.TROHDR_REC_TYPE;
      v_movehdr_val_rec   INV_MOVE_ORDER_PUB.TROHDR_VAL_REC_TYPE;
      v_moveln_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_p      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_zero_tbl   INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_zero_tbl_p INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_d      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_o      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_val_tbl    INV_MOVE_ORDER_PUB.TROLIN_VAL_TBL_TYPE;
      v_mold_tbl          INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      v_mold_tbl_p        INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      l_mold_tbl          INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      l_moveln_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      l_trolin_rec        INV_MOVE_ORDER_PUB.TROLIN_REC_TYPE;
      l_trolin_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      l_return_status     VARCHAR2(240);
      l_msg_count         NUMBER;
      l_msg_data          VARCHAR2(2000);
      l_move_hdr_id       NUMBER;
      l_move_order_no     NUMBER := 0;
      v_return_values     VARCHAR2(2000) := FND_API.G_TRUE;
      v_move_hdr_rec      INV_MOVE_ORDER_PUB.TROHDR_REC_TYPE;
      v_move_hdr_val_rec  INV_MOVE_ORDER_PUB.TROHDR_VAL_REC_TYPE;
      v_api_pick_confirm  NUMBER;
      cv_fail             VARCHAR2(100) := 'Fail';
      cv_success          VARCHAR2(100) := 'Success';
      g_user_id      number;
      g_resp_id      number;
      g_resp_appl_id number;
      p_user_name    varchar2(100) := 'SYSADMIN';
      p_resp_name    varchar2(100) := 'Order Management Super User';
      p_mo_apps      varchar2(100) := 'ONT';
      CURSOR c_mmtt_recs(vMoveOrderLineId NUMBER) IS
        SELECT transaction_header_id,
               transaction_temp_id,
               source_code,
               source_line_id,
               transaction_mode,
               lock_flag,
               last_update_date,
               last_updated_by,
               creation_date,
               created_by,
               last_update_login,
               request_id,
               program_application_id,
               program_id,
               program_update_date,
               inventory_item_id,
               revision,
               organization_id,
               subinventory_code,
               locator_id,
               transaction_quantity,
               primary_quantity,
               transaction_uom,
               transaction_cost,
               transaction_type_id,
               transaction_action_id,
               transaction_source_type_id,
               transaction_source_id,
               transaction_source_name,
               transaction_date,
               acct_period_id,
               distribution_account_id,
               transaction_reference,
               requisition_line_id,
               requisition_distribution_id,
               reason_id,
               lot_number,
               lot_expiration_date,
               serial_number,
               receiving_document,
               demand_id,
               rcv_transaction_id,
               move_transaction_id,
               completion_transaction_id,
               wip_entity_type,
               schedule_id,
               repetitive_line_id,
               employee_code,
               primary_switch,
               schedule_update_code,
               setup_teardown_code,
               item_ordering,
               negative_req_flag,
               operation_seq_num,
               picking_line_id,
               trx_source_line_id,
               trx_source_delivery_id,
               physical_adjustment_id,
               cycle_count_id,
               rma_line_id,
               customer_ship_id,
               currency_code,
               currency_conversion_rate,
               currency_conversion_type,
               currency_conversion_date,
               ussgl_transaction_code,
               vendor_lot_number,
               encumbrance_account,
               encumbrance_amount,
               ship_to_location,
               shipment_number,
               transfer_cost,
               transportation_cost,
               transportation_account,
               freight_code,
               containers,
               waybill_airbill,
               expected_arrival_date,
               transfer_subinventory,
               transfer_organization,
               transfer_to_location,
               new_average_cost,
               value_change,
               percentage_change,
               material_allocation_temp_id,
               demand_source_header_id,
               demand_source_line,
               demand_source_delivery,
               item_segments,
               item_description,
               item_trx_enabled_flag,
               item_location_control_code,
               item_restrict_subinv_code,
               item_restrict_locators_code,
               item_revision_qty_control_code,
               item_primary_uom_code,
               item_uom_class,
               item_shelf_life_code,
               item_shelf_life_days,
               item_lot_control_code,
               item_serial_control_code,
               item_inventory_asset_flag,
               allowed_units_lookup_code,
               department_id,
               department_code,
               wip_supply_type,
               supply_subinventory,
               supply_locator_id,
               valid_subinventory_flag,
               valid_locator_flag,
               locator_segments,
               current_locator_control_code,
               number_of_lots_entered,
               wip_commit_flag,
               next_lot_number,
               lot_alpha_prefix,
               next_serial_number,
               serial_alpha_prefix,
               shippable_flag,
               posting_flag,
               required_flag,
               process_flag,
               error_code,
               error_explanation,
               attribute_category,
               attribute1,
               attribute2,
               attribute3,
               attribute4,
               attribute5,
               attribute6,
               attribute7,
               attribute8,
               attribute9,
               attribute10,
               attribute11,
               attribute12,
               attribute13,
               attribute14,
               attribute15,
               movement_id,
               reservation_quantity,
               shipped_quantity,
               transaction_line_number,
               task_id,
               to_task_id,
               source_task_id,
               project_id,
               source_project_id,
               pa_expenditure_org_id,
               to_project_id,
               expenditure_type,
               final_completion_flag,
               transfer_percentage,
               transaction_sequence_id,
               material_account,
               material_overhead_account,
               resource_account,
               outside_processing_account,
               overhead_account,
               flow_schedule,
               cost_group_id,
               demand_class,
               qa_collection_id,
               kanban_card_id,
               overcompletion_transaction_id,
               overcompletion_primary_qty,
               overcompletion_transaction_qty,
               end_item_unit_number,
               scheduled_payback_date,
               line_type_code,
               parent_transaction_temp_id,
               put_away_strategy_id,
               put_away_rule_id,
               pick_strategy_id,
               pick_rule_id,
               common_bom_seq_id,
               common_routing_seq_id,
               cost_type_id,
               org_cost_group_id,
               move_order_line_id,
               task_group_id,
               pick_slip_number,
               reservation_id,
               transaction_status,
               transfer_cost_group_id,
               lpn_id,
               transfer_lpn_id,
               pick_slip_date,
               content_lpn_id
          FROM MTL_MATERIAL_TRANSACTIONS_TEMP
         WHERE move_order_line_id = vMoveOrderLineId;
      l_moveln_fidx     NUMBER;
      l_moveln_lidx     NUMBER;
      n_mvln_cntr       NUMBER;
      l_Index           NUMBER := 1;
      v_records_in_mmtt NUMBER := 0;
      REC C_MMTT_RECS%ROWTYPE;
    BEGIN
      select user_id
        into g_user_id
        from fnd_user
       where user_name = p_user_name;
      select responsibility_id, application_id
        into g_resp_id, g_resp_appl_id
        from apps.fnd_responsibility_vl
       where responsibility_name = p_resp_name;
      Apps.FND_Global.Apps_Initialize(g_user_id, g_resp_id, g_resp_appl_id);
      MO_GLOBAL.INIT(p_mo_apps);
      for mol in (select wda.delivery_id,
                         wda.delivery_detail_id,
                         wda.parent_delivery_detail_id,
                         wdd.source_code,
                         wdd.inventory_item_id,
                         wdd.organization_id,
                         wdd.ship_from_location_id,
                         wdd.ship_to_location_id,
                         wdd.requested_quantity,
                         wdd.requested_quantity_uom,
                         wdd.move_order_line_id,
                         wdd.org_id,
                         mtrl.quantity,
                         mtrl.quantity_delivered
                    from wsh_delivery_details     wdd,
                         wsh_delivery_assignments wda,
                         oe_order_lines_all       ol,
                         oe_order_headers_all     oh,
                         mtl_txn_request_lines    mtrl,
                         mtl_txn_request_headers  mtrh
                   where wdd.source_line_id = ol.line_id
                     and wdd.delivery_detail_id = wda.delivery_detail_id
                     and ol.header_id = oh.header_id
                     and wdd.move_order_line_id = mtrl.line_id(+)
                     and mtrl.header_id = mtrh.header_id(+)
                     and oh.order_number = lv_order_num) loop
        vMoveOrderLineId := mol.move_order_line_id;
        p_pick_conf_qty  := mol.quantity - nvl(mol.quantity_delivered,0);
        SELECT COUNT(move_order_line_id)
          INTO v_records_in_mmtt
          FROM MTL_MATERIAL_TRANSACTIONS_TEMP
         WHERE move_order_line_id = vMoveOrderLineId;
        IF v_records_in_mmtt > 1 THEN
          pStatus  := cv_fail;
          pMsgData := 'Wrong number of records in MMTT for the MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          DBMS_OUTPUT.PUT_LINE('Multiple records in MMTT for move_order_line_id = ' ||
                               vMoveOrderLineId);
          v_api_pick_confirm := 0;
          GOTO end_of_pkcnf;
        ELSIF v_records_in_mmtt = 0 THEN
          --means that the delivery is already pick confirmed
          pStatus := cv_success;
          DBMS_OUTPUT.PUT_LINE('No records in MMTT for move_order_line_id = ' ||
                               vMoveOrderLineId ||
                               ' hence it is already pick confirmed');
          v_api_pick_confirm := 0;
          GOTO end_of_pkcnf;
        END IF;
        SELECT mtrh.header_id, mtrh.request_number
          INTO l_move_hdr_id, l_move_order_no
          FROM mtl_txn_request_headers mtrh, mtl_txn_request_lines mtrl
         WHERE mtrh.header_id = mtrl.header_id
           AND mtrl.line_id = vMoveOrderLineId;
        DBMS_OUTPUT.PUT_LINE('Obtained MTRH.HEADER_ID = ' || l_move_hdr_id ||
                             ' MTRH.REQUEST_NUMBER = ' || l_move_order_no ||
                             ' for move_order_line_id = ' || vMoveOrderLineId);
        INV_MOVE_ORDER_PUB.GET_MOVE_ORDER(p_api_version_number => 1.0,
                                          p_init_msg_list      => FND_API.G_FALSE,
                                          p_return_values      => v_return_values,
                                          x_return_status      => l_return_status,
                                          x_msg_count          => l_msg_count,
                                          x_msg_data           => l_msg_data,
                                          p_header_id          => l_move_hdr_id,
                                          p_header             => l_move_order_no,
                                          x_trohdr_rec         => v_move_hdr_rec,
                                          x_trohdr_val_rec     => v_move_hdr_val_rec,
                                          x_trolin_tbl         => v_moveln_tbl,
                                          x_trolin_val_tbl     => v_moveln_val_tbl);
         COMMIT;                                
        DBMS_OUTPUT.PUT_LINE('Return status of INV_MOVE_ORDER_PUB.GET_MOVE_ORDER = ' ||
                             l_return_status);
        IF l_return_status != FND_API.G_RET_STS_SUCCESS THEN
          pStatus  := cv_fail;
          pMsgData := 'Failed to get move order inv_move_order_pub.get_move_order for MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          GOTO end_of_pkcnf;
        END IF;
        OPEN c_mmtt_recs(vMoveOrderLineId);
        FETCH c_mmtt_recs
          INTO rec;
        CLOSE c_mmtt_recs;
        v_mold_tbl(1).transaction_header_id := rec.transaction_header_id;
        v_mold_tbl(1).transaction_temp_id := rec.transaction_temp_id;
        v_mold_tbl(1).source_code := rec.source_code;
        v_mold_tbl(1).source_line_id := rec.source_line_id;
        v_mold_tbl(1).transaction_mode := rec.transaction_mode;
        v_mold_tbl(1).lock_flag := rec.lock_flag;
        v_mold_tbl(1).last_update_date := rec.last_update_date;
        v_mold_tbl(1).last_updated_by := rec.last_updated_by;
        v_mold_tbl(1).creation_date := rec.creation_date;
        v_mold_tbl(1).created_by := rec.created_by;
        v_mold_tbl(1).last_update_login := rec.last_update_login;
        v_mold_tbl(1).request_id := rec.request_id;
        v_mold_tbl(1).program_application_id := rec.program_application_id;
        v_mold_tbl(1).program_id := rec.program_id;
        v_mold_tbl(1).program_update_date := rec.program_update_date;
        v_mold_tbl(1).inventory_item_id := rec.inventory_item_id;
        v_mold_tbl(1).revision := rec.revision;
        v_mold_tbl(1).organization_id := rec.organization_id;
        v_mold_tbl(1).subinventory_code := rec.subinventory_code;
        v_mold_tbl(1).locator_id := rec.locator_id;
        v_mold_tbl(1).transaction_quantity := rec.transaction_quantity;
        v_mold_tbl(1).primary_quantity := rec.primary_quantity;
        v_mold_tbl(1).transaction_uom := rec.transaction_uom;
        v_mold_tbl(1).transaction_cost := rec.transaction_cost;
        v_mold_tbl(1).transaction_type_id := rec.transaction_type_id;
        v_mold_tbl(1).transaction_action_id := rec.transaction_action_id;
        v_mold_tbl(1).transaction_source_type_id := rec.transaction_source_type_id;
        v_mold_tbl(1).transaction_source_id := rec.transaction_source_id;
        v_mold_tbl(1).transaction_source_name := rec.transaction_source_name;
        v_mold_tbl(1).transaction_date := rec.transaction_date;
        v_mold_tbl(1).acct_period_id := rec.acct_period_id;
        v_mold_tbl(1).distribution_account_id := rec.distribution_account_id;
        v_mold_tbl(1).transaction_reference := rec.transaction_reference;
        v_mold_tbl(1).requisition_line_id := rec.requisition_line_id;
        v_mold_tbl(1).requisition_distribution_id := rec.requisition_distribution_id;
        v_mold_tbl(1).reason_id := rec.reason_id;
        v_mold_tbl(1).lot_number := rec.lot_number;
        v_mold_tbl(1).lot_expiration_date := rec.lot_expiration_date;
        v_mold_tbl(1).serial_number := rec.serial_number;
        v_mold_tbl(1).receiving_document := rec.receiving_document;
        v_mold_tbl(1).demand_id := rec.demand_id;
        v_mold_tbl(1).rcv_transaction_id := rec.rcv_transaction_id;
        v_mold_tbl(1).move_transaction_id := rec.move_transaction_id;
        v_mold_tbl(1).completion_transaction_id := rec.completion_transaction_id;
        v_mold_tbl(1).wip_entity_type := rec.wip_entity_type;
        v_mold_tbl(1).schedule_id := rec.schedule_id;
        v_mold_tbl(1).repetitive_line_id := rec.repetitive_line_id;
        v_mold_tbl(1).employee_code := rec.employee_code;
        v_mold_tbl(1).primary_switch := rec.primary_switch;
        v_mold_tbl(1).schedule_update_code := rec.schedule_update_code;
        v_mold_tbl(1).setup_teardown_code := rec.setup_teardown_code;
        v_mold_tbl(1).item_ordering := rec.item_ordering;
        v_mold_tbl(1).negative_req_flag := rec.negative_req_flag;
        v_mold_tbl(1).operation_seq_num := rec.operation_seq_num;
        v_mold_tbl(1).picking_line_id := rec.picking_line_id;
        v_mold_tbl(1).trx_source_line_id := rec.trx_source_line_id;
        v_mold_tbl(1).trx_source_delivery_id := rec.trx_source_delivery_id;
        v_mold_tbl(1).physical_adjustment_id := rec.physical_adjustment_id;
        v_mold_tbl(1).cycle_count_id := rec.cycle_count_id;
        v_mold_tbl(1).rma_line_id := rec.rma_line_id;
        v_mold_tbl(1).customer_ship_id := rec.customer_ship_id;
        v_mold_tbl(1).currency_code := rec.currency_code;
        v_mold_tbl(1).currency_conversion_rate := rec.currency_conversion_rate;
        v_mold_tbl(1).currency_conversion_type := rec.currency_conversion_type;
        v_mold_tbl(1).currency_conversion_date := rec.currency_conversion_date;
        v_mold_tbl(1).ussgl_transaction_code := rec.ussgl_transaction_code;
        v_mold_tbl(1).vendor_lot_number := rec.vendor_lot_number;
        v_mold_tbl(1).encumbrance_account := rec.encumbrance_account;
        v_mold_tbl(1).encumbrance_amount := rec.encumbrance_amount;
        v_mold_tbl(1).ship_to_location := rec.ship_to_location;
        v_mold_tbl(1).shipment_number := rec.shipment_number;
        v_mold_tbl(1).transfer_cost := rec.transfer_cost;
        v_mold_tbl(1).transportation_cost := rec.transportation_cost;
        v_mold_tbl(1).transportation_account := rec.transportation_account;
        v_mold_tbl(1).freight_code := rec.freight_code;
        v_mold_tbl(1).containers := rec.containers;
        v_mold_tbl(1).waybill_airbill := rec.waybill_airbill;
        v_mold_tbl(1).expected_arrival_date := rec.expected_arrival_date;
        v_mold_tbl(1).transfer_subinventory := rec.transfer_subinventory;
        v_mold_tbl(1).transfer_organization := rec.transfer_organization;
        v_mold_tbl(1).transfer_to_location := rec.transfer_to_location;
        v_mold_tbl(1).new_average_cost := rec.new_average_cost;
        v_mold_tbl(1).value_change := rec.value_change;
        v_mold_tbl(1).percentage_change := rec.percentage_change;
        v_mold_tbl(1).material_allocation_temp_id := rec.material_allocation_temp_id;
        v_mold_tbl(1).demand_source_header_id := rec.demand_source_header_id;
        v_mold_tbl(1).demand_source_line := rec.demand_source_line;
        v_mold_tbl(1).demand_source_delivery := rec.demand_source_delivery;
        v_mold_tbl(1).item_segments := rec.item_segments;
        v_mold_tbl(1).item_description := rec.item_description;
        v_mold_tbl(1).item_trx_enabled_flag := rec.item_trx_enabled_flag;
        v_mold_tbl(1).item_location_control_code := rec.item_location_control_code;
        v_mold_tbl(1).item_restrict_subinv_code := rec.item_restrict_subinv_code;
        v_mold_tbl(1).item_restrict_locators_code := rec.item_restrict_locators_code;
        v_mold_tbl(1).item_revision_qty_control_code := rec.item_revision_qty_control_code;
        v_mold_tbl(1).item_primary_uom_code := rec.item_primary_uom_code;
        v_mold_tbl(1).item_uom_class := rec.item_uom_class;
        v_mold_tbl(1).item_shelf_life_code := rec.item_shelf_life_code;
        v_mold_tbl(1).item_shelf_life_days := rec.item_shelf_life_days;
        v_mold_tbl(1).item_lot_control_code := rec.item_lot_control_code;
        v_mold_tbl(1).item_serial_control_code := rec.item_serial_control_code;
        v_mold_tbl(1).item_inventory_asset_flag := rec.item_inventory_asset_flag;
        v_mold_tbl(1).allowed_units_lookup_code := rec.allowed_units_lookup_code;
        v_mold_tbl(1).department_id := rec.department_id;
        v_mold_tbl(1).department_code := rec.department_code;
        v_mold_tbl(1).wip_supply_type := rec.wip_supply_type;
        v_mold_tbl(1).supply_subinventory := rec.supply_subinventory;
        v_mold_tbl(1).supply_locator_id := rec.supply_locator_id;
        v_mold_tbl(1).valid_subinventory_flag := rec.valid_subinventory_flag;
        v_mold_tbl(1).valid_locator_flag := rec.valid_locator_flag;
        v_mold_tbl(1).locator_segments := rec.locator_segments;
        v_mold_tbl(1).current_locator_control_code := rec.current_locator_control_code;
        v_mold_tbl(1).number_of_lots_entered := rec.number_of_lots_entered;
        v_mold_tbl(1).wip_commit_flag := rec.wip_commit_flag;
        v_mold_tbl(1).next_lot_number := rec.next_lot_number;
        v_mold_tbl(1).lot_alpha_prefix := rec.lot_alpha_prefix;
        v_mold_tbl(1).next_serial_number := rec.next_serial_number;
        v_mold_tbl(1).serial_alpha_prefix := rec.serial_alpha_prefix;
        v_mold_tbl(1).shippable_flag := rec.shippable_flag;
        v_mold_tbl(1).posting_flag := rec.posting_flag;
        v_mold_tbl(1).required_flag := rec.required_flag;
        v_mold_tbl(1).process_flag := rec.process_flag;
        v_mold_tbl(1).error_code := rec.error_code;
        v_mold_tbl(1).error_explanation := rec.error_explanation;
        v_mold_tbl(1).attribute_category := rec.attribute_category;
        v_mold_tbl(1).attribute1 := rec.attribute1;
        v_mold_tbl(1).attribute2 := rec.attribute2;
        v_mold_tbl(1).attribute3 := rec.attribute3;
        v_mold_tbl(1).attribute4 := rec.attribute4;
        v_mold_tbl(1).attribute5 := rec.attribute5;
        v_mold_tbl(1).attribute6 := rec.attribute6;
        v_mold_tbl(1).attribute7 := rec.attribute7;
        v_mold_tbl(1).attribute8 := rec.attribute8;
        v_mold_tbl(1).attribute9 := rec.attribute9;
        v_mold_tbl(1).attribute10 := rec.attribute10;
        v_mold_tbl(1).attribute11 := rec.attribute11;
        v_mold_tbl(1).attribute12 := rec.attribute12;
        v_mold_tbl(1).attribute13 := rec.attribute13;
        v_mold_tbl(1).attribute14 := rec.attribute14;
        v_mold_tbl(1).attribute15 := rec.attribute15;
        v_mold_tbl(1).movement_id := rec.movement_id;
        v_mold_tbl(1).reservation_quantity := rec.reservation_quantity;
        v_mold_tbl(1).shipped_quantity := rec.shipped_quantity;
        v_mold_tbl(1).transaction_line_number := rec.transaction_line_number;
        v_mold_tbl(1).task_id := rec.task_id;
        v_mold_tbl(1).to_task_id := rec.to_task_id;
        v_mold_tbl(1).source_task_id := rec.source_task_id;
        v_mold_tbl(1).project_id := rec.project_id;
        v_mold_tbl(1).source_project_id := rec.source_project_id;
        v_mold_tbl(1).pa_expenditure_org_id := rec.pa_expenditure_org_id;
        v_mold_tbl(1).to_project_id := rec.to_project_id;
        v_mold_tbl(1).expenditure_type := rec.expenditure_type;
        v_mold_tbl(1).final_completion_flag := rec.final_completion_flag;
        v_mold_tbl(1).transfer_percentage := rec.transfer_percentage;
        v_mold_tbl(1).transaction_sequence_id := rec.transaction_sequence_id;
        v_mold_tbl(1).material_account := rec.material_account;
        v_mold_tbl(1).material_overhead_account := rec.material_overhead_account;
        v_mold_tbl(1).resource_account := rec.resource_account;
        v_mold_tbl(1).outside_processing_account := rec.outside_processing_account;
        v_mold_tbl(1).overhead_account := rec.overhead_account;
        v_mold_tbl(1).flow_schedule := rec.flow_schedule;
        v_mold_tbl(1).cost_group_id := rec.cost_group_id;
        v_mold_tbl(1).demand_class := rec.demand_class;
        v_mold_tbl(1).qa_collection_id := rec.qa_collection_id;
        v_mold_tbl(1).kanban_card_id := rec.kanban_card_id;
        v_mold_tbl(1).overcompletion_transaction_id := rec.overcompletion_transaction_id;
        v_mold_tbl(1).overcompletion_primary_qty := rec.overcompletion_primary_qty;
        v_mold_tbl(1).overcompletion_transaction_qty := rec.overcompletion_transaction_qty;
        v_mold_tbl(1).end_item_unit_number := rec.end_item_unit_number;
        v_mold_tbl(1).scheduled_payback_date := rec.scheduled_payback_date;
        v_mold_tbl(1).line_type_code := rec.line_type_code;
        v_mold_tbl(1).parent_transaction_temp_id := rec.parent_transaction_temp_id;
        v_mold_tbl(1).put_away_strategy_id := rec.put_away_strategy_id;
        v_mold_tbl(1).put_away_rule_id := rec.put_away_rule_id;
        v_mold_tbl(1).pick_strategy_id := rec.pick_strategy_id;
        v_mold_tbl(1).pick_rule_id := rec.pick_rule_id;
        v_mold_tbl(1).common_bom_seq_id := rec.common_bom_seq_id;
        v_mold_tbl(1).common_routing_seq_id := rec.common_routing_seq_id;
        v_mold_tbl(1).cost_type_id := rec.cost_type_id;
        v_mold_tbl(1).org_cost_group_id := rec.org_cost_group_id;
        v_mold_tbl(1).move_order_line_id := rec.move_order_line_id;
        v_mold_tbl(1).task_group_id := rec.task_group_id;
        v_mold_tbl(1).pick_slip_number := rec.pick_slip_number;
        v_mold_tbl(1).reservation_id := rec.reservation_id;
        v_mold_tbl(1).transaction_status := rec.transaction_status;
        v_mold_tbl(1).transfer_cost_group_id := rec.transfer_cost_group_id;
        v_mold_tbl(1).lpn_id := rec.lpn_id;
        v_mold_tbl(1).transfer_lpn_id := rec.transfer_lpn_id;
        v_mold_tbl(1).pick_slip_date := rec.pick_slip_date;
        v_mold_tbl(1).content_lpn_id := rec.content_lpn_id;
        v_mold_tbl(1).transaction_quantity := p_pick_conf_qty;
        v_mold_tbl(1).primary_quantity := p_pick_conf_qty;
        v_mold_tbl(1).shipped_quantity := p_pick_conf_qty;
        INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM(p_api_version_number => 1.0,
                                                    p_init_msg_list      => FND_API.G_FALSE,
                                                    p_commit             => FND_API.G_FALSE,
                                                    x_return_status      => l_return_status,
                                                    x_msg_count          => l_msg_count,
                                                    x_msg_data           => l_msg_data,
                                                    p_move_order_type    => 3 -- PickWave - Order
                                                    p_transaction_mode   => 1 -- 1:On-Line, 2:Concurrent, 3:Background
                                                    p_trolin_tbl         => v_moveln_tbl_d,
                                                    p_mold_tbl           => v_mold_tbl,
                                                    x_mmtt_tbl           => v_mold_tbl,
                                                    x_trolin_tbl         => v_moveln_tbl_o,
                                                    p_transaction_date   => SYSDATE);
        COMMIT;                                           
        DBMS_OUTPUT.PUT_LINE('Return status of INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM  = ' ||
                             l_return_status);
        IF l_return_status != FND_API.G_RET_STS_SUCCESS THEN
          pStatus  := cv_fail;
          pMsgData := 'Failed to pick confirm move order inv_pick_wave_pick_confirm_pub.pick_confirm for MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          GOTO end_of_pkcnf;
        END IF;
        v_api_pick_confirm := 1;
        dbms_output.put_line('Status of the Pick Confirm is : ' ||
                             l_return_status);
        <<end_of_pkcnf>>
        NULL;
      end loop;
    END;
    Updating Shipping attributes
    DECLARE
      --Standard Parameters.   
      p_api_version NUMBER;
      init_msg_list VARCHAR2(30);
      p_commit      VARCHAR2(30);
      --Parameters for WSH_DELIVERY_DETAILS_PUB.update_shipping_attributes.   
      source_code        VARCHAR2(15);
      changed_attributes WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType;
      --out parameters
      x_return_status VARCHAR2(10);
      x_msg_count     NUMBER;
      x_msg_data      VARCHAR2(2000);
      x_msg_details   VARCHAR2(3000);
      x_msg_summary   VARCHAR2(3000);
      -- Handle exceptions
      vApiErrorException EXCEPTION;
    BEGIN
      -- Initialize return status
      x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
      -- Call this procedure to initialize applications parameters
      FND_GLOBAL.APPS_INITIALIZE(user_id      => 0,
                                 resp_id      => 21623,
                                 resp_appl_id => 660);
      source_code := 'OE';
      changed_attributes(1).delivery_detail_id := 9317811; -- delivery_detail_id
      changed_attributes(1).shipped_quantity := 0; -- quantity to update 
      changed_attributes(1).cycle_count_quantity := 30;
      --Call to WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes.
      WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes(p_api_version_number => 1.0,
                                                          p_init_msg_list      => init_msg_list,
                                                          p_commit             => p_commit,
                                                          x_return_status      => x_return_status,
                                                          x_msg_count          => x_msg_count,
                                                          x_msg_data           => x_msg_data,
                                                          p_changed_attributes => changed_attributes,
                                                          p_source_code        => source_code);
                                                          commit;
      IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
        RAISE vApiErrorException;
      ELSE
        dbms_output.put_line('The shipped quantity is updated with ' ||
                             changed_attributes(1)
                             .shipped_quantity || ' for the delivery detail ' ||
                             changed_attributes(1).delivery_detail_id);
      END IF;
    EXCEPTION
      WHEN vApiErrorException THEN
        WSH_UTIL_CORE.get_messages('Y',
                                   x_msg_summary,
                                   x_msg_details,
                                   x_msg_count);
        IF x_msg_count > 1 THEN
          x_msg_data := x_msg_summary || x_msg_details;
          DBMS_OUTPUT.PUT_LINE('Message Data : ' || x_msg_data);
        ELSE
          x_msg_data := x_msg_summary;
          DBMS_OUTPUT.PUT_LINE('Message Data : ' || x_msg_data);
        END IF;
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Unexpected Error: ' || SQLERRM);
    END;
    Thanks

    Hi,
    Goto VTFL.Select you valid combination.
    Click on item.Select yout item category there.Goto details.
    Select the Pos/neg quantity field as "+".
    Maintain the billing quantity as "A".
    Maintain VBRK/VBRP as "001".
    Save.
    Goto VOV7 and select your item category.Details.
    Select completion rule as "B" and billing relevance as "F".
    Save.
    Pls go through the follwing threads that are posted by me earlier.
    [Invoice split|Re: Invoice split]
    [Splitiing of invoice|Re: Invoice split]
    Regards,
    Krishna.

  • Disable auto Pick confirmation for EK00 output - Outbound Delivery

    Hello experts,
    Need help with Outbound Delivery Picking output typ EK00, I have setup the output type to be triggered automatically upon Delivery creation, It's printing the pick List as desired, But the problem is it's also confirming the Pick quantity automatically. Is there a way to set up this output to just print the PickList and not confirm the Pick Qty ?
    Thanks for your help.
    Kris T

    Hello Kris,
    If you want to deactivate automatic picking confirmation, you have remove condition type WMTA which results in automatic confirmation of picking.
    Go to NACE
    Application V2
    Here output type/ Condition record  WMTA needs to be removed.
    Also you have reconfigure movement type settings.
    SPRO>>LOGISTICS EXECUTION>>WAREHOUSE MANAGEMENT>>ACTIVITIES>>TRANSFERS>>DEFINE MOVEMENT TYPES
    Execute.
    select combination of warehouse number and movement type
    ands reset the automatic TO indicator to keep it 'BLANK' in background processing Tab.
    With this settings maintained you can stop picking status to 'C' automatically when delivery is cerated.
    Br,
    Tushar

  • Outbound Picking Confirmation Idoc - which one?

    Hi all,
    I havea client who desires to send a picking confirmation notice to their customer once a order is picked.  In essence, it seems similar to an Delivery notification, for which we are using idoc DELVRY01/SHPCON. 
    Is this Idoc suitable for a picking notification, or is there a better one?  I have spotted WMTCID03 (confirm Transfer Order) but the details in this idoc are insufficient for the clients requirements? 
    Any thoughts would be greatfully appreciated.  Points awarded for a suitable answer.
    Cheers,
    Steve

    The client dropped the requirement.

  • IDoc type "DELVRY03" for INBOUND delivery confirmation and Outbound Deliver

    Hi ,
    We have a requirement where we have to send Inbound delivery confirmation as well as outbound delivery notification to our same customer. (3PL case)
    We have a EDI partner who is receiving our messages and transforming them before sending it to customer.
    Now my problem is , since I am using same idoc type (DELVRY03) for both cases therefore wondering how my EDI partner will differentiate whether received message is a INBOUND delivery confirmation or OUTBound delivery notification.
    regards
    Shrey

    Thx for your reply ...
    Wondering about the impacts , if I create a new message type like ZDESADV and attach it to DELVRY03.
    In this i could have two message types DESADV and ZDESADV.
    Will it impact anywhere ?
    Regards
    Shrey

  • Picking confirmation using IDOC

    Hi,
         I have to create pick confirmation from WMS to SAP. I'm uing SHPCON message type  and DELVRY03 basic type and idoc_input_delvry FM from my development. very this is fine i have got all fields reqired in basic type the problem is
    1. IF WMS don;t send any pick quantity for line item or if it sends '0' quantity the line item has to be deleted from the Delivery.
    2. If in case pick qty is more than the delivery qty it should generate an error.
    3.Thre is a concept called Batch split in Outbound delivery. What it the functionality of the batch split.
      Can any one come accross these kind of scenario plz help me.
    Thanks & Regards,
    Naren.

    i think u r going to generate the 51 status for the conditions in ur idoc
    for 1 and 2 .
    Pick quantity is not maintained for the table . The reference for this is the Delivered Quantity.
    Goto delivery (vl02n) and enter a delivery now see the delivery qty for a particular item .
    say 16 for Del qty now keep pick qty as 0.
    and save .
    now see the over all pick status . this will be 'A'.
    repeat the same process and now keep pick qty as 4 .
    and save .
    now see the over all pick status . this will be 'B'.
    this becomes 'C' means completely picked if the pick qty is eq 16 in this scenario.
    i cannot pick 17 as this is out of scope error will be triggered.
    <b>Pickup the segment which is populating the pick qty and keep the options above u
    and compare it with delivered qty.</b>
    for 3 ..
    refer this..
    Let me put it this way.
    The process is suppose a sales order is there
    and that is scheduled
    16 on dec 29
    24 on dec 30
    if i create a delivery as of today ie dec 29
    then the pick qty is 16
    and i create a delivery on dec 30 ie tommow
    then the pick qty is 24.
    total quantity for that item is 40 (break
    16+24).
    For this break up u need to look into Vbep
    Entries .
    This is the process of scheduling where in two
    deliveries are created for one sales order .(as
    example).
    regards,
    vijay.

  • Delivery Pick Confirmation

    Hi Experts,
    How to make complete pick confirmation of delivery  to make SHIPMENT?
    Thanks ....

    Hi SRIDHAR,
              Using trx LT12 you make the picking confirmation.
    Thanks,
    Mariano.

  • URGENT- Update for picking confirmation & PGI

    Hi Experts,
    Is there any FM/BAPI to update delivery for both the picking confirmation & PGI.
    I am trying to use WS_UPDATE_DELIVERY_2 but it is triggerring me an error at delivery positions.
    If it is the correct FM used then plz forward me the parameters for the req.
    Thank you,
    Sangeetha

    Check with below logic :
    if flag = 'X'.  Assume that flag = X means - PGI else  delivery update.
    Use FM  -  WS_DELIVERY_UPDATE
    else.
    Use FM : SD_DELIVERY_UPDATE_PICKING
    endif.
    Check the below code for ref PGI ..
    REPORT ZWM_OVERWEIGHT_FIX  no standard page heading
                               message-id zwm.
    ======================================================================
    Program Name : ZWM_OVERWEIGHT_FIX                                    *
    Description  : Tool to fix Overweight in delivery line item,         *
                   Used All Function module to cancel invoice ,          *
                   Reverse the goods issue  ,Update Delivery qty,Create  *
                   invoice                                               *
    Author       : Seshu                                                 *
    Date         : 05/08/2007                                            *
    MODIFICATION HISTORY                                                 *
    DATE    | AUTHOR   | CHANGE #   | DESCRIPTION OF MODIFICATION        *
    --|||--
    05/08/07| Seshu    | DEVK921979 | Initial                            *
    D A T A - D E C L A R A T I O N     *******************
    Tables
    Tables : vbak,
             vbap,
             vbfa,
             likp,
             lips,
             vbrk,
             vbrp.
    Internal Tables
    data : i_lips like lips occurs 0 with header line,
           i_vbap like vbap occurs 0 with header line.
    Variables
    data : v_deliv like vbfa-vbelv,
           v_invoic like vbfa-vbelv.
    Data Declaration Part for Post Goods Issue
    DATA: l_vbeln LIKE likp-vbeln,
          l_vbkok LIKE vbkok,
          i_prot LIKE prott OCCURS 0 WITH HEADER LINE,
          ef_error_any_0 TYPE c,
          ef_error_in_item_deletion_0 TYPE c,
          ef_error_in_pod_update_0 TYPE c,
          ef_error_in_interface_0 TYPE c,
          ef_error_in_goods_issue_0 TYPE c,
          ef_error_in_final_check_0 TYPE c,
          d_return   LIKE bapireturn1.
    Internal tables for BAPI Function Module
    data : i_cret like BAPIRETURN1 occurs 0 with header line,
           i_csucess like BAPIVBRKSUCcESS occurs 0 with header line,
           i_ret2 like bapiret2 ,
           flag type c,
           i_mesg like mesg occurs 0 with header line.
    Data Declaration for Invoice Creation
    DATA: VBSK_I     LIKE  VBSK.
    data: d_success  type  c.
    DATA: XKOMFK LIKE      KOMFK   OCCURS 0 WITH HEADER LINE,
          XKOMV  LIKE      KOMV    OCCURS 0 WITH HEADER LINE,
          XTHEAD LIKE      THEADVB OCCURS 0 WITH HEADER LINE,
          XVBFS  LIKE      VBFS    OCCURS 0 WITH HEADER LINE,
          XVBPA  LIKE      VBPAVB  OCCURS 0 WITH HEADER LINE,
          XVBRK  LIKE      VBRKVB  OCCURS 0 WITH HEADER LINE,
          XVBRP  LIKE      VBRPVB  OCCURS 0 WITH HEADER LINE,
          XVBSS  LIKE      VBSS    OCCURS 0 WITH HEADER LINE,
          XKOMFKGN LIKE    KOMFKGN OCCURS 0 WITH HEADER LINE.
    S E L E C T I O N  -  S C R E E N   ******************
    Selection-screen
    Selection-screen : begin of block blk with frame title text-001.
    parameters : p_vbeln like vbak-vbeln obligatory.
    selection-screen : end of block blk.
    A T -  S E L E C T I O N  - S C R E E N ***************
    Validation on Sales order
    at selection-screen on p_vbeln.
    Check the data on VBAK Table
      select single vbeln from vbak into vbak-vbeln
                                where vbeln = p_vbeln.
      if sy-subrc ne 0.
        message e006 with p_vbeln.
      endif.
    S T A R T  - O F - S E L E C T I O N *******************
    Start-of-selection.
      break sreddy.
    Get the Invoice Number corresponding Sales Order Number
      perform get_invoice.
    Step 1.
    Cancel the Invoice  - Transaction VF11
      perform cancel_invoice.
    Reverse the goods issue
      perform reverse_goodsissue.
    Get the Order and Delivery Items
      perform get_sales_deliv.
    Delivery Change
      perform Delivery_change.
    Create Invoice document
      perform invoice_create.
    E N D  -  O F -  S E L E C T I O N  *******************
    end-of-selection.
    if flag = 'X'.
    message i012 with p_vbeln.
    endif.
    *&      Form  get_invoice
          Get Invoice Number
    FORM get_invoice.
    Clear Variables
      clear : v_deliv,
              v_invoic,
              flag.
    Get the Delivery Number First
      select single vbeln from vbfa into v_deliv
                               where vbelv = p_vbeln
                               and   vbtyp_n = 'J'.
      if sy-subrc ne 0.
        message i004 with p_vbeln.
        stop.
      endif.
    Get the Invoice Number
      select single vbeln from vbfa into v_invoic
                               where vbelv = p_vbeln
                               and   vbtyp_n = 'M'.
      if sy-subrc ne 0.
        message i003 with p_vbeln.
        stop.
      endif.
    ENDFORM.                    " get_invoice
    *&      Form  cancel_invoice
          Cancel the Invoice
    FORM cancel_invoice.
      clear : i_ret2,
              i_cret,
              i_csucess.
      refresh : i_cret,
                i_csucess.
      CALL FUNCTION 'BAPI_BILLINGDOC_CANCEL1'
        EXPORTING
          BILLINGDOCUMENT       = v_invoic
      TESTRUN               =
      NO_COMMIT             =
      BILLINGDATE           =
        TABLES
          RETURN                = i_cret
          SUCCESS               = i_csucess
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
                WAIT   = space
           IMPORTING
                RETURN = i_ret2.
    read table i_cret with key type = 'E'.
      if sy-subrc ne 0.
        message i005 with v_invoic.
        stop.
      endif.
    ENDFORM.                    " cancel_invoice
    *&      Form  reverse_goodsissue
          Reverse the goods Issue
    FORM reverse_goodsissue.
    Local Variable
      data : lv_vbtyp like likp-vbtyp.
      clear : i_mesg,
              lv_vbtyp.
      refresh : i_mesg.
      select single vbtyp from likp into lv_vbtyp
                               where vbeln = v_deliv.
      CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
        EXPORTING
          I_VBELN                         = v_deliv
          I_BUDAT                         = sy-datum
        I_COUNT                         =
        I_MBLNR                         =
        I_TCODE                         =
          I_VBTYP                         = lv_vbtyp
        TABLES
          T_MESG                          = i_mesg
       EXCEPTIONS
         ERROR_REVERSE_GOODS_ISSUE       = 1
         OTHERS                          = 2
      if sy-subrc ne 0.
        message i007 with v_deliv.
      endif.
    ENDFORM.                    " reverse_goodsissue
    *&      Form  get_sales_deliv
          Get the Sales order and Deliv Items
    FORM get_sales_deliv.
    Local Variables
      data : lv_kwmeng like vbap-kwmeng.
      clear : i_lips,
              i_vbap.
      refresh : i_lips,
                i_vbap.
    Select the data from LIPS
      select * from lips into table i_lips
                         where vbeln = v_deliv.
      if sy-subrc ne 0.
        message i008 with v_deliv.
        stop.
      endif.
      sort i_lips by vbeln posnr.
      Get the Sales order Item Data.
      select * from vbap into table i_vbap
                              where vbeln = p_vbeln.
      if sy-subrc ne 0.
        message i006 with p_vbeln.
        stop.
      endif.
      sort i_vbap by vbeln posnr.
    Compare delivery Item and Order Items
      loop at i_lips.
        clear lv_kwmeng.
        read table i_vbap with key posnr = i_lips-posnr.
        if sy-subrc eq 0.
          lv_kwmeng = i_vbap-kwmeng * 2.
          if lv_kwmeng >= i_lips-lfimg.
            i_lips-lfimg = i_vbap-kwmeng.
            modify i_lips.
          endif.
        endif.
      endloop.
    ENDFORM.                    " get_sales_deliv
    *&      Form  Delivery_change
          Delivery Update
    FORM Delivery_change.
      Clear : i_prot.
      refresh : i_prot.
    Delivery Update
      CALL FUNCTION 'LE_MOB_DELIVERY_UPDATE'
           EXPORTING
                do_commit                = 'X'
           TABLES
                t_delivery_items         = i_lips
                prot                     = i_prot
           EXCEPTIONS
                conversion_overflow      = 1
                essential_data_missing   = 2
                error                    = 3
                nothing_to_update        = 4
                lock_after_update_failed = 5
                error_in_delivery_update = 6
                OTHERS                   = 7.
      COMMIT WORK.
      IF sy-subrc <> 0.
        MESSAGE i009 with v_deliv.
      endif.
    Post Goods Issue
      CLEAR:    d_return,
                i_prot,
                l_vbeln,
                l_vbkok.
      REFRESH i_prot.
      CLEAR:  ef_error_in_item_deletion_0    ,
              ef_error_in_pod_update_0       ,
              ef_error_in_interface_0        ,
              ef_error_in_goods_issue_0      ,
              ef_error_in_final_check_0      .
    carry out goods issue
      l_vbeln          = v_deliv.
      l_vbkok-vbeln_vl = l_vbeln.
      l_vbkok-wabuc    = 'X'.
    carry out goods issue
      l_vbeln          = v_deliv.
      l_vbkok-vbeln_vl = l_vbeln.
      l_vbkok-wabuc    = 'X'.
    SET UPDATE TASK LOCAL.
      CALL FUNCTION 'WS_DELIVERY_UPDATE'
           EXPORTING
                vbkok_wa                    = l_vbkok
                synchron                    = 'X'
                no_messages_update          = ' '
                update_picking              = 'X'
                commit                      = 'X'
                delivery                    = l_vbeln
                nicht_sperren               = 'X'
                if_error_messages_send_0    = space
           IMPORTING
                ef_error_any_0              = ef_error_any_0
                ef_error_in_item_deletion_0 = ef_error_in_item_deletion_0
                ef_error_in_pod_update_0    = ef_error_in_pod_update_0
                ef_error_in_interface_0     = ef_error_in_interface_0
                ef_error_in_goods_issue_0   = ef_error_in_goods_issue_0
                ef_error_in_final_check_0   = ef_error_in_final_check_0
           TABLES
                prot                        = i_prot
           EXCEPTIONS
                error_message               = 1
                OTHERS                      = 2.
      if sy-subrc ne 0.
        message i010 with v_deliv.
      else.
        COMMIT WORK .
      endif.
    ENDFORM.                    " Delivery_change
    *&      Form  invoice_create
          Invoice Creation
    FORM invoice_create.
      refresh: XKOMFK, XKOMV,
               XTHEAD, XVBFS,
               XVBPA,  XVBRK,
               XVBRP,  XVBSS.
      clear  : XKOMFK, XKOMV,
               XTHEAD, XVBFS,
               XVBPA,  XVBRK,
               XVBRP,  XVBSS,
               VBSK_I.
      VBSK_I-SMART = 'F'.
      XKOMFK-VBELN =  v_deliv.
      XKOMFK-VBTYP = 'J'.
      APPEND XKOMFK.
      CALL FUNCTION 'RV_INVOICE_CREATE'
           EXPORTING
                VBSK_I       = VBSK_I
                WITH_POSTING = 'C'
           TABLES
                XKOMFK       = XKOMFK
                XKOMV        = XKOMV
                XTHEAD       = XTHEAD
                XVBFS        = XVBFS
                XVBPA        = XVBPA
                XVBRK        = XVBRK
                XVBRP        = XVBRP
                XVBSS        = XVBSS.
      if sy-subrc eq 0.
        COMMIT WORK.
       flag = 'X'.
      else.
      message i011 with p_vbeln.
      endif.
    ENDFORM.                    " invoice_create
    Thanks
    Seshu

  • SAP provided function module to update picking confirmation in VL02N

    Hi
    In transaction VL02N , the quantity,net weight and batch inf is updated manually.So the question is there any SAP provided function module to update picking confirmation instead of using BDC/call transaction method?

    Hi,
        Use below FM :
    Clear : i_prot.
    refresh : i_prot.
    Delivery Update
    CALL FUNCTION 'LE_MOB_DELIVERY_UPDATE'
    EXPORTING
    do_commit = 'X'
    TABLES
    t_delivery_items = i_lips
    prot = i_prot
    EXCEPTIONS
    conversion_overflow = 1
    essential_data_missing = 2
    error = 3
    nothing_to_update = 4
    lock_after_update_failed = 5
    error_in_delivery_update = 6
    OTHERS = 7.
    COMMIT WORK.
    Pass lips-lgort..
    Refer
    https://forums.sdn.sap.com/click.jspa?searchID=4212688&messageID=3855382
    Regards

  • Pick release without pick confirm

    Hi All,
    I am using wsh_deliveries_pub.delivery_action API to pick release my delivery.How ever it's pick confirming also.
    My requirement is to 'release to warehouse',I dont want to make auto pick confirm as 'Yes'.Here I am giving action_code as PICK-RELEASE'
    Could anyone please help me here how to pick release a delivery by making auto pick confirm as no.Is there any flag i need to set in wsh_deliveries_pub.delivery_action.
    Thanks much in advance.
    Regards,
    Sireesha

    Hi,
    check whether WSH_PICKING_BATCHES_PUB.RELEASE_BATCH can be used (Not Tested)..

Maybe you are looking for