Hello Expert,
Please help I try to upload service Po from BAPI_PO_CREATE1 but I an getting error .
Purchase order still contains faulty items
Please see below code what I am passing .
lt_itab_ven[] = lt_itab[].
** SORT lt_itab BY vendor.
** DELETE ADJACENT DUPLICATES FROM lt_itab COMPARING vendor .
SORT lt_itab BY vendor collect_no.
DELETE ADJACENT DUPLICATES FROM lt_itab COMPARING vendor collect_no .
CLEAR: g_bapimepoheader,g_bapimepoitem,g_bapimeposchedule,g_poitemx.
REFRESH: g_bapimepoheader,g_bapimepoitem,g_bapimeposchedule,g_poitemx.
LOOP AT lt_itab INTO ls_itab.
MOVE-CORRESPONDING ls_itab TO g_bapimepoheader.
w_type = ls_itab-doc_type.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_itab-vendor
IMPORTING
output = ls_itab-vendor.
g_bapimepoheader-vendor = ls_itab-vendor.
g_bapimepoheader-creat_date = sy-datum.
g_bapimepoheader-created_by = sy-uname.
APPEND g_bapimepoheader.
g_bapimepoheaderx-doc_type = 'X'.
g_bapimepoheaderx-vendor = 'X'.
g_bapimepoheaderx-doc_date = 'X'.
g_bapimepoheaderx-purch_org = 'X'.
g_bapimepoheaderx-pur_group = 'X'.
g_bapimepoheaderx-comp_code = 'X'.
g_bapimepoheaderx-collect_no = 'X'.
APPEND g_bapimepoheaderx.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = ls_itab-vendor
IMPORTING
output = ls_itab-vendor.
lt_itab_lin[] = lt_itab_ven[].
SORT lt_itab_lin BY vendor.
DELETE lt_itab_lin WHERE vendor <> ls_itab-vendor.
lt_itab_serv_lin[] = lt_itab_lin[].
* SORT lt_itab_lin BY short_text.
* DELETE ADJACENT DUPLICATES FROM lt_itab_lin COMPARING short_text.
** SORT lt_itab_lin BY short_text.
** DELETE ADJACENT DUPLICATES FROM lt_itab_lin COMPARING short_text.
pkgno = 0.
LOOP AT lt_itab_lin INTO ls_itab_lin WHERE collect_no = ls_itab-collect_no .
pkgno = pkgno + 1.
MOVE-CORRESPONDING ls_itab_lin TO g_bapimepoitem.
g_bapimepoitem-pckg_no = pkgno.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_itab_lin-po_item
IMPORTING
output = ls_itab_lin-po_item.
g_bapimepoitem-tax_code = ls_itab_lin-tax_code. "TAX_CODE
g_bapimepoitem-po_item = ls_itab_lin-po_item.
g_bapimepoitem-quantity = 1.
APPEND g_bapimepoitem.
CLEAR g_bapimepoitem.
MOVE-CORRESPONDING ls_itab_lin TO g_bapimeposchedule.
g_bapimeposchedule-po_item = ls_itab_lin-po_item.
g_bapimeposchedule-quantity = 1.
g_bapimeposchedule-sched_line = 1.
APPEND g_bapimeposchedule.
CLEAR g_bapimeposchedule.
g_poitemx-po_item = ls_itab_lin-po_item.
g_poitemx-po_itemx = 'X'.
g_poitemx-acctasscat = 'X'.
g_poitemx-tax_code = 'X'.
g_poitemx-item_cat = 'X'.
g_poitemx-short_text = 'X'.
g_poitemx-matl_group = 'x'.
g_poitemx-plant = 'X'.
g_poitemx-stge_loc = 'X'.
g_poitemx-net_price = 'X'.
g_poitemx-quantity = 'X'.
g_poitemx-po_unit = 'X'.
g_poitemx-orderpr_un = 'X'.
g_poitemx-trackingno = 'X'.
g_poitemx-delete_ind = 'X'.
g_poitemx-pckg_no = 'X'.
APPEND g_poitemx.
CLEAR g_poitemx.
g_poschedulex-po_item = ls_itab_lin-po_item.
g_poschedulex-sched_line = 1.
g_poschedulex-po_itemx = 'X'.
g_poschedulex-sched_linex = 'X'.
g_poschedulex-del_datcat_ext = 'X'.
g_poschedulex-delivery_date = 'X'.
g_poschedulex-quantity = 'X'.
g_poschedulex-deliv_time = 'X'.
g_poschedulex-stat_date = 'X'.
g_poschedulex-preq_no = 'X'.
g_poschedulex-preq_item = 'X'.
g_poschedulex-po_date = 'X'.
g_poschedulex-routesched = 'X'.
g_poschedulex-ms_date = 'X'.
APPEND g_poschedulex.
CLEAR g_poschedulex.
line_no = 0.
line_no = line_no + 1.
g_poservices-pckg_no = pkgno.
sub_pkgno = pkgno + 1.
g_poservices-line_no = line_no.
g_poservices-subpckg_no = sub_pkgno.
g_poservices-outl_ind = 'X'.
g_poservices-quantity = 1.
APPEND g_poservices.
CLEAR g_poservices.
line_no = 0.
LOOP AT lt_itab_serv_lin INTO ls_itab_serv_lin WHERE collect_no = ls_itab-collect_no .
MOVE-CORRESPONDING ls_itab_serv_lin TO g_poservices.
g_poservices-pckg_no = sub_pkgno.
line_no = line_no + 1.
g_poservices-line_no = line_no.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = g_poservices-service
IMPORTING
output = g_poservices-service.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = g_poservices-ext_line
IMPORTING
output = g_poservices-ext_line.
APPEND g_poservices.
CLEAR g_poservices.
g_poaccount-po_item = ls_itab_lin-po_item.
g_poaccount-serial_no = line_no.
g_poaccount-wbs_element = ls_itab_serv_lin-wbs_element.
APPEND g_poaccount.
CLEAR g_poaccount.
g_poaccountx-po_item = ls_itab_lin-po_item.
g_poaccountx-serial_no = line_no.
g_poaccountx-wbs_element = 'X'.
APPEND g_poaccountx.
CLEAR g_poaccountx.
g_posrvaccessvalues-pckg_no = sub_pkgno.
g_posrvaccessvalues-line_no = line_no.
g_posrvaccessvalues-serno_line = '01'.
g_posrvaccessvalues-serial_no = line_no.
g_posrvaccessvalues-quantity = 1.
APPEND g_posrvaccessvalues..
ENDLOOP.
ENDLOOP.
CLEAR:g_ebeln,gstest.
* REFRESH g_bapiret2.
CLEAR: g_ebeln,g_expheader.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = g_bapimepoheader
poheaderx = g_bapimepoheaderx
poexpimpheader = g_bapieikp
no_price_from_po = 'X'
* TESTRUN = 'X'
IMPORTING
exppurchaseorder = g_ebeln
expheader = g_expheader
TABLES
return = g_bapiret2
poitem = g_bapimepoitem
poitemx = g_poitemx
poschedule = g_bapimeposchedule
poschedulex = g_poschedulex
poaccount = g_poaccount
poaccountx = g_poaccountx
poservices = g_poservices
posrvaccessvalues = g_posrvaccessvalues.
IF NOT g_ebeln IS INITIAL.