关键点:LOGIC_SWITCH-COND_HANDL = ‘X’

下面具体实例:
FUNCTION ZSD_CRM_CONTRACT_CREATE.
*"----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*" VALUE(TESTRUN) TYPE BAPIFLAG-BAPIFLAG OPTIONAL
*" VALUE(I_DOC_TYPE) TYPE BAPISDHD1-DOC_TYPE OPTIONAL
*" VALUE(I_SALES_ORG) TYPE BAPISDHD1-SALES_ORG OPTIONAL
*" VALUE(I_DISTR_CHAN) TYPE BAPISDHD1-DISTR_CHAN OPTIONAL
*" VALUE(I_DIVISION) TYPE BAPISDHD1-DIVISION OPTIONAL
*" VALUE(I_CT_VALID_F) TYPE BAPISDHD1-CT_VALID_F OPTIONAL
*" VALUE(I_CT_VALID_T) TYPE BAPISDHD1-CT_VALID_T OPTIONAL
*" VALUE(I_PURCH_NO_C) TYPE BAPISDHD1-PURCH_NO_C OPTIONAL
*" VALUE(I_ZZEM_HTQDRQ) TYPE ZZEM_HTQDRQ OPTIONAL
*" VALUE(I_VTTYP) TYPE VTTYP OPTIONAL
*" VALUE(I_PYMET) TYPE EPIC_EXAMPLE_PAYREF OPTIONAL
*" EXPORTING
*" VALUE(E_JSON) TYPE STRING
*" VALUE(RESULTCODE) TYPE BAPI_MTYPE
*" VALUE(RESULTMSG) TYPE BAPI_MSG
*" TABLES
*" IT_CONTRACT_ITEMS_IN STRUCTURE VBAP OPTIONAL
*" IT_CONTRACT_PARTNERS STRUCTURE BAPIPARNR OPTIONAL
*" ET_RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
DATA : LS_CONTRACT_HEADER_IN TYPE BAPISDHD1,"销售和分销凭证抬头
LS_CONTRACT_HEADER_INX TYPE BAPISDHD1X,"销售和分销凭证抬头

     LS_CONTRACT_HEAD_IN TYPE BAPISDH1,"销售和分销凭证抬头LS_CONTRACT_HEAD_INX TYPE BAPISDH1X,"销售和分销凭证抬头LS_LOGIC_SWITCH      TYPE BAPISDLS,LT_CONTRACT_ITEMS_IN   LIKE TABLE OF BAPISDITM,LS_CONTRACT_ITEMS_IN   LIKE       BAPISDITM,LT_CONTRACT_ITEMS_INX   LIKE TABLE OF BAPISDITMX,LS_CONTRACT_ITEMS_INX   LIKE       BAPISDITMX,LT_CONTRACT_PARTNERS   LIKE TABLE OF BAPIPARNR,LS_CONTRACT_PARTNERS   LIKE       BAPIPARNR,LT_PARTNERCHANGES LIKE TABLE OF BAPIPARNRC,LS_PARTNERCHANGES LIKE  BAPIPARNRC,LT_CONDITIONS_IN  LIKE TABLE OF BAPICOND,LS_CONDITIONS_IN  LIKE  BAPICOND,LT_CONDITIONS_INX  LIKE TABLE OF BAPICONDX,LS_CONDITIONS_INX  LIKE  BAPICONDX,LV_SALESDOCUMENT  TYPE  BAPIVBELN-VBELN,"销售订单号LT_RETURN     LIKE TABLE OF BAPIRET2,LS_RETURN     LIKE          BAPIRET2.

DATA:BEGIN OF LS_MSG,
TYPE TYPE BAPI_MTYPE,"
MESSAGE TYPE BAPI_MSG,"

 END OF LS_MSG.

DATA: LT_MSG LIKE TABLE OF LS_MSG,
ls_ZZCRM_CONTRACT TYPE ZZCRM_CONTRACT.

** filling partners details
CLEAR LT_CONTRACT_PARTNERS.
LOOP AT IT_CONTRACT_PARTNERS.
CLEAR:LS_CONTRACT_PARTNERS.
*
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = IT_CONTRACT_PARTNERS-PARTN_NUMB
IMPORTING
output = IT_CONTRACT_PARTNERS-PARTN_NUMB.

