最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

T100——awsp900_01接口相关的XML处理/回写

后端代码 bron1984 5086浏览

T100——awsp900_01接口相关的XML处理/回写

{<section id=”awsp900_01.description” >}
#應用 a00 樣板自動產生(Version:2)
#+ Version..: T100-ERP-1.01.00(SD版次:9,PR版次:9) Build-000208
#+
#+ Filename…: awsp900_01
#+ Description: awsp900_01
#+ Creator….: 00544(2014-01-16 17:51:43)
#+ Modifier…: 00509(2014-05-23 10:32:59) -SD/PR-

{</section>}

{<section id=”awsp900_01.global” >}
#應用 p00 樣板自動產生(Version:3)
#add-point:註解編寫項目

#end add-point

IMPORT os
#add-point:增加匯入項目
IMPORT xml
IMPORT com
IMPORT util
#end add-point

SCHEMA ds

GLOBALS “../../cfg/top_global.inc”
#add-point:增加匯入變數檔
GLOBALS “../../cfg/top_ws.inc”            #TIPTOP Service Gateway 使用的全域變數檔
TYPE type_g_attribute DYNAMIC ARRAY OF RECORD
name         STRING,      #屬性名稱
value        STRING       #屬性值
END RECORD
DEFINE g_serial            STRING
DEFINE gx_reqdoc           xml.DomDocument
DEFINE gx_payload_request  xml.DomDocument
DEFINE g_resdoc            xml.DomDocument   #Response XML Dom Document, #FUN-910058
DEFINE g_dnode             xml.DomNode       #<Document> 節點
DEFINE g_snode             xml.DomNode       #<Status> 節點
DEFINE g_pnode             xml.DomNode       #<Parameter> 節點
DEFINE g_count             INTEGER           #考慮多筆資料時的 id 序號計數
DEFINE g_jason_type        STRING
DEFINE g_master_record     xml.DomNode

DEFINE g_jason_request     STRING
DEFINE g_jason_param      DYNAMIC ARRAY OF RECORD
datakey      STRING,
jsontext     STRING
END RECORD

#end add-point

{</section>}

{<section id=”awsp900_01.free_style_variable” >}
#add-point:free_style模組變數(Module Variable)

#end add-point

{</section>}

{<section id=”awsp900_01.global_variable” >}
#add-point:自定義模組變數(Module Variable)

#end add-point

{</section>}

{<section id=”awsp900_01.other_dialog” >}

{</section>}

{<section id=”awsp900_01.other_function” readonly=”Y” >}

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_init ()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_init()
INITIALIZE g_request TO NULL
INITIALIZE g_response TO NULL
INITIALIZE gx_reqdoc TO NULL
INITIALIZE gx_payload_request TO NULL
INITIALIZE gi_err_code TO NULL

#————————————————————————–#
# 初始 g_status 變數                                                       #
#————————————————————————–#
LET g_status.code = “0”
LET g_status.sqlcode = “0”
LET g_status.description = “”

LET g_success = ‘Y’
LET g_bgjob = “Y”
LET g_srvcode = “000”                  #預設服務按照正常流程
LET g_gui_type = “0”
LET g_user = “tiptop”                  #当前运行的用户
LET g_lang = “zh_TW”                   #默认语言别(”zh_TW” – 繁体)
LET g_today = TODAY                    #默认的当前日期
LET g_time = TIME                      #默认系统当前时间

DISPLAY “time_zone:” , cl_time_trans_by_tz(“system_time”) #設定時區

CALL FGL_SETENV(“TPGateWay”,”1″)
CALL FGL_SETENV(“TPGateWayErr”,”1″)
CALL FGL_SETENV(“WSBGJOB”,”1″)
CALL FGL_SETENV(“FGLGUI”,0)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_read_file(p_file_path)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_read_file(p_file_path)
DEFINE p_file_path   STRING
DEFINE l_return_str STRING
DEFINE l_object TEXT

display “file:”, p_file_path

IF os.Path.size(p_file_path.trim()) > 0 THEN

LOCATE l_object IN FILE

CALL l_object.readFile(p_file_path)
LET l_return_str = l_object

FREE l_object
END IF
RETURN l_return_str
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_writeRequestLog()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_writeRequestLog()
DEFINE l_ch        base.Channel,
l_logFile   STRING,
l_str       STRING,
l_curr      STRING
DEFINE l_sb                   base.StringBuffer
DEFINE l_request_doc          xml.DomDocument

WHENEVER ERROR CONTINUE

#————————————————————————–#
# 記錄檔為 $TEMPDIR/aws-yyymmdd.log                                  #
#————————————————————————–#
LET l_curr = cl_get_current()
LET l_logFile = fgl_getenv(“TEMPDIR”), “/”, “aws-“, TODAY USING ‘YYYYMMDD’, “.log”
LET l_ch = base.Channel.create()
CALL l_ch.setDelimiter(NULL)
CALL l_ch.openFile(l_logFile, “a”)
IF STATUS = 0 THEN
LET g_serial = CURRENT HOUR TO FRACTION(3)
LET l_sb = base.StringBuffer.create()
CALL l_sb.append(g_serial)
CALL l_sb.replace(“:”, “”, 0)
CALL l_sb.replace(“.”, “”, 0)
LET g_serial = l_sb.toString()

LET l_request_doc = xml.DomDocument.create()
CALL l_request_doc.loadFromString(g_request.request)
#CALL l_request_doc.setFeature(“format-pretty-print”, true)

