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

How to Use BAPI_OUTB_DELIVERY_CHANGE for Batch Split

Former Member
0 Likes
2,531

Hi Experts, I have the follow delivery:

Item Material Deliv.Qty Un

10 739911 2 PQT

And I want to obtain this:

Item Material Deliv.Qty Un Batch

10 739911 0 PQT

900001 739911 1 PQT ZZ00060

900002 739911 1 PQT ZZ00061

But, after using the Bapi I obtained this:

Item Material Deliv.Qty Un Batch

10 739911 1,372 PQT

900001 739911 0,314 PQT ZZ00060

900002 739911 0,314 PQT ZZ00061

So as you can see the problem is with the "Deliv.Qty". I expected:

Item Deliv.Qty

10 0

900001 1

900002 1

But I obtained:

Item Deliv.Qty

10 1,372

900001 0,314

900002 0,314

The parameters that I am using in the Bapi are:

HEADER_DATA

DELIV_NUMB = 801174646

HEADER_CONTROL

DELIV_NUMB = 801174646

DELIVERY = 801174646

TECHN_CONTROL

UPD_IND = U

-


ITEM_DATA (three records):

DELIV_NUMB = 801174646

DELIV_ITEM = 000010

MATERIAL = 739911

FACT_UNIT_NOM = 1

FACT_UNIT_DENOM = 1

DELIV_NUMB = 801174646

DELIV_ITEM = 900001

MATERIAL = 739911

BATCH = ZZ00060

HIERARITEM = 000010

USEHIERITM = 1

DLV_QTY = 1

DLV_QTY_IMUNIT = 1

FACT_UNIT_NOM = 1

FACT_UNIT_DENOM = 1

DELIV_NUMB = 801174646

DELIV_ITEM = 900002

MATERIAL = 739911

BATCH = ZZ00061

HIERARITEM = 000010

USEHIERITM = 1

DLV_QTY = 1

DLV_QTY_IMUNIT = 1

FACT_UNIT_NOM = 1

FACT_UNIT_DENOM = 1

-


ITEM_CONTROL (three records):

DELIV_NUMB = 801174646

DELIV_ITEM = 000010

CHG_DELQTY = X

DELIV_NUMB = 801174646

DELIV_ITEM = 900001

CHG_DELQTY = X

DELIV_NUMB = 801174646

DELIV_ITEM = 900002

CHG_DELQTY = X

So I am missing something but I don't know what.

Can any one help me with this please?

PD: I have looked the following forums in order to use the Bapi:

2 REPLIES 2
Read only

Former Member
0 Likes
1,333

Hey,

My code is for the inbound delivery but it should work the same.

Give this a try.

REPORT  z_delivery_batch_split.

DATA:header_data  LIKE  bapiibdlvhdrchg,

header_control  LIKE  bapiibdlvhdrctrlchg,

delivery  LIKE  bapiibdlvhdrchg-deliv_numb,

ls_return LIKE bapiret2,

item_data  TYPE TABLE OF  bapiibdlvitemchg,

item_control  TYPE TABLE OF bapiibdlvitemctrlchg,

ls_item_data  LIKE  bapiibdlvitemchg,

ls_item_control LIKE  bapiibdlvitemctrlchg,

return TYPE TABLE OF bapiret2 WITH NON-UNIQUE KEY type.

header_data-deliv_numb = '1800005005'.

header_control-deliv_numb = '1800005005'.

delivery = '1800005005'.

ls_item_data-deliv_numb = '1800005005'.

ls_item_data-deliv_item = '900001'.

ls_item_data-material = '000000000020067722'.

PERFORM create_batch CHANGING ls_item_data-batch.

ls_item_data-hieraritem = '000010'.

ls_item_data-usehieritm = '1'.

ls_item_data-dlv_qty = 80.

ls_item_data-dlv_qty_imunit = 80.

ls_item_data-fact_unit_nom = '1'.

ls_item_data-fact_unit_denom = '1'.

ls_item_data-sales_unit = 'EA'.

ls_item_data-base_uom = 'EA'.

APPEND ls_item_data TO item_data.

ls_item_data-deliv_numb = '1800005005'.