LS_CONTRACT_PARTNERS-partn_role = IT_CONTRACT_PARTNERS-PARTN_ROLE.
LS_CONTRACT_PARTNERS-partn_numb = IT_CONTRACT_PARTNERS-PARTN_NUMB.
LS_CONTRACT_PARTNERS-itm_number = '000000'.
APPEND LS_CONTRACT_PARTNERS TO LT_CONTRACT_PARTNERS.LS_CONTRACT_PARTNERS-partn_role = IT_CONTRACT_PARTNERS-PARTN_ROLE.
LS_CONTRACT_PARTNERS-partn_numb = IT_CONTRACT_PARTNERS-PARTN_NUMB.
LS_CONTRACT_PARTNERS-itm_number = '000000'.
APPEND LS_CONTRACT_PARTNERS TO LT_CONTRACT_PARTNERS.

ENDLOOP.

  • " 抬头数据 - 组织数据
    CLEAR:LS_CONTRACT_HEADER_IN.
    LS_CONTRACT_HEADER_IN-doc_type = I_DOC_TYPE ."销售凭证类型
    LS_CONTRACT_HEADER_IN-sales_org = I_SALES_ORG ."销售组织
    LS_CONTRACT_HEADER_IN-distr_chan = I_DISTR_CHAN ."分销渠道
    LS_CONTRACT_HEADER_IN-division = I_DIVISION ."产品组
    LS_CONTRACT_HEADER_IN-ct_valid_f = I_CT_VALID_F."有效起始日期(框架协议,产品建议)
    LS_CONTRACT_HEADER_IN-ct_valid_t = I_CT_VALID_T."有效至日期(框架协议,产品建议)
    LS_CONTRACT_HEADER_IN-purch_no_c = I_PURCH_NO_C."合同号

LS_CONTRACT_HEADER_INX-DOC_TYPE = ‘X’.
LS_CONTRACT_HEADER_INX-SALES_ORG = ‘X’.
LS_CONTRACT_HEADER_INX-DISTR_CHAN = ‘X’.
LS_CONTRACT_HEADER_INX-DIVISION = ‘X’.
LS_CONTRACT_HEADER_INX-CT_VALID_F = ‘X’.
LS_CONTRACT_HEADER_INX-CT_VALID_T = ‘X’.
LS_CONTRACT_HEADER_INX-PURCH_NO_C = ‘X’.

CLEAR LS_LOGIC_SWITCH.
LS_LOGIC_SWITCH-COND_HANDL = ‘X’.
*行数据
CLEAR:LT_CONTRACT_ITEMS_IN.
LOOP AT IT_CONTRACT_ITEMS_IN.
CLEAR:LS_CONTRACT_ITEMS_IN,LS_CONTRACT_ITEMS_INX.
"增加前导零
*项目行号
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = IT_CONTRACT_ITEMS_IN-POSNR
IMPORTING
output = IT_CONTRACT_ITEMS_IN-POSNR.
*物料号
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = IT_CONTRACT_ITEMS_IN-MATNR
IMPORTING
output = IT_CONTRACT_ITEMS_IN-MATNR.
*
LS_CONTRACT_ITEMS_IN-itm_number = IT_CONTRACT_ITEMS_IN-POSNR.
LS_CONTRACT_ITEMS_IN-material = IT_CONTRACT_ITEMS_IN-MATNR.
LS_CONTRACT_ITEMS_IN-target_qty = IT_CONTRACT_ITEMS_IN-ZMENG."销售单位目标数量
LS_CONTRACT_ITEMS_IN-target_qu = IT_CONTRACT_ITEMS_IN-ZIEME."目标数量计量单位
APPEND LS_CONTRACT_ITEMS_IN TO LT_CONTRACT_ITEMS_IN.

LS_CONTRACT_ITEMS_INX-itm_number  = IT_CONTRACT_ITEMS_IN-POSNR.
LS_CONTRACT_ITEMS_INX-material    = 'X'.
LS_CONTRACT_ITEMS_INX-target_qty  = 'X'.
LS_CONTRACT_ITEMS_INX-target_qu   = 'X'.
APPEND LS_CONTRACT_ITEMS_INX TO LT_CONTRACT_ITEMS_INX.

*Item Conditions DEVK911113 新增
CLEAR: LS_CONDITIONS_IN,LS_CONDITIONS_INX.
LS_CONDITIONS_IN-itm_number = IT_CONTRACT_ITEMS_IN-POSNR."项目号
LS_CONDITIONS_IN-cond_type = ‘ZA01’. "条件类型 konv-kschl
LS_CONDITIONS_IN-cond_value = IT_CONTRACT_ITEMS_IN-netpr. "净价 vbap-NETPR/单价 konv-kbetr
LS_CONDITIONS_IN-currency = IT_CONTRACT_ITEMS_IN-waerk. "货币或% vbap-waerk konv-waers
LS_CONDITIONS_IN-cond_unit = IT_CONTRACT_ITEMS_IN-ZIEME. "条件单位vbap-KMEIN
LS_CONDITIONS_IN-cond_p_unt = 1. "条件定价单位vbap-KPEIN
APPEND LS_CONDITIONS_IN TO LT_CONDITIONS_IN.

