|
本帖最后由 jhradiofan 于 2017-10-21 10:39 编辑
测试代码如下:这里我考虑,1、问题的关键是物料编码是否被维护到order_partners-partn_numb,未维护则没有问题。
2、这里PR类型的销售订单创建后会自动生成一份对应order_partners-partn_numb工厂的采购订单【在测试系统中是不会自动生成的,问题是否在这里,就是在自动生成采购订单时系统做了什么???】,如物料未被维护【参见文末图片】,则不会自动创建对应的采购订单。)
3、或者还有什么数据没有传递? 是否可以根据VA01的录屏文件分析问题吗?
感谢大家的回复,被这问题折腾了好几天了,痛苦呀!
REPORT ZZZ_CC_TEST .
TABLES: vbak , vbap .
***表頭******
DATA: BEGIN OF order_header_in OCCURS 1.
INCLUDE STRUCTURE bapisdhd1.
DATA: END OF order_header_in.
DATA: BEGIN OF order_header_inx OCCURS 1.
INCLUDE STRUCTURE bapisdhd1x.
DATA: END OF order_header_inx.
***項目**********
DATA: BEGIN OF order_items_in OCCURS 1.
INCLUDE STRUCTURE bapisditm.
DATA: END OF order_items_in.
DATA: BEGIN OF order_items_inx OCCURS 1.
INCLUDE STRUCTURE bapisditmx.
DATA: END OF order_items_inx.
****
DATA: BEGIN OF order_schedules_in OCCURS 1.
INCLUDE STRUCTURE bapischdl.
DATA: END OF order_schedules_in.
DATA: BEGIN OF order_schedules_inx OCCURS 1.
INCLUDE STRUCTURE bapischdlx.
DATA: END OF order_schedules_inx.
**** 价格
*DATA: BEGIN OF ORDER_CONDITIONS_IN OCCURS 1.
* INCLUDE STRUCTURE bapicndl.
*DATA: END OF ORDER_CONDITIONS_IN.
***文件夥伴*****
DATA: BEGIN OF order_partners OCCURS 1.
INCLUDE STRUCTURE bapiparnr.
DATA: END OF order_partners.
****內文************
DATA: BEGIN OF order_text OCCURS 1.
INCLUDE STRUCTURE bapisdtext.
DATA: END OF order_text.
DATA: BEGIN OF li_return OCCURS 1.
INCLUDE STRUCTURE bapiret2.
DATA: END OF li_return.
DATA: BEGIN OF order_cfgs_vk OCCURS 1.
INCLUDE STRUCTURE bapicuvk.
DATA: END OF order_cfgs_vk.
DATA: BEGIN OF order_cfgs_inst OCCURS 1.
INCLUDE STRUCTURE bapicuins.
DATA: END OF order_cfgs_inst.
DATA: BEGIN OF order_cfgs_part_of OCCURS 1.
INCLUDE STRUCTURE bapicuprt.
DATA: END OF order_cfgs_part_of.
DATA: BEGIN OF order_cfgs_ref OCCURS 1.
INCLUDE STRUCTURE bapicucfg.
DATA: END OF order_cfgs_ref.
DATA: BEGIN OF order_cfgs_value OCCURS 1.
INCLUDE STRUCTURE bapicuval.
DATA: END OF order_cfgs_value.
DATA : l_vbeln LIKE bapivbeln-vbeln.
DATA: l_salesdocument LIKE bapivbeln-vbeln.
PARAMETERS: p_vbeln LIKE vbak-vbeln.
START-OF-SELECTION.
l_salesdocument = p_vbeln.
PERFORM set_header.
PERFORM set_item.
PERFORM set_partner.
PERFORM set_text.
* PERFORM SET_CONDITION.
PERFORM call_bapi.
*&---------------------------------------------------------------------*
*& Form set_partner
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_partner.
**賣方 SP
CLEAR order_partners.
order_partners-partn_role = 'AG'. "Remember German codes !
order_partners-partn_numb = '0000000012'.
APPEND order_partners .
*出貨對象 SH
CLEAR order_partners.
order_partners-partn_role = 'WE'. "Remember German codes !
order_partners-partn_numb = '0000000012'.
APPEND order_partners.
*付款方 PY
CLEAR order_partners.
order_partners-partn_role = 'RG'. "Remember German codes !
order_partners-partn_numb = '0000000012'.
APPEND order_partners.
ENDFORM. " set_partner
*&---------------------------------------------------------------------*
*& Form set_header
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_header.
* Sales document type
order_header_in-doc_type = 'ZAOR'. "Remember German codes !
order_header_in-sales_org = 'X11'.
order_header_in-distr_chan = '10'.
order_header_in-division = '14'.
order_header_in-purch_no_c = 'XXXXXXXXXX'.
order_header_in-SALES_GRP = 'XXX'.
order_header_in-SALES_OFF = 'X004'.
order_header_in-PMNTTRMS = '0001'.
order_header_in-PO_METHOD = 'X21'.
order_header_in-PO_SUPPLEM = 'X22'.
APPEND order_header_in.
order_header_inx-updateflag = 'I'.
order_header_inx-sales_org = 'X'.
order_header_inx-doc_type = 'X'.
order_header_inx-division = 'X'.
order_header_inx-distr_chan = 'X'.
order_header_inx-purch_no_c = 'X'.
order_header_inX-SALES_GRP = 'X'.
order_header_inX-SALES_OFF = 'X'.
order_header_inx-PMNTTRMS = 'X'.
order_header_inx-PO_METHOD = 'X'.
order_header_inx-PO_SUPPLEM = 'X'.
APPEND order_header_inx.
ENDFORM. " set_header
*sapfunc.Exports("LOGIC_SWITCH").Value("PRICING") = "G"
*&---------------------------------------------------------------------*
*& Form set_item
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_item.
****項目資料***************************
order_items_in-itm_number = '000010'.
order_items_in-material = 'XXXXXXXXXXX'.
* order_items_in-ITEM_CATEG = 'TAC'.
order_items_in-po_itm_no = '000010'.
order_items_in-COMP_QUANT = '1'.
order_items_in-ITEM_CATEG = 'PR'.
order_items_in-REC_POINT = '输入送货信息'.
order_items_in-DLVSCHDUSE = '002'.
APPEND order_items_in.
order_items_inx-itm_number = '000010'.
order_items_inx-material = 'X'.
order_items_inx-updateflag = 'I'.
order_items_inx-po_itm_no = 'X'.
* order_items_inx-ITEM_CATEG ='X'.
order_items_inX-COMP_QUANT = 'X'.
order_items_inX-ITEM_CATEG = 'X'.
order_items_inX-REC_POINT = 'X'.
order_items_inX-DLVSCHDUSE = 'X'.
APPEND order_items_inx .
order_schedules_in-itm_number = '000010'.
order_schedules_inx-itm_number = '000010'.
order_schedules_in-req_date = sy-datum .
order_schedules_inx-req_date = 'X'.
order_schedules_in-req_qty = '10.000'.
order_schedules_inx-req_qty = 'X'.
order_schedules_inx-updateflag = 'I'.
APPEND order_schedules_in.
APPEND order_schedules_inx.
***組態資料*************************
order_cfgs_ref-posex = '000010'.
order_cfgs_ref-config_id = '000010'.
order_cfgs_ref-root_id = '000010'.
APPEND order_cfgs_ref.
order_cfgs_value-config_id = '000010'.
order_cfgs_value-inst_id = '000010'.
order_cfgs_value-charc = 'M10142_A_COLOR'.
order_cfgs_value-value = 'A'.
APPEND order_cfgs_value.
order_cfgs_value-config_id = '000010'.
order_cfgs_value-inst_id = '000010'.
order_cfgs_value-charc = 'M10142_A_SIZE'.
order_cfgs_value-value = '43-23-135'.
APPEND order_cfgs_value.
ENDFORM. " set_item
*FORM SET_CONDITION
*
* ORDER_CONDITIONS_IN-ITM_NUMBER = '000010'.
* ORDER_CONDITIONS_IN-COND_VALUE = '99.00'.
* ORDER_CONDITIONS_IN-COND_TYPE = 'PR00'.
* ORDER_CONDITIONS_IN-COND_P_UNT = '1'.
* ORDER_CONDITIONS_IN-CURRENCY = 'RMB'.
* APPEND ORDER_CONDITIONS_IN.
*
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_text
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_text.
**表頭內文***********
order_text-doc_number = p_vbeln.
order_text-text_id = '0003'.
order_text-langu = 'M'.
order_text-langu_iso = 'ZF'.
order_text-format_col = '*'.
order_text-text_line = 'text line 1'.
*order_text-FUNCTION
APPEND order_text.
order_text-text_line = 'text line 2'.
APPEND order_text.
order_text-text_line = 'text line 3'.
APPEND order_text.
order_text-text_line = 'text line 4'.
APPEND order_text.
***項目內文************
order_text-doc_number = 'XXXXXXXXXX'.
order_text-itm_number = '000010'.
order_text-text_id = '0002'.
order_text-langu = 'M'.
order_text-langu_iso = 'ZF'.
order_text-format_col = '*'.
order_text-text_line = 'item text'.
APPEND order_text.
ENDFORM. " set_text
*&---------------------------------------------------------------------*
*& Form call_bapi
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM call_bapi.
CALL FUNCTION 'CUXC_INIT'.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = order_header_in
order_header_inx = order_header_inx
salesdocumentin = l_salesdocument
* testrun = 'X'
IMPORTING
salesdocument = l_vbeln
TABLES
return = li_return
order_items_in = order_items_in
order_items_inx = order_items_inx
order_schedules_in = order_schedules_in
order_schedules_inx = order_schedules_inx
order_partners = order_partners
order_cfgs_ref = order_cfgs_ref
* order_cfgs_inst = order_cfgs_inst
* order_cfgs_part_of = order_cfgs_part_of
order_cfgs_value = order_cfgs_value
* order_cfgs_vk = order_cfgs_vk
order_text = order_text.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT li_return.
WRITE:/ li_return-type,
li_return-message.
ENDLOOP.
ENDFORM. " call_bapi
附BDC录屏程序:
report ZBDCTEST20071021 no standard page heading line-size 255.
include bdcrecx1.
parameters: dataset(132) lower case.
*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
*
* If it is nessesary to change the data section use the rules:
* 1.) Each definition of a field exists of two lines
* 2.) The first line shows exactly the comment
* '* data element: ' followed with the data element
* which describes the field.
* If you don't have a data element use the
* comment without a data element name
* 3.) The second line shows the fieldname of the
* structure, the fieldname must consist of
* a fieldname and optional the character '_' and
* three numbers and the field length in brackets
* 4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
* data element: AUART
AUART_001(004),
* data element: VKORG
VKORG_002(004),
* data element: VTWEG
VTWEG_003(002),
* data element: SPART
SPART_004(002),
* data element: VKBUR
VKBUR_005(004),
* data element: VKGRP
VKGRP_006(003),
* data element: VBELN_VA
VBELN_007(010),
* data element: BSTKD
BSTKD_008(035),
* data element: KUNAG
KUNNR_009(010),
* data element: KETDAT
KETDAT_010(010),
* data element: KPRGBZ
KPRGBZ_011(001),
* data element: PRSDT
PRSDT_012(010),
* data element: BSTKD
BSTKD_013(035),
* data element: KUNAG
KUNNR_014(010),
* data element: KUNWE
KUNNR_015(010),
* data element: KETDAT
KETDAT_016(010),
* data element: KPRGBZ
KPRGBZ_017(001),
* data element: MATNR
MABNR_01_018(018),
* data element: KWMENG
KWMENG_01_019(019),
* data element: VRKME
VRKME_01_020(004),
* data element: PSTYV
PSTYV_01_021(004),
* data element: WERKS_D
WERKS_01_022(004),
* data element: KBETR
KBETR_01_023(016),
* data element: ABRVW
VKAUS_01_024(003),
* data element: EMPST
EMPST_01_025(025),
* data element: BSTKD
BSTKD_026(035),
* data element: KUNAG
KUNNR_027(010),
* data element: KUNWE
KUNNR_028(010),
* data element: KETDAT
KETDAT_029(010),
* data element: KPRGBZ
KPRGBZ_030(001),
* data element: BSTKD
BSTKD_031(035),
* data element: BSARK
BSARK_032(004),
* data element: BSTZD
BSTZD_033(004),
* data element: TELF1_VP
TELF1_034(016),
* data element: BSTKD
BSTKD_035(035),
* data element: KUNAG
KUNNR_036(010),
* data element: KUNWE
KUNNR_037(010),
* data element: KETDAT
KETDAT_038(010),
* data element: KPRGBZ
KPRGBZ_039(001),
end of record.
*** End generated data section ***
start-of-selection.
perform open_dataset using dataset.
perform open_group.
do.
read dataset dataset into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VKGRP'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
record-AUART_001.
perform bdc_field using 'VBAK-VKORG'
record-VKORG_002.
perform bdc_field using 'VBAK-VTWEG'
record-VTWEG_003.
perform bdc_field using 'VBAK-SPART'
record-SPART_004.
perform bdc_field using 'VBAK-VKBUR'
record-VKBUR_005.
perform bdc_field using 'VBAK-VKGRP'
record-VKGRP_006.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=T\02'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BSTKD'.
perform bdc_field using 'VBAK-VBELN'
record-VBELN_007.
perform bdc_field using 'VBKD-BSTKD'
record-BSTKD_008.
perform bdc_field using 'KUAGV-KUNNR'
record-KUNNR_009.
perform bdc_field using 'RV45A-KETDAT'
record-KETDAT_010.
perform bdc_field using 'RV45A-KPRGBZ'
record-KPRGBZ_011.
perform bdc_field using 'VBKD-PRSDT'
record-PRSDT_012.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBKD-BSTKD'
record-BSTKD_013.
perform bdc_field using 'KUAGV-KUNNR'
record-KUNNR_014.
perform bdc_field using 'KUWEV-KUNNR'
record-KUNNR_015.
perform bdc_field using 'RV45A-KETDAT'
record-KETDAT_016.
perform bdc_field using 'RV45A-KPRGBZ'
record-KPRGBZ_017.
perform bdc_field using 'BDC_CURSOR'
'VBAP-VKAUS(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
record-MABNR_01_018.
perform bdc_field using 'RV45A-KWMENG(01)'
record-KWMENG_01_019.
perform bdc_field using 'VBAP-VRKME(01)'
record-VRKME_01_020.
perform bdc_field using 'VBAP-PSTYV(01)'
record-PSTYV_01_021.
perform bdc_field using 'VBAP-WERKS(01)'
record-WERKS_01_022.
perform bdc_field using 'KOMV-KBETR(01)'
record-KBETR_01_023.
perform bdc_field using 'VBAP-VKAUS(01)'
record-VKAUS_01_024.
perform bdc_field using 'VBKD-EMPST(01)'
record-EMPST_01_025.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
record-BSTKD_026.
perform bdc_field using 'KUAGV-KUNNR'
record-KUNNR_027.
perform bdc_field using 'KUWEV-KUNNR'
record-KUNNR_028.
perform bdc_field using 'RV45A-KETDAT'
record-KETDAT_029.
perform bdc_field using 'RV45A-KPRGBZ'
record-KPRGBZ_030.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_dynpro using 'SAPLSPO2' '0100'.
perform bdc_field using 'BDC_OKCODE'
'=OPT2'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_CURSOR'
'07/02'.
perform bdc_field using 'BDC_OKCODE'
'=FEAL'.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_CURSOR'
'07/02'.
perform bdc_field using 'BDC_OKCODE'
'=FEBE'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=FEWE'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-BSTZD'.
perform bdc_field using 'VBKD-BSTKD'
record-BSTKD_031.
perform bdc_field using 'VBKD-BSARK'
record-BSARK_032.
perform bdc_field using 'VBAK-BSTZD'
record-BSTZD_033.
perform bdc_field using 'VBAK-TELF1'
record-TELF1_034.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
record-BSTKD_035.
perform bdc_field using 'KUAGV-KUNNR'
record-KUNNR_036.
perform bdc_field using 'KUWEV-KUNNR'
record-KUNNR_037.
perform bdc_field using 'RV45A-KETDAT'
record-KETDAT_038.
perform bdc_field using 'RV45A-KPRGBZ'
record-KPRGBZ_039.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_transaction using 'VA01'.
enddo.
perform close_group.
perform close_dataset using dataset.
|
-
无标题.png
(3.47 KB, 下载次数: 10)
只要order_partners-partn_numb未在工厂列表中,则不会发生问题,系统表均被更新
|