LET l_str = “#————————— (“, l_curr , “) —————————-#”,
“\n[Request Service #”, g_serial, “]”,
“\n    ‘”, g_service, “‘ begin at “, cl_get_time(), “\n”,
“\n[Request Message #”, g_serial, “]”,
“\n”, l_request_doc.saveToString(), “\n”

CALL l_ch.write(l_str)
END IF
CALL l_ch.close()

IF os.Path.chrwx(l_logFile CLIPPED,438) THEN END IF
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_create_response(p_response_str)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_create_response(p_response_str)
DEFINE p_srvcode         STRING
DEFINE p_response_str    STRING
DEFINE l_resdoc         xml.DomDocument
DEFINE l_node_list      xml.DomNodeList
DEFINE l_res_root       xml.DomNode
DEFINE l_tnode          xml.DomNode
DEFINE l_pnode          xml.DomNode
DEFINE l_payload_node    xml.DomNode
DEFINE l_tp_version      STRING
DEFINE l_bpm_xml         STRING
DEFINE l_dom_doc         om.DomDocument
DEFINE l_dom_node        om.DomNode
DEFINE l_ch             base.Channel
DEFINE l_i          INTEGER

LET l_tp_version = “1.0”

#產生 response xml.DomDocument
LET l_resdoc = xml.DomDocument.CreateDocument(“response”)
CALL l_resdoc.setFeature(“format-pretty-print”, true)

LET l_res_root = l_resdoc.getDocumentElement()

LET l_pnode = l_resdoc.createElement(“srvver”)    #建立 <srvver>
CALL l_res_root.appendChild(l_pnode)
LET l_tnode = l_resdoc.createTextNode(l_tp_version)
CALL l_pnode.appendChild(l_tnode)

LET l_pnode = l_resdoc.createElement(“srvcode”)    #建立 <srvcode>
CALL l_res_root.appendChild(l_pnode)
LET l_tnode = l_resdoc.createTextNode(g_srvcode)
CALL l_pnode.appendChild(l_tnode)

LET l_payload_node = l_resdoc.createElement(“payload”)    #建立 <payload>
CALL l_res_root.appendChild(l_payload_node)

IF g_jason_param.getLength() > 0 THEN
FOR l_i = 1 TO g_jason_param.getLength()
LET l_tnode = l_resdoc.createElement(“param”)    #建立 <param>
CALL l_payload_node.appendChild(l_tnode)

CALL l_tnode.setAttribute(“key”, g_jason_param[l_i].datakey)
CALL l_tnode.setAttribute(“type”, “XML”)

IF NOT cl_null(g_jason_param[l_i].jsontext) THEN
LET l_pnode = l_resdoc.createCDATASection(g_jason_param[l_i].jsontext)
CALL l_tnode.appendChild(l_pnode)
END IF
END FOR
ELSE
LET l_tnode = l_resdoc.createElement(“param”)    #建立 <param>
CALL l_payload_node.appendChild(l_tnode)
CALL l_tnode.setAttribute(“key”, “data”)
IF g_jason_type = “Y” THEN
CALL l_tnode.setAttribute(“type”, “JSON”)
LET l_pnode = l_resdoc.createTextNode(g_response.response)
ELSE
CALL l_tnode.setAttribute(“type”, “XML”)
LET l_pnode = l_resdoc.createCDATASection(p_response_str)
END IF
CALL l_tnode.appendChild(l_pnode)
END IF

#將 Response xml 寫入回傳的檔案
#目前 xml dom 不會自動跳行, 所以改用 dom node 儲存與傳遞
#LET l_dom_doc = om.DomDocument.createFromString(l_resdoc.saveToString())
#LET l_dom_node = l_dom_doc.getDocumentElement()
#CALL l_dom_node.writeXml(“bpm_test.txt”)
#LET g_response.response = awsp900_01_read_file(“bpm_test.txt”)

#CALL l_resdoc.save(g_response_file_path)
LET g_response.response = l_resdoc.saveToString()
LET g_response.response = cl_str_replace( g_response.response ,”<?xml version=\”1.0\” encoding=\”UTF-8\” standalone=\”no\”?>”,””)
display “response xml:” ,g_response.response

LET l_ch = base.Channel.create()
CALL l_ch.openFile(g_response_file_path, “w”)
CALL l_ch.setDelimiter(“”)
CALL l_ch.write(g_response.response)
CALL l_ch.close()
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_preprocess()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_preprocess()
DEFINE l_status          STRING
DEFINE l_pnode           xml.DomNode
DEFINE l_request_cdata   STRING
DEFINE l_xmltype         STRING

#程式變數初始化
CALL awsp900_01_init()

#輸入檔案路徑
LET g_request_file_path = g_argv[1]
DISPLAY “request_file_path = “,g_request_file_path

#輸出檔案路徑
LET g_response_file_path = g_argv[2]
DISPLAY “response_file_path = “,g_response_file_path

LET g_count = 0
CALL awsp900_01_createPayloadResponse()

#將 XML 檔案轉為 XML DomNode
CALL awsp900_01_filetoxml(g_request_file_path)
RETURNING l_status,gx_reqdoc,g_response.response

IF l_status = FALSE THEN
RETURN
END IF

LET g_datakey.EntId = awsp900_01_getNodeValue(gx_reqdoc,”key”,”EntId”)
LET g_enterprise = g_datakey.EntId

IF cl_null(g_enterprise) AND (cl_null(g_non_entId) OR g_non_entId <> “Y”) THEN
LET g_enterprise = FGL_GETENV(“TOPENT”)
END IF

LET g_datakey.CompanyId = awsp900_01_getNodeValue(gx_reqdoc,”key”,”CompanyId”)
LET g_site = g_datakey.CompanyId

IF cl_null(g_site) AND g_non_entId <> “Y” THEN
SELECT gzxa007 INTO g_site FROM gzxa_t
WHERE gzxa001 = g_account AND gzxaent = g_enterprise
IF (SQLCA.SQLCODE) THEN
LET g_status.code = “100”
LET g_status.description = “Site not found”
RETURN
END IF
END IF

LET g_lang = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”lang”)
#指定資料的語言別
LET g_dlang = g_lang
LET g_account = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”acct”)

IF NOT cl_null(g_account)  THEN
LET g_user = “”
SELECT gzxa003 INTO g_user      #員工編號
FROM gzxa_t
WHERE gzxa001 = g_account AND gzxaent = g_enterprise

IF cl_null(g_user) AND g_non_entId <> “Y” THEN
LET g_status.code = “aws-00022”
RETURN
END IF
ELSE
LET g_status.code = “aws-00022” #User account not found
RETURN
END IF
#清空 g_non_entId
LET g_non_entId = “”

LET g_timestamp = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”timestamp”)
LET g_prod_name = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”prod”)
LET g_prod_ip = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”ip”)
LET g_pord_mach = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”mach”)
LET g_prod_shop = cl_bpm_get_node_attribute(gx_reqdoc,”host”,”shop”)

LET g_datakey.DocProp   = awsp900_01_getNodeValue(gx_reqdoc,”key”,”DocProp”)
LET g_datakey.Prog      = awsp900_01_getNodeValue(gx_reqdoc,”key”,”Prog”)
LET g_datakey.FormId    = awsp900_01_getNodeValue(gx_reqdoc,”key”,”FormId”)
LET g_datakey.SheetNo   = awsp900_01_getNodeValue(gx_reqdoc,”key”,”SheetNo”)
LET g_datakey.PK3       = awsp900_01_getNodeValue(gx_reqdoc,”key”,”PK3″)
LET g_datakey.DocKey    = awsp900_01_getNodeValue(gx_reqdoc,”key”,”DocKey”)
LET g_datakey.RefId     = awsp900_01_getNodeValue(gx_reqdoc,”key”,”RefId”)
LET g_messge.msgBatchNum = awsp900_01_getNodeValue(gx_reqdoc,”key”,”msgBatchNum”)

LET g_payload_request = “”
LET g_payload_request = awsp900_01_getNodeValue(gx_reqdoc, “param”,””)

IF NOT cl_null(g_messge.msgBatchNum) THEN
CALL awsp900_01_getParamValue(gx_reqdoc)
END IF
#決定內容為 XML or JSON
LET l_xmltype = cl_bpm_get_node_attribute(gx_reqdoc, “param”,”type”)
IF l_xmltype = “JSON” THEN
LET g_jason_type = “Y”

CALL g_jason_param.clear()
LET g_messge.msgBatchNum = awsp900_01_getNodeValue(gx_reqdoc,”key”,”msgBatchNum”)
CALL awsp900_01_getParamValue(gx_reqdoc)
ELSE
LET g_jason_type = “N”
END IF

DISPLAY “payload request:”, g_payload_request , “;”

#IF NOT cl_null(g_datakey.EntId) THEN
#   LET g_enterprise = g_datakey.EntId
#END IF

#IF NOT cl_null(g_site) THEN
#   LET g_site = g_datakey.CompanyId
#END IF

