0% found this document useful (0 votes)
17 views

zsd_delivery_create_dev

The document outlines the method '/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY' created by Rushikesh K on November 13, 2024, for managing delivery entities in the MM module. It includes detailed data structures and logic for processing orders, shipping details, and sales order items, along with error handling and transaction management. The code has been modified multiple times to enhance functionality and address specific business requirements.

Uploaded by

Bishnu Tosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

zsd_delivery_create_dev

The document outlines the method '/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY' created by Rushikesh K on November 13, 2024, for managing delivery entities in the MM module. It includes detailed data structures and logic for processing orders, shipping details, and sales order items, along with error handling and transaction management. The code has been modified multiple times to enhance functionality and address specific business requirements.

Uploaded by

Bishnu Tosh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

METHOD /iwbep/if_mgw_appl_srv_runtime~create_deep_entity.

***********************************************************************************
***********************
* Program Title :
/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_DEEP_ENTITY
* Created By : Rushikesh K
* Functional Consultant : *
* Creation Date : 13.11.2024 14:50:46
* Transport request Number :
* Module : MM
* Description :
***********************************************************************************
***********************
* Modification History
***********************************************************************************
***********************
* Date UserID REQ# Transport# / Description
* ----- ------------ ---------- ----------------------------
*
*
***********************************************************************************
***********************

DATA :ls_entity TYPE zsd_delivery_final.


DATA : lt_orders TYPE STANDARD TABLE OF zsd_delivery_orders_ss.
DATA : lwa_orders LIKE LINE OF lt_orders.
DATA : lt_shipdetails TYPE STANDARD TABLE OF zsd_delivery_shipdetail_ss.
DATA : lwa_shipdetails LIKE LINE OF lt_shipdetails.
DATA : lt_items TYPE STANDARD TABLE OF zsd_delivery_item_ss.
DATA : lwa_items LIKE LINE OF lt_items.
DATA : lv_ship_point TYPE bapidlvcreateheader-ship_point.
DATA : lv_due_date TYPE bapidlvcreateheader-due_date.
DATA : lt_sales_order_items TYPE TABLE OF bapidlvreftosalesorder.
DATA : ls_sales_order_items TYPE bapidlvreftosalesorder.
DATA : lv_return TYPE TABLE OF bapiret2.
DATA : lv_commit_ret TYPE bapiret2.
DATA : ls_vbkok TYPE vbkok.
DATA : lt_vbpok_tab TYPE TABLE OF vbpok.
DATA : ls_vbpok_tab TYPE vbpok.
DATA : lv_delivery TYPE bapishpdelivnumb-deliv_numb.
DATA : lv_vbkok_wa TYPE vbkok.
DATA : lt_pe_return TYPE bapireturn1.
DATA : lt_message TYPE TABLE OF bdcmsgcoll,
lo_msg TYPE REF TO /iwbep/if_message_container,
lv_mtext TYPE string,
lv_mtext1 TYPE string,
lt_return TYPE TABLE OF bapiret2.

DATA : lt_return_ref TYPE STANDARD TABLE OF bdcmsgcoll. "Added By IFBT:BS


ON 24.01.2025
DATA : lwa_return_ref LIKE LINE OF lt_return_ref. "Added By IFBT:BS
ON 24.01.2025
DATA : it_head TYPE TABLE OF zsd_del_head. "Added By IFBT:BS ON 24.01.2025
DATA : wa_head TYPE zsd_del_head. "Added By IFBT:BS ON 24.01.2025
DATA : it_line TYPE TABLE OF zsd_del_item. "Added By IFBT:BS ON 24.01.2025
DATA : wa_line TYPE zsd_del_item. "Added By IFBT:BS ON 24.01.2025

TYPES : BEGIN OF ty_orders,


extorderno TYPE vbeln_va,
ordertype TYPE string,
status TYPE string,
END OF ty_orders.

DATA : lt_orders_new TYPE TABLE OF ty_orders.


DATA : ls_orders_new TYPE ty_orders.

