使用ABAP代碼提交 CRM Survey調查問卷

      網(wǎng)友投稿 628 2025-03-31

      Jerry之前曾經(jīng)寫過兩篇關于SAP CRM Survey調查問卷的技術文章:

      SAP CRM Survey調查問卷的模型設計原理解析

      如何使用SAP CRM Marketing Survey創(chuàng)建一個市場問卷調查

      我們在瀏覽器里填寫調查問卷的內容,點擊Save保存按鈕之后,調查問卷的結果被存儲到ABAP后臺。

      在ABAP后臺系統(tǒng)的Survey Suite工具里,能看到用戶填寫的survey結果。

      比如下圖的意思是:

      問題1:你會用ABAP編程嗎?回答會的人有11個,不會的有5個。

      問題2:你會用Java編程嗎?回答會的人有10個,不會的有6個。

      現(xiàn)在我有一個需求:寫一個ABAP程序,調用SAP CRM Survey的API來提交請求。

      測試程序如下:

      DATA(lo_tool) = NEW zcl_crm_survey_tool( ). lo_tool->submit( iv_question1 = 'X' iv_question2 = '' ).

      執(zhí)行之后,對比上圖,會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的模板代碼。

      以前的文章已經(jīng)講過,Survey模板以XML的格式存儲在SAP后臺系統(tǒng),

      然而最終用戶在瀏覽器看到的Survey是html格式的,因此中間有一個步驟通過SAP標準的XSLT將xml轉換成html,并且生成一個新的Survey實例。這一系列的動作都封裝在我寫的方法get_survey_template里面。該方法返回Survey模板的HTML源代碼,基于xml轉換而成。

      步驟2:

      方法get_new_survey_instance_guid,通過正則表達式將前一步驟生成的Survey實例的guid提取出來。因為后續(xù)步驟提交Survey結果時,需要在請求體里加入這個實例guid。

      我采用的是正則表達式的方式解析出該guid,詳細步驟參考我的文章:使用ABAP正則表達式解析HTML標簽

      步驟3:

      assemble_request_body構造提交的請求方法體。在瀏覽器里測試發(fā)現(xiàn),如果兩個問題的答案都為是,則發(fā)送的請求體如下:

      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:

      使用如下函數(shù)提交Survey。

      CALL FUNCTION 'CRM_SVY_RESULT_DISPATCHER' EXPORTING survey_data = lv_request_body IMPORTING return = ret.

      有同事問這個問題:lv_s是從int4轉過來的,長度為2,和硬編碼的lv_s2(長度為1)相比,后面多了個空格。

      為什么?查SAP ABAP的編程幫助F1 help。

      幫助文檔說的很清楚了:如果賦值操作的目的字段(Target字段),即賦值號的左邊操作數(shù)的類型為string,如果賦值之前的整數(shù)是負數(shù),則在賦值后的字符串變量尾部增添一個"-"負號,否則增添一個空白符(blank)。

      同樣,在這個help的附近,解釋了為什么把line 4的類型從string改成sstring之后,長度一下就變成20的原因:

      類似這種ABAP賦值操作的隱式類型轉換和顯式類型轉換在實際編程開發(fā)工作中也要注意。

      有的數(shù)據(jù)庫表字段類型為RAWSTRING,

      包含的是XML的二進制內容,無法直接在SE16里顯示。

      如果確實想看其內容,怎么辦?在下面SE16頁面的命令提示欄輸入命令/h, 回車進入調試模式。然后雙擊某一行:

      斷點會觸發(fā)如下。

      稍稍調試幾步,能看到一個SELECT SINGLE語句,這個操作為了取待顯示在明細頁面上的單條記錄。雙擊SQL取回的結果。

      在調試器里顯示的還是二進制代碼:

      從下拉菜單里選擇XML Browser,XML的內容就出來了。

      使用ABAP代碼提交 CRM Survey調查問卷

      ABAP ERP SAP安全 XML

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      上一篇:點巡檢管理系統(tǒng)(巡檢管理系統(tǒng)密碼)
      下一篇:WPS哪里可以換皮膚(wps皮膚設置)
      相關文章
      2020年亚洲天天爽天天噜| 亚洲伊人色欲综合网| 亚洲国产精久久久久久久| 国产亚洲?V无码?V男人的天堂| www亚洲一级视频com| 亚洲AV无码成人精品区日韩 | 久久久久亚洲精品男人的天堂 | 亚洲色av性色在线观无码| 亚洲国产天堂久久综合网站| 亚洲国产精品嫩草影院在线观看 | 亚洲6080yy久久无码产自国产| 亚洲人成77777在线观看网| 亚洲精品午夜在线观看| 亚洲第一永久在线观看| 亚洲欧洲国产精品久久| 亚洲电影免费观看| 亚洲欧洲日产国码二区首页| 亚洲成av人片在线观看无码不卡| 亚洲美女高清一区二区三区| 国产亚洲漂亮白嫩美女在线| 亚洲AV无码成H人在线观看 | 久久亚洲精品成人无码网站| 亚洲精品第五页中文字幕| 亚洲精品自在线拍| 精品久久久久久亚洲精品| 亚洲午夜福利在线视频| 色综合久久精品亚洲国产| 亚洲A∨午夜成人片精品网站 | MM131亚洲国产美女久久| 亚洲综合av永久无码精品一区二区| 亚洲情XO亚洲色XO无码| 亚洲激情在线观看| 亚洲成a人片7777| 亚洲一区二区影视| 亚洲av无码片vr一区二区三区| 男人的天堂亚洲一区二区三区 | 亚洲av不卡一区二区三区 | 亚洲成人一区二区| 亚洲精品乱码久久久久久中文字幕 | 亚洲高清国产拍精品熟女| 四虎亚洲国产成人久久精品|