‎2021 Sep 11 10:01 AM
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.
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 14 10:02 PM
Sorry but it's impossible to read and understand the question since it's formatted as code and therefore became one very long (and therefore unreadable) line. Please fix the text if you're expecting any answers.
Thanks.