‎2021 Sep 08 7:41 PM
Hi Guys,
I have a requirement for PO changes ie.,User will have an Excel format and when we upload need to changes in ME22n . So i wrote an BAPI as below . But i am not getting 'Changes in PO screen' Please guidance me what mistake doing here.
FORM get_form .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_bapi
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Please input the correct data' TYPE 'E'.
ENDIF.
LOOP AT lt_bapi INTO ls_bapi.
* => Header Declarations.
ls_bapimepoheader-po_number = ls_bapi-ebeln.
ls_poheader-po_number = ls_bapi-ebeln.
ls_poheader-purch_org = ls_bapi-ekorg.
ls_poheader-pur_group = ls_bapi-ekgrp.
ls_poheader-comp_code = ls_bapi-bukrs.
APPEND ls_poheader TO lt_poheader.
*=>Header X Declartions.
ls_poheader-po_number = 'X'.
ls_poheaderx-purch_org = 'X'.
ls_poheaderx-pur_group = 'X'.
ls_poheaderx-comp_code = 'X'.
APPEND ls_poheaderx TO lt_poheaderx.
* =>Item Declartions.
ls_poitem-po_item = ls_bapi-ebelp.
ls_poitem-material = ls_bapi-matnr.
ls_poitem-plant = ls_bapi-werks.
ls_poitem-stge_loc = ls_bapi-lgort.
ls_poitem-quantity = ls_bapi-menge.
ls_poitem-po_unit = ls_bapi-meins.
APPEND ls_poitem TO lt_poitem.
*=>Item X declartions.
ls_poitemx-po_item = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
APPEND ls_poitemx TO lt_poitemx.
* =>Delivery date declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
APPEND ls_bapimeposchedule TO lt_bapimeposchedule.
* =>Delivery date X declarations.
ls_bapimeposchedulx-po_item = 'X'.
ls_bapimeposchedulx-delivery_date = 'X'.
APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.
* BREAK-POINT.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ls_bapimepoheader-po_number
poheader = ls_poheader
poheaderx = ls_poheaderx
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx
* POADDRDELIVERY =
poschedule = lt_bapimeposchedule
poschedulex = lt_bapimeposchedulx.
‎2021 Sep 09 9:57 AM
Could you look for error before success, coul look like
IF lt_return IS NOT INITIAL. " some messages
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-message = 'Error'.
ls_alv-message1 = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
IF sy-subrc NE 0. " no error
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
LOOP AT lt_return INTO ls_return.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-ebeln = ls_bapi-ebeln.
CASE ls-return-type.
WHEN 'S'.
ls_alv-message = 'Success'.
WHEN OTHERS.
ls_alv-message = 'Warning'. " e.g. 'no change made..."
ENDCASE.
ls_alv-message1 = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
ENDIF.
‎2021 Sep 09 2:03 AM
*=>Item X declartions.
ls_poitemx-po_item = ls_bapi-ebelp.
ls_poitemx-po_itemx = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
APPEND ls_poitemx TO lt_poitemx.
* =>Delivery date declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
ls_bapimeposchedule-SCHED_LINE = EKET-ETENR. (get from EKET table).
ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
APPEND ls_bapimeposchedule TO lt_bapimeposchedule.
* =>Delivery date X declarations.
ls_bapimeposchedulx-po_item = ls_bapi-ebelp.
ls_bapimeposchedulx-SCHED_LINE = EKET-ETENR.
ls_bapimeposchedulx-po_itemx = 'X'.
ls_bapimeposchedulx-SCHED_LINEX = 'X'.
ls_bapimeposchedulx-delivery_date = 'X'.
APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.
‎2021 Sep 09 6:47 AM
Hi Andy,
Thanks for response. I have passed as your guidance but the data not changes in PO screen
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_bapi
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Please input the correct data' TYPE 'E'.
ENDIF.
SELECT ebeln
ebelp
etenr INTO TABLE lt_eket FROM eket FOR ALL ENTRIES IN lt_bapi WHERE
ebeln = lt_bapi-ebeln ."AND
* ebelp = lt_bapi-ebelp.
LOOP AT lt_bapi INTO ls_bapi.
* => Header Declarations.
ls_bapimepoheader-po_number = ls_bapi-ebeln.
ls_poheader-po_number = ls_bapi-ebeln.
ls_poheader-purch_org = ls_bapi-ekorg.
ls_poheader-pur_group = ls_bapi-ekgrp.
ls_poheader-comp_code = ls_bapi-bukrs.
APPEND ls_poheader TO lt_poheader.
*=>Header X Declartions.
ls_poheader-po_number = 'X'.
ls_poheaderx-purch_org = 'X'.
ls_poheaderx-pur_group = 'X'.
ls_poheaderx-comp_code = 'X'.
APPEND ls_poheaderx TO lt_poheaderx.
* =>Item Declartions.
ls_poitem-po_item = ls_bapi-ebelp.
ls_poitem-material = ls_bapi-matnr.
ls_poitem-plant = ls_bapi-werks.
ls_poitem-stge_loc = ls_bapi-lgort.
ls_poitem-quantity = ls_bapi-menge.
ls_poitem-po_unit = ls_bapi-meins.
APPEND ls_poitem TO lt_poitem.
*=>Item X declartions.
ls_poitemx-po_item = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
APPEND ls_poitemx TO lt_poitemx.
* =>Delivery date declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
APPEND ls_bapimeposchedule TO lt_bapimeposchedule.
* =>Delivery date X declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedulx-po_itemx = 'X'.
ls_bapimeposchedulx-sched_linex = 'X'.
ls_bapimeposchedulx-delivery_date = 'X'.
APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.
* BREAK-POINT.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ls_bapimepoheader-po_number
poheader = ls_poheader
poheaderx = ls_poheaderx
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx
* POADDRDELIVERY =
poschedule = lt_bapimeposchedule
poschedulex = lt_bapimeposchedulx.
IF lt_return IS NOT INITIAL.
READ TABLE lt_return INTO ls_return WITH KEY type = 'S'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-message = 'Po changes are made'.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ELSE.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-ebeln = 'Changes are already made'.
ls_alv-message = 'Error'.
ls_alv-message1 = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
ENDIF.
CLEAR : ls_poheader,ls_poheaderx,ls_poitem,ls_poitemx,ls_bapimeposchedule,ls_bapimeposchedulx, ls_return .
REFRESH : lt_poheader,lt_poheaderx,lt_poitem,lt_poitemx,lt_bapimeposchedule,lt_bapimeposchedulx.
ENDIF.
IF NOT lt_alv IS INITIAL.
lt_alv1[] = lt_alv[].
ENDIF.
ENDLOOP.
‎2021 Sep 09 10:57 AM
The correct code is:
*=>Item X declartions.
ls_poitemx-po_item = ls_bapi-ebelp.
ls_poitemx-po_itemx ='X'.
.......Your code is different with my above suggestion.
‎2021 Sep 09 5:59 PM
Hi Andy ,
Sorry for coming again. Please see the code below. But however upload excel data's NOT updating in PO screen.
Please advice me.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_bapi
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Please input the correct data' TYPE 'E'.
ENDIF.
SELECT ebeln
ebelp
etenr INTO TABLE lt_eket FROM eket FOR ALL ENTRIES IN lt_bapi WHERE
ebeln = lt_bapi-ebeln AND
ebelp = lt_bapi-ebelp.
LOOP AT lt_bapi INTO ls_bapi.
* => Header Declarations.
ls_bapimepoheader-po_number = ls_bapi-ebeln.
ls_poheader-po_number = ls_bapi-ebeln.
ls_poheader-purch_org = ls_bapi-ekorg.
ls_poheader-pur_group = ls_bapi-ekgrp.
ls_poheader-comp_code = ls_bapi-bukrs.
APPEND ls_poheader TO lt_poheader.
*=>Header X Declartions.
ls_poheaderx-po_number = 'X'.
ls_poheaderx-purch_org = 'X'.
ls_poheaderx-pur_group = 'X'.
ls_poheaderx-comp_code = 'X'.
APPEND ls_poheaderx TO lt_poheaderx.
* =>Item Declartions.
ls_poitem-po_item = ls_bapi-ebelp.
ls_poitem-material = ls_bapi-matnr.
ls_poitem-plant = ls_bapi-werks.
ls_poitem-stge_loc = ls_bapi-lgort.
ls_poitem-quantity = ls_bapi-menge.
ls_poitem-po_unit = ls_bapi-meins.
APPEND ls_poitem TO lt_poitem.
*=>Item X declartions.
ls_poitemx-po_item = ls_bapi-ebelp.
ls_poitemx-po_item = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
APPEND ls_poitemx TO lt_poitemx.
* =>Delivery date declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
APPEND ls_bapimeposchedule TO lt_bapimeposchedule.
* =>Delivery date X declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedulx-po_itemx = 'X'.
ls_bapimeposchedulx-sched_linex = 'X'.
ls_bapimeposchedulx-delivery_date = 'X'.
APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.
* BREAK-POINT.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ls_bapimepoheader-po_number
poheader = ls_poheader
poheaderx = ls_poheaderx
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx
* POADDRDELIVERY =
poschedule = lt_bapimeposchedule
poschedulex = lt_bapimeposchedulx.
IF lt_return IS NOT INITIAL.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-eindt = ls_bapi-eindt.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-message = 'Error'.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
LOOP AT lt_return INTO ls_return.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-eindt = ls_bapi-eindt.
ls_alv-matnr = ls_bapi-matnr.
CASE ls_return-type.
WHEN 'S'.
ls_alv-message = 'SUCCESS'.
WHEN OTHERS.
ls_alv-message = 'WARNING'.
ENDCASE.
ls_alv-message = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
ENDIF.
CLEAR : ls_poheader,ls_poheaderx,ls_poitem,ls_poitemx,ls_bapimeposchedule,ls_bapimeposchedulx, ls_return .
REFRESH : lt_poheader,lt_poheaderx,lt_poitem,lt_poitemx,lt_bapimeposchedule,lt_bapimeposchedulx.
ENDIF.
IF NOT lt_alv IS INITIAL.
lt_alv1[] = lt_alv[].
ENDIF.
ENDLOOP.
‎2021 Sep 10 3:07 AM
Because your question already have "Best Answer ", you have no problem again.
So, why you still need advice from me?
‎2021 Sep 10 8:41 AM
‎2021 Sep 10 1:31 PM
Sorry I didn't get it.
Please explain in briefly it is an urgent.
Thanks,
Senthil.
‎2021 Sep 09 5:20 AM
Senthil, as Andy pointed, you need to pass ETENR in schedule line structure. As you do not have ETENR in your excel, pass a constant like 0001 there. Also as you are passing data from excel, I guess there will be multiple PO to change. In that case your code has to change and BAPI call has to be inside the LOOP.
‎2021 Sep 09 6:51 AM
Don't forget to call BAPI_TRANSACTION_COMMIT to commit the changes.
If the BAPI does not update data, what is important to know are the error message(s) you get in LT_RETURN.
‎2021 Sep 09 8:11 AM
Hi Senthil,
The best way to know what to pass in each internal table is to follow the below steps:
‎2021 Sep 09 8:41 AM
Hi Vipin,
Thanks for response.
I doesn't need to get the data . i need to change the data's in PO screen.
Thanks.
‎2021 Sep 09 9:57 AM
Could you look for error before success, coul look like
IF lt_return IS NOT INITIAL. " some messages
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-message = 'Error'.
ls_alv-message1 = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
IF sy-subrc NE 0. " no error
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
LOOP AT lt_return INTO ls_return.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-ebeln = ls_bapi-ebeln.
CASE ls-return-type.
WHEN 'S'.
ls_alv-message = 'Success'.
WHEN OTHERS.
ls_alv-message = 'Warning'. " e.g. 'no change made..."
ENDCASE.
ls_alv-message1 = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
ENDIF.
‎2021 Sep 09 6:01 PM
Hi Raymond,
Thanks for response and Sorry for coming again. I done as advice but my excel file NOT updating in PO screen.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = lt_bapi
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Please input the correct data' TYPE 'E'.
ENDIF.
SELECT ebeln
ebelp
etenr INTO TABLE lt_eket FROM eket FOR ALL ENTRIES IN lt_bapi WHERE
ebeln = lt_bapi-ebeln AND
ebelp = lt_bapi-ebelp.
LOOP AT lt_bapi INTO ls_bapi.
* => Header Declarations.
ls_bapimepoheader-po_number = ls_bapi-ebeln.
ls_poheader-po_number = ls_bapi-ebeln.
ls_poheader-purch_org = ls_bapi-ekorg.
ls_poheader-pur_group = ls_bapi-ekgrp.
ls_poheader-comp_code = ls_bapi-bukrs.
APPEND ls_poheader TO lt_poheader.
*=>Header X Declartions.
ls_poheaderx-po_number = 'X'.
ls_poheaderx-purch_org = 'X'.
ls_poheaderx-pur_group = 'X'.
ls_poheaderx-comp_code = 'X'.
APPEND ls_poheaderx TO lt_poheaderx.
* =>Item Declartions.
ls_poitem-po_item = ls_bapi-ebelp.
ls_poitem-material = ls_bapi-matnr.
ls_poitem-plant = ls_bapi-werks.
ls_poitem-stge_loc = ls_bapi-lgort.
ls_poitem-quantity = ls_bapi-menge.
ls_poitem-po_unit = ls_bapi-meins.
APPEND ls_poitem TO lt_poitem.
*=>Item X declartions.
ls_poitemx-po_item = ls_bapi-ebelp.
ls_poitemx-po_item = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
APPEND ls_poitemx TO lt_poitemx.
* =>Delivery date declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedule-delivery_date = ls_bapi-eindt.
APPEND ls_bapimeposchedule TO lt_bapimeposchedule.
* =>Delivery date X declarations.
ls_bapimeposchedule-po_item = ls_bapi-ebelp.
READ TABLE lt_eket INTO ls_eket WITH KEY ebeln = ls_bapi-ebeln
ebelp = ls_bapi-ebelp.
IF sy-subrc = 0.
ls_bapimeposchedule-sched_line = ls_eket-etenr.
ENDIF.
ls_bapimeposchedulx-po_itemx = 'X'.
ls_bapimeposchedulx-sched_linex = 'X'.
ls_bapimeposchedulx-delivery_date = 'X'.
APPEND ls_bapimeposchedulx TO lt_bapimeposchedulx.
* BREAK-POINT.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ls_bapimepoheader-po_number
poheader = ls_poheader
poheaderx = ls_poheaderx
* IMPORTING
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx
* POADDRDELIVERY =
poschedule = lt_bapimeposchedule
poschedulex = lt_bapimeposchedulx.
IF lt_return IS NOT INITIAL.
LOOP AT lt_return INTO ls_return WHERE type = 'E'.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-eindt = ls_bapi-eindt.
ls_alv-matnr = ls_bapi-matnr.
ls_alv-message = 'Error'.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
LOOP AT lt_return INTO ls_return.
ls_alv-ebeln = ls_bapi-ebeln.
ls_alv-ekorg = ls_bapi-ekorg.
ls_alv-ekgrp = ls_bapi-ekgrp.
ls_alv-bukrs = ls_bapi-bukrs.
ls_alv-ebelp = ls_bapi-ebelp.
ls_alv-eindt = ls_bapi-eindt.
ls_alv-matnr = ls_bapi-matnr.
CASE ls_return-type.
WHEN 'S'.
ls_alv-message = 'SUCCESS'.
WHEN OTHERS.
ls_alv-message = 'WARNING'.
ENDCASE.
ls_alv-message = ls_return-message.
APPEND ls_alv TO lt_alv.
CLEAR ls_alv.
ENDLOOP.
ENDIF.
CLEAR : ls_poheader,ls_poheaderx,ls_poitem,ls_poitemx,ls_bapimeposchedule,ls_bapimeposchedulx, ls_return .
REFRESH : lt_poheader,lt_poheaderx,lt_poitem,lt_poitemx,lt_bapimeposchedule,lt_bapimeposchedulx.
ENDIF.
IF NOT lt_alv IS INITIAL.
lt_alv1[] = lt_alv[].
ENDIF.
ENDLOOP.