iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >使用ABAP代码提交SAP CRM Survey调查问卷
  • 802
分享到

使用ABAP代码提交SAP CRM Survey调查问卷

2023-06-02 23:06:04 802人浏览 薄情痞子
摘要

Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章:SAP CRM Survey调查问卷的模型设计原理解析如何使用SAP CRM Marketing Survey创建一个市场问卷调查我们在浏览器里填写调查问卷的内容

Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章:

  • SAP CRM Survey调查问卷的模型设计原理解析

  • 如何使用SAP CRM Marketing Survey创建一个市场问卷调查

我们在浏览器里填写调查问卷的内容,点击Save保存按钮之后,调查问卷的结果被存储到ABAP后台。

使用ABAP代码提交SAP CRM Survey调查问卷

在ABAP后台系统的Survey Suite工具里,能看到用户填写的survey结果。

比如下图的意思是:

问题1:你会用ABAP编程吗?回答会的人有11个,不会的有5个。

问题2:你会用Java编程吗?回答会的人有10个,不会的有6个。

使用ABAP代码提交SAP CRM Survey调查问卷

现在我有一个需求:写一个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个人。

使用ABAP代码提交SAP CRM Survey调查问卷

问题的关键就是如何设计zcl_crm_survey_tool?

Submit的方法分4个步骤, 见下面注释:

METHOD submit.DATA: ret TYPE BAPIRET1.* Step1: get Survey TemplateDATA(survey_template) = get_survey_template( ).* Step2: create a new Survey instance guidDATA(survey_guid) = get_new_survey_instance_guid( survey_template ).* Step3: assemble request bodydata(lv_request_body) = assemble_request_body( iv_question1 = iv_question1iv_question2 = iv_question2iv_guid = survey_guid ).* Step4: Submit surveyCALL FUNCTION 'CRM_SVY_RESULT_DISPATCHER'EXPORTINGsurvey_data = lv_request_bodyIMPORTINGreturn = ret.WRITE:/ |result: { ret-message } | COLOR COL_NEGATIVE.COMMIT WORK AND WaiT.ENDMETHOD.

步骤1:

通过方法get_survey_template拿到Survey的模板代码。

以前的文章已经讲过,Survey模板以XML的格式存储在SAP后台系统,

使用ABAP代码提交SAP CRM Survey调查问卷

然而最终用户在浏览器看到的Survey是html格式的,因此中间有一个步骤通过SAP标准的XSLT将xml转换成html,并且生成一个新的Survey实例。这一系列的动作都封装在我写的方法get_survey_template里面。该方法返回Survey模板的HTML源代码,基于xml转换而成。

使用ABAP代码提交SAP CRM Survey调查问卷

步骤2:

方法get_new_survey_instance_guid,通过正则表达式将前一步骤生成的Survey实例的guid提取出来。因为后续步骤提交Survey结果时,需要在请求体里加入这个实例guid。

使用ABAP代码提交SAP CRM Survey调查问卷

我采用的是正则表达式的方式解析出该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的回答为是。

使用ABAP代码提交SAP CRM Survey调查问卷

这些XML的详细原理,参考我的文章 SAP CRM Survey调查问卷的模型设计原理解析。

步骤4:

使用如下函数提交Survey。

CALL FUNCTION 'CRM_SVY_RESULT_DISPATCHER'EXPORTINGsurvey_data = lv_request_bodyIMPORTINGreturn = ret.

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

使用ABAP代码提交SAP CRM Survey调查问卷

使用ABAP代码提交SAP CRM Survey调查问卷

--结束END--

本文标题: 使用ABAP代码提交SAP CRM Survey调查问卷

本文链接: https://www.lsjlt.com/news/231624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用ABAP代码提交SAP CRM Survey调查问卷
    Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章:SAP CRM Survey调查问卷的模型设计原理解析如何使用SAP CRM Marketing Survey创建一个市场问卷调查我们在浏览器里填写调查问卷的内容...
    99+
    2023-06-02
  • 如何使用SAP CRM Marketing Survey创建一个市场问卷调查
    如何使用SAP CRM Marketing Survey创建一个市场问卷调查,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用事务码CRM_SURVEY_SUITE进行编辑...
    99+
    2023-06-04
  • SAP CRM Survey调查问卷的存储模型是怎样的
    本篇文章给大家分享的是有关SAP CRM Survey调查问卷的存储模型是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数据库表CRM_SVY_DB_SVS,通过如下的函...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作