on 09-12-2022 5:48 PM
Hi Experts.
I'm trying to update Ekko custom feilds using bapi BAPI_PO_CHANGE. but dats was not updated and shown a message "NO DATA CHANGED" .please help me to fix this issue.
thanks
Rajesh salapu
*&---------------------------------------------------------------------*
*& Report ZPGM_EKKOUPDATE_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zpgm_ekkoupdate_test.
DATA: lt_ekko TYPE TABLE OF ekko,
lv_ekko TYPE ekko.
DATA:bapi_te_po TYPE bapi_te_mepoheader , "Extension tables
bapi_te_pox TYPE bapi_te_mepoheaderx , "Extension tables
ext_container TYPE TABLE OF bapiparex WITH HEADER LINE, "Extension container
lt_return TYPE TABLE OF bapiret2,
lt_extensionout TYPE TABLE OF bapiparex.
CONSTANTS:lv_s(1) VALUE 'S',
lv_w(1) VALUE 'W',
lv_e(1) VALUE 'E',
lv_a(1) VALUE 'A'.
lv_ekko-ebeln = '0043113660'.
lv_ekko-zcon_mng = 'Manager'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_ekko-ebeln
IMPORTING
output = lv_ekko-ebeln.
lv_bapimepoheader-po_number = lv_ekko-ebeln.
CLEAR bapi_te_po.
CLEAR bapi_te_pox.
bapi_te_po-po_number = lv_ekko-ebeln . " Key Field
bapi_te_po-zcon_mng = lv_ekko-zcon_mng ." Customer Added name field
* Prepare the Extension container
ext_container-structure = 'BAPI_TE_MEPOHEADER'.
ext_container-valuepart1+0(10) = bapi_te_po-po_number.
ext_container-valuepart1+10(30) = bapi_te_po-zcon_mng.
APPEND ext_container .
CLEAR ext_container.
*** Mark Fields for updation
bapi_te_pox-po_number = lv_ekko-ebeln .
bapi_te_pox-zcon_mng = 'X'.
ext_container-structure = 'BAPI_TE_MEPOREADERX'.
ext_container-valuepart1 = bapi_te_pox.
APPEND ext_container .
CLEAR ext_container.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = lv_ekko-ebeln
TABLES
return = lt_return
extensionin = ext_container
extensionout = lt_extensionout.
IF sy-subrc = 0 .
LOOP AT lt_return INTO DATA(lv_return).
WRITE: / lv_return-message ,'message type :', lv_return-type .
ENDLOOP.
IF lv_return-type NE lv_e OR lv_return-type NE lv_a .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
ENDIF.
output:
message type :s
message : no data changed.
First of all:
Please stop using tables with header lines!
DATA:
ls_te_po_header TYPE bapi_te_mepoheader,
ls_te_po_headerx TYPE bapi_te_mepoheaderx,
lt_extensionin TYPE bapiparex_tp.
ls_te_po_header-po_number = '1234567890'.
ls_te_po_header-zztest = 'Test'.
APPEND INITIAL LINE TO lt_extensionin ASSIGNING FIELD-SYMBOL(<fs_extensionin>).
<fs_extensionin>-structure = 'BAPI_TE_MEPOHEADER'.
<fs_extensionin>-valuepart1 = ls_te_po_header.
* Fill X structure
ls_te_po_headerx-po_number = '1234567890'.
ls_te_po_headerx-zztest = abap_true.
APPEND INITIAL LINE TO lt_extensionin ASSIGNING <fs_extensionin>.
<fs_extensionin>-structure = 'BAPI_TE_MEPOHEADERX'.
<fs_extensionin>-valuepart1 = ls_te_po_headerx.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It could be also a problem if your extension structure is longer than 240 characters.
Then you need to split it into different parts as following:
DATA:
lv_value TYPE c LENGTH 960.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_te_po_header
IMPORTING
ex_container = lv_value
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
s_extension-structure = 'BAPI_TE_MEPOHEADER'.
s_extension-valuepart1 = lv_value(240).
s_extension-valuepart2 = lv_value+240(240).
s_extension-valuepart3 = lv_value+480(240).
s_extension-valuepart4 = lv_value+720(240).
APPEND s_extension TO lt_extensionin.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
70 | |
9 | |
8 | |
6 | |
6 | |
5 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.