赛捷软件论坛's Archiver

lynn.yu 发表于 2019-5-24 10:38

[V6功能解说] 5天学习Sage ERP X3 Web Services(第2天)

[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b]

[attach]5039[/attach]

[b]创建Web Services[/b]

这是整个5部分系列的第2部分,主要涉及如何为Sage ERP X3创建和耗用web services。在第一部分中我们探讨了如何设置Sage ERP X3 Web Services。

如需浏览该系列中的其他文章,请参见以下主题:

第1天——设置X3 Web Services
第3天——测试X3 Web Services
第4天——自ASP.NET调用一个Sage X3对象
第5天——自ASP.NET调用一个Sage X3程序

现在,回归我们当前的主题创建Web Services…

[b]将一个Sage ERP X3对象发布为一项Web Service[/b]

很多Sage ERP X3对象都可以发布为web service。以下是具体操作的步骤:

1.        登录Safe X3客户端
2.        前往Web Services功能
开发>脚本字典>原稿>Web服务
•        录入[发布名称](通常都是对象名称,再在前面加一个“Z”)
•        录入描述
•        选择“对象”[类型]
•        录入[对象]名称
•        如果与该对象关联的交易类型超过一种,那么你就必须选择要发布的[交易]。
•        点击“创建”
[attach]5051[/attach]

[b]创建定制子程序,以便将其作为Web Service调用[/b]

定制子程序同样可以创建,并可作为一项web service来调用。以下示例检索了过去n天内添加或更新的客户列表。

[b]创建子程序[/b]

1.        前往功能:开发→脚本字典→原稿→脚本编辑器

2.        当系统提示选择要编辑的文件时,单击“取消”,创建一个新文件。
[attach]5052[/attach]

3.        会出现一个空白窗口,供用户输入X3代码。
[attach]5053[/attach]

4.        输入以下代码。任何作为输入变量的参数都必须用关键字“Value”设定。而任何返回的参数都必须用关键字“Variable”设定。在下面的示例中,UPDDAYS和CUSTID作为参数输入,并且返回了BPCNUM、BPCNAM、UPDDAT、BPCINV、BPDADD、FCY和CUSGRP。
################################################################
# Program Name: ZCUSTLIST
# Description: Subprogram to Web Service for Customer Listing
# Called by Web Service ZWSCUSTLIS
################################################################
# *Revision Log*
#---------------------------------------------------------------
# Rev Date User Description
#---------------------------------------------------------------
# 000 10/10/2013 D. Hartman Created
################################################################
Subprog CUSTLIST(UPDDAYS, CUSTID, BPCNUM, BPCNAM, UPDDAT, BPCINV,
          BPDADD, FCY, CUSGRP)

# Pass number of days since last update
# Returns any customers updated within the last (n) days
Value Integer UPDDAYS
Value Char CUSTID

# Returns array of:
# BPCNUM - Customer Number
# BPCNAM - Customer Name
# UPDDAT - Last Update Date
# BPCINV - Bill to ID
# BPDADD - Default Ship to ID
# FCY - Facility Code
# CUSGRP - Customer Group
Variable Char BPCNUM () ()
Variable Char BPCNAM () ()
Variable Date UPDDAT ()
Variable Char BPCINV () ()
Variable Char BPDADD () ()
Variable Char FCY () ()
Variable Char CUSGRP () ()

# Calculate cutoff date using current date and update days
Date UPDDATE : UPDDATE = date$-UPDDAYS

# Read from Customer Table
Local File BPCUSTOMER [BPC]
Local File BPARTNER [BPR]

# The Web Service is set up to return up to 2000 records. If this is
# reached, break out of loop to avoid error in index.
Local Integer LISTMAX : LISTMAX = 2000

# Fill arrays with Customer Data
Local Integer I : I = 0

Link [BPC] With [BPR]BPR0=[F:BPC]BPCNUM
& As [LNK]
& Where ([F:BPC]UPDDAT >= UPDDATE or [F:BPC]BPCNUM = CUSTID) and [F:BPC]BPCSTA = 2  and [F:BPC]BPCTYP = 1 and [F:BPC]OSTCTL <> 3

For [LNK]
   BPCNUM(I) = [BPC]BPCNUM
   BPCNAM(I) = [BPC]BPCNAM
   UPDDAT(I) = [BPC]UPDDAT
   BPCINV(I) = [BPC]BPCINV
   BPDADD(I) = [BPC]BPDADD
   FCY(I) = [BPR]FCY
   CUSGRP(I) = [BPC]BPCGRU
   I += 1
   If I >= LISTMAX : Break : Endif
Next
End

$INITWS
# Used for testing the web service
#UPDDAYS= 700
Return

$RESULTWS
Return

5.        点击F7按钮编译,并保存代码。当提示保存时,请输入文件名,并确保选择的账套(应用程序)正确。
[attach]5054[/attach]

[b]保存子程序[/b]

1.        前往功能:开发→脚本字典→原稿→子程序
2.        点击页面左上角的“新建”图标。
3.        录入如下信息。“进程”必须与上述文件名称相匹配,且“子程序”必须与文件内的子程序名称相匹配。
[attach]5055[/attach]
4.        指定[业务代码]、[模块]和[类型]。
5.        请确保勾选“web服务”复选框。
6.        默认情况下,我们会将所有返回的变量的[分析元]字段列设为“1”。在上面的代码示例中,返回了2000条结果。将每个返回的变量的“分析元”更改为“2000”。
7.        点击“创建”,然后“保存”。
8.        点击页面底部的“发布”按钮来创建web service。就会出现Web services屏幕。
9.        录入[发布名称]。在本示例中,这个名称为“ZWSCUSTLIS”。由于这是根据“ZCUSTLIST”程序和“CUSTLIST”子程序生成的,所以这些值会自动填入“服务”版块。
[attach]5056[/attach]
10.        点击“发布”按钮创建web service。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.