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

T100——XML接口代码记录

后端代码 bron1984 2821浏览
PRIVATE FUNCTION cwssp002_process()
   #add-point: 服務邏輯主要處理段的ADP
    DEFINE l_node xml.DomNode
    DEFINE l_node2 xml.DomNode
    DEFINE l_cnt1      LIKE type_t.num5
    DEFINE l_cnt2      LIKE type_t.num5
    DEFINE l_j    INTEGER
    DEFINE l_i    INTEGER
    DEFINE l_success   LIKE type_t.num5
    
    DEFINE l_pmaa096 LIKE pmaa_t.pmaa096
    DEFINE l_pmaa097 LIKE pmaa_t.pmaa097
    
    CALL s_transaction_begin()
    LET l_cnt1 = awsp900_01_getMasterRecordLength("xmdk_t")
    FOR l_j=1 TO l_cnt1
        INITIALIZE g_xmdk_m.* TO NULL
        ##########一般栏位给值
        LET g_xmdk_m.xmdkent = g_enterprise
        LET g_xmdk_m.xmdksite = g_site        
        LET g_xmdk_m.xmdkownid = g_user
        LET g_xmdk_m.xmdkowndp = g_dept
        LET g_xmdk_m.xmdkcrtid = g_user
        LET g_xmdk_m.xmdkcrtdp = g_dept 
        LET g_xmdk_m.xmdkcrtdt = cl_get_current()
        LET g_xmdk_m.xmdkmodid = g_user
        LET g_xmdk_m.xmdkmoddt = cl_get_current()
        LET g_xmdk_m.xmdkstus = 'N'
        LET g_xmdk_m.xmdk000 = '6'
        LET g_xmdk_m.xmdkud008 = 'N'
        LET g_xmdk_m.xmdkud009 = 'N'
        LET g_xmdk_m.xmdkud005 = 'N'
        LET g_xmdk_m.xmdk045 = '1'
        LET g_xmdk_m.xmdk082 = '1'
        LET g_xmdk_m.xmdk014 = 'N'
        LET g_xmdk_m.xmdk084 = '1'
        LET g_xmdk_m.xmdk042 = '1'
        LET g_xmdk_m.xmdk043 = '1'
        LET g_xmdk_m.xmdk085 = '1'
        LET g_xmdk_m.xmdk046 = '1'
        LET g_xmdk_m.xmdk083 = 'N'
        LET g_xmdk_m.xmdkud011 = '100'
        LET g_xmdk_m.xmdkstus = 'N'
