如何使用代码创建service contract并实现partner determination
Created by Jerry Wang, last modified on Apr 29, 2015
执行report ZDETER_AND_CREATE,
这个report完成三件事情:
- 创建一个新的process type为SC1的service contract
- call partner determination的API,完成determination 逻辑(这个例子里determine出来的是employee responsible)
- 将step2 得到的partner assign到step1创建的service contract里,同时hard code 另一个Bill to party
- call order save将创建的service contract保存到DB
REPORT zdeter_and_create. DATA: lt_input_fields TYPE crmt_input_field_tab,ls_input_field LIKE LINE OF lt_input_fields,ls_field_name LIKE LINE OF ls_input_field-field_names,lv_guid TYPE guid_16,lt_orderadm_h_com TYPE crmt_orderadm_h_comt,ls_orderadm_h_com LIKE LINE OF lt_orderadm_h_com,lt_partner TYPE crmt_partner_comt,ls_partner LIKE LINE OF lt_partner,ls_partner_control TYPE crmt_partner_control,ls_com_structure TYPE string,lv_selection_needed TYPE crmt_boolean,lv_is_buying_center TYPE abap_bool,lt_partner_com TYPE crmt_partner_comt,ls_partner_com LIKE LINE OF lt_partner_com,lt_attributes_com TYPE crmt_partner_attribute_com_tab,lt_save TYPE crmt_object_guid_tab,lt_saved TYPE crmt_return_objects,ls_saved LIKE LINE OF lt_saved,lt_switch TYPE crmt_active_switch_t,ls_switch TYPE LINE OF crmt_active_switch_t. START-OF-SELECTION.PERFORM call_bp_determ_api.PERFORM call_order_maintain.PERFORM call_order_save. FORM call_bp_determ_api.CALL FUNCTION 'GUID_CREATE'IMPORTINGev_guid_16 = lv_guid.ls_partner_control-document_id = lv_guid.ls_partner_control-caller = 'CRM'.ls_partner_control-object_type = 'BUS2000112'.ls_partner_control-master_data_structure = 'CRMT_BUS_SALES_COM'.ls_partner_control-determ_proc = '00000041'.ls_partner_control-scope = 'A'.ls_partner_control-no_default_for_calendar_flag = 'X'.ls_partner_control-process_type = 'SC1'.CALL FUNCTION 'CRM_PARTNER_DETERMINATION_OW'EXPORTINGiv_ref_guid = lv_guidiv_ref_kind = 'A'iv_point_of_determ = '0'iv_predecessor_guid = '00000000000000000000000000000000'is_partner_control = ls_partner_controlis_md_structure = ls_com_structureIMPORTINGev_selection_needed = lv_selection_neededet_partner_com = lt_partner_comet_input_fields = lt_input_fieldset_attributes_com = lt_attributes_comEXCEPTIONSerror_occurred = 1parameter_error = 2OTHERS = 3.IF sy-subrc = 0.WRITE: / 'partner determination is done successfully'.ENDIF. ENDFORM. FORM call_order_maintain.CLEAR: ls_orderadm_h_com, ls_input_field, lt_input_fields.ls_orderadm_h_com-guid = lv_guid.ls_orderadm_h_com-description = 'created by code on:' && sy-timlo.ls_orderadm_h_com-process_type = 'SC1'.ls_orderadm_h_com-mode = 'A'.APPEND ls_orderadm_h_com TO lt_orderadm_h_com.ls_input_field-ref_guid = lv_guid.ls_input_field-ref_kind = 'A'.ls_input_field-objectname = 'ORDERADM_H'. * sorted tablels_field_name-fieldname = 'DESCRIPTION'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'MODE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PROCESS_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.APPEND ls_input_field TO lt_input_fields.CLEAR: ls_input_field.ls_input_field-ref_guid = lv_guid.ls_input_field-ref_kind = 'A'.ls_input_field-objectname = 'PARTNER'.CLEAR: ls_field_name.ls_field_name-fieldname = 'DISPLAY_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'KIND_OF_ENTRY'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'NO_TYPE'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PARTNER_FCT'.APPEND ls_field_name TO ls_input_field-field_names.ls_field_name-fieldname = 'PARTNER_NO'.APPEND ls_field_name TO ls_input_field-field_names.ls_input_field-ref_handle = '0000000000'.ls_input_field-logical_key = '0000'.APPEND ls_input_field TO lt_input_fields.ls_partner-ref_guid = lv_guid.ls_partner-ref_kind = 'A'.ls_partner-kind_of_entry = 'C'.ls_partner-partner_fct = '00000003'. "Bill tols_partner-partner_no = '0004102821'.ls_partner-display_type = 'BP'.ls_partner-no_type = 'BP'.APPEND ls_partner TO lt_partner.READ TABLE lt_partner_com INTO ls_partner_com INDEX 1.ls_partner-ref_guid = lv_guid.ls_partner-ref_kind = 'A'.ls_partner-kind_of_entry = 'C'.ls_partner-partner_fct = ls_partner_com-partner_fct.ls_partner-partner_no = ls_partner_com-partner_no.ls_partner-display_type = 'BP'.ls_partner-no_type = 'BP'.APPEND ls_partner TO lt_partner.ls_switch-ref_guid = lv_guid.ls_switch-ref_kind = 'A'.ls_switch-partner_determ = 'A'.APPEND ls_switch TO lt_switch.CALL FUNCTION 'CRM_ORDER_MAINTAIN'EXPORTINGit_active_switch = lt_switchit_partner = lt_partnerCHANGINGct_orderadm_h = lt_orderadm_h_comct_input_fields = lt_input_fieldsEXCEPTIONSOTHERS = 99.IF sy-subrc = 0.WRITE:/ 'Order maintain function is done successfully.'.ENDIF. ENDFORM. FORM call_order_save.INSERT lv_guid INTO TABLE lt_save.CALL FUNCTION 'CRM_ORDER_SAVE'EXPORTINGit_objects_to_save = lt_saveiv_update_task_local = abap_trueiv_no_bdoc_send = abap_trueIMPORTINGet_saved_objects = lt_savedEXCEPTIONSdocument_not_saved = 1.IF sy-subrc <> 0.WRITE: / 'Service contract created failed'.ELSE.READ TABLE lt_saved INTO ls_saved INDEX 1.WRITE: / 'service contract created successfully, id: ' , ls_saved-object_id.ENDIF.COMMIT WORK AND WAIT. ENDFORM.
如何使用代码创建service contract并实现partner determination相关推荐
- 如何使用代码区分service contract和service contract quotation
SAP standard deliver的service contract和service contract quotation的transaction type分别为SC1和SCQ1: 这两个tra ...
- 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承...
当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对SOA,对面向服务产生误解.其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替. ...
- WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance
我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Sin ...
- 【Binder 机制】AIDL 分析 ( 创建 Service 服务 | 绑定 Service 远程服务 )
文章目录 一.创建 Service 远程服务 1.创建 Service 2.AndroidManifest.xml 清单文件中配置 Service 二.绑定 Service 远程服务 1.核心代码 2 ...
- SharePoint 使用代码创建 SPWeb/SPSiite/SPWebApplication以及WebPart添加到页面与删除 (一)...
在创建的时候注意你要有权限.还有如果要使用请注意合理释放资源,因为我是随便写的 就没有去考虑资合理问题. 首先我要写的大家怎么去获取SPWeb/SPSiite/SPWebApplication,我会使 ...
- 存根类 测试代码 java_有关为旧版代码创建存根的更多信息–测试技术7
存根类 测试代码 java 在我的上一个博客中 ,我谈到了如何处理行为不佳的不可测试的 (1) SitePropertiesManager 类,以及如何通过提取接口来创建存根. 但是,如果由于旧类的源 ...
- 存根类 测试代码 java_为旧版代码创建存根-测试技术6
存根类 测试代码 java 任何阅读此博客的人都可能已经意识到,目前我正在开发一个项目,其中包含大量的旧代码,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为非常差的类 ...
- 为旧版代码创建存根–测试技术6
任何阅读此博客的人都可能已经意识到,目前我正在开发一个包含大量旧代码的项目,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为异常的类非常普遍,整个团队都一次又一次地犯错 ...
- 有关为旧版代码创建存根的更多信息–测试技术7
在上一个博客中 ,我谈到了如何处理行为不佳的不可测试的 (1) SitePropertiesManager 类,以及如何通过提取接口来创建存根. 但是,如果由于旧类的源代码已被锁定在第三方JAR文件中 ...
最新文章
- 如何将Wav文件做到EXE文件里
- android+note2+分辨率,5.5英寸720p屏全新RGB像素排列_三星 GALAXY Note II_手机Android频道-中关村在线...
- Java Character 方法
- Hemberg-lab单细胞转录组数据分析(一)
- 网络打印服务器的作用,内置网络打印服务器有什么用?
- mysql经典四表查询_mysql经典问题四表查询(教师,学生,成绩,课程表)
- EJB3.0 Timer
- 单片机应用中的c语言用词注解,嵌入式C编程 PIC单片机和C编程技术与应用pdf
- 2.1.5、会员权限管理系统应用
- 防火墙中的DMZ区域,Trust区域,Untrust区域
- win10计算机属性管理打不开,win10无法打开设置应用的两种解决方法【图文】
- 划分数,分苹果问题·计算机算法·动态规划·C/C++
- 国外邮箱安全性排名,国外邮箱哪个安全好用?
- php easysms,Laravel 短信发送组件 - easy-sms
- 幼儿认知发展虚拟仿真系统
- input的23种type类型
- Java知识点梳理思维导图
- 计算二叉树的深度和叶子结点数
- vulnhub靶场-hacksudo - Thor
- ios apple语音性别_iOS 14:Apple终于听了
热门文章
- Java数据结构-基于数组的栈和泛型
- 项目-团队-技术-个人 (团队建设篇)
- 学习:java设计模式—工厂模式
- 开始做在线拍照功能了
- C# 利用系统剪贴板 保存 自定义对象
- numpy基础(part4)--统计量
- win7 php mysql扩展名_Win7 配置Apache+PHP+Mysql环境
- SAP UI5 应用开发教程之五十二 - 如何使用 SAP UI5 的标准控件结合 Cordova 插件调用手机摄像头进行条形码扫描
- SAP 电商云 Spartacus UI set delivery mode HTTP put 请求的触发时机
- Orbeon form 的安装和使用教程