#建立 Request XML Document
IF l_xmltype = “JSON” THEN
LET g_jason_request = g_payload_request.trim()
ELSE
LET gx_payload_request = xml.DomDocument.create()
CALL gx_payload_request.loadFromString(g_payload_request.trim())
END IF

#服務啟始記錄
LET g_service = cl_bpm_get_node_attribute(gx_reqdoc,”service”,”name”)
CALL cl_log_service_start(“S”, g_service)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_postprocess()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_postprocess()
DEFINE l_status RECORD
code    STRING,
sqlcode STRING,
description  STRING
END RECORD

CALL awsp900_01_setStatus()

IF g_jason_type = “Y” THEN
LET l_status.code = g_status.code
LET l_status.sqlcode = g_status.sqlcode
LET l_status.description = g_status.description
IF cl_null(g_messge_out.paramKey) THEN
LET g_response.response = util.JSON.stringify(l_status)
ELSE
LET g_response.response = g_messge_out.msgText
END IF
ELSE
LET g_response.response = g_resdoc.saveToString()
END IF
#產生 response 資料
CALL awsp900_01_create_response(g_response.response)

#服務結束記錄
CALL cl_log_service_exit(“S”, g_service)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_createPayloadResponse ()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_createPayloadResponse()
DEFINE l_node   xml.DomNode

LET g_resdoc = xml.DomDocument.createDocument(“Response”)
CALL g_resdoc.setFeature(“format-pretty-print”, true)

LET g_response_root = g_resdoc.getDocumentElement()

LET l_node = g_resdoc.createElement(“Execution”)         #建立 <Execution>
CALL g_response_root.appendChild(l_node)
LET g_snode = g_resdoc.createElement(“Status”)          #於 <Execution> 下建立 <Status>
CALL l_node.appendChild(g_snode)

LET l_node = g_resdoc.createElement(“ResponseContent”)   #建立 <ResponseContent>
CALL g_response_root.appendChild(l_node)
LET g_pnode = g_resdoc.createElement(“Parameter”)       #於 <ResponseContent> 下建立 <Parameter>
CALL l_node.appendChild(g_pnode)
LET g_dnode = g_resdoc.createElement(“Document”)        #於 <ResponseContent> 下建立 <Document>
CALL l_node.appendChild(g_dnode)
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_setStatus()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_setStatus()
IF NOT cl_null(gi_err_code) AND (cl_null(g_status.code) OR g_status.code=”0″) THEN
LET g_status.code=gi_err_code
END IF
IF g_status.code != “0” AND cl_null(g_status.description) THEN
LET g_status.description = cl_getmsg(g_status.code, g_lang)   #取得 error code 說明
END IF

CALL g_snode.setAttribute(“code”, g_status.code)
CALL g_snode.setAttribute(“sqlcode”, g_status.sqlcode)
CALL g_snode.setAttribute(“description”, g_status.description)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_filetoxml(p_file)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_filetoxml(p_file)
DEFINE p_file STRING
DEFINE l_str  STRING
DEFINE l_xmldoc         xml.DomDocument
DEFINE l_i    INTEGER

IF cl_null(p_file) THEN
LET l_str = “XML document is NULL. ”
LET g_status.code = “-1”
LET g_status.description = l_str
display l_str
RETURN FALSE,l_xmldoc,l_str
END IF

LET l_xmldoc = xml.DomDocument.Create()
CALL l_xmldoc.load(p_file)
IF l_xmldoc.getErrorsCount() > 0 THEN
LET l_str = “It isn’t valid XML document. ”
FOR l_i = 1 TO l_xmldoc.getErrorsCount()
LET l_str = l_str, l_xmldoc.getErrorDescription(l_i)
END FOR
LET g_status.code = “-1″
LET g_status.description = l_str
RETURN FALSE,l_xmldoc,l_str
END IF