#        LET g_xmdk_m.xmdk003 = g_user
#        LET g_xmdk_m.xmdk004 = g_dept
        LET g_xmdk_m.xmdk030 = '10'
        ##########
        LET l_node = awsp900_01_getMasterRecord(l_j,"xmdk_t")
        LET g_xmdk_m.xmdkdocno = awsp900_01_getRecordField(l_node,"xmdkdocno")
        LET g_xmdk_m.xmdkdocdt = awsp900_01_getRecordField(l_node,"xmdkdocdt")
        LET g_xmdk_m.xmdk001 = g_xmdk_m.xmdkdocdt
        LET g_xmdk_m.xmdk007 = awsp900_01_getRecordField(l_node,"xmdk007")
        LET g_xmdk_m.xmdk054 = awsp900_01_getRecordField(l_node,"xmdk054")
        LET g_xmdk_m.xmdkua001 = awsp900_01_getRecordField(l_node,"xmdkua001")
        #
        SELECT pmaa096,pmaa097 INTO l_pmaa096,l_pmaa097 FROM pmaa_t WHERE pmaaent = g_enterprise AND pmaa001 = g_xmdk_m.xmdk007
        LET g_xmdk_m.xmdk003 = l_pmaa096
        LET g_xmdk_m.xmdk004 = l_pmaa097
        IF cl_null(g_xmdk_m.xmdk003) THEN
            LET g_xmdk_m.xmdk003 = g_user
            LET g_xmdk_m.xmdk004 = g_dept
        END IF
        #
        IF NOT s_aooi200_chk_slip(g_site,'',g_xmdk_m.xmdkdocno,'axmt600') THEN   #检查单据别
            LET g_status.code = "aoo-00291"
            LET g_status.sqlcode = 'aoo-00291'
            LET g_status.description='单据别:',g_xmdk_m.xmdkdocno,'不存在'
            LET l_success = FALSE
            CALL s_transaction_end('N','0')
            LET l_return.timestamp=cl_get_current()    
            LET l_return.result=g_xmdk_m.xmdkdocno
            CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
            RETURN                                       
        END IF
        
        IF NOT cl_null(g_xmdk_m.xmdk007) THEN   #检查客户编号是否存在
            INITIALIZE g_chkparam.* TO NULL
            LET g_chkparam.arg1 = g_xmdk_m.xmdk007
            LET g_chkparam.arg2 = g_site
            IF NOT cl_chk_exist("v_pmaa001_3") THEN
                LET g_status.code = "sub-00416"
                LET g_status.sqlcode = "sub-00416"
                LET g_status.description = g_xmdk_m.xmdk007
                LET l_return.timestamp = cl_get_current()    
                LET l_return.result = g_xmdk_m.xmdkdocno
                CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
                CALL s_transaction_end('N','0')   
                LET l_success = FALSE
                RETURN                 
            END IF 
        END IF
        
        CALL s_aooi200_gen_docno(g_site,g_xmdk_m.xmdkdocno,g_today,'axmt600')   #生成销退单号
            RETURNING l_success,g_xmdk_m.xmdkdocno
        
        IF l_success THEN
            CALL s_axmt540_client_partner(g_xmdk_m.xmdkdocno,g_xmdk_m.xmdk007,'1') RETURNING g_xmdk_m.xmdk008   #帶出收款客戶
            CALL s_axmt540_client_partner(g_xmdk_m.xmdkdocno,g_xmdk_m.xmdk007,'2') RETURNING g_xmdk_m.xmdk009   #帶出收貨客戶
            CALL s_axmt540_client_partner(g_xmdk_m.xmdkdocno,g_xmdk_m.xmdk007,'3') RETURNING g_xmdk_m.xmdk202   #帶出發票客戶
            CALL cwssp002__xmdk007_default()        #帶出客戶預設資料
        ELSE
            CALL s_transaction_end('N','0')
            LET g_status.code = "cwssp002"
            LET g_status.sqlcode = "cwssp002"
            LET g_status.description= "生成销退单号出错!"
            LET l_success = FALSE     
            LET l_return.timestamp=cl_get_current()    
            LET l_return.result=g_xmdk_m.xmdkdocno
            CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
            RETURN
        END IF
        
        INSERT INTO xmdk_t VALUES  g_xmdk_m.*
        
        IF SQLCA.sqlcode THEN
            LET g_status.code = "cwssp002"
            LET g_status.sqlcode = SQLCA.sqlcode
            LET g_status.description='INSERT INTO xmdk_t 出错!'
            LET l_success = FALSE
            CALL s_transaction_end('N','0')        
            LET l_return.timestamp=cl_get_current()    
            LET l_return.result=g_xmdk_m.xmdkdocno
            CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
            RETURN
        END IF
        
        LET l_cnt2 = awsp900_01_getDetailRecordLength(l_node,"xmdl_t")      #单身开始
        FOR l_i=1 TO l_cnt2
            INITIALIZE g_xmdl_d.* TO NULL
            LET g_xmdl_d.xmdlent = g_enterprise
            LET g_xmdl_d.xmdlsite = g_site
            LET g_xmdl_d.xmdl007 = '1'
            LET g_xmdl_d.xmdl013 = 'N'
            LET g_xmdl_d.xmdl023 = 'Y'
            LET g_xmdl_d.xmdl041 = 'N'
            #171201 LJR ADD S
            LET g_xmdl_d.xmdl025 = g_xmdk_m.xmdk012     #税种        
            LET g_xmdl_d.xmdl026 = g_xmdk_m.xmdk013     #税率
            LET g_xmdl_d.xmdl087 = 'Y'  #需自立应收否
            LET g_xmdl_d.xmdlud011 = 0  #结算单价
            LET g_xmdl_d.xmdlud012 = 0      #结算金额
            LET g_xmdl_d.xmdlud013 = 0      #结算未税金额
            LET g_xmdl_d.xmdlud014 = 0      #结算税额
            #171201 LJR ADD E
            
            LET g_xmdl_d.xmdl038 = 0      #主账套已立账数量
            LET g_xmdl_d.xmdl039 = 0      #账套二已立账数量
            LET g_xmdl_d.xmdl040 = 0      #账套三已立账数量
            
            LET l_node2 = awsp900_01_getDetailRecord(l_node,l_i,"xmdl_t")
            LET g_xmdl_d.xmdlseq = awsp900_01_getRecordField(l_node2,"xmdlseq")
            LET g_xmdl_d.xmdlud001 = awsp900_01_getRecordField(l_node2,"xmdlud001")
            LET g_xmdl_d.xmdl008 = awsp900_01_getRecordField(l_node2,"xmdl008")
            LET g_xmdl_d.xmdl018 = awsp900_01_getRecordField(l_node2,"xmdl018")
            LET g_xmdl_d.xmdl051 = awsp900_01_getRecordField(l_node2,"xmdl051")
            IF NOT cl_null(g_xmdk_m.xmdkdocno) THEN 
                LET g_xmdl_d.xmdldocno=g_xmdk_m.xmdkdocno
            END IF
            
            IF NOT cwssp002__xmdl008_chk(g_xmdl_d.xmdl008) THEN  #料号检测
                LET g_status.code = "cwssp002"
                LET g_status.sqlcode = SQLCA.sqlcode
                LET g_status.description='料号',g_xmdl_d.xmdl008,'检测不通过!'
                LET l_success = FALSE
                LET l_return.timestamp=cl_get_current()    
                LET l_return.result=g_xmdk_m.xmdkdocno
                CALL s_transaction_end('N','0')
                CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
                RETURN
            END IF
            
            CALL cwssp002__xmdl008_default()    #料号带出其他项

            INSERT INTO xmdl_t VALUES  g_xmdl_d.*
            
            IF SQLCA.sqlcode THEN
                LET g_status.code = "cwssp002"
                LET g_status.sqlcode = SQLCA.sqlcode
                LET g_status.description='INSERT INTO xmdl_t 出错!'
                LET l_success = FALSE
                LET l_return.timestamp=cl_get_current()    
                LET l_return.result=g_xmdk_m.xmdkdocno
                CALL s_transaction_end('N','0')
                CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
                RETURN
            END IF
            
            INITIALIZE g_xmdm_d.* TO NULL   #多库储批出货明细
            LET g_xmdm_d.xmdment = g_enterprise
            LET g_xmdm_d.xmdmsite = g_site
            LET g_xmdm_d.xmdmdocno = g_xmdk_m.xmdkdocno
            LET g_xmdm_d.xmdmseq = g_xmdl_d.xmdlseq
            LET g_xmdm_d.xmdmseq1 = 1
            LET g_xmdm_d.xmdm001 = g_xmdl_d.xmdl008
            LET g_xmdm_d.xmdm005 = g_xmdl_d.xmdl014
            LET g_xmdm_d.xmdm008 = g_xmdl_d.xmdl017
            LET g_xmdm_d.xmdm009 = g_xmdl_d.xmdl018
            LET g_xmdm_d.xmdm010 = g_xmdl_d.xmdl019
            LET g_xmdm_d.xmdm011 = g_xmdl_d.xmdl020
            
            INSERT INTO xmdm_t VALUES  g_xmdm_d.*
            
            IF SQLCA.sqlcode THEN
                LET g_status.code = "cwssp002"
                LET g_status.sqlcode = SQLCA.sqlcode
                LET g_status.description='INSERT INTO xmdm_t 出错!'
                LET l_success = FALSE
                LET l_return.timestamp=cl_get_current()    
                LET l_return.result=g_xmdk_m.xmdkdocno
                CALL s_transaction_end('N','0')
                CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
                RETURN
            END IF
             
        END FOR
        
    END FOR
    
    IF l_success THEN
        LET l_return.timestamp=cl_get_current()   
        LET l_return.result=g_xmdk_m.xmdkdocno
        CALL s_transaction_end('Y','0')
    ELSE
        LET g_status.code = "wss-00199"
        LET g_status.description = "销退单生成出错!"  
        LET l_return.timestamp=cl_get_current()    
        CALL s_transaction_end('N','0')        
    END IF
    CALL awsp900_01_addParameterRecord(util.JSONObject.fromFGL(l_return))
   
   #end add-point