"<----------| Added by SSU on 17.11.2024 16:50:33 |---------->


DATA: salesdocument TYPE bapivbeln-vbeln,
order_header_inx TYPE bapisdh1x,
gt_return TYPE TABLE OF bapiret2,
gt_order_item_in TYPE TABLE OF bapisditm,
gs_order_item_in TYPE bapisditm,
gt_order_item_inx TYPE TABLE OF bapisditmx,
gs_order_item_inx TYPE bapisditmx.
"<-----------| End by SSU on 17.11.2024 16:50:33 |----------->

CALL METHOD io_data_provider->read_entry_data


IMPORTING
es_data = ls_entity.

IF ls_entity IS NOT INITIAL.


APPEND LINES OF ls_entity-orders[] TO lt_orders[].
*****************************Start of additions by IFBT:BS
24.01.2025*****************************
READ TABLE lt_orders INTO DATA(lw_orders) INDEX 1.
IF sy-subrc = 0.
SELECT SINGLE extorderno
FROM zsd_del_head
INTO @DATA(lv_order)
WHERE extorderno = @lw_orders-extorderno.
IF sy-subrc <> 0.
wa_head-extorderno = lw_orders-extorderno.
wa_head-ordertype = lw_orders-ordertype.
wa_head-status = lw_orders-status.
wa_head-udf1 = lw_orders-udf1.
wa_head-udf2 = lw_orders-udf2.
LOOP AT lw_orders-shipdetail INTO DATA(ls_ship).
wa_head-fulfillmentlocation = ls_ship-fulfillmentlocation.
wa_head-pick_date = ls_ship-pick_date .
wa_head-refereceno = ls_ship-refereceno .
wa_head-created_by = sy-uname .
wa_head-created_on = sy-datum .
wa_head-created_at = sy-uzeit .
APPEND wa_head TO it_head.
MODIFY zsd_del_head FROM TABLE it_head.
LOOP AT ls_ship-item INTO DATA(ls_item).
wa_line-extorderno = lw_orders-extorderno.
wa_line-ordertype = lw_orders-ordertype.
wa_line-status_l = lw_orders-status.
wa_line-status_h = lw_orders-status.
wa_line-udf1 = lw_orders-udf1.
wa_line-udf2 = lw_orders-udf2.
wa_line-fulfillmentlocation = ls_ship-fulfillmentlocation.
wa_line-pick_date = ls_ship-pick_date.
wa_line-refereceno = ls_ship-refereceno.
wa_line-extlineno = ls_item-extlineno.
wa_line-deliveryqty = ls_item-deliveryqty.
wa_line-pickedqty = ls_item-pickedqty.
wa_line-shippedqty = ls_item-shippedqty.
wa_line-closedqty = ls_item-closedqty.
APPEND wa_line TO it_line.
MODIFY zsd_del_item FROM TABLE it_line.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDIF.

* ENDLOOP.
*****************************End of additions by IFBT:BS
24.01.2025*******************************

IF lt_orders[] IS NOT INITIAL.


CLEAR lwa_orders.
LOOP AT lt_orders[] INTO lwa_orders.

ls_orders_new-extorderno = lwa_orders-extorderno.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_orders_new-extorderno
IMPORTING
output = ls_orders_new-extorderno.
.
ls_orders_new-ordertype = lwa_orders-ordertype.
ls_orders_new-status = lwa_orders-status.
APPEND ls_orders_new TO lt_orders_new.

SELECT vbeln, posnr, vstel, meins FROM vbap INTO TABLE @DATA(lt_vbap)
FOR ALL ENTRIES IN @lt_orders_new
WHERE vbeln = @lt_orders_new-extorderno.

SELECT vbeln, posnr, edatu FROM vbep INTO TABLE @DATA(lt_vbep)


FOR ALL ENTRIES IN @lt_orders_new
WHERE vbeln = @lt_orders_new-extorderno.

