I am using a custom program to fill up the EXTENSIONIN parameter and then calling the BAPI. I have already implemented the BADI ME_BAPI_PO_CUST and capturing all character like data types and moving them to structure. The warning message is populated before the implementation call.
LOOP AT gr_abap->components ASSIGNING <comp>.
CHECK <comp>-type_kind EQ gr_abap->typekind_packed OR
<comp>-type_kind EQ gr_abap->typekind_float OR "1033925
<comp>-type_kind EQ gr_abap->typekind_int OR "1033925
<comp>-type_kind EQ gr_abap->typekind_int1 OR "1033925
<comp>-type_kind EQ gr_abap->typekind_int2. "1033925
CHECK lf_exit EQ cl_mmpur_constants=>no. "1148689
* message could be customized ME887
MESSAGE w887(me) WITH im_name INTO gl_dummy.
mmpur_message_enaco_forced sy-msgty sy-msgid sy-msgno sy-msgv1
sy-msgv2 sy-msgv3 sy-msgv4.
lf_exit = cl_mmpur_constants=>yes.
ENDLOOP.
* call customer BAdI for inbound mapping of extensionin
TRY.
CALL BADI lr_badi->map2i_extensionin
EXPORTING
im_container = im_container
im_name = im_name
im_error = lf_exit
CHANGING
ch_struc = ch_struc.
CATCH cx_mmpur_root.
EXIT.
ENDTRY.
CHECK lf_exit EQ cl_mmpur_constants=>no.
TRY.
ASSIGN ch_struc TO <fs>.
* convert container data to target structure
im_nls->cont_to_struc( EXPORTING cont = im_container
langu = sy-langu
IMPORTING struc = <fs> ).
CATCH: cx_root.
ENDTRY.