LS_CONDITIONS_INX-itm_number = IT_CONTRACT_ITEMS_IN-POSNR."项目号
LS_CONDITIONS_INX-cond_type  = 'ZA01'.  "条件类型 konv-kschl
LS_CONDITIONS_INX-cond_value = 'X'.  "净价 借用vbap-NETPR/单价 实际为konv-kbetr
LS_CONDITIONS_INX-currency   = 'X'.  "货币或% vbap-waerk konv-waers
LS_CONDITIONS_INX-cond_unit  = 'X'.  "条件单位vbap-KMEIN
LS_CONDITIONS_INX-cond_p_unt = 'X'.  "条件定价单位vbap-KPEIN
APPEND LS_CONDITIONS_INX TO LT_CONDITIONS_INX.

ENDLOOP.
**call bapi
CALL FUNCTION ‘BAPI_CONTRACT_CREATEFROMDATA’
EXPORTING

  • SALESDOCUMENTIN =
    CONTRACT_HEADER_IN = LS_CONTRACT_HEADER_IN
  • CONTRACT_HEADER_INX =
  • SENDER =
  • BINARY_RELATIONSHIPTYPE = ’ ’
  • INT_NUMBER_ASSIGNMENT = ’ ’
  • BEHAVE_WHEN_ERROR = ’ ’
    LOGIC_SWITCH = LS_LOGIC_SWITCH
    TESTRUN = TESTRUN
  • CONVERT = ’ ’
    IMPORTING
    SALESDOCUMENT = LV_SALESDOCUMENT
    TABLES
    RETURN = LT_RETURN
    CONTRACT_ITEMS_IN = LT_CONTRACT_ITEMS_IN
  • CONTRACT_ITEMS_INX =
    CONTRACT_PARTNERS = LT_CONTRACT_PARTNERS
    CONTRACT_CONDITIONS_IN = LT_CONDITIONS_IN
    CONTRACT_CONDITIONS_INX = LT_CONDITIONS_INX
  • CONTRACT_CFGS_REF =
  • CONTRACT_CFGS_INST =
  • CONTRACT_CFGS_PART_OF =
  • CONTRACT_CFGS_VALUE =
  • CONTRACT_CFGS_BLOB =
  • CONTRACT_CFGS_VK =
  • CONTRACT_CFGS_REFINST =
  • CONTRACT_DATA_IN =
  • CONTRACT_DATA_INX =
  • CONTRACT_TEXT =
  • CONTRACT_KEYS =
  • EXTENSIONIN =
  • PARTNERADDRESSES =
  • EXTENSIONEX =
    .

*处理bapi结果
LOOP AT LT_RETURN TRANSPORTING NO FIELDS WHERE TYPE = ‘A’ OR
TYPE = ‘E’ OR
TYPE = ‘X’.
EXIT.
ENDLOOP.
*内表赋值
ET_RETURN[] = LT_RETURN.

IF SY-SUBRC EQ 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = ‘E’.

CLEAR LS_MSG.
LS_MSG-TYPE = 'E'.
LS_MSG-MESSAGE = LS_RETURN-MESSAGE.
APPEND LS_MSG TO LT_MSG.CONCATENATE  RESULTMSG '*' LS_RETURN-MESSAGE INTO RESULTMSG.

ENDLOOP.
RESULTCODE = ‘E’.

ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’.

CLEAR LS_MSG.
LS_MSG-TYPE = ‘S’.
LS_MSG-MESSAGE = LV_SALESDOCUMENT.
APPEND LS_MSG TO LT_MSG.

RESULTCODE = ‘S’.
RESULTMSG = LV_SALESDOCUMENT.

*保存合同相关数据
IF I_ZZEM_HTQDRQ IS NOT INITIAL.
CLEAR ls_ZZCRM_CONTRACT.
ls_ZZCRM_CONTRACT-VBELN = LV_SALESDOCUMENT.
ls_ZZCRM_CONTRACT-ZZEM_HTQDRQ = I_ZZEM_HTQDRQ.
ls_ZZCRM_CONTRACT-VTTYP = I_VTTYP.
ls_ZZCRM_CONTRACT-PYMET = I_PYMET.
MODIFY ZZCRM_CONTRACT FROM ls_ZZCRM_CONTRACT.

ENDIF.

