Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章:
- SAP CRM Survey调查问卷的模型设计原理解析
- 如何使用SAP CRM Marketing Survey创建一个市场问卷调查
我们在浏览器里填写调查问卷的内容,点击Save保存按钮之后,调查问卷的结果被存储到ABAP后台。
在ABAP后台系统的Survey Suite工具里,能看到用户填写的survey结果。
比如下图的意思是:
问题1:你会用ABAP编程吗?回答会的人有11个,不会的有5个。
问题2:你会用Java编程吗?回答会的人有10个,不会的有6个。
现在我有一个需求:写一个ABAP程序,调用SAP CRM Survey的API来提交请求。
测试程序如下:
DATA(lo_tool) = NEW zcl_crm_survey_tool( ).
lo_tool->submit( iv_question1 = 'X' iv_question2 = '' ).
执行之后,对比上图,会ABAP的多了1个人,不会Java的多了1个人。
问题的关键就是如何设计zcl_crm_survey_tool?
Submit的方法分4个步骤, 见下面注释:
METHOD submit.
DATA: ret TYPE BAPIRET1.
* Step1: get Survey Template
DATA(survey_template) = get_survey_template( ).
* Step2: create a new Survey instance guid
DATA(survey_guid) = get_new_survey_instance_guid( survey_template ).
* Step3: assemble request body
data(lv_request_body) = assemble_request_body( iv_question1 = iv_question1
iv_question2 = iv_question2
iv_guid = survey_guid ).
* Step4: Submit survey
CALL FUNCTION 'CRM_SVY_RESULT_DISPATCHER'
EXPORTING
survey_data = lv_request_body
IMPORTING
return = ret.
WRITE:/ |result: { ret-message } | COLOR COL_NEGATIVE.
COMMIT WORK AND WAIT.
ENDMETHOD.
步骤1:
通过方法get_survey_template拿到Survey的模板代码。
以前的文章已经讲过,Survey模板以XML的格式存储在SAP后台系统,
然而最终用户在浏览器看到的Survey是html格式的,因此中间有一个步骤通过SAP标准的XSLT将xml转换成html,并且生成一个新的Survey实例。这一系列的动作都封装在我写的方法get_survey_template里面。该方法返回Survey模板的HTML源代码,基于xml转换而成。
步骤2:
方法get_new_survey_instance_guid,通过正则表达式将前一步骤生成的Survey实例的guid提取出来。因为后续步骤提交Survey结果时,需要在请求体里加入这个实例guid。
我采用的是正则表达式的方式解析出该guid,详细步骤参考我的文章:使用ABAP正则表达式解析HTML标签
步骤3:
assemble_request_body构造提交的请求方法体。在浏览器里测试发现,如果两个问题的答案都为是,则发送的请求体如下:
svyApplicationId=CRM_SURVEY_ACTIVITY&SurveyId=JERRY_TEST&svySurveyId=JERRY_TEST&svyVersion=0000000003&SchemaVersion=1 &svySchemaVersion=1 &svyLanguage=EN&conid=&svyValueGuid=FA163EEF573D1ED89E9D22A316FC4754&svyValueVersion=0000000001&svyMandatoryMessage=Fill all mandatory fields before saving&survey/result/question1/answer1_placeholder=answer1_yes&survey/result/question2/answer2_placeholder=answer2_yes&onInputProcessing=SUBMIT
其中蓝色的guid则是步骤2提取出的Survey实例,红色的代表问题1的答案为是,紫色代表问题2的回答为是。
这些XML的详细原理,参考我的文章 SAP CRM Survey调查问卷的模型设计原理解析。
步骤4:
使用如下函数提交Survey。
CALL FUNCTION 'CRM_SVY_RESULT_DISPATCHER'
EXPORTING
survey_data = lv_request_body
IMPORTING
return = ret.
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
SAP ABAP 代码备份下载到本地程序代码
本人abap经验5年, 一般abaper都不会,高级操作,看过后绝对有用.
SAP+ ABAP开发实用教程:顾问培训资料,含实例代码和教程,详细描述ABAP开发过程:数据表读法、程序规范、代码实例、调试方法以及ABAP开发环境和总体介绍、 ABAP语法示例 、ALV控件的使用、 实战Form设计 ,分基础、...
ABAP Development for SAP HANA 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
SAP HANA will soon celebrate its second birthday. Hard to believe, but this technology has been on the market for almost two years now. During this time, its use potential increased significantly: ...
Advanced ABAP Programming for SAP (SAP R/3) (Paperback) by Gareth M. De Bruyn (Author), Robert Lyfareff (Author), Ken Kroes (Author) <br>Editorial Reviews <br>Advanced ABAP Programming for ...
SAP ABAP 1.4.4代码下载
ABAP代码性能指导 ABAP代码性能指导 ABAP代码性能指导
浅谈SAP CRM开发
sap hana 标准教材 按照教材可以上学会HANA程序开发知识
abap代码规范,高效abap、modern abap
这个是国外人使用ABAP写的一个类似一SQL Server的查询分析器,它能够直接运行ABAP的OPEN SQL,由于SE11或者是SE16都只能对一表进行查询,但很多的时候我们需要对多个表进行联合查询,这时就可以发挥很大作用了,希望...
sap abap new abap 74 for sap hana end to end development
详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。...
basic introduction on ABAP routine in SAP BW transformation
SAP ABAP Certification Review SAP ABAP Interview Questions, Answers, And Explanations.pdf
有关安装和使用,请参阅 wiki (....) 安装:从releases( )下载2.2版Slinkee并使用SAPlink( )导入激活所有非活动对象相关 SCN 博客:您的系统中有多少行自定义 ABAP 代码? – 第 3 部分( ) 您的系统中有多少...
ABAP OLE颜色代码
共12章,资深ABAP顾问倾囊巨献 第一章 ABAP开发环境和总体介绍 第二章 创建HELLO WORLD程序 第三章 ABAP语法示例 第四章 数据字典和数据表的读取 第五章 标准列表和选择屏幕 第六章 实战屏幕SCREEN设计 第七章 表...