RETURN TRUE,l_xmldoc,””

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_getTag(p_xmldoc,p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getTag(p_xmldoc,p_name)
DEFINE p_xmldoc          xml.DomDocument
DEFINE p_name            STRING
DEFINE p_att             STRING
DEFINE l_value           STRING
DEFINE l_node_list      xml.DomNodeList
DEFINE l_tnode          xml.DomNode
DEFINE l_pnode          xml.DomNode

LET l_node_list = p_xmldoc.getElementsByTagName(p_name)
IF l_node_list.getCount() > 0 THEN
LET l_pnode = l_node_list.getitem(1)
END IF

RETURN l_pnode
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_getParameter(p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getParameter(p_name)
DEFINE p_name    STRING
DEFINE l_value   STRING
DEFINE l_node_list      xml.DomNodeList
DEFINE l_pnode          xml.DomNode

INITIALIZE l_value TO NULL

IF cl_null(p_name) THEN
RETURN NULL
END IF

#————————————————————————–#
# 搜尋 <Parameter> 是否有指定名稱的欄位                                    #
#————————————————————————–#
LET l_node_list = gx_payload_request.selectByXPath(“//Parameter/Record/Field[@name=\”” || p_name CLIPPED || “\”]”,””)
IF l_node_list.getCount() > 0 THEN
LET l_pnode = l_node_list.getitem(1)
LET l_value = l_pnode.getAttribute(“value”)
END IF

RETURN l_value

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_getNodeValue(p_xmldoc,p_tagname,p_attname)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getNodeValue(p_xmldoc,p_tagname,p_attname)
DEFINE p_xmldoc  xml.DomDocument
DEFINE p_tagname    STRING
DEFINE p_attname    STRING
DEFINE l_value   STRING
DEFINE l_node_list      xml.DomNodeList
DEFINE l_pnode          xml.DomNode
DEFINE l_tnode          xml.DomNode
DEFINE l_str        STRING

INITIALIZE l_value TO NULL

IF NOT cl_null(p_attname) THEN
LET l_node_list = p_xmldoc.selectByXPath(“//” || p_tagname.trim() || “[@name=\”” || p_attname CLIPPED || “\”]”,””)
ELSE
LET l_node_list = p_xmldoc.getElementsByTagName(p_tagname)
END IF
IF l_node_list.getCount() > 0 THEN
LET l_pnode = l_node_list.getitem(1)
LET l_tnode = l_pnode.getFirstChild()
#CDATA的格式,一定要取得第二個子節點才可取得到CDATA的資料.
WHILE ( l_tnode IS NOT NULL )
LET l_value = l_value , l_tnode.getNodeValue()
LET l_value = l_value.trim()
LET l_tnode = l_tnode.getNextSibling()
END WHILE
END IF

RETURN l_value
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_wc_key(p_dockey)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_wc_key(p_dockey)
DEFINE p_dockey   STRING
DEFINE l_tok       base.StringTokenizer
DEFINE l_tok_key   base.StringTokenizer
DEFINE l_wc        STRING
DEFINE l_str       STRING
DEFINE l_str2      STRING
DEFINE l_i         LIKE type_t.num10
DEFINE l_cnt       LIKE type_t.num10
DEFINE l_cnt2      LIKE type_t.num10
DEFINE l_key_str   STRING
DEFINE buf         base.StringBuffer

LET l_wc = “”
LET l_str = “”

LET buf = base.StringBuffer.create()
CALL buf.append(p_dockey)
CALL buf.replace( “{+}”,”|”, 0)
LET p_dockey = buf.toString()

LET l_tok = base.StringTokenizer.createExt(p_dockey CLIPPED,”|”,””,TRUE)

WHILE l_tok.hasMoreTokens()
LET l_str = l_tok.nextToken()
LET l_tok_key = base.StringTokenizer.createExt(l_str CLIPPED,”=”,””,TRUE)
LET l_key_str = “”
WHILE l_tok_key.hasMoreTokens()
LET l_str2 = l_tok_key.nextToken()
IF cl_null(l_key_str) THEN
LET l_key_str = l_str2
ELSE
LET l_key_str = l_key_str ,”='”,l_str2,”‘”
END IF
END WHILE
IF cl_null(l_wc) THEN
LET l_wc = l_key_str
ELSE
LET l_wc = l_wc ,” AND “,l_key_str
END IF
END WHILE

RETURN l_wc
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_splite(p_dockey)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_splite(p_dockey)
DEFINE p_dockey   STRING
DEFINE l_tok       base.StringTokenizer
DEFINE l_tok_key   base.StringTokenizer
DEFINE l_wc        STRING
DEFINE l_str       STRING
DEFINE l_str2      STRING
DEFINE l_cnt       LIKE type_t.num10
DEFINE l_cnt2      LIKE type_t.num10
DEFINE l_key_str   STRING
DEFINE buf         base.StringBuffer

LET l_wc = “”
LET l_str = “”

LET l_tok = base.StringTokenizer.createExt(p_dockey CLIPPED,”|”,””,TRUE)
WHILE l_tok.hasMoreTokens()
LET l_str = l_tok.nextToken()
IF cl_null(l_wc) THEN
LET l_wc = “‘”, l_str ,”‘”
ELSE
LET l_wc = l_wc ,”,”, “‘”, l_str ,”‘”
END IF
END WHILE

RETURN l_wc
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addMasterRecord(p_record, p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addMasterRecord(p_record,p_name)
DEFINE p_record            util.JSONObject,
p_name              STRING
DEFINE l_node              xml.DomNode
DEFINE l_tnode             xml.DomNode
DEFINE l_master_record     xml.DomNode
DEFINE l_list              xml.DomNodeList

WHENEVER ERROR CONTINUE

#IF p_record IS NULL THEN
#   RETURN NULL
#END IF

LET l_node = g_resdoc.createElement(“RecordSet”)   #於 <Document> 下建立 <RecordSet> 節點
CALL g_dnode.appendChild(l_node)

LET g_count = g_count + 1
CALL l_node.setAttribute(“id”, g_count)

LET l_tnode = g_resdoc.createElement(“Master”)   #於 <RecordSet> 下建立 <Master> 節點
CALL l_node.appendChild(l_tnode)
IF NOT cl_null(p_name) THEN
CALL l_tnode.setAttribute(“name”, p_name)
CALL l_tnode.setAttribute(“node_id”, g_count)
END IF

IF p_record IS NULL THEN
LET l_master_record = g_resdoc.createElement(“Record”)
LET g_master_record = l_master_record
CALL l_tnode.appendChild(l_master_record)
RETURN l_node
END IF

CALL awsp900_01_buildRecord(l_tnode, p_record)       #依照傳入的資料新增一筆單頭資料

LET l_list = l_node.getElementsByTagName(“Record”)
IF l_list.getCount() >0 THEN
LET g_master_record = l_list.getitem(1)
END IF

RETURN l_node                                      #回傳此筆單頭資料節點
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addMasterRecordField(p_json_record, p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addMasterRecordField(p_name,p_json_record)
DEFINE p_json_record     util.JSONObject,
p_name            STRING,
p_detail          STRING
DEFINE l_node            xml.DomNode,
l_master_record   xml.DomNode
DEFINE l_node_list       xml.DomNodeList
DEFINE l_list1           xml.DomNodeList
DEFINE l_res_root        xml.DomNode
DEFINE l_tnode           xml.DomNode
DEFINE l_pnode           xml.DomNode
DEFINE l_i               INTEGER

WHENEVER ERROR CONTINUE

IF p_json_record.getLength() = 0 THEN
display “json length: 0”
RETURN NULL
END IF

LET l_node_list = g_dnode.selectByXPath(“//Master[@name=\”” || p_name CLIPPED || “\”]”,””)
IF l_node_list.getCount() = 0 THEN

LET l_node = g_resdoc.createElement(“RecordSet”)   #於 <Document> 下建立 <RecordSet> 節點
CALL g_dnode.appendChild(l_node)

LET g_count = g_count + 1
CALL l_node.setAttribute(“id”, g_count)

LET l_tnode = g_resdoc.createElement(“Master”)   #於 <RecordSet> 下建立 <Master> 節點
CALL l_node.appendChild(l_tnode)
IF NOT cl_null(p_name) THEN
CALL l_tnode.setAttribute(“name”, p_name)
CALL l_tnode.setAttribute(“node_id”, g_count)
END IF

LET l_master_record = g_resdoc.createElement(“Record”)  #於 <Master>>下建立 <Record> 節點
LET g_master_record = l_master_record

CALL l_tnode.appendChild(l_master_record)
ELSE
LET l_pnode = l_node_list.getitem(1)
LET l_list1 = l_pnode.getElementsByTagName(“Record”)
FOR l_i = 1 TO l_list1.getCount()
LET l_master_record = l_list1.getItem(l_i)
END FOR
END IF

CALL awsp900_01_buildMasterField(l_master_record, p_json_record)       #依照傳入的資料新增一筆單頭資料

RETURN l_node                                      #回傳此筆單頭資料節點
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addDetailRecordField(p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addDetailRecordField(p_name)
DEFINE p_json_record    util.JSONObject,
p_name           STRING
DEFINE l_node           xml.DomNode,
l_master_record  xml.DomNode
DEFINE l_node_list      xml.DomNodeList
DEFINE l_list1          xml.DomNodeList
DEFINE l_res_root       xml.DomNode
DEFINE l_tnode          xml.DomNode
DEFINE l_dnode          xml.DomNode
DEFINE l_pnode          xml.DomNode
DEFINE l_i              INTEGER
DEFINE p_level          STRING

WHENEVER ERROR CONTINUE

LET l_node_list = g_dnode.selectByXPath(“//Master[@name=\”” || p_name CLIPPED || “\”]”,””)
IF l_node_list.getCount() = 0 THEN

LET l_node = g_resdoc.createElement(“RecordSet”)   #於 <Document> 下建立 <RecordSet> 節點
CALL g_dnode.appendChild(l_node)

LET g_count = g_count + 1
CALL l_node.setAttribute(“id”, g_count)

LET l_tnode = g_resdoc.createElement(“Master”)   #於 <RecordSet> 下建立 <Master> 節點
CALL l_node.appendChild(l_tnode)
IF NOT cl_null(p_name) THEN
CALL l_tnode.setAttribute(“name”, p_name)
CALL l_tnode.setAttribute(“node_id”, g_count)
END IF

LET l_master_record = g_resdoc.createElement(“Record”)  #於 <Master>下建立 <Record> 節點
LET l_dnode = g_resdoc.createElement(“Detail”)

IF cl_null(g_detail_name) THEN
CALL l_dnode.setAttribute(“name”, “d1_1”)
ELSE
CALL l_dnode.setAttribute(“name”, g_detail_name)
END IF

CALL l_dnode.setAttribute(“node_id”, “1_1”)
CALL l_master_record.appendChild(l_dnode)               # 產生 <Detail>
CALL l_tnode.appendChild(l_master_record)
ELSE
LET l_pnode = l_node_list.getitem(1)
LET l_list1 = l_pnode.getElementsByTagName(“Record”)
FOR l_i = 1 TO l_list1.getCount()
LET l_master_record = l_list1.getItem(l_i)
END FOR
END IF

RETURN l_dnode                                      #回傳此筆Detail資料節點
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_makeDetail(p_name,p_id)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_makeDetail(p_name,p_detail,p_id,p_node,p_json_record)
DEFINE p_name         STRING
DEFINE p_detail       STRING
DEFINE p_id           STRING
DEFINE p_json_record  util.JSONObject
DEFINE p_node         xml.DomNode
DEFINE l_dnode        xml.DomNode

DEFINE l_node_list    xml.DomNodeList
DEFINE l_list1        xml.DomNodeList
DEFINE l_node         xml.DomNode
DEFINE l_i            LIKE type_t.num5

LET l_node_list = g_dnode.selectByXPath(“//Master/Record/Page[@name=\”” || p_name CLIPPED || “\”]/Detail/Record” ,””)
IF l_node_list.getCount() = 0 THEN

LET l_dnode = g_resdoc.createElement(“Detail”)
CALL l_dnode.setAttribute(“name”, p_detail)
CALL l_dnode.setAttribute(“node_id”, “1_” || p_id )

LET l_node = g_resdoc.createElement(“Record”)
CALL l_dnode.appendChild(l_node)
CALL p_node.appendChild(l_dnode)
ELSE
LET l_dnode = l_node_list.getitem(1)
LET l_list1 = l_dnode.getElementsByTagName(“Record”)
FOR l_i = 1 TO l_list1.getCount()
LET l_node = l_list1.getItem(l_i)
END FOR
END IF

CALL awsp900_01_buildRecordField(l_node, p_json_record)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_buildDetailRecord(p_node, p_json_record)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_buildDetailRecord(p_node,p_json_record)
DEFINE p_node         xml.DomNode
DEFINE p_json_record  util.JSONObject
DEFINE l_list1    xml.DomNodeList,
l_list2    xml.DomNodeList
DEFINE l_node     xml.DomNode,
l_child    xml.DomNode,
l_record   xml.DomNode,
l_field    xml.DomNode
DEFINE l_i        INTEGER,
l_j        INTEGER
DEFINE l_name     STRING,
l_value    STRING
DEFINE l_k        INTEGER         #FUN-D80090

LET l_node = g_resdoc.createElement(“Record”)  #於 <Master> / <Detail> / <Parameter>下建立 <Record> 節點
CALL p_node.appendChild(l_node)

FOR l_i = 1 TO p_json_record.getLength()

INITIALIZE l_name TO NULL
INITIALIZE l_value TO NULL

#取得欄位名稱和欄位值
LET l_name = p_json_record.name(l_i)
LET l_value = p_json_record.get(p_json_record.name(l_i))

LET l_child = g_resdoc.createElement(“Field”) #於 <Record> 下建立 <Field> 節點
CALL l_node.appendChild(l_child)
CALL l_child.setAttribute(“name”, l_name)
CALL l_child.setAttribute(“value”, l_value)
END FOR
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_buildRecord(p_node, p_json_record)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_buildRecord(p_node,p_json_record)
DEFINE p_node         xml.DomNode
DEFINE p_json_record  util.JSONObject
#DEFINE l_list1    xml.DomNodeList,
#       l_list2    xml.DomNodeList
DEFINE l_node     xml.DomNode,
l_child    xml.DomNode,
l_record   xml.DomNode,
l_field    xml.DomNode
DEFINE l_i        INTEGER,
l_j        INTEGER
DEFINE l_name     STRING,
l_value    STRING
DEFINE l_k        INTEGER         #FUN-D80090

LET l_node = g_resdoc.createElement(“Record”)  #於 <Master> / <Detail> / <Parameter>下建立 <Record> 節點
CALL p_node.appendChild(l_node)

FOR l_i = 1 TO p_json_record.getLength()

INITIALIZE l_name TO NULL
INITIALIZE l_value TO NULL

#取得欄位名稱和欄位值
LET l_name = p_json_record.name(l_i)
LET l_value = p_json_record.get(p_json_record.name(l_i))

LET l_child = g_resdoc.createElement(“Field”) #於 <Record> 下建立 <Field> 節點
CALL l_node.appendChild(l_child)
CALL l_child.setAttribute(“name”, l_name)
CALL l_child.setAttribute(“value”, l_value)
END FOR
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_buildRecordField(p_node, p_json_record)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_buildRecordField(p_node,p_json_record)
DEFINE p_json_record     util.JSONObject
DEFINE p_node     xml.DomNode
DEFINE l_list1    xml.DomNodeList,
l_list2    xml.DomNodeList
DEFINE l_node     xml.DomNode,
l_child    xml.DomNode,
l_record   xml.DomNode,
l_field    xml.DomNode
DEFINE l_i        INTEGER,
l_j        INTEGER
DEFINE l_name     STRING,
l_value    STRING
DEFINE l_k        INTEGER         #FUN-D80090

LET l_child = g_resdoc.createElement(“Field”) #於 <Record> 下建立 <Field> 節點
CALL p_node.appendChild(l_child)

FOR l_i = 1 TO p_json_record.getLength()

INITIALIZE l_name TO NULL
INITIALIZE l_value TO NULL

#取得欄位名稱和欄位值
LET l_name = p_json_record.name(l_i)
LET l_value = p_json_record.get(p_json_record.name(l_i))

#<Field name=”imbadocno” datatype=”0″ type=”Edit” label=”bpm_imbadocno” ref=””>
CALL l_child.setAttribute(l_name CLIPPED, l_value CLIPPED)

END FOR
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addFieldLang(p_type,p_tagname, p_fieldname,p_json_array)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addFieldLang(p_type,p_tagname,p_fieldname,p_json_array)
DEFINE p_type            STRING
DEFINE p_tagname         STRING
DEFINE p_fieldname       STRING
DEFINE p_json_array      util.JSONArray
DEFINE l_json_record     util.JSONObject
DEFINE l_node_list       xml.DomNodeList
DEFINE l_pnode           xml.DomNode
DEFINE l_child           xml.DomNode
DEFINE l_i               LIKE type_t.num5
DEFINE l_j               LIKE type_t.num5
DEFINE l_name            STRING
DEFINE l_value           STRING

IF p_json_array.getLength() = 0 THEN
display “json length: 0”
RETURN
END IF

CASE p_tagname
WHEN “Parameter”
LET l_node_list = g_resdoc.selectByXPath(“//” || p_tagname || “/Record/Field[@name=\”” || p_fieldname CLIPPED || “\”]”,””)
WHEN “Detail”
LET l_node_list = g_resdoc.selectByXPath(“//” || p_tagname || “/Record/Field[@name=\”” || p_fieldname CLIPPED || “\”]”,””)
WHEN “Page”
LET l_node_list = g_resdoc.selectByXPath(“//Page[@name=\”” || p_fieldname CLIPPED|| “\”]”,””)
OTHERWISE
LET l_node_list = g_resdoc.selectByXPath(“//” || p_tagname || “/Record/Page/Field[@name=\”” || p_fieldname CLIPPED || “\”]”,””)
END CASE

IF l_node_list.getCount() > 0 THEN

LET l_pnode = l_node_list.getitem(1)

FOR l_i = 1 TO p_json_array.getLength()

INITIALIZE l_json_record TO NULL
LET l_json_record = p_json_array.get(l_i)
#於 <Record> 下建立 <Field> 節點
LET l_child = g_resdoc.createElement(p_type)
FOR l_j = 1 TO l_json_record.getLength()

INITIALIZE l_name TO NULL
INITIALIZE l_value TO NULL

#取得欄位名稱和欄位值
LET l_name = l_json_record.name(l_j)
LET l_value = l_json_record.get(l_json_record.name(l_j))

CALL l_pnode.appendChild(l_child)
CALL l_child.setAttribute(l_name,l_value)
END FOR
END FOR
END IF
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addParameterRecord(p_json_record)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addParameterRecord(p_json_record)
DEFINE p_json_record     util.JSONObject

WHENEVER ERROR CONTINUE

IF p_json_record.getLength() = 0 THEN
display “json length: 0”
RETURN NULL
END IF

CALL awsp900_01_buildRecord(g_pnode, p_json_record)       #依照傳入的資料新增回傳參數資料
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_createJasonResponse(p_str)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_createJasonResponse(p_str)
DEFINE p_str            STRING

LET g_jason_type = “Y”
LET g_response.response = p_str
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_writeResponseLog()
#                  RETURNING 回传参数
# Input parameter:
#                :
# Return code….:
#                :
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_writeResponseLog()
DEFINE l_ch        base.Channel,
l_logFile   STRING,
l_str       STRING

# 記錄檔為 $TEMPDIR/aws-yyymmdd.log                                  #
#————————————————————————–#
LET l_logFile = fgl_getenv(“TEMPDIR”), “/”, “aws-“, TODAY USING ‘YYYYMMDD’, “.log”
LET l_ch = base.Channel.create()
CALL l_ch.setDelimiter(NULL)
CALL l_ch.openFile(l_logFile, “a”)
IF STATUS = 0 THEN
LET l_str = “[Response Service #”, g_serial, “]”,
“\n    ‘”, g_service, “‘ end at “, cl_get_time() , “\n”,
“\n[Response Message #”, g_serial, “]”,
“\n”, g_response.response, “\n”,
“#——————————————————————————#\n\n”
CALL l_ch.write(l_str)
END IF
CALL l_ch.close()

IF os.Path.chrwx(l_logFile CLIPPED,438) THEN END IF
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addPageField(p_json_record,p_name,p_master_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addPageField(p_json_record,p_prog,p_name,p_type,p_master_name,p_detail_name)
DEFINE p_json_record     util.JSONObject
DEFINE p_prog            STRING
DEFINE p_name            STRING
DEFINE p_type            STRING
DEFINE p_master_name     STRING
DEFINE p_detail_name     STRING

DEFINE l_node_list       xml.DomNodeList
DEFINE l_node            xml.DomNode,
l_master_record   xml.DomNode
DEFINE l_list1           xml.DomNodeList
DEFINE l_tnode           xml.DomNode
DEFINE l_pnode           xml.DomNode
DEFINE l_page_node       xml.DomNode

DEFINE l_i               LIKE type_t.num5
DEFINE l_j               LIKE type_t.num5
DEFINE l_name            STRING
DEFINE l_value           STRING

WHENEVER ERROR CONTINUE

IF p_json_record.getLength() = 0 THEN
display “json length: 0”
RETURN NULL
END IF

LET l_node_list = g_dnode.selectByXPath(“//Master/Record/Page[@name=\”” || p_name CLIPPED || “\”]” ,””)

IF l_node_list.getCount() = 0 THEN

LET g_count = g_count + 1
IF g_count = 1 THEN
LET l_node = g_resdoc.createElement(“RecordSet”)   #於 <Document> 下建立 <RecordSet> 節點
CALL g_dnode.appendChild(l_node)
CALL l_node.setAttribute(“id”, g_count)

LET l_tnode = g_resdoc.createElement(“Master”)   #於 <RecordSet> 下建立 <Master> 節點
CALL l_node.appendChild(l_tnode)
IF NOT cl_null(p_master_name) THEN
CALL l_tnode.setAttribute(“name”, p_master_name)
CALL l_tnode.setAttribute(“node_id”, g_count)
END IF

LET g_master_record = g_resdoc.createElement(“Record”)  #於 <Master>下建立 <Record> 節點
CALL l_tnode.appendChild(g_master_record)
END IF

LET l_page_node = g_resdoc.createElement(“Page”)
CALL l_page_node.setAttribute(“name”, p_name)
CALL l_page_node.setAttribute(“type”, p_type)

CALL g_master_record.appendChild(l_page_node)

#建立page 多語言
IF p_type = “page” THEN
CALL awsp900_01_add_page_info(p_prog,p_name)
END IF
ELSE
LET l_pnode = l_node_list.getitem(1)
LET l_list1 = l_pnode.getElementsByTagName(“Page”)
FOR l_i = 1 TO l_list1.getCount()
LET l_page_node = l_list1.getItem(l_i)
END FOR
END IF

#依照傳入的資料新增一筆Page資料
IF p_master_name = “D1” THEN
CALL awsp900_01_makeDetail(p_name,p_detail_name,1,l_page_node,p_json_record)
ELSE
CALL awsp900_01_buildRecordField(l_page_node, p_json_record)
END IF
RETURN l_node                                      #回傳此筆單頭資料節點
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_add_page_info(p_prog,p_dzfb008)
DEFINE l_i            LIKE type_t.num5
DEFINE p_prog         STRING

DEFINE p_dzfb008      LIKE dzfb_t.dzfb008
DEFINE l_lang         DYNAMIC ARRAY OF RECORD
name    LIKE gzcbl_t.gzcbl003,
value   LIKE gzcbl_t.gzcbl004
END RECORD
DEFINE l_lang_t       STRING

LET l_i = 1
LET l_lang_t = g_lang
DECLARE gzzy_curs CURSOR FROM “SELECT gzzy001,” FROM gzzy_t”
FOREACH gzzy_curs INTO l_lang[l_i].*
LET g_lang = l_lang[l_i].name
LET l_lang[l_i].value = awsp900_01_get_description(p_prog ,p_dzfb008)
LET l_i = l_i + 1
END FOREACH
CALL l_lang.deleteElement(l_i)
CALL awsp900_01_addFieldLang(“Lang”,”Page”, p_dzfb008, util.JSONArray.fromFGL(l_lang))
LET g_lang = l_lang_t       #還原 g_lang
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_get_description(p_gzzz002,p_name)
DEFINE p_name        LIKE gzzd_t.gzzd003
DEFINE p_gzzz002     LIKE gzzz_t.gzzz002
DEFINE p_text        STRING                  #預設顯示文字
DEFINE l_str         STRING                  #現行g_lang標籤說明文字(exp:料件編號)
DEFINE l_comment     STRING

IF NOT cl_null(p_name) THEN
CALL s_azzi902_get_gzzd(p_gzzz002, p_name)
RETURNING l_str, l_comment
END IF

RETURN l_str
END FUNCTION

################################################################################
# Descriptions…: 取得 Request XML <Document> 節點中的單檔筆數個數
# Memo………..:
# Usage……….: CALL awsp900_01_getMasterRecordLength(p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getMasterRecordLength(p_name)
DEFINE p_name   STRING
DEFINE l_list   xml.DomNodeList
DEFINE l_cnt    INTEGER

#————————————————————————–#
# 搜尋 <Document> 有多少筆對應的 <Master> 節點                             #
#————————————————————————–#
IF cl_null(p_name) THEN
LET l_list = gx_payload_request.selectByXPath(“//Document/RecordSet/Master”)
ELSE
LET l_list = gx_payload_request.selectByXPath(“//Document/RecordSet/Master[@name=\”” || p_name || “\”]”,””)
END IF

LET l_cnt = l_list.getCount()
RETURN l_cnt
END FUNCTION

################################################################################
# Descriptions…: 取得 Request XML 中指定的單檔節點 Dom Node
# Memo………..:
# Usage……….: CALL awsp900_01_getMasterRecord(p_i,p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getMasterRecord(p_i,p_name)
DEFINE p_i      INTEGER,
p_name   STRING
DEFINE l_list   xml.DomNodeList
DEFINE l_i      INTEGER
DEFINE l_node   xml.DomNode
DEFINE l_list2  xml.DomNodeList

IF cl_null(p_i) OR p_i = 0 THEN
RETURN NULL
END IF

IF cl_null(p_name) THEN
LET l_list = gx_payload_request.selectByXPath(“//Document/RecordSet/Master”)
ELSE
LET l_list = gx_payload_request.selectByXPath(“//Document/RecordSet/Master[@name=\”” || p_name || “\”]”, “”)
END IF

FOR l_i = 1 TO l_list.getCount()
LET l_node = l_list.getitem(l_i)
IF l_i = p_i THEN
#往下取得 <Record> 節點回傳
LET l_list2 = l_node.getElementsByTagName(“Record”)
LET l_node = l_list2.getitem(1)
EXIT FOR
END IF
END FOR

RETURN l_node
END FUNCTION

################################################################################
# Descriptions…: 取得 Request XML <Document> 節點中的單身筆數個數
# Memo………..:
# Usage……….: CALL awsp900_01_getDetailRecordLength(p_node,p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getDetailRecordLength(p_node,p_name)
DEFINE p_node    xml.DomNode,
p_name    STRING
DEFINE l_list    xml.DomNodeList
DEFINE l_list2   xml.DomNodeList
DEFINE l_node    xml.DomNode
DEFINE l_detail  xml.DomNode
DEFINE l_i       INTEGER
DEFINE l_cnt     INTEGER

IF p_node IS NULL THEN
RETURN 0
END IF

LET l_node = p_node.getParentNode()   #從 <Record> 取 <Master> 父節點
LET l_node = l_node.getParentNode()   #再從 <Master> 取 <RecordSet> 父節點

#————————————————————————–#
# 搜尋 <RecordSet> 有對應的 <Detail> 節點                                  #
#————————————————————————–#
IF cl_null(p_name) THEN
LET l_list = l_node.selectByXPath(“//Detail/Record”)
RETURN l_list.getCount()
ELSE
#LET l_list = l_node.selectByXPath(“//Detail[@name=\”” || p_name || “\”]/Record” , “”)
LET l_list = l_node.getElementsByTagName(“Detail”)
END IF

FOR l_i = 1 TO l_list.getCount()
LET l_detail = l_list.getitem(l_i)
IF l_detail.getAttribute(“name”) = p_name THEN
LET l_list2 = l_detail.getElementsByTagName(“Record”)
RETURN l_list2.getCount()
END IF
END FOR
LET l_cnt = 0   #找不到
RETURN l_cnt
END FUNCTION

################################################################################
# Descriptions…: 取得 Request XML 中指定的單檔節點 Dom Node
# Memo………..:
# Usage……….: CALL awsp900_01_getDetailRecord(p_node,p_i,p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getDetailRecord(p_node,p_i,p_name)
DEFINE p_node    xml.DomNode,
p_i       INTEGER,
p_name    STRING
DEFINE l_list    xml.DomNodeList
DEFINE l_list2   xml.DomNodeList
DEFINE l_node    xml.DomNode
DEFINE l_node2   xml.DomNode
DEFINE l_detail  xml.DomNode
DEFINE l_i       INTEGER

IF p_node IS NULL THEN
RETURN 0
END IF

LET l_node = p_node.getParentNode()   #從 <Record> 取 <Master> 父節點
LET l_node = l_node.getParentNode()   #再從 <Master> 取 <RecordSet> 父節點

#————————————————————————–#
# 搜尋 <RecordSet> 有對應的 <Detail> 節點                                  #
#————————————————————————–#
IF cl_null(p_name) THEN
LET l_list = l_node.selectByXPath(“//Detail/Record”)
ELSE
#LET l_list = l_node.selectByXPath(“//Detail[@name=\”” || p_name || “\”]/Record” , “”)
LET l_list = l_node.getElementsByTagName(“Detail”)
END IF

FOR l_i = 1 TO l_list.getCount()
LET l_detail = l_list.getitem(l_i)
IF l_detail.getAttribute(“name”) = p_name THEN
LET l_list2 = l_detail.getElementsByTagName(“Record”)
LET l_node2 = l_list2.getitem(p_i)  #取出指定的Record
EXIT FOR
END IF
#LET l_node2 = l_list.getitem(l_i)

#———————————————————————-#
# 若搜尋的單身 <Record> 節點順序與呼叫時傳入的值相同時                 #
#———————————————————————-#
#IF l_i = p_i THEN
#   EXIT FOR
#END IF
END FOR

RETURN l_node2
END FUNCTION

################################################################################
# Descriptions…: 取得指定的 單頭 / 單身 節點中的欄位值
# Memo………..:
# Usage……….: CALL awsp900_01_getRecordField(p_node,p_name)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getRecordField(p_node,p_name)
DEFINE p_node    xml.DomNode,
p_name    STRING
DEFINE l_value   STRING
DEFINE l_list    xml.DomNodeList
DEFINE l_node    xml.DomNode
DEFINE l_i       LIKE type_t.num10
DEFINE l_name    STRING

IF p_node IS NULL OR cl_null(p_name) THEN
RETURN NULL
END IF

#————————————————————————–#
# 接著尋找是否為對應名稱的 <Field> 欄位                                    #
#————————————————————————–#
#LET l_list = p_node.selectByXPath(“//Field[@name=\”” || p_name || “\”]” ,””)
#IF l_list.getCount() != 0 THEN   #找的到節點才取值
#   LET l_node = l_list.getitem(1)
#   LET l_value = l_node.getAttribute(“value”)
#END IF

LET l_list = p_node.getElementsByTagName(“Field”)
IF l_list.getCount() > 0 THEN   #找的到節點才取值
FOR l_i = 1 TO l_list.getCount()
LET l_node = l_list.getitem(l_i)
LET l_name = l_node.getAttribute(“name”)
IF l_name = p_name THEN
LET l_value = l_node.getAttribute(“value”)
EXIT FOR
END IF
END FOR
END IF

RETURN l_value
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getParamValue(p_xmldoc)
DEFINE p_xmldoc  xml.DomDocument
DEFINE p_tagname    STRING
DEFINE p_attname    STRING
DEFINE l_value   STRING
DEFINE l_node_list      xml.DomNodeList
DEFINE l_pnode          xml.DomNode
DEFINE l_tnode          xml.DomNode
DEFINE l_str        STRING
DEFINE l_i       INTEGER

INITIALIZE l_value TO NULL

LET l_node_list = p_xmldoc.getElementsByTagName(“param”)

IF l_node_list.getCount() > 0 THEN
FOR l_i = 1  TO l_node_list.getCount()
LET l_pnode = l_node_list.getitem(l_i)
LET g_messge.param[l_i].key = l_pnode.getAttribute(“key”)
LET l_tnode = l_pnode.getFirstChild()
#CDATA的格式,一定要取得第二個子節點才可取得到CDATA的資料.
LET l_value = “”
WHILE ( l_tnode IS NOT NULL )
LET l_value = l_value , l_tnode.getNodeValue()
LET g_messge.param[l_i].Value = l_value.trim()
LET l_tnode = l_tnode.getNextSibling()
END WHILE
END FOR
END IF
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_getDataKey(p_attname)
DEFINE p_tagname    STRING
DEFINE p_attname    STRING
DEFINE l_value   STRING
DEFINE l_node_list      xml.DomNodeList
DEFINE l_pnode          xml.DomNode
DEFINE l_tnode          xml.DomNode
DEFINE l_str        STRING

INITIALIZE l_value TO NULL

LET p_tagname = “key”

IF NOT cl_null(p_attname) THEN
LET l_node_list = gx_reqdoc.selectByXPath(“//” || p_tagname.trim() || “[@name=\”” || p_attname CLIPPED || “\”]”,””)
ELSE
LET l_node_list = gx_reqdoc.getElementsByTagName(p_tagname)
END IF
IF l_node_list.getCount() > 0 THEN
LET l_pnode = l_node_list.getitem(1)
LET l_tnode = l_pnode.getFirstChild()
#CDATA的格式,一定要取得第二個子節點才可取得到CDATA的資料.
WHILE ( l_tnode IS NOT NULL )
LET l_value = l_value , l_tnode.getNodeValue()
LET l_value = l_value.trim()
LET l_tnode = l_tnode.getNextSibling()
END WHILE
END IF

RETURN l_value
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_build_JsonParam(p_key,p_json_rec)
DEFINE p_key        STRING
DEFINE p_json_rec   util.JSONObject
DEFINE l_i          INTEGER

LET l_i = g_jason_param.getLength() + 1
LET g_jason_param[l_i].datakey = p_key
LET g_jason_param[l_i].jsontext = p_json_rec.toString()

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_make_JsonParam(p_key,p_value)
DEFINE p_key        STRING
DEFINE p_value      STRING
DEFINE l_i          INTEGER
DEFINE l_list       xml.DomNodeList
DEFINE l_node       xml.DomNode
DEFINE l_child      xml.DomNode

#LET g_jason_type = “Y”
LET l_i = g_jason_param.getLength() + 1
LET g_jason_param[l_i].datakey = p_key
LET g_jason_param[l_i].jsontext = p_value

#LET l_list = g_pnode.getElementsByTagName(“Record”)

#IF l_list.getCount() > 0 THEN
#   LET l_node = l_list.getitem(1)
#END IF

#於 <Record> 下建立 <Field> 節點
#LET l_child = g_resdoc.createElement(“Json”)
#CALL l_node.appendChild(l_child)
#CALL l_child.setAttribute(“name”, p_key)
#CALL l_child.setAttribute(“value”, p_value)

END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL awsp900_01_addDetail()
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_addDetail(p_name)
DEFINE p_name        STRING
DEFINE l_dnode       xml.DomNode

LET l_dnode = g_resdoc.createElement(“Detail”)

IF cl_null(p_name) THEN
CALL l_dnode.setAttribute(“name”, “d1_1”)
ELSE
CALL l_dnode.setAttribute(“name”, p_name)
END IF

CALL l_dnode.setAttribute(“node_id”, “1_1”)
CALL g_master_record.appendChild(l_dnode)       #產生 <Detail>

RETURN l_dnode
END FUNCTION

################################################################################
# Descriptions…: 描述说明
# Memo………..:
# Usage……….: CALL s_aooi150_ins (传入参数)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PRIVATE FUNCTION awsp900_01_buildMasterField(p_node,p_json_record)
DEFINE p_node            xml.DomNode
DEFINE p_json_record     util.JSONObject

DEFINE l_list1    xml.DomNodeList,
l_list2    xml.DomNodeList
DEFINE l_node     xml.DomNode,
l_child    xml.DomNode,
l_record   xml.DomNode,
l_field    xml.DomNode
DEFINE l_i        INTEGER,
l_j        INTEGER
DEFINE l_name     STRING,
l_value    STRING
DEFINE l_k        INTEGER         #FUN-D80090

FOR l_i = 1 TO p_json_record.getLength()

INITIALIZE l_name TO NULL
INITIALIZE l_value TO NULL

#取得欄位名稱和欄位值
LET l_name = p_json_record.name(l_i)
LET l_value = p_json_record.get(p_json_record.name(l_i))

#於 <Record> 下建立 <Field> 節點
LET l_child = g_resdoc.createElement(“Field”)
CALL p_node.appendChild(l_child)
CALL l_child.setAttribute(“name”, l_name)
CALL l_child.setAttribute(“value”, l_value)

END FOR
END FUNCTION

################################################################################
# Descriptions…: 提供程式load xml
# Memo………..:
# Usage……….: CALL awsp900_01_get_filetoxml(p_file)
#                  RETURNING 回传参数
# Input parameter: 传入参数变量1   传入参数变量说明1
#                : 传入参数变量2   传入参数变量说明2
# Return code….: 回传参数变量1   回传参数变量说明1
#                : 回传参数变量2   回传参数变量说明2
# Date & Author..: 日期 By 作者
# Modify………:
################################################################################
PUBLIC FUNCTION awsp900_01_get_filetoxml(p_file)
DEFINE p_file STRING
DEFINE l_reqdoc       xml.DomDocument
DEFINE l_status       STRING

CALL awsp900_01_filetoxml(p_file)
RETURNING l_status,gx_reqdoc,g_response.response

IF l_status = FALSE THEN
RETURN l_status
END IF

LET g_payload_request = “”
LET g_payload_request = awsp900_01_getNodeValue(gx_reqdoc, “param”,””)

LET gx_payload_request = xml.DomDocument.create()
CALL gx_payload_request.loadFromString(g_payload_request.trim())

RETURN TRUE
END FUNCTION

{</section>}

转载请注明:赫非域 » T100——awsp900_01接口相关的XML处理/回写