READ TABLE lt_vbep INTO DATA(ls_vbep) WITH KEY vbeln = ls_orders_new-


extorderno.
IF sy-subrc EQ 0.
CLEAR : lv_due_date.
lv_due_date = ls_vbep-edatu.
ENDIF.

READ TABLE lt_vbap INTO DATA(ls_vbap) WITH KEY vbeln = ls_orders_new-


extorderno.
IF sy-subrc EQ 0.
CLEAR : lv_ship_point.
lv_ship_point = ls_vbap-vstel.
ENDIF.

APPEND LINES OF lwa_orders-shipdetail TO lt_shipdetails.


LOOP AT lt_shipdetails INTO lwa_shipdetails.
"*********Start of Code Addition Rushikesh on 16.11.2024
12:08:34"*********
SELECT SINGLE lifex FROM likp INTO @DATA(lv_lifex) WHERE lifex EQ
@lwa_shipdetails-refereceno.
IF lv_lifex IS INITIAL.
"*********End Of Addition by Rushikesh on 16.11.2024
12:08:34"*********
APPEND LINES OF lwa_shipdetails-item TO lt_items.
* DELETE lt_items WHERE status = 'Allocated'.
LOOP AT lt_items INTO lwa_items.
CLEAR:ls_vbap.
"*********Start of Code Addition Rushikesh on 07.01.2025 12:41:22"|
*********
"**|Reason:UOM was passed as wrong DS4K903346 |

READ TABLE lt_vbap INTO ls_vbap WITH KEY vbeln = ls_orders_new-


extorderno
posnr = lwa_items-
extlineno.
IF sy-subrc EQ 0.
"*********|End Of Addition by Rushikesh on 07.01.2025
12:41:22|"*********
IF lwa_items-status = 'Shipped'.
ls_sales_order_items-ref_doc = ls_orders_new-extorderno.
ls_sales_order_items-ref_item = lwa_items-extlineno.
ls_sales_order_items-dlv_qty = lwa_items-shippedqty.
ls_sales_order_items-sales_unit = ls_vbap-meins.
APPEND ls_sales_order_items TO lt_sales_order_items.
CLEAR : ls_sales_order_items .

ls_vbpok_tab-posnr_vl = lwa_items-extlineno.
ls_vbpok_tab-posnn = lwa_items-extlineno.
ls_vbpok_tab-pikmg = lwa_items-shippedqty.
APPEND ls_vbpok_tab TO lt_vbpok_tab.
CLEAR : ls_vbpok_tab, lwa_items.

ELSEIF lwa_items-status = 'Closed'.


ls_sales_order_items-ref_doc = ls_orders_new-extorderno.
ls_sales_order_items-ref_item = lwa_items-extlineno.
ls_sales_order_items-dlv_qty = lwa_items-closedqty.
ls_sales_order_items-sales_unit = ls_vbap-meins.
APPEND ls_sales_order_items TO lt_sales_order_items.
CLEAR : ls_sales_order_items .

ls_vbpok_tab-posnr_vl = lwa_items-extlineno.
ls_vbpok_tab-posnn = lwa_items-extlineno.
ls_vbpok_tab-pikmg = lwa_items-closedqty.
APPEND ls_vbpok_tab TO lt_vbpok_tab.
CLEAR : ls_vbpok_tab, lwa_items.
ELSE.
SKIP.
ENDIF.
ENDIF.
ENDLOOP.
* CLEAR : lwa_shipdetails, lt_items[].
CLEAR : lt_items[].

**********************Start of additions by IFBT:BS on


24.01.2025**********************
ELSE.
CLEAR:lt_return_ref[].
lwa_return_ref-msgnr = '001'.
lwa_return_ref-msgtyp = 'E'.
lwa_return_ref-msgid = 'ZVIN_DELIVERY_MSG'.
lwa_return_ref-msgv1 = lwa_shipdetails-refereceno.
APPEND lwa_return_ref TO lt_return_ref[].

***********************End of additions by IFBT:BS on


24.01.2025************************
ENDIF.