END FUNCTION

XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<request type="sync" key="d7cd4a500f2d7563313681298995c97f">
    <host prod="XSEB" ver="1.0" ip="xx.xx.xx.xx" lang="zh_CN" timezone="+8" timestamp="20151201131129815" acct="tiptop"/>
    <service prod="T100" name="Axmt600Update" srvver="1.0" id="topprd"/>
    <datakey type="FOM">
        <key name="EntId">60</key>
        <key name="CompanyId">D</key>
    </datakey>
    <payload>
        <param key="data" type="XML">
        <![CDATA[
         <Request>
            <RequestContent>
               <Document>
                  <RecordSet id="1">
                     <Master name="xmdk_t">
                        <Record>
                           <Field name="xmdkdocno" value="8901"/>
                           <Field name="xmdkdocdt" value="2017/12/01"/>
                           <Field name="xmdk007" value="A0120004"/>
                           <Field name="xmdk054" value="测试单"/>
                           <Detail name="xmdl_t">
                              <Record>
                                 <Field name="xmdlseq" value="1"/>
                                 <Field name="xmdlud001" value="BX057-03"/>
                                 <Field name="xmdl008" value="3151220003"/>
                                 <Field name="xmdl018" value="20"/>
                                 <Field name="xmdl051" value="测试1"/>
                              </Record>
                             <Record>
                                 <Field name="xmdlseq" value="2"/>
                                 <Field name="xmdlud001" value="BAA32-4"/>
                                 <Field name="xmdl008" value="3101010001"/>
                                 <Field name="xmdl018" value="10"/>
                                 <Field name="xmdl051" value="测试2"/>
                              </Record>
                           </Detail>
                        </Record>
                     </Master>
                 </RecordSet>
             </Document>
         </RequestContent>
      </Request>
      ]]>
     </param>
    </payload>
</request>

DEFINE gx_payload_request  xml.DomDocument

################################################################################
# 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 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

DEFINE g_resdoc            xml.DomDocument   #Response XML Dom Document, #FUN-910058

################################################################################
# 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

转载请注明:赫非域 » T100——XML接口代码记录