通过引用销售订单使用BAPI_CONTRACT_CREATEFROMDATA进行合同。

2020-09-26 23:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的要求是参考销售订单创建合同。 当我没有通过销售组织,分销渠道和部门时,因为我们在TCODE VA41中手动创建时没有通过,因此出现错误"无法确定销售区域"。

我的代码是。

报告ztest_2386。

数据:lwa_cont_hdr_in类型bapisdhd1,
lwa_cont_hdr_inx类型bapisdhd1x,
lwa_return类型bapiret2,
lwa_partner类型bapiparnr, 类型bapictrx。

数据:bapiret2的lit_return类型标准表,
lit_partner bapiparnr的类型标准表,lit_contract类型bapictr的标准表,
lit_contractx类型bapictrx的标准表。 >
数据:l_salesdoc类型bapivbeln-vbeln,
l_sales_org类型vbak-vkorg,
l_po_type类型vbkd-bsark,
l_flag类型char1。


常量:lc_us15k类型vbak- 值'US15',
lc_wty类型vbkd-bsark值'WTY',
lc_doc_typ类型bapisdhd1-doc_type值'ZEW',
lc_c类型bapisdhd1-ref_doc值'C',
lc_x类型char1 值'X'。

清除:l_sales_org,l_po_type,l_flag。

*准备合同标头数据
lwa_cont_hdr_in-doc_type = lc_doc_typ。 "合同类型
lwa_cont_hdr_in-ref_doc ='0300014418'。
lwa_cont_hdr_in-refdoc_cat = lc_c。


* lwa_cont_hdr_in-sales_org = lc_us15。 "销售组织
* lwa_cont_hdr_in-distr_chan ='10'。"分发渠道
* lwa_cont_hdr_in-division ='30'。 "部门


lwa_cont_hdr_in-bill_date = sy-datum。 "结算日期
lwa_cont_hdr_in-bill_block ="。

lwa_cont_hdr_inx-updateflag ='I'。
lwa_cont_hdr_inx-doc_type = lc_x。
lwa_cont_hdr_inx_ref_doc_ lc。
refdoc_cat = lc_x。


* lwa_cont_hdr_inx-sales_org = lc_x。
* lwa_cont_hdr_inx-distr_chan ='X'。
* lwa_cont_hdr_inx-division ='X'。


lwa_cont_hdr_inx-bill_date = lc_x。
lwa_cont_hdr_inx-bill_block = lc_x。

*准备合作伙伴详细信息
lwa_partner-partn_role ='AG'。 ""已售出给当事人
lwa_partner-partn_numb ='0010042413'。
追加lwa_partner至lit_partner。

*准备合同控制
lwa_contract-con_st_dat = sy-datum。
通话功能' RP_CALC_DATE_IN_INTERVAL'
导出
日期= sy-datum
天= 00
月份= 00
签名='+'
years = 1
导入
calc_date = lwa_contract -con_en_dat。
附加lwa_contract到lit_contract。
**


lwa_contractx-con_st_dat = lc_x。
lwa_contractx-con_en_dat = lc_x。
附加lwa_contractx到lit_contractx。 SALESDOCUMENTIN ='0300014418'
contract_header_in = lwa_cont_hdr_in
contract_header_inx = lwa_cont_hdr_inx
* SENDER =
* BINARY_RELATIONSHIPTYPE =''
* INT_NUMBER_ASSIGNMENT ='
* * LOGIC_SWITCH =
* TESTRUN =
*转换='X'
导入
salesdocument = l_salesdoc
表格
return = lit_return
* contract_items_in =
* contract_items_inx =
contract_partners = lit_partner
* CONTRACT_CONDITIONS_IN =
* CONTRACT_CONDITIONS_INX =
* CONTRACT_CFGS_REF =
* CONTRACT_CFGS_INST =
* CONTRACT_CFGS_PART_OF =
* CONTRACT_CF = > * CONTRACT_CFGS_VK =
* CONTRACT_CFGS_REFINST =
contract_data_in = lit_contract
contract_data_inx = lit_contractx
* contract_t ext =
* CONTRACT_KEYS =
* EXTENSIONIN =
*伙伴地址=
* EXTENSIONEX =


读取表lit_return传输不包含键类型='E'的字段。
如果sy-subrc不初始。
调用功能'BAPI_TRANSACTION_COMMIT'
导出
等待='X'。
写:'成功'。
写:l_salesdoc。
> ELSE。
在lit_return处循环进入lwa_return。
写:lwa_return-message。
ENDLOOP。
ENDIF。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我的要求是参考销售订单创建合同。 当我没有通过销售组织,分销渠道和部门时,因为我们在TCODE VA41中手动创建时没有通过,因此出现错误"无法确定销售区域"。