CLEAR: lv_lifex.
* ENDLOOP.
IF lt_sales_order_items IS NOT INITIAL.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
ship_point = lv_ship_point
due_date = lv_due_date
IMPORTING
delivery = lv_delivery
TABLES
sales_order_items = lt_sales_order_items
return = lv_return.

IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = lv_commit_ret.

UPDATE likp SET lifex = lwa_shipdetails-refereceno


WHERE vbeln EQ lv_delivery.
CLEAR : lwa_shipdetails.
ENDIF.
ENDIF.
IF lv_delivery IS NOT INITIAL.

lv_vbkok_wa-vbeln_vl = lv_delivery.
lv_vbkok_wa-vbeln = lv_delivery.
lv_vbkok_wa-vbtyp_vl = 'J'.

LOOP AT lt_vbpok_tab INTO ls_vbpok_tab.


ls_vbpok_tab-vbeln_vl = lv_delivery.
ls_vbpok_tab-vbeln = lv_delivery.
MODIFY lt_vbpok_tab FROM ls_vbpok_tab.
CLEAR : ls_vbpok_tab.
ENDLOOP.

CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'


EXPORTING
vbkok_wa = lv_vbkok_wa
TABLES
vbpok_tab = lt_vbpok_tab.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = lv_commit_ret.

IF sy-subrc EQ 0.
CALL FUNCTION 'CSO_P_DLVRY_GOODS_ISSUE_CREATE'
EXPORTING
pi_deliv_numb = lv_delivery
IMPORTING
pe_return1 = lt_pe_return.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'


EXPORTING
wait = 'X'
IMPORTING
return = lv_commit_ret.

CALL FUNCTION 'ZSD_B2B_INVOICE_POST'


EXPORTING
lv_vbeln = lv_delivery
TABLES
lt_messages = lt_message.

DELETE lt_message WHERE msgtyp <> 'E' .


DELETE lv_return WHERE type <> 'E' .
IF lt_pe_return-type <> 'E'.
CLEAR lt_pe_return.
ENDIF.

IF lv_return IS NOT INITIAL.


READ TABLE lv_return INTO DATA(ls_return) INDEX 1.
IF sy-subrc = 0.
UPDATE zsd_del_head SET upd_sts = ls_return-message_v1
WHERE extorderno = lwa_shipdetails-
refereceno+0(100).
ENDIF.
ELSEIF lt_pe_return IS NOT INITIAL.
IF lt_pe_return-type = 'E'.
UPDATE zsd_del_head SET upd_sts = lt_pe_return-message_v1
WHERE extorderno = lwa_shipdetails-
refereceno+0(100).
ENDIF.
ELSEIF lt_message IS NOT INITIAL.
READ TABLE lt_message INTO DATA(ls_return1) INDEX 1.
IF sy-subrc = 0.
UPDATE zsd_del_head SET upd_sts = ls_return1-msgv1
WHERE extorderno = lwa_shipdetails-
refereceno+0(100).
ELSEIF lv_return IS INITIAL AND lt_pe_return IS INITIAL AND
lt_message IS INITIAL.
CONCATENATE 'Invoice No :' lv_delivery 'Posted Succesfully'
INTO ls_return-message_v1 SEPARATED BY space.
UPDATE zsd_del_head SET upd_sts = ls_return-message_v1
WHERE extorderno = lwa_shipdetails-
refereceno+0(100).
ENDIF.
ENDIF.

IF lt_return_ref[] IS NOT INITIAL.


APPEND LINES OF lt_return_ref[] TO lt_message[].
ENDIF.

***********************Start of Additions by IFBT:BS


24.01.2025**************************
IF lt_message[] IS NOT INITIAL.

******************Convert bdcmsgcoll to bapiret2 added by IFBT:BS


24.01.2025******************
CALL FUNCTION 'CONVOIL_BDCMSGCOLL_TO_BAPIRET2'
TABLES
imt_bdcmsgcoll = lt_message[]
ext_return = lt_return[].

