1
Где-то ты с нумерацией позиций нахомутал, я сомтрю что у тебя вторая позиция а там номер позиции 00000000001, потом где-то serno_line = '01'. для второй позиции а где-то serno_line = '02', для той же второй позиции. Короче внимательно пройдись по коду. Этот бапи работает как часы и точно проблема не в нем, а втом что ты ему передаешь :-)Вы правы Олег. BAPi работает как часы. Вроде бы разобрался. Вот пример работающего кода с позициями, т.е. сколько PR-ок столько и позиций в заказе на услуги. В каждой позиции по одной услуге с нужной контировкой. Может кому - нибудь пригодится.
**********************Заголовок заказа*********************************
head-comp_code = '123'.
head-doc_type = 'SRV'.
head-creat_date = sy-datum.
head-created_by = sy-uname.
head-langu = sy-langu.
head-purch_org = ttab-ekorg.
head-pur_group = ttab-ekgrp.
head-currency = ttab-waers.
head-exch_rate = '1.00000'.
head-doc_date = sy-datum.
head-status = 'I'.
headx-comp_code = 'X'.
headx-doc_type = 'X'.
headx-creat_date = 'X'.
headx-created_by = 'X'.
headx-langu = 'X'.
headx-purch_org = 'X'.
headx-pur_group = 'X'.
headx-currency = 'X'.
headx-exch_rate = 'X'.
headx-doc_date = 'X'.
headx-vendor = 'X'.
headx-status = 'X'.
***********************Заголовок заказа********************************
LOOP AT ttab.
***********************Заголовок позиции заказа************************
po_item = po_item + 10.
IF sy-tabix = 1.
pckg_no = pckg_no + 1.
line_no = line_no + 1.
pln_line = pln_line + 2.
ELSE.
pckg_no = pckg_no + 2.
line_no = line_no + 2.
pln_line = pln_line + 1.
ENDIF.
pckg_no1 = pckg_no1 + 2.
line_no1 = line_no1 + 2.
wa_item-po_item = po_item.
wa_item-short_text = ttab-ktext1.
wa_item-plant = ttab-werks.
wa_item-matl_group = ttab-matkl.
wa_item-quantity = '1'.
wa_item-net_price = '0'.
wa_item-price_unit = '0'.
wa_item-item_cat = '9'. Тип позиции D
wa_item-acctasscat = '6'.
wa_item-gr_ind = 'X'.
wa_item-gr_non_val = 'X'.
wa_item-preq_no = ttab-banfn.
wa_item-preq_item = '00010'.
wa_item-pckg_no = pckg_no.
APPEND wa_item TO item.
CLEAR wa_item.
wa_itemx-po_item = po_item.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-matl_group = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 'X'.
wa_itemx-item_cat = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-gr_non_val = 'X'.
wa_itemx-preq_no = 'X'.
wa_itemx-preq_item = 'X'.
wa_itemx-pckg_no = 'X'.
APPEND wa_itemx TO itemx.
CLEAR wa_itemx.
***********************Заголовок позиции заказа************************
***********************Контировка позиции заказа***********************
wa_acct-po_item = po_item.
wa_acct-serial_no = '01'.
wa_acct-gl_account = ttab-kstar.
wa_acct-co_area = '3000'.
wa_acct-costcenter = ttab-kostl.
wa_acct-orderid = ttab-aufnr.
APPEND wa_acct TO acct.
CLEAR wa_acct.
wa_acctx-po_item = po_item.
wa_acctx-serial_no = '01'.
wa_acctx-gl_account = 'X'.
wa_acctx-co_area = 'X'.
wa_acctx-costcenter = 'X'.
wa_acctx-orderid = 'X'.
APPEND wa_acctx TO acctx.
CLEAR wa_acctx.
***********************Контировка позиции заказа***********************
***********************Услуга позиции заказа***************************
wa_esllc-pckg_no = pckg_no.
wa_esllc-line_no = line_no.
wa_esllc-ext_line = '0000000000'.
wa_esllc-outl_level = '000'.
wa_esllc-outl_ind = 'X'.
wa_esllc-subpckg_no = wa_esllc-pckg_no + 1.
wa_esllc-price_unit = '0'.
wa_esllc-from_line = '000001'.
* wa_esllc-short_text = 'Alarm System Installation'.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esllc-pckg_no = pckg_no1.
wa_esllc-line_no = line_no1.
wa_esllc-ext_line = '0000000010'.
wa_esllc-outl_level = '0'.
wa_esllc-quantity = ttab-menge.
wa_esllc-price_unit = '1'.
wa_esllc-base_uom = ttab-meins.
wa_esllc-gr_price = ttab-brtwr.
* wa_esllc-short_text = 'Alarm System Installation'.
wa_esllc-pln_pckg = ttab-sub_packno.
wa_esllc-pln_line = '0000000002'.
wa_esllc-service = ttab-srvpos.
wa_esllc-matl_group = ttab-matkl.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esklc-pckg_no = pckg_no1.
wa_esklc-line_no = line_no1.
wa_esklc-serno_line = '01'.
wa_esklc-percentage = '100'.
wa_esklc-serial_no = '01'.
APPEND wa_esklc TO esklc.
CLEAR wa_esklc.
***********************Услуга позиции заказа***************************
ENDLOOP.
***********************Z-поля в заголовке заказа***********************
is_extension-zz_agrnum = ttab-angnr.
is_extension-zz_agrnumd = ttab-ihran.
lt_ext-structure = 'BAPI_TE_MEPOHEADER'.
lt_ext-valuepart1 = is_extension.
APPEND lt_ext.
is_extensionx-zz_agrnum = 'X'.
is_extensionx-zz_agrnumd = 'X'.
lt_ext-structure = 'BAPI_TE_MEPOHEADERX'.
lt_ext-valuepart1 = is_extensionx.
APPEND lt_ext.
***********************Z-поля в заголовке заказа***********************
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = head
poheaderx = headx
* TESTRUN =
IMPORTING
exppurchaseorder = exppurchaseorder
* EXPHEADER =
* EXPPOEXPIMPHEADER =
TABLES
return = return
poitem = item
poitemx = itemx
poaccount = acct
poaccountx = acctx
poservices = esllc
posrvaccessvalues = esklc
extensionin = lt_ext.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
Добрый день.Где-то ты с нумерацией позиций нахомутал, я сомтрю что у тебя вторая позиция а там номер позиции 00000000001, потом где-то serno_line = '01'. для второй позиции а где-то serno_line = '02', для той же второй позиции. Короче внимательно пройдись по коду. Этот бапи работает как часы и точно проблема не в нем, а втом что ты ему передаешь :-)
Нужно создать пакетник по созданию заказа на услуги с nn-ым количеством позиций. У всех позиций разные контировки. Начитавшись в инете разной инфы, получилось создать заказ на услуги c одной позицией с помощью BAPI BAPI_PO_CREATE1 с типом позиции D и с контировкой куда копируется счёт, мвз и заказ. Пытаюсь создать с двумя позициями, программа создаёт вторую позицию, но контировку тянет из первой позиции. Кто - нибудь что то похожее делал? Ни как не могу понять в чём именно проблема? Вот код присвоения начиная с создания позиции.*********************Первая позиция********************************
wa_item-po_item = '00010'.
wa_item-short_text = 'Alarm System Installation'.
wa_item-plant = '8000'.
wa_item-matl_group = '86'.
wa_item-quantity = '2'.
wa_item-net_price = '0'.
wa_item-price_unit = '0'.
wa_item-item_cat = '9'.
wa_item-acctasscat = '6'.
wa_item-gr_ind = 'X'.
wa_item-gr_non_val = 'X'.
wa_item-preq_no = '0020114422'.
wa_item-preq_item = '00010'.
wa_item-pckg_no = '0000000001'.
APPEND wa_item TO item.
CLEAR wa_item.
wa_itemx-po_item = '00010'.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-matl_group = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 0.
wa_itemx-item_cat = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-gr_non_val = 'X'.
wa_itemx-preq_no = 'X'.
wa_itemx-preq_item = 'X'.
wa_itemx-pckg_no = 'X'.
APPEND wa_itemx TO itemx.
CLEAR wa_itemx.
***********************Конец первой позиции****************************
***********************Вторая позиция**********************************
wa_item-po_item = '00020'.
wa_item-short_text = 'Alarm System Installation2'.
wa_item-plant = '8000'.
wa_item-matl_group = '86'.
wa_item-quantity = '2'.
wa_item-net_price = '0'.
wa_item-price_unit = '0'.
wa_item-item_cat = '9'.
wa_item-acctasscat = '6'.
wa_item-gr_ind = 'X'.
wa_item-gr_non_val = 'X'.
wa_item-preq_no = '0020114423'.
wa_item-preq_item = '00010'.
wa_item-pckg_no = '0000000001'.
append wa_item to item.
clear wa_item.
wa_itemx-po_item = '00020'.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-matl_group = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 0.
wa_itemx-item_cat = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-gr_non_val = 'X'.
wa_itemx-preq_no = 'X'.
wa_itemx-preq_item = 'X'.
wa_itemx-pckg_no = 'X'.
append wa_itemx to itemx.
clear wa_itemx.
********************Конец второй позиции**************************
********************Начало первой позиции*************************
wa_acct-po_item = '00010'.
wa_acct-serial_no = '01'.
wa_acct-quantity = '1'.
wa_acct-distr_perc = '0'.
wa_acct-net_value = '2000'.
wa_acct-gl_account = '8019.4885'.
wa_acct-co_area = '2000'.
wa_acct-costcenter = '80-102'.
wa_acct-orderid = '009010055021'.
wa_acct-activity = '0010'.
APPEND wa_acct TO acct.
CLEAR wa_acct.
wa_acctx-po_item = '00010'.
wa_acctx-serial_no = '01'.
wa_acctx-gl_account = 'X'.
wa_acctx-co_area = 'X'.
wa_acctx-costcenter = 'X'.
wa_acctx-orderid = 'X'.
wa_acctx-activity = 'X'.
APPEND wa_acctx TO acctx.
CLEAR wa_acctx.
********************Конец первой позиции**************************
********************Начало второй позиции*************************
wa_acct-po_item = '00020'.
wa_acct-serial_no = '02'.
wa_acct-quantity = '1'.
wa_acct-distr_perc = '0'.
wa_acct-net_value = '2000'.
wa_acct-gl_account = '8019.4885'.
wa_acct-co_area = '2000'.
wa_acct-costcenter = '80-101'.
wa_acct-orderid = '009010055042'.
wa_acct-activity = '0020'.
append wa_acct to acct.
clear wa_acct.
wa_acctx-po_item = '00020'.
wa_acctx-serial_no = '02'.
wa_acctx-gl_account = 'X'.
wa_acctx-co_area = 'X'.
wa_acctx-costcenter = 'X'.
wa_acctx-orderid = 'X'.
wa_acctx-activity = 'X'.
append wa_acctx to acctx.
clear wa_acctx.
*******************Конец второй позиции****************************
*******************Начало первой позиции***************************
wa_esllc-pckg_no = '0000000001'.
wa_esllc-line_no = '0000000001'.
wa_esllc-EXT_LINE = '0'.
wa_esllc-outl_level = '0'.
wa_esllc-outl_ind = 'X'.
wa_esllc-subpckg_no = wa_esllc-pckg_no + 1. "Child Package No
wa_esllc-price_unit = '0'.
wa_esllc-from_line = '1'.
wa_esllc-short_text = 'Alarm System Installation'.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esllc-pckg_no = '0000000002'.
wa_esllc-line_no = '0000000002'.
wa_esllc-ext_line = '0000000010'.
wa_esllc-outl_level = '0'.
wa_esllc-quantity = '2'.
wa_esllc-price_unit = '1'.
wa_esllc-base_uom = 'WK'.
wa_esllc-gr_price = '2000'.
wa_esllc-short_text = 'Alarm System Installation'.
wa_esllc-pln_pckg = '0000692650'.
wa_esllc-pln_line = '0000000002'.
wa_esllc-service = '000000000001000022'.
wa_esllc-matl_group = '86'.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esklc-pckg_no = '0000000002'.
wa_esklc-line_no = '0000000002'.
wa_esklc-serno_line = '01'.
wa_esklc-percentage = '100'.
wa_esklc-serial_no = '01'.
APPEND wa_esklc TO esklc.
CLEAR wa_esklc.
***********************Конец первой позиции***********************************
***********************Начало второй позиции**********************************
wa_esllc-pckg_no = '0000000001'.
wa_esllc-line_no = '0000000001'.
wa_esllc-EXT_LINE = '0'.
wa_esllc-outl_level = '0'.
wa_esllc-outl_ind = 'X'.
wa_esllc-subpckg_no = wa_esllc-pckg_no + 1. "Child Package No
wa_esllc-price_unit = '0'.
wa_esllc-from_line = '1'.
wa_esllc-short_text = 'Alarm System Installation'.
append wa_esllc to esllc.
clear wa_esllc.
wa_esllc-pckg_no = '0000000002'.
wa_esllc-line_no = '0000000002'.
wa_esllc-ext_line = '0000000010'.
wa_esllc-outl_level = '0'.
wa_esllc-quantity = '2'.
wa_esllc-price_unit = '1'.
wa_esllc-base_uom = 'WK'.
wa_esllc-gr_price = '2000'.
wa_esllc-short_text = 'Alarm System Installation'.
wa_esllc-pln_pckg = '0000692658'.
wa_esllc-pln_line = '0000000002'.
wa_esllc-service = '000000000001000022'.
wa_esllc-matl_group = '86'.
append wa_esllc to esllc.
clear wa_esllc.
wa_esklc-pckg_no = '0000000002'.
wa_esklc-line_no = '0000000002'.
wa_esklc-serno_line = '01'.
wa_esklc-percentage = '100'.
wa_esklc-serial_no = '01'.
append wa_esklc to esklc.
clear wa_esklc.
***********************Конец второй позиции*******************************
*********************Первая позиция********************************
wa_item-po_item = '00010'.
wa_item-short_text = 'Alarm System Installation'.
wa_item-plant = '8000'.
wa_item-matl_group = '86'.
wa_item-quantity = '2'.
wa_item-net_price = '0'.
wa_item-price_unit = '0'.
wa_item-item_cat = '9'.
wa_item-acctasscat = '6'.
wa_item-gr_ind = 'X'.
wa_item-gr_non_val = 'X'.
wa_item-preq_no = '0020114422'.
wa_item-preq_item = '00010'.
wa_item-pckg_no = '0000000001'.
APPEND wa_item TO item.
CLEAR wa_item.
wa_itemx-po_item = '00010'.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-matl_group = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 0.
wa_itemx-item_cat = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-gr_non_val = 'X'.
wa_itemx-preq_no = 'X'.
wa_itemx-preq_item = 'X'.
wa_itemx-pckg_no = 'X'.
APPEND wa_itemx TO itemx.
CLEAR wa_itemx.
***********************Конец первой позиции****************************
***********************Вторая позиция**********************************
wa_item-po_item = '00020'.
wa_item-short_text = 'Alarm System Installation2'.
wa_item-plant = '8000'.
wa_item-matl_group = '86'.
wa_item-quantity = '2'.
wa_item-net_price = '0'.
wa_item-price_unit = '0'.
wa_item-item_cat = '9'.
wa_item-acctasscat = '6'.
wa_item-gr_ind = 'X'.
wa_item-gr_non_val = 'X'.
wa_item-preq_no = '0020114423'.
wa_item-preq_item = '00010'.
wa_item-pckg_no = '0000000001'.
append wa_item to item.
clear wa_item.
wa_itemx-po_item = '00020'.
wa_itemx-po_itemx = 'X'.
wa_itemx-short_text = 'X'.
wa_itemx-plant = 'X'.
wa_itemx-matl_group = 'X'.
wa_itemx-quantity = 'X'.
wa_itemx-net_price = 'X'.
wa_itemx-price_unit = 0.
wa_itemx-item_cat = 'X'.
wa_itemx-acctasscat = 'X'.
wa_itemx-gr_ind = 'X'.
wa_itemx-gr_non_val = 'X'.
wa_itemx-preq_no = 'X'.
wa_itemx-preq_item = 'X'.
wa_itemx-pckg_no = 'X'.
append wa_itemx to itemx.
clear wa_itemx.
********************Конец второй позиции**************************
********************Начало первой позиции*************************
wa_acct-po_item = '00010'.
wa_acct-serial_no = '01'.
wa_acct-quantity = '1'.
wa_acct-distr_perc = '0'.
wa_acct-net_value = '2000'.
wa_acct-gl_account = '8019.4885'.
wa_acct-co_area = '2000'.
wa_acct-costcenter = '80-102'.
wa_acct-orderid = '009010055021'.
wa_acct-activity = '0010'.
APPEND wa_acct TO acct.
CLEAR wa_acct.
wa_acctx-po_item = '00010'.
wa_acctx-serial_no = '01'.
wa_acctx-gl_account = 'X'.
wa_acctx-co_area = 'X'.
wa_acctx-costcenter = 'X'.
wa_acctx-orderid = 'X'.
wa_acctx-activity = 'X'.
APPEND wa_acctx TO acctx.
CLEAR wa_acctx.
********************Конец первой позиции**************************
********************Начало второй позиции*************************
wa_acct-po_item = '00020'.
wa_acct-serial_no = '02'.
wa_acct-quantity = '1'.
wa_acct-distr_perc = '0'.
wa_acct-net_value = '2000'.
wa_acct-gl_account = '8019.4885'.
wa_acct-co_area = '2000'.
wa_acct-costcenter = '80-101'.
wa_acct-orderid = '009010055042'.
wa_acct-activity = '0020'.
append wa_acct to acct.
clear wa_acct.
wa_acctx-po_item = '00020'.
wa_acctx-serial_no = '02'.
wa_acctx-gl_account = 'X'.
wa_acctx-co_area = 'X'.
wa_acctx-costcenter = 'X'.
wa_acctx-orderid = 'X'.
wa_acctx-activity = 'X'.
append wa_acctx to acctx.
clear wa_acctx.
*******************Конец второй позиции****************************
*******************Начало первой позиции***************************
wa_esllc-pckg_no = '0000000001'.
wa_esllc-line_no = '0000000001'.
wa_esllc-EXT_LINE = '0'.
wa_esllc-outl_level = '0'.
wa_esllc-outl_ind = 'X'.
wa_esllc-subpckg_no = wa_esllc-pckg_no + 1. "Child Package No
wa_esllc-price_unit = '0'.
wa_esllc-from_line = '1'.
wa_esllc-short_text = 'Alarm System Installation'.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esllc-pckg_no = '0000000002'.
wa_esllc-line_no = '0000000002'.
wa_esllc-ext_line = '0000000010'.
wa_esllc-outl_level = '0'.
wa_esllc-quantity = '2'.
wa_esllc-price_unit = '1'.
wa_esllc-base_uom = 'WK'.
wa_esllc-gr_price = '2000'.
wa_esllc-short_text = 'Alarm System Installation'.
wa_esllc-pln_pckg = '0000692650'.
wa_esllc-pln_line = '0000000002'.
wa_esllc-service = '000000000001000022'.
wa_esllc-matl_group = '86'.
APPEND wa_esllc TO esllc.
CLEAR wa_esllc.
wa_esklc-pckg_no = '0000000002'.
wa_esklc-line_no = '0000000002'.
wa_esklc-serno_line = '01'.
wa_esklc-percentage = '100'.
wa_esklc-serial_no = '01'.
APPEND wa_esklc TO esklc.
CLEAR wa_esklc.
***********************Конец первой позиции***********************************
***********************Начало второй позиции**********************************
wa_esllc-pckg_no = '0000000001'.
wa_esllc-line_no = '0000000001'.
wa_esllc-EXT_LINE = '0'.
wa_esllc-outl_level = '0'.
wa_esllc-outl_ind = 'X'.
wa_esllc-subpckg_no = wa_esllc-pckg_no + 1. "Child Package No
wa_esllc-price_unit = '0'.
wa_esllc-from_line = '1'.
wa_esllc-short_text = 'Alarm System Installation'.
append wa_esllc to esllc.
clear wa_esllc.
wa_esllc-pckg_no = '0000000002'.
wa_esllc-line_no = '0000000002'.
wa_esllc-ext_line = '0000000010'.
wa_esllc-outl_level = '0'.
wa_esllc-quantity = '2'.
wa_esllc-price_unit = '1'.
wa_esllc-base_uom = 'WK'.
wa_esllc-gr_price = '2000'.
wa_esllc-short_text = 'Alarm System Installation'.
wa_esllc-pln_pckg = '0000692658'.
wa_esllc-pln_line = '0000000002'.
wa_esllc-service = '000000000001000022'.
wa_esllc-matl_group = '86'.
append wa_esllc to esllc.
clear wa_esllc.
wa_esklc-pckg_no = '0000000002'.
wa_esklc-line_no = '0000000002'.
wa_esklc-serno_line = '01'.
wa_esklc-percentage = '100'.
wa_esklc-serial_no = '01'.
append wa_esklc to esklc.
clear wa_esklc.
***********************Конец второй позиции*******************************
CONSTANTS:
gc_activity_create TYPE bu_aktyp VALUE '01',
gc_activity_change TYPE bu_aktyp VALUE '02',
gc_activity_display TYPE bu_aktyp VALUE '03'.
PARAMETERS: p_bp TYPE bu_partner.
PARAMETERS: p_cc TYPE bukrs.
START-OF-SELECTION.
PERFORM open_bp USING p_bp p_cc gc_activity_change.
FORM open_bp
USING
iv_bp TYPE bu_partner
iv_cc TYPE bukrs
iv_activity TYPE bu_aktyp.
DATA:
ls_role TYPE bus_roles.
" need to set it as a parameter
" so that it's read in the Company Code subscreen
SET PARAMETER ID 'BUK' FIELD iv_cc.
" create new request
DATA(lo_request) = NEW cl_bupa_navigation_request( ).
" open request with selected partner number
lo_request->set_partner_number( iv_bp ).
" set the activity you want the user to start the maintenance with
lo_request->set_bupa_activity( iv_activity ). " 01 - Create, 02 - Change, 03 - Display
" change the role of the BP to the desired one
" together with the sub header id
ls_role-role = 'FS0000'.
lo_request->set_bupa_partner_role( ls_role ).
lo_request->set_bupa_sub_header_id( 'FS0001' ).
" display general data by default
lo_request->set_maintenance_id( 'B' ). " B - Partner
" set start-up options
DATA(lo_options) = NEW cl_bupa_dialog_joel_options( ).
" start the transaction with an invisible locator
lo_options->set_locator_visible( space ).
" open New BDT Instance for display of selected partner
CALL METHOD cl_bupa_dialog_joel=>start_with_navigation
EXPORTING
iv_request = lo_request
iv_options = lo_options
iv_in_new_internal_mode = abap_true
EXCEPTIONS
already_started = 1
not_allowed = 2
OTHERS = 3.
ENDFORM.
1 E CNIF_PI 007 Объект Сетевой график OP307701 создать было невозможно 000000 Сетевой график OP307701
2 E CNIF_PI 044 Сетевой график/заказ с номеромомер OP3070 уже существует 000000 OP3070
Поставль точку останова в модуле function cn2002_net_create_prepare . и посмотри на что оно ругается и что не так заполняется.Здрасте Олег. Спасибо за наводку. Буду смотреть дальше. Текст ошибки вот
А вообще можешь код ошибки прислать.. текст конечно круто, но по тексту что-то искать нет смысла :-)
1 E CNIF_PI 007 Объект Сетевой график OP307701 создать было невозможно 000000 Сетевой график OP307701
2 E CNIF_PI 044 Сетевой график/заказ с номеромомер OP3070 уже существует 000000 OP3070
Безрезультатно. Это как то связано с нумерацией сетевых графиков, но как это обойти?Привет, а там смотри набор ФМ-ов есть может надо какие-то функции инициализации дергать перед вызовом создания?
data:
it_bapi_bus2002_new type standard table of bapi_bus2002_new,
wa_bapi_bus2002_new type bapi_bus2002_new,
it_bapiret2 type standard table of bapiret2,
wa_bapiret2 type bapiret2.
clear : wa_bapi_bus2002_new.
wa_bapi_bus2002_new-project_definition = 'OP23070'.
wa_bapi_bus2002_new-wbs_element = 'OP230701'.
wa_bapi_bus2002_new-short_text = 'Сетевой график OP230701'.
wa_bapi_bus2002_new-network_type = 'PS07'.
wa_bapi_bus2002_new-plant = '3000'. "
wa_bapi_bus2002_new-mrp_controller = '100'.
call function 'BAPI_PS_INITIALIZATION'.
call function 'BAPI_BUS2002_CREATE'
exporting
i_network = wa_bapi_bus2002_new
tables
et_return = it_bapiret2.
loop at it_bapiret2 into wa_bapiret2 where type ca 'AE'.
message id wa_bapiret2-id type wa_bapiret2-type number wa_bapiret2-number
into wa_bapiret2-message
with wa_bapiret2-message_v1 wa_bapiret2-message_v2
wa_bapiret2-message_v3 wa_bapiret2-message_v4.
write:/ 'Ошибка',wa_bapiret2-message.
endloop.
if sy-subrc eq 0.
call function 'PS_FLAG_INIT_GLOBAL_FLAGS'.
call function 'PS_FLAG_SET_GLOBAL_FLAGS'
exporting
i_precommit_ok = 'Y'.
endif.
check sy-subrc ne 0.
call function 'BAPI_PS_PRECOMMIT'
tables
et_return = it_bapiret2.
loop at it_bapiret2 into wa_bapiret2 where type ca 'AE'.
message id wa_bapiret2-id type wa_bapiret2-type number wa_bapiret2-number
into wa_bapiret2-message
with wa_bapiret2-message_v1 wa_bapiret2-message_v2
wa_bapiret2-message_v3 wa_bapiret2-message_v4.
write:/ 'Ошибка:',wa_bapiret2-message.
endloop.
if sy-subrc eq 0.
call function 'BAPI_TRANSACTION_ROLLBACK'
importing
return = it_bapiret2.
call function 'PS_FLAG_INIT_GLOBAL_FLAGS'.
call function 'PS_FLAG_SET_GLOBAL_FLAGS'
exporting
i_precommit_ok = 'Y'.
else.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'
importing
return = wa_bapiret2.
write:/ 'Уведомление:',wa_bapiret2-message.
*
endif.
Ошибка
Объект Сетевой график создать было невозможно
Ошибка
Сетевой график/заказ с номеромомер OP3070 уже существует
Т.е. система пытается опять создать сетевой график с этим же номером. Когда это делаешь через транзакцию CJ20N система говорит о том, что сетевой график с таким номером уже существует и предлагает в ручную ввести номер следующего сетевого графика. Введя следующий по порядку номер, график создаётся. Пытался добавить в BAPI в ручную следующий номер сетевого графика, там есть поле.wa_bapi_bus2002_new-network = 'OP3071'.
Безрезультатно. Это как то связано с нумерацией сетевых графиков, но как это обойти?