我的代码是。

报告ztest_2386。

数据:lwa_cont_hdr_in类型bapisdhd1,
lwa_cont_hdr_inx类型bapisdhd1x,
lwa_return类型bapiret2,
lwa_partner类型bapiparnr, 类型bapictrx。

数据:bapiret2的lit_return类型标准表,
lit_partner bapiparnr的类型标准表,lit_contract类型bapictr的标准表,
lit_contractx类型bapictrx的标准表。 >
数据:l_salesdoc类型bapivbeln-vbeln,
l_sales_org类型vbak-vkorg,
l_po_type类型vbkd-bsark,
l_flag类型char1。


常量:lc_us15k类型vbak- 值'US15',
lc_wty类型vbkd-bsark值'WTY',
lc_doc_typ类型bapisdhd1-doc_type值'ZEW',
lc_c类型bapisdhd1-ref_doc值'C',
lc_x类型char1 值'X'。

清除:l_sales_org,l_po_type,l_flag。

*准备合同标头数据
lwa_cont_hdr_in-doc_type = lc_doc_typ。 "合同类型
lwa_cont_hdr_in-ref_doc ='0300014418'。
lwa_cont_hdr_in-refdoc_cat = lc_c。


* lwa_cont_hdr_in-sales_org = lc_us15。 "销售组织
* lwa_cont_hdr_in-distr_chan ='10'。"分发渠道
* lwa_cont_hdr_in-division ='30'。 "部门


lwa_cont_hdr_in-bill_date = sy-datum。 "结算日期
lwa_cont_hdr_in-bill_block ="。

lwa_cont_hdr_inx-updateflag ='I'。
lwa_cont_hdr_inx-doc_type = lc_x。
lwa_cont_hdr_inx_ref_doc_ lc。
refdoc_cat = lc_x。


* lwa_cont_hdr_inx-sales_org = lc_x。
* lwa_cont_hdr_inx-distr_chan ='X'。
* lwa_cont_hdr_inx-division ='X'。


lwa_cont_hdr_inx-bill_date = lc_x。
lwa_cont_hdr_inx-bill_block = lc_x。

*准备合作伙伴详细信息
lwa_partner-partn_role ='AG'。 ""已售出给当事人
lwa_partner-partn_numb ='0010042413'。
追加lwa_partner至lit_partner。

*准备合同控制
lwa_contract-con_st_dat = sy-datum。
通话功能' RP_CALC_DATE_IN_INTERVAL'
导出
日期= sy-datum
天= 00
月份= 00
签名='+'
years = 1
导入
calc_date = lwa_contract -con_en_dat。
附加lwa_contract到lit_contract。
**


lwa_contractx-con_st_dat = lc_x。
lwa_contractx-con_en_dat = lc_x。
附加lwa_contractx到lit_contractx。 SALESDOCUMENTIN ='0300014418'
contract_header_in = lwa_cont_hdr_in
contract_header_inx = lwa_cont_hdr_inx
* SENDER =
* BINARY_RELATIONSHIPTYPE =''
* INT_NUMBER_ASSIGNMENT ='
* * LOGIC_SWITCH =
* TESTRUN =
*转换='X'
导入
salesdocument = l_salesdoc
表格
return = lit_return
* contract_items_in =
* contract_items_inx =
contract_partners = lit_partner
* CONTRACT_CONDITIONS_IN =
* CONTRACT_CONDITIONS_INX =
* CONTRACT_CFGS_REF =
* CONTRACT_CFGS_INST =
* CONTRACT_CFGS_PART_OF =
* CONTRACT_CF = > * CONTRACT_CFGS_VK =
* CONTRACT_CFGS_REFINST =
contract_data_in = lit_contract
contract_data_inx = lit_contractx
* contract_t ext =
* CONTRACT_KEYS =
* EXTENSIONIN =
*伙伴地址=
* EXTENSIONEX =


读取表lit_return传输不包含键类型='E'的字段。
如果sy-subrc不初始。
调用功能'BAPI_TRANSACTION_COMMIT'
导出
等待='X'。
写:'成功'。
写:l_salesdoc。
> ELSE。
在lit_return处循环进入lwa_return。
写:lwa_return-message。
ENDLOOP。
ENDIF。

付费偷看设置
发送
1条回答
Doze时光
1楼-- · 2020-09-27 00:10

嗨,

这应该是MM合同,而不是SRM合同。

所以我调整了标签。

BR,

常春藤

一周热门 更多>