* APPEND VALUE #( id = 'ZVIN_GRN_MSG' number = '000' type = 'S'


message_v1 = lv_materialdocument message_v2 = lv_matdocumentyear ) TO lt_return.
CALL METHOD
me->/iwbep/if_mgw_conv_srv_runtime~get_message_container
RECEIVING
ro_message_container = lo_msg. " Message Container
Interface
IF lo_msg IS BOUND.
CALL METHOD lo_msg->add_messages_from_bapi
EXPORTING
it_bapi_messages = lt_return. " Return parameter table
ENDIF.
" Raising Exception
RAISE EXCEPTION TYPE /iwbep/cx_mgw_busi_exception
EXPORTING
textid =
/iwbep/cx_mgw_busi_exception=>business_error
message_container = lo_msg.
ENDIF.

****************************End of additions by ifbt:bs


24.01.2025*******************************

***********************Start of comment by IFBT:BS


24.01.2025***************************
* LOOP AT lt_message INTO DATA(ls_messages).
* CLEAR:lv_mtext.
* CALL FUNCTION 'MASS_MESSAGE_GET'
* EXPORTING
* arbgb = ls_messages-msgid
* msgnr = ls_messages-msgnr
* msgv1 = ls_messages-msgv1
* msgv2 = ls_messages-msgv2
* msgv3 = ls_messages-msgv3
* msgv4 = ls_messages-msgv4
* IMPORTING
* msgtext = lv_mtext
* EXCEPTIONS
* message_not_found = 1
* OTHERS = 2.
* IF sy-subrc = 0.
* CONCATENATE lv_mtext1 lv_mtext INTO lv_mtext1 SEPARATED BY
space.
* CLEAR lv_mtext.
* ENDIF.
* ENDLOOP.
**********************End of Comment by IFBT:BS*************************

ENDIF.
ENDIF.
ENDIF.
CLEAR : lv_delivery, lt_pe_return, lv_commit_ret, lt_sales_order_items,
lt_vbpok_tab,lv_vbkok_wa .
ENDLOOP.

"<----------| Added by SSU on 17.11.2024 17:13:40 |---------->


LOOP AT lt_shipdetails INTO lwa_shipdetails.
LOOP AT lwa_shipdetails-item[] INTO lwa_items.
IF lwa_items-closedqty IS NOT INITIAL.
IF salesdocument IS INITIAL.
salesdocument = ls_orders_new-extorderno.
order_header_inx-updateflag = 'U'.
ENDIF.
gs_order_item_in-itm_number = lwa_items-extlineno.
gs_order_item_inx-itm_number = lwa_items-extlineno.
gs_order_item_in-reason_rej = 'Z1'.
gs_order_item_inx-reason_rej = 'X'.
gs_order_item_inx-updateflag = 'U'.
APPEND gs_order_item_in TO gt_order_item_in.
APPEND gs_order_item_inx TO gt_order_item_inx.
CLEAR: gs_order_item_in, gs_order_item_inx.
ENDIF.
CLEAR lwa_items.
ENDLOOP.
IF gt_order_item_in IS NOT INITIAL.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = salesdocument
order_header_inx = order_header_inx
TABLES
return = gt_return
order_item_in = gt_order_item_in
order_item_inx = gt_order_item_inx.
IF line_exists( gt_return[ type = 'E' ] ).
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
CLEAR: salesdocument, order_header_inx, gt_return[],
gt_order_item_in[], gt_order_item_inx[].
ENDIF.
CLEAR lwa_shipdetails.
ENDLOOP.
"<-----------| End by SSU on 17.11.2024 17:13:40 |----------->

ENDLOOP.
ENDIF.
ENDIF.
CONCATENATE 'Invoice No :' 'Posted Succesfully' INTO ls_entity-responsemessage
SEPARATED BY space.
copy_data_to_ref(
EXPORTING
is_data = ls_entity
CHANGING
cr_data = er_deep_entity ).
ENDMETHOD.

You might also like