日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用ABAP代码提交SAP CRM Survey调查问卷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 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后臺系統,

然而最終用戶在瀏覽器看到的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'EXPORTINGsurvey_data = lv_request_bodyIMPORTINGreturn = ret.

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

總結

以上是生活随笔為你收集整理的使用ABAP代码提交SAP CRM Survey调查问卷的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。