T100 WebService与Client端开发

T100 WebService Server端开发:

开发流程:1.服务注册;2.服务程序签出;3.服务程序撰写;4.服务程序上传

1.azzi700注册服务规格编号,然后签出就可以写程序了:

T100 WebService与Client端开发_第1张图片

2.宣告JSON组成Requent和Response的内容:

#add-point:自定義客戶專用模組變數(Module Variable)
PRIVATE TYPE type_detail  RECORD    #传入单身数组
                      isagseq              LIKE isag_t.isagseq,   #项次
                      isag001              LIKE isag_t.isag001,   #来源类型
                      isag002              LIKE isag_t.isag002,   #来源单号
                      isag003              LIKE isag_t.isag003,   #来源项次
                      isag009              LIKE isag_t.isag009,   #料号
                      isag004              LIKE isag_t.isag004,   #发票数量
                      isag005              LIKE isag_t.isag005,   #发票单位
                      isag101              LIKE isag_t.isag101,   #原币单价
                      isag105              LIKE isag_t.isag105    #原币税后金额
                          END RECORD
PRIVATE TYPE type_master  RECORD    #传入单头数组
                      isaf003              LIKE isaf_t.isaf003,     #账款客户                    
                      isafdocdt            LIKE isaf_t.isafdocdt,   #单据日期    
                      isaf018              LIKE isaf_t.isaf018,     #税率
                      isafud001            LIKE isaf_t.isafud001,   #EDB对账单号
                      items                DYNAMIC ARRAY OF type_detail
                          END RECORD
PRIVATE TYPE type_return  RECORD   #返回数组
                       code          LIKE type_t.chr20,
                       sqlcode       LIKE type_t.chr20,
                       description   LIKE type_t.chr1000,
                       orderNo       LIKE type_t.chr50  #EDB销退单单号
                          END RECORD

3.从json中读取request数据:

   #取回 datakey 資料內容
   LET g_ent  = cl_aws_json_getValue("datakey","EntId")
   LET g_company = cl_aws_json_getValue("datakey","CompanyId")
   LET l_json_obj = cl_aws_json_getParam()
   
   #將data 轉入l_master record
   CALL l_json_obj.toFGL(l_master)
   
   IF l_json_obj IS NULL THEN
      LET g_status.code = "wss-00216"   #讀入json 發生問題
      RETURN
   END IF
   
   #检查传入datakey是否为空
   IF cl_null(g_ent) THEN
      LET g_status.code = "wss-00138"
      LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'EntId')
      LET g_status.description = l_str
      RETURN
   END IF
   IF cl_null(g_company) THEN
      LET g_status.code = "wss-00138"
      LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'CompanyId')
      LET g_status.description = l_str
      RETURN
   END IF

4.返回response的json:

#返回值
CALL cl_aws_json_addParam(util.JSONObject.fromFGL(l_return))

在Server端的开发过程中,有几个常用的方法:

  1. cl_aws_json_getValue()       取得字段值
  2. cl_aws_json_getParam()     取得整个param段
  3. l_json_obj.toFGL()        将param段的数据转换读取到预定义变量
  4. cl_aws_json_addParam(util.JSONObject.fromFGL(l_return))     将返回变量自动加入response的json中

T100 WebService Client端开发:

宣告JSON组成Request所必须的内容,参考下列的type_service 的RECORD,先将这些必要宣告出来以利后面调用:

type type_service    RECODE
    prod		STRING,
	name		STRING,
	ip	   	    STRING
                END RECODE

举例说明:
程序开始先宣告会调用到模组变数,如type_service,接着对这些变数进行初始化,像是预设的参数内容以及预设的服务产品、服务名称、ip:

T100 WebService与Client端开发_第2张图片

宣告完变数后:

  1. 初始化JSON内容,参考cl_rest_json_init();
  2. 呼叫addParam()以及addDatakey() function进行增加parameter、datakey的动作;
  3. 透过cl_rest_json_invokeSrv()将request传送出去并且取得执行状态码、回传內容以及错误信息,当状态码为0是代表执行成功;
  4. 使用cl_rest_json_getParam()取得parameter的內容并将其內容透过toFGL()这个function 來转成RECORD形式以利我们取得所需的资讯,反之可从l_errmsg取得错误讯息。

 T100 WebService与Client端开发_第3张图片


T100 WebService Client 端开发(中台) 

宣告应用服务要传给对方产品的主体资料,与接收回传的主体资料RECORD:

 T100 WebService与Client端开发_第4张图片

 

你可能感兴趣的:(T100)