ENDIF.

***内表->JSON

E_JSON = /ui2/cl_json=>serialize( data = LT_MSG ).

ENDFUNCTION.

关于BAPI_CONTRACT_CREATEFROMDATA涉及使用价格相关推荐

  1. 【MM小贴士】关于MR21修改物料价格与账期的关系

    [业务背景]今天不是11月刚开始了么,然后这个项目测试机,月初不要开账期了么,然后涉及到MR21修改价格,结果MM也没知会财务,把11月账期就开了.其实也没啥,只是影响了财务价格.其实作为一个优秀的M ...

  2. UITT-欧盟MiFID II新监管法规实践先行者

    UITT是科技创新型交易平台,坚持以科技创新为驱动力,优化交易流程.加强交易监管.提升交易速度,为客户提供极致体验的×××.贵金属.原油和指数等多元化在线交易解决方案. 2018年1月3日,被业界称为 ...

  3. selenium自动化测试_您如何使用Selenium来计算自动化测试的投资回报率?

    selenium自动化测试 跨浏览器测试是一种测试,需要大量的精力和时间. 通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动. 特别是 ...

  4. 您如何使用硒来计算自动化测试的投资回报率?

    跨浏览器测试是一种测试,需要大量的精力和时间. 通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动. 特别是如果手动处理. 使用Sele ...

  5. 怎样为企业挑选正确的EDR解决方案

    尽管黑客的动机一如既往--钱.信息.更多的钱,他们的攻击方法却变得愈加复杂.具侵略性,且更难以阻止.终端检测与响应(EDR)解决方案,如今已成为公司企业确保尽可能不受攻击威胁伤害的紧迫需求. EDR解 ...

  6. 自动化比手工测试成本高?使用Selenium评估测试自动化的ROI指标

    跨浏览器测试是一种测试,需要大量的精力和时间.通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动. 特别是如果手动处理,使用Seleni ...

  7. PayPal集成标准版案例(asp.net)关键源码

    Paypal国际版网站集成简易教程(一):序言 本文介绍如何在自己网站上集成paypal标准版支付,是从百度文库中找到的,要感谢下这位作者把自己的经验心得分享出来,毕竟paypal集成中文的教程非常少 ...

  8. 一文理解所有需求分析中的基本术语

    ​需求分析对产品开发成败至关重要,正因为如此,对需求进行详细定义和描述十分重要.然而不同体系往往对需求有不同的定义,也导致需求术语混乱,本周小编结合多年需求工作经验,详解不同术语的概念与区别: 业务( ...

  9. 圆梦之旅 – 日本(一)攻略篇

    title: 圆梦之旅 – 日本(一)攻略篇 date: 2017-02-04 15:10:33 梦起 记得小学有位语文老师,一次在课堂上和我们聊起她去日本旅行的经历,她拿中日两国作了个简单对比,至今 ...

最新文章

  1. Java学习总结:52(Java网络编程)
  2. 如何实现更换Jupyter Notebook内核Python版本
  3. Keil中RO-data、RW-data、ZI-data意义
  4. java 扑克牌排序_java 怎么写compareto方法实现扑克牌排序
  5. IKAnalyzer进行中文分词和去停用词
  6. 【Groovy】Groovyc: Internal groovyc error: code 1 的解决方法
  7. ASP.Net防止页面刷新重复提交
  8. 百度愚人节恶搞背后的趋势
  9. IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞
  10. C#调用API函数EnumWindows枚举窗口的方法
  11. sublime_text_2 注册
  12. 直流稳压电源的设计与制作
  13. DEDECMS 另类***
  14. 10月北京二手房交易量强势反弹 房价环比上涨5.2%
  15. 郁金香搜索引擎的方案(2017版)
  16. 会做饭的机器人曰记_会做饭的机器人!
  17. 前端程序员必看的网站专属前端程序员的“hao123“
  18. implicit和explicit
  19. 国有企业和集体企业投资资金来源特点
  20. 第十四届蓝桥杯模拟赛【第三期】Python

热门文章

  1. 使用python爬取全国所有热门景点数据---去哪儿网
  2. 航模电池基本使用及保养
  3. github上值得关注的前端项目
  4. ATM制造商Diebold推自助结帐系统,助力消费者NFC结账
  5. 如何修改数组对象的属性名(把key替换成想要的key,值不变)
  6. 宏观经济学_宏观经济指标
  7. Vim小技巧及快捷键大全【持续更新】
  8. 学习笔记(一):Java中Stream的基本用法和相关API详解
  9. RSA非对称加密解密实现
  10. Power BI 中的CALCULATE函数