ls_item_data-deliv_item = '900002'.

ls_item_data-material = '000000000020067722'.

PERFORM create_batch CHANGING ls_item_data-batch.

ls_item_data-hieraritem = '000010'.

ls_item_data-usehieritm = '1'.

ls_item_data-dlv_qty = 60.

ls_item_data-dlv_qty_imunit = 60.

ls_item_data-fact_unit_nom = '1'.

ls_item_data-fact_unit_denom = '1'.

ls_item_data-sales_unit = 'EA'.

ls_item_data-base_uom = 'EA'.

APPEND ls_item_data TO item_data.

ls_item_control-deliv_numb = '1800005005'.

ls_item_control-deliv_item = '900001'.

ls_item_control-chg_delqty = 'X'.

APPEND ls_item_control TO item_control.

ls_item_control-deliv_numb = '1800005005'.

ls_item_control-deliv_item = '900002'.

ls_item_control-chg_delqty = 'X'.

APPEND ls_item_control TO item_control.

break cgavin.

CALL FUNCTION 'BAPI_INB_DELIVERY_CHANGE'

   EXPORTING

     header_data          = header_data

     header_control       = header_control

     delivery             = delivery

*   TECHN_CONTROL        = TECHN_CONTROL

   TABLES

*   HEADER_PARTNER       = HEADER_PARTNER

*   HEADER_PARTNER_ADDR  = HEADER_PARTNER_ADDR

*   HEADER_DEADLINES     = HEADER_DEADLINES

     item_data            = item_data

     item_control         = item_control

*   ITEM_SERIAL_NO       = ITEM_SERIAL_NO

*   EXTENSION1           = EXTENSION1

*   EXTENSION2           = EXTENSION2

     return               = return

*   TOKENREFERENCE       = TOKENREFERENCE

*   HANDLING_UNIT_HEADER = HANDLING_UNIT_HEADER

*   HANDLING_UNIT_ITEM   = HANDLING_UNIT_ITEM

*   PARTIAL_GR_OBJECTS   =          PARTIAL_GR_OBJECTS

   .

READ TABLE return

INTO ls_return

WITH TABLE KEY type = 'E'.

IF sy-subrc = 0.

   MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number WITH ls_return-message_v1 ls_return-message_v2

   ls_return-message_v3 ls_return-message_v4.

ENDIF.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  EXPORTING

    wait          = 'X'.

break cgavin.

*&---------------------------------------------------------------------*

*&      Form  CREATE_BATCH

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      <--P_LS_ITEM_DATA_BATCH  text

*----------------------------------------------------------------------*

FORM create_batch  CHANGING p_ls_item_data_batch.

   DATA: ls_bncom TYPE bncom.

   ls_bncom-matnr = ls_item_data-material.

   ls_bncom-werks = 'C333'.

   ls_bncom-lgort = '3000'.

   SELECT SINGLE mtart

     FROM mara

     INTO ls_bncom-mtart

     WHERE matnr = ls_bncom-matnr.

   CALL FUNCTION 'VB_NEXT_BATCH_NUMBER'

     EXPORTING

       matnr                          = ls_bncom-matnr

       werks                          = ls_bncom-werks

       check_batch                    = 'X'

       check_material                 = ''

       message_when_auto              = ' '

       x_bncom                        = ls_bncom

       lock_batch                     = ' '

     IMPORTING

       new_charg                      = p_ls_item_data_batch

     EXCEPTIONS

       no_material                    = 1

       no_plant                       = 2

       material_not_found             = 3

       plant_not_found                = 4

       no_batch_handling              = 5

       batch_exist                    = 6

       no_number                      = 7

       illegal_batch_number           = 8

       interval_not_found             = 9

       object_not_found               = 10

       interval_overflow              = 11

       error_automatic_batch_number   = 12

       cancelled                      = 13

       automatic_batch_num_not_active = 14

       OTHERS                         = 15.

   IF sy-subrc = 0.

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

       EXPORTING

         wait = 'X'.

   ENDIF.

ENDFORM.                    " CREATE_BATCH


Read only

0 Likes
1,333

Thank you for your post. It´s work for me perfectly.

Helio.