{"id":739,"date":"2019-05-22T11:02:04","date_gmt":"2019-05-22T03:02:04","guid":{"rendered":"http:\/\/www.hefeiyu.com\/?p=739"},"modified":"2019-05-22T11:03:07","modified_gmt":"2019-05-22T03:03:07","slug":"tiptop-service-gateway-ver-2-0","status":"publish","type":"post","link":"https:\/\/www.hefeiyu.com\/?p=739","title":{"rendered":"TIPTOP Service Gateway ver 2.0"},"content":{"rendered":"<p><strong>TIPTOP Service Gateway ver 2.0<\/strong><\/p>\n<ol>\n<li><strong>\u7b80\u8ff0<\/strong><\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2019\/05\/51759166ac120c8557729208b6331b57.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>\u6982\u5ff5<\/strong><\/li>\n<\/ol>\n<p>\u900f\u8fc7\u4e00\u5171\u540c\u7684 Web Services \u5b58\u53d6\u70b9(URL), \u4e0d\u540c\u670d\u52a1\u9700\u6c42\u800c ERP \u7aef\u6709\u64b0\u5199\u5bf9\u5e94\u7684 4GL function \u6765\u56de\u5e94. \u7ecf\u8fc7\u5404\u79cd\u529f\u80fd\u9700\u6c42\u7684 4GL function \u5904\u7406\u5b8c\u6210\u540e, \u518d\u4f9d\u7167\u5404 service function \u5b9a\u4e49\u7684\u53c2\u6570\u683c\u5f0f\u56de\u590d\u547c\u53eb\u7aef.<\/p>\n<p>\u8003\u8651\u5916\u90e8\u9700\u6c42\u7684\u591a\u6837\u6027, service function \u6709\u4ee5\u4e0b\u5b9a\u4e49\uff1a<\/p>\n<ol>\n<li>\u6bcf\u4e00\u79cd\u5916\u90e8 request \u9700\u6c42\u5373\u6709\u4e00 4GL service function \u5bf9\u5e94 &#8212; \u76ee\u7684\u4e3a\u4fbf\u5229\u5904\u7406\u5404\u79cd business logic \u9700\u6c42<\/li>\n<li>\u5bf9\u65b9\u7cfb\u7edf\u547c\u53eb\u6bcf\u4e2a ERP 4GL service \u7684\u4f20\u5165\u4e0e\u56de\u4f20\u7684\u5185\u5bb9\u4e3a\u4e00 XML \u5b57\u7b26\u4e32 &#8212; \u76ee\u7684\u4e3a\u7edf\u4e00\u4ea4\u6362\u683c\u5f0f.<\/li>\n<li>\u6bcf\u4e00\u4e2a4GL service function \u5199\u6cd5\u5982\u540c\u4e00\u822c ERP \u7a0b\u5e8f, \u4f46\u6709\u5c5e\u4e8e TIPTOP Service Gateway \u7684\u5199\u6cd5\u89c4\u5b9a\u4e0e\u76f8\u5173\u5171\u4eab\u51fd\u793a\u7684\u547c\u53eb(\u540e\u8ff0).<\/li>\n<li><strong>\u6570\u636e\u4ea4\u6362\u89c4\u683c<\/strong><\/li>\n<li>Request XML Format<\/li>\n<\/ol>\n<pre class=\"pure-highlightjs\"><code class=\"null\">&lt;Request&gt;\r\n  &lt;Access&gt; \t&lt;!-- \u5b58\u53d6\u8a0a\u606f --&gt;\r\n\t  &lt;Authentication user=\"tiptop\" password=\"tiptop\"\/&gt;\r\n\t  &lt;Connection application=\"my_app\" source=\"192.168.1.2\"\/&gt;\r\n\t  &lt;Organization name=\"my_organization\"\/&gt;\r\n      &lt;Locale language=\"zh_tw\"\/&gt;\r\n  &lt;Access&gt;\r\n  &lt;RequestContent&gt;\t\r\n    &lt;Parameter&gt; &lt;!-- \u53c3\u6578\u8cc7\u6599\u7bc0\u9ede(e.x. \u81ea\u52d5\u53d6\u865f) --&gt;\r\n      &lt;Record&gt;\r\n        &lt;Field name=\"condition\" value=\" ima01 like \u2018%\u2019 \"\/&gt;\r\n        &lt;Field name=\u201dmy_parameter\" value=\"my_value\"\/&gt;\r\n        &lt;!-- new Field tag --&gt;\r\n      &lt;\/Record&gt;\r\n    &lt;\/Parameter&gt; \r\n    &lt;Document&gt;\t&lt;!-- \u55ae\u64da\u8cc7\u6599\u7bc0\u9ede(e.x. \u5efa\u7acb\u5ba2\u6236\u57fa\u672c\u8cc7\u6599) --&gt;\r\n      &lt;RecordSet id=\"1\"&gt;\r\n        &lt;Master name=\u201dmy_name\u201d&gt; \r\n          &lt;Record&gt;\r\n            &lt;Field name=\"my_column\" value=\"my_value\"\/&gt;\r\n            &lt;!-- new Field tag --&gt;\r\n          &lt;\/Record&gt;\r\n        &lt;\/Master&gt;\r\n        &lt;Detail name=\u201dmy_name\u201d&gt;\r\n          &lt;Record&gt;\r\n            &lt;Field name=\"my_column\" value=\"my_value\"\/&gt;\r\n            &lt;!-- new Field tag --&gt;\r\n          &lt;\/Record&gt;\r\n          &lt;!-- new Record tag --&gt;\r\n        &lt;\/Detail&gt;\r\n        &lt;-- new Detail tag --&gt;\r\n      &lt;\/RecordSet&gt; \r\n      &lt;RecordSet id=\u201d2\u201d&gt;\r\n        &lt;-- new Record tag --&gt;\r\n      &lt;\/RecordSet&gt;\r\n      &lt;!-- new RecordSet tag --&gt;\r\n    &lt;\/Document&gt;\r\n  &lt;\/RequestContent&gt;                       \r\n&lt;\/Request&gt;\r\n<\/code><\/pre>\n<p>Response XML Format<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\">&lt;Response&gt;\r\n  &lt;Execution&gt;\t&lt;!-- \u670d\u52d9\u57f7\u884c\u7d50\u679c --&gt;\r\n    &lt;Status code=\"0\" sqlcode=\"0\" description=\"\"\/&gt;\r\n  &lt;\/Execution&gt; \r\n  &lt;ResponseContent&gt;\r\n    &lt;Parameter&gt;\t&lt;!-- \u53c3\u6578\u8cc7\u6599\u56de\u50b3(e.x. \u81ea\u52d5\u53d6\u865f\u7d50\u679c) --&gt;\r\n      &lt;Record&gt;\r\n        &lt;Field name=\"my_parameter\" value=\"my_value\"\/&gt;\r\n        &lt;!-- new Field tag --&gt;\r\n      &lt;\/Record&gt;\r\n    &lt;\/Parameter&gt;     \r\n    &lt;Document&gt;\t&lt;!\u2014\u55ae\u64da\u8cc7\u6599\u56de\u50b3(e.x. \u63a1\u8cfc\u55ae) --&gt;\r\n      &lt;RecordSet id=\"1\"&gt;\r\n        &lt;Master name=\u201dmy_name\u201d&gt; \r\n          &lt;Record&gt;\r\n            &lt;Field name=\"my_column\" value=\"my_value\"\/&gt;\r\n            &lt;!-- new Field tag --&gt;\r\n          &lt;\/Record&gt;\r\n        &lt;\/Master&gt;\r\n        &lt;Detail name=\u201dmy_name\u201d&gt;\r\n          &lt;Record&gt;\r\n            &lt;Field name=\"my_column\" value=\"my_value\"\/&gt;\r\n            &lt;!-- new Field tag --&gt;\r\n          &lt;\/Record&gt;\r\n          &lt;!-- new Record tag --&gt;\r\n        &lt;\/Detail&gt;\r\n        &lt;-- new Detail tag --&gt;\r\n      &lt;\/RecordSet&gt; \r\n      &lt;RecordSet id=\u201d2\u201d&gt;\r\n        &lt;-- new Record tag --&gt;\r\n      &lt;\/RecordSet&gt;\r\n      &lt;!-- new RecordSet tag --&gt;\r\n    &lt;\/Document&gt;\r\n  &lt;\/ResponseContent&gt;\r\n&lt;\/Response&gt;<\/code><\/pre>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>\u5168\u5c40\u53d8\u91cf\u6863<\/strong><\/li>\n<\/ol>\n<p>\u5f00\u53d1\u670d\u52a1\u7a0b\u5e8f\u65f6, \u9700\u5229\u7528 <strong>GLOBALS<\/strong> \u8bed\u6cd5\u542b\u5165 TIPTOP Service Gateway \u7684\u5168\u5c40\u53d8\u91cf\u6863\uff1a<strong>$WZZ\/4gl\/waws_ttsrv2_global.4gl<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u8bed\u6cd5\u8303\u4f8b\uff1a<\/strong>GLOBALS \u201c..\/4gl\/waws_ttsrv2_global.4gl\u201d<\/p>\n<ol>\n<li><strong>\u72b6\u6001\u503c\u5904\u7406<\/strong><\/li>\n<\/ol>\n<p>\u5f00\u53d1\u670d\u52a1\u7a0b\u5e8f\u65f6, \u53ef\u5229\u7528\u6539\u53d8 g_status RECORD \u53d8\u91cf\u5185\u5bb9\u6307\u5b9a\u76ee\u524d\u5904\u7406\u72b6\u6001.<\/p>\n<p><strong>\u53d8\u91cf\u7ed3\u6784\uff1a<\/strong><\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\">    #--------------------------------------------------------------------------#\r\n    # \u57f7\u884c\u72c0\u614b                                                                 #\r\n    #--------------------------------------------------------------------------#   \r\n    DEFINE g_status RECORD\r\n              code           STRING,      #\u8a0a\u606f\u4ee3\u78bc ; \u975e 0 \u503c\u70ba\u6709\u932f\u8aa4\r\n              sqlcode        STRING,      #SQL ERROR CODE\r\n              description    STRING       #\u8a0a\u606f\u8aaa\u660e\r\n           END RECORD<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u8bed\u6cd5\u8303\u4f8b\uff1a<\/strong>LET g_status.code = \u201caxm-001\u201d<\/p>\n<ol>\n<li><strong>\u5171\u4eab\u51fd\u5f0f\u8bf4\u660e<\/strong><\/li>\n<\/ol>\n<p>\u5f00\u53d1\u670d\u52a1\u7a0b\u5e8f\u8fc7\u7a0b\u4e2d\u53ef\u5229\u7528\u7684\u5171\u4eab\u51fd\u5f0f.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_preprocess<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u670d\u52a1\u524d\u7f6e\u5904\u7406\u7a0b\u5e8f ; \u6bcf\u4e2a\u670d\u52a1\u7a0b\u5e8f\u5747\u5fc5\u987b\u547c\u53eb<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td><strong>CALL aws_ttsrv_preprocss()<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_postprocess<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u670d\u52a1\u540e\u7f6e\u5904\u7406\u7a0b\u5e8f ; \u6bcf\u4e2a\u670d\u52a1\u7a0b\u5e8f\u5747\u5fc5\u987b\u547c\u53eb<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td><strong>CALL aws_ttsrv_postprocss()<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_addMasterRecord<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u65b0\u589e\u4e00\u7b14\u5355\u6587\u4ef6\u8d44\u6599\u81f3\u56de\u4f20\u7684 XML<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u6b64\u7b14\u5355\u5934 Record XML Node<\/p>\n<p>STRING \u6b64\u7b14\u5355\u5934\u540d\u79f0(e.x. Table Name)<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>om.DomNode<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_ima RECORD LIKE ima_file.*<\/p>\n<p>DEFINE l_node om.DomNode<\/p>\n<p><strong>LET l_node = aws_ttsrv_addMasterRecord(base.Typeinfo.create(l_ima), <\/strong><\/p>\n<p><strong>\u201cima_file\u201d)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_addDetailRecord<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u65b0\u589e\u5355\u8eab\u8d44\u6599\u81f3\u56de\u4f20\u7684 XML<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u8981\u52a0\u5165\u5355\u8eab\u7684\u5355\u5934 XML Node<\/p>\n<p>om.DomNode \u5355\u8eab Record XML Node<\/p>\n<p>STRING \u5355\u8eab\u540d\u79f0(e.x. Table Name)<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_bma RECORD LIKE bma_file.*<\/p>\n<p>DEFINE l_bmb DYNAMIC ARRAY OF RECORD LIKE bmb_file.*<\/p>\n<p>LET l_node = aws_ttsrv_addMasterRecord(base.Typeinfo.create(l_bma),<\/p>\n<p>\u201cima_file\u201d)<\/p>\n<p><strong>CALL aws_ttsrv_addDetailRecord(l_node, <\/strong><\/p>\n<p><strong>base.Typeinfo.create(l_ima), <\/strong><\/p>\n<p><strong>\u201cbmb_file\u201d)<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_addParameterRecord<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u65b0\u589e\u53c2\u6570\u8d44\u6599\u81f3\u56de\u4f20\u7684 XML<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u53c2\u6570 Record XML Node<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_return RECORD<\/p>\n<p>slip LIKE STRING<\/p>\n<p>END RECORD<\/p>\n<p><strong>CALL aws_ttsrv_addParameterRecord(base.Typeinfo.create(l_return) )<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getParameter<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u7684\u53c2\u6570\u8d44\u6599<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>STRING \u53c2\u6570\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>STRING \u53c2\u6570\u503c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_slip STRING<\/p>\n<p><strong>LET l_slip = aws_ttsrv_getParameter(\u201cslip\u201d)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getMasterRecordLength<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u4e2d\u7684\u5355\u6863\u7b14\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>STRING \u5355\u6863\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>INTEGER \u5355\u6863\u7b14\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_cnt LIKE type_file.num10<\/p>\n<p><strong>LET l_cnt = aws_ttsrv_getMasterRecordLength(\u201cocc_file\u201d)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getDetailRecordLength<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u4e2d\u7684\u5355\u8eab\u7b14\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u76ee\u524d\u7684\u5355\u5934 XML Node<\/p>\n<p>STRING \u5355\u8eab\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>INTEGER \u5355\u8eab\u7b14\u6570<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_cnt LIKE type_file.num10<\/p>\n<p>LET l_node = aws_ttsrv_getMasterRecord(1, \u201coqt_file\u201d)<\/p>\n<p><strong>LET l_cnt = aws_ttsrv_getDetailRecordLength(l_node, \u201coqu_file\u201d)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getMasterRecord<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u4e2d\u6307\u5b9a\u7b14\u6570\u7684\u5355\u6863 Record XML Node<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>INTEGER \u6307\u5b9a\u7684\u5355\u6863\u7b14\u6570<\/p>\n<p>STRING \u5355\u6863\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>om.DomNode \u5355\u6863 Record XML Node<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_cnt LIKE type_file.num10<\/p>\n<p>DEFINE l_i LIKE type_file.num10<\/p>\n<p>LET l_cnt = aws_ttsrv_getMasterRecordLength(\u201cocc_file\u201d)<\/p>\n<p>FOR l_i = 1 TO l_cnt<\/p>\n<p><strong>LET l_node = aws_ttsrv_getMasterRecord(l_i, \u201cocc_file\u201d)<\/strong><\/p>\n<p>END FOR<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getDetailRecord<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u4e2d\u6307\u5b9a\u7b14\u6570\u7684\u5355\u8eab Record XML Node<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u76ee\u524d\u5355\u5934 XML Node<\/p>\n<p>INTEGER \u6307\u5b9a\u7684\u5355\u8eab\u7b14\u6570<\/p>\n<p>STRING \u5355\u8eab\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>om.DomNode \u5355\u8eab Record XML Node<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node1 om.DomNode<\/p>\n<p>DEFINE l_node2 om.DomNode<\/p>\n<p>DEFINE l_cnt LIKE type_file.num10<\/p>\n<p>DEFINE l_i LIKE type_file.num10<\/p>\n<p>LET l_node1 = aws_ttsrv_getMasterRecord(1, \u201coqt_file\u201d)<\/p>\n<p>LET l_cnt = aws_ttsrv_getDetailRecordLength(l_node, \u201coqu_file\u201d)<\/p>\n<p>FOR l_i = 1 TO l_cnt<\/p>\n<p><strong>LET l_node2 = aws_ttsrv_getDetailRecord(l_node1, l_i, \u201coqu_file\u201d)<\/strong><\/p>\n<p>END FOR<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getRecordField<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u4f20\u5165 XML \u4e2d\u5355\u5934\/\u5355\u8eab Record \u4e2d\u7684\u57df\u503c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u76ee\u524d\u5355\u5934\/\u5355\u8eab XML Node<\/p>\n<p>STRING \u57df\u540d<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>STRING \u57df\u503c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_occ01 LIKE occ_file.occ01<\/p>\n<p>LET l_node = aws_ttsrv_getMasterRecord(1, \u201cocc_file\u201d)<\/p>\n<p><strong>LET l_occ01 = aws_ttsrv_getRecordField(l_node, \u201cocc01\u201d)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_setRecordField<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u8bbe\u5b9a\u4f20\u5165 XML \u4e2d\u5355\u5934\/\u5355\u8eab Record \u4e2d\u7684\u57df\u503c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u76ee\u524d\u5355\u5934\/\u5355\u8eab XML Node<\/p>\n<p>STRING \u57df\u540d<\/p>\n<p>STRING \u57df\u503c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_oqt01 LIKE oqt_file.oqt01<\/p>\n<p>LET l_node = aws_ttsrv_getMasterRecord(1, \u201coqt_file\u201d)<\/p>\n<p><strong>CALL aws_ttsrv_setRecordField(l_node, \u201coqt01\u201d, l_oqt01)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<tbody>\n<tr>\n<td><strong>\u51fd\u5f0f\u540d\u79f0<\/strong><\/td>\n<td><strong>aws_ttsrv_getRecordSql<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>\u51fd\u5f0f\u8bf4\u660e<\/strong><\/td>\n<td>\u53d6\u5f97\u76ee\u524d\u5355\u5934\/\u5355\u8eab Record \u7684 INSERT \/ UPDATE \u7684 SQL \u8bed\u53e5<\/td>\n<\/tr>\n<tr>\n<td><strong>\u4f20\u5165\u53c2\u6570<\/strong><\/td>\n<td>om.DomNode \u76ee\u524d\u5355\u5934\/\u5355\u8eab XML Node<\/p>\n<p>STRING Table Name<\/p>\n<p>STRING SQL \u578b\u6001 ; \u201cI\u201d : \u8868\u793a INSERT, \u201cU\u201d : \u8868\u793a UPDATE<\/p>\n<p>STRING SQL \u6761\u4ef6 ; \u4e3b\u8981\u53ef\u7528\u4e8e\u53d6\u5f97 UPDATE \u8bed\u53e5\u65f6\u7ed9\u4e8e SQL Where Condition(e.x. \u201c occ01 = \u201800001\u2019 \u201d)<\/td>\n<\/tr>\n<tr>\n<td><strong>\u56de\u4f20\u503c<\/strong><\/td>\n<td>STRING SQL \u8bed\u53e5\u5b57\u7b26\u4e32<\/td>\n<\/tr>\n<tr>\n<td><strong>\u7528\u6cd5\u8303\u4f8b<\/strong><\/td>\n<td>DEFINE l_node om.DomNode<\/p>\n<p>DEFINE l_occ01 LIKE occ_file.occ01<\/p>\n<p>DEFINE l_sql STRING<\/p>\n<p>DEFINE l_wc STRING<\/p>\n<p>DEFINE l_cnt LIKE type_file.num10<\/p>\n<p>LET l_node = aws_ttsrv_getMasterRecord(1, \u201cocc_file\u201d)<\/p>\n<p>LET l_occ01 = aws_ttsrv_getRecordField(l_node, \u201cocc01\u201d)<\/p>\n<p>SELECT COUNT(*) INTO l_cnt FROM occ_file WHERE occ01 = l_occ01<\/p>\n<p>IF l_cnt = 0 THEN<\/p>\n<p><strong>LET l_sql = aws_ttsrv_getRecordSql(l_node, \u201cocc_file\u201d, \u201cI\u201d, NULL)<\/strong><\/p>\n<p>ELSE<\/p>\n<p>LET l_wc = \u201c occ01 = \u2018\u201d, l_occ01 CLIPPED, \u201c\u2019 \u201c<\/p>\n<p><strong>LET l_sql = aws_ttsrv_getRecordSql(l_node, \u201cocc_file, \u201cU\u201d, l_wc)<\/strong><\/p>\n<p>END IF<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ol>\n<li><strong>\u7a0b\u5e8f\u5f00\u53d1\u8bf4\u660e<\/strong><\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2019\/05\/751f542bb78fb07d884a3c09c5ab55bc.png\" \/><\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li>\u53d1\u5e03\u65b0\u7684\u670d\u52a1\u51fd\u5f0f<\/li>\n<\/ol>\n<p>$WZZ\/4gl\/waws_ttsrv2.4gl \u4e2d\u7684<\/p>\n<p>FUNCTION aws_ttsrv_createService() \u52a0\u5165\u65b0\u589e\u7684\u670d\u52a1\u51fd\u5f0f:<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\">FUNCTION aws_ttsrv_createService()\r\n\u2026\u2026\r\n #--------------------------------------------------------------------------------------------#\r\n # \u8acb\u65b0\u589e\u6bcf\u4e00\u500b ERP \u670d\u52d9\u6642, \u65bc\u4ee5\u4e0b\u52a0\u5165\u767c\u4f48 Service Function \u6bb5\u843d                               #\r\n# LET l_op = com.WebOperation.CreateDOCStyle(\"function_name\",p_op_name, g_request, g_response) #\r\n # CALL g_serv.publishOperation(l_op, NULL)                                                    #\r\n #--------------------------------------------------------------------------------------------#\r\n\r\n #--------------------------------------------------------------------------#\r\n # Publish ERP Service function - aws_getSSOKey()   #\u51fd\u6570\u540d\u79f0                #\r\n #--------------------------------------------------------------------------#\r\n LET l_op = com.WebOperation.CreateDOCStyle(\"aws_getSSOkey\",\"GetSSOKey\", g_request, g_response)\r\n CALL g_serv.publishOperation(l_op, NULL)\r\n\r\nEND FUNCTION<\/code><\/pre>\n<ol>\n<li>\u5b9a\u4e49\u65b0\u7684\u670d\u52a1\u51fd\u5f0f<\/li>\n<\/ol>\n<p>$WZZ\/4gl\/waws_ttsrv2_service.4gl \u4e2d\u52a0\u5165\u65b0\u589e\u7684 ERP \u670d\u52a1\u6bb5\u843d\uff1a<\/p>\n<p>\u51fd\u5f0f\u540d\u7a31<\/p>\n<p><strong>FUNCTION aws_getSSOKey()\u00a0 #\u670d\u52d9\u540d\u7a31<\/strong><\/p>\n<p><strong> LET g_service = &#8220;GetSSOKey&#8221;\u00a0\u00a0<\/strong><\/p>\n<p><strong> CALL aws_get_sso_key()\u00a0\u00a0#\u771f\u6b63\u57f7\u884c\u7684\u51fd\u5f0f\u540d\u7a31(e.x. \u7a0b\u5f0f\u672c\u4f53\u5b9a\u4e49\u4e8e waws_get_sso_key.4gl \u6a94\u6848\u4e2d)<\/strong><\/p>\n<p><strong>END FUNCTION<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>PS1. \u82e5\u6b64\u670d\u52a1\u4e3aB2B\u4ea7\u54c1\u72ec\u6709\uff08\u4e0d\u5b58\u5728TIPTOP\u670d\u52a1\u4e2d\uff09\uff0c<\/p>\n<p>\u5efa\u8bae\u51fd\u5f0f\u540d\u79f0\u7686\u4ee5waws_\u5f00\u5934\u547d\u540d\u3002<\/p>\n<p>\u4f8b\u5982:<\/p>\n<p><strong>FUNCTION waws_getAgencyData()<\/strong><\/p>\n<p><strong> LET g_service = &#8220;GetAgencyData&#8221; <\/strong><\/p>\n<p><strong> CALL waws_get_agency_data() #\u7a0b\u5f0f\u672c\u9ad4\u5b9a\u7fa9\u65bc waws_get_agency_data.4gl \u6a94\u6848\u4e2d<\/strong><\/p>\n<p><strong>END FUNCTION<\/strong><\/p>\n<p>PS2. \u82e5\u6b64ERP\u670d\u52a1\u4e0d\u9700\u6307\u5b9a\u8425\u8fd0\u4e2d\u5fc3\uff0c\u53ef\u4ee5 LET g_non_plant = \u2018Y\u2019.<\/p>\n<p>\u4f8b\u5982: \u53d6\u5f97 ERP \u8425\u8fd0\u4e2d\u5fc3\u4ee3\u7801\u670d\u52a1<\/p>\n<p><strong>#\u53d6\u5f97 ERP \u71df\u904b\u4e2d\u5fc3\u4ee3\u78bc\u670d\u52d9<\/strong><\/p>\n<p><strong>FUNCTION aws_getOrganizationList()<\/strong><\/p>\n<p><strong> LET g_service = &#8220;GetOrganizationList&#8221; <\/strong><\/p>\n<p><strong> LET g_non_plant = &#8220;Y&#8221;\u00a0 #\u4e0d\u6307\u5b9a\u71df\u904b\u4e2d\u5fc3<\/strong><\/p>\n<p><strong> CALL aws_get_organization_list()<\/strong><\/p>\n<p><strong>END FUNCTION<\/strong><\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li>\u5b9e\u9645\u64b0\u5199\u5904\u7406\u670d\u52a1\u7684\u7a0b\u5e8f\u672c\u4f53<\/li>\n<\/ol>\n<p>$WZZ\/4gl \u76ee\u5f55\u4e0b\u65b0\u589e\u5e76\u64b0\u5199\u670d\u52a1\u7a0b\u5e8f(e.x. waws_get_sso_key.4gl)<\/p>\n<p>\u53ef\u80fd\u5b58\u5728\u4e94\u79cd\u578b\u6001\u7684\u670d\u52a1\u9700\u6c42\uff1a<\/p>\n<p>\u25a0 \u8bfb\u53d6 ERP \u5355\u6863<\/p>\n<p>\u25a0 \u8bfb\u53d6 ERP \u53cc\u6863<\/p>\n<p>\u25a0 \u5199\u5165 ERP \u5355\u6863<\/p>\n<p>\u25a0 \u5199\u5165 ERP \u53cc\u6863<\/p>\n<p>\u25a0 \u975e\u5355\u636e\u7684\u53c2\u6570\u4f20\u5165\u4e0e\u56de\u4f20<\/p>\n<ol>\n<li>\u7a0b\u5e8f\u64b0\u5199\u540e\u900f\u8fc7 p_weblink \u5c06\u5b8c\u6210\u7684 4GL module \u6302\u5230 waws_ttsrv2 \u4e2d<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"525\" height=\"573\" class=\"wp-image-740\" src=\"http:\/\/www.hefeiyu.com\/wp-content\/uploads\/2019\/05\/word-image-219.png\" \/><\/p>\n<ol>\n<li>\u6d4b\u8bd5\u6b64\u670d\u52a1<\/li>\n<li><strong>\u7a0b\u5e8f\u5f00\u53d1\u8303\u4f8b<\/strong><\/li>\n<\/ol>\n<p>\u8bfb\u53d6 ERP \u5355\u6587\u4ef6, \u4ee5\u4e0b\u8303\u4f8b\u4e3a\u8bfb\u53d6 ERP \u6599\u4ef6\u57fa\u672c\u6570\u636e\u670d\u52a1\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\"># Prog. Version..: '5.00.04-07.12.14(00000)'     #\r\n#{\r\n# Program name...: aws_get_item_data.4gl\r\n# Descriptions...: \u63d0\u4f9b\u53d6\u5f97 ERP \u6599\u4ef6\u8cc7\u6599\u670d\u52d9\r\n# Date &amp; Author..: 2007\/02\/14 by Echo\r\n# Memo...........:\r\n# Modify.........: \u65b0\u5efa\u7acb FUN-720021\r\n#\r\n#}\r\n\r\nDATABASE ds\r\n\r\n#FUN-720021\r\n\r\nGLOBALS \"..\/..\/wconfig\/top.global\"\r\n\r\nGLOBALS \"..\/4gl\/waws_ttsrv2_global.4gl\"   #TIPTOP Service Gateway \u4f7f\u7528\u7684\u5168\u57df\u8b8a\u6578\u6a94\r\n\r\n\r\n#[\r\n# Description....: \u63d0\u4f9b\u53d6\u5f97 ERP \u6599\u4ef6\u8cc7\u6599\u670d\u52d9(\u5165\u53e3 function)\r\n# Date &amp; Author..: 2007\/02\/12 by Echo\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_item_data()\r\n\r\n\r\n    WHENEVER ERROR CONTINUE\r\n\r\n    CALL aws_ttsrv_preprocess()    #\u547c\u53eb\u670d\u52d9\u524d\u7f6e\u8655\u7406\u7a0b\u5e8f\r\n    \r\n    #--------------------------------------------------------------------------#\r\n    # \u67e5\u8a62 ERP \u6599\u4ef6\u7de8\u865f\u8cc7\u6599                                                    #\r\n    #--------------------------------------------------------------------------#\r\n    IF g_status.code = \"0\" THEN\r\n       CALL aws_get_item_data_process()\r\n    END IF\r\n\r\n    CALL aws_ttsrv_postprocess()   #\u547c\u53eb\u670d\u52d9\u5f8c\u7f6e\u8655\u7406\u7a0b\u5e8f\r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u67e5\u8a62 ERP \u6599\u4ef6\u7de8\u865f\u8cc7\u6599\r\n# Date &amp; Author..: 2007\/02\/06 by Echo\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_item_data_process()\r\n    DEFINE l_ima   RECORD LIKE ima_file.*\r\n    DEFINE l_wc    STRING\r\n    DEFINE l_sql   STRING\r\n    DEFINE l_node  om.DomNode\r\n\r\n   \r\n    LET l_wc = aws_ttsrv_getParameter(\"condition\")   #\u53d6\u7531\u547c\u53eb\u7aef\u547c\u53eb\u6642\u7d66\u4e88\u7684 SQL Condition\r\n    \r\n    LET l_sql = \"SELECT * FROM ima_file WHERE \",\r\n                 l_wc, \r\n                 \" AND imaacti = 'Y' ORDER BY ima01\"\r\n\r\n    DECLARE ima_curs CURSOR FROM l_sql \r\n    IF SQLCA.SQLCODE THEN\r\n       LET g_status.code = SQLCA.SQLCODE\r\n       LET g_status.sqlcode = SQLCA.SQLCODE\r\n       RETURN\r\n    END IF\r\n\r\n    FOREACH ima_curs INTO l_ima.*\r\n    \r\n        LET l_node = aws_ttsrv_addMasterRecord(base.TypeInfo.create(l_ima), \"ima_file\")   #\u52a0\u5165\u6b64\u7b46\u55ae\u6a94\u8cc7\u6599\u81f3 Response \u4e2d        \r\n    \r\n    END FOREACH\r\n    \r\n    IF SQLCA.SQLCODE THEN\r\n       LET g_status.code = SQLCA.SQLCODE\r\n       LET g_status.sqlcode = SQLCA.SQLCODE\r\n       RETURN\r\n    END IF\r\nEND FUNCTION\r\n<\/code><\/pre>\n<p>\u8bfb\u53d6 ERP \u53cc\u6587\u4ef6, \u4ee5\u4e0b\u8303\u4f8b\u4e3a\u8bfb\u53d6 ERP BOM \u57fa\u672c\u6570\u636e\u670d\u52a1:<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\"># Prog. Version..: '5.00.04-07.12.14(00000)'     #\r\n#{\r\n# Program name...: aws_get_bom_data.4gl\r\n# Descriptions...: \u63d0\u4f9b\u53d6\u5f97 ERP BOM \u8cc7\u6599\u670d\u52d9\r\n# Date &amp; Author..: 2007\/03\/26 by Joe\r\n# Memo...........:\r\n# Modify.........: \u65b0\u5efa\u7acb  #FUN-720021\r\n#\r\n#}\r\n\r\nDATABASE ds\r\n\r\nGLOBALS \"..\/..\/config\/top.global\"\r\n\r\nGLOBALS \"..\/4gl\/aws_ttsrv2_global.4gl\"   #TIPTOP Service Gateway \u4f7f\u7528\u7684\u5168\u57df\u8b8a\u6578\u6a94\r\n           \r\n\r\n#[\r\n# Description....: \u63d0\u4f9b\u53d6\u5f97 ERP BOM \u8cc7\u6599\u670d\u52d9(\u5165\u53e3 function)\r\n# Date &amp; Author..: 2007\/03\/26 by Joe  #FUN-720021\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_bom_data()\r\n\r\n\r\n    WHENEVER ERROR CONTINUE\r\n\r\n    CALL aws_ttsrv_preprocess()    #\u547c\u53eb\u670d\u52d9\u524d\u7f6e\u8655\u7406\u7a0b\u5e8f\r\n    \r\n    #--------------------------------------------------------------------------#\r\n    # \u67e5\u8a62 ERP BOM \u8cc7\u6599                                                        #\r\n    #--------------------------------------------------------------------------#\r\n    IF g_status.code = \"0\" THEN\r\n       CALL aws_get_bom_data_process()\r\n    END IF\r\n\r\n    CALL aws_ttsrv_postprocess()   #\u547c\u53eb\u670d\u52d9\u5f8c\u7f6e\u8655\u7406\u7a0b\u5e8f\r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u67e5\u8a62 ERP BOM \r\n# Date &amp; Author..: 2007\/03\/26 by Joe\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_bom_data_process()\r\n    DEFINE l_bma       RECORD LIKE bma_file.*\r\n    DEFINE l_bmb       DYNAMIC ARRAY OF RECORD LIKE bmb_file.*\r\nDEFINE l_sql       STRING\r\n    DEFINE l_wc        STRING\r\n    DEFINE l_i         LIKE type_file.num10\r\n    DEFINE l_node      om.DomNode\r\n\r\n    \r\n    LET l_wc = aws_ttsrv_getParameter(\"condition\")   #\u53d6\u7531\u547c\u53eb\u7aef\u547c\u53eb\u6642\u7d66\u4e88\u7684 SQL Condition\r\n    \r\n    LET l_sql = \"SELECT * FROM bma_file WHERE \",\r\n                l_wc, \r\n                \" AND bmaacti = 'Y' ORDER BY bma01\"\r\n                 \r\n    DECLARE bma_curs CURSOR FROM l_sql \r\n    IF SQLCA.SQLCODE THEN\r\n       LET g_status.code = SQLCA.SQLCODE\r\n       LET g_status.sqlcode = SQLCA.SQLCODE\r\n       RETURN\r\n    END IF  \r\n\r\n    LET l_sql = \"SELECT * FROM bmb_file WHERE bmb01 = ? ORDER BY bmb02\" \r\n    DECLARE bmb_curs CURSOR FROM l_sql \r\n    IF SQLCA.SQLCODE THEN\r\n       LET g_status.code = SQLCA.SQLCODE\r\n       LET g_status.sqlcode = SQLCA.SQLCODE\r\n       RETURN\r\n    END IF\r\n   \r\n    FOREACH bma_curs INTO l_bma.*\r\n      \r\n       CALL l_bmb.clear()\r\n       LET l_i = 1\r\n       FOREACH bmb_curs USING l_bma.bma01 INTO l_bmb[l_i].*\r\n          LET l_i = l_i + 1\r\n       END FOREACH\r\n       CALL l_bmb.deleteElement(l_i)\r\n    \r\n       LET l_node = aws_ttsrv_addMasterRecord(base.TypeInfo.create(l_bma), \"bma_file\")   #\u52a0\u5165\u6b64\u7b46\u55ae\u982d\u8cc7\u6599\u81f3 Response \u4e2d\r\n       CALL aws_ttsrv_addDetailRecord(l_node, base.TypeInfo.create(l_bmb), \"bmb_file\")   #\u52a0\u5165\u6b64\u7b46\u55ae\u982d\u7684\u55ae\u8eab\u8cc7\u6599\u81f3 Response \u4e2d\r\n       \r\n    END FOREACH\r\n    \r\n    IF SQLCA.SQLCODE THEN\r\n       LET g_status.code = SQLCA.SQLCODE\r\n       LET g_status.sqlcode = SQLCA.SQLCODE\r\n       RETURN\r\n    END IF  \r\nEND FUNCTION\r\n<\/code><\/pre>\n<p>\u8bfb\u53d6\u53c2\u6570\u53ca\u53c2\u6570\u56de\u4f20, \u4ee5\u4e0b\u8303\u4f8b\u4e3a\u547c\u53eb ERP \u4f5c\u81ea\u52a8\u53d6\u53f7\u670d\u52a1\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\"># Prog. Version..: '5.00.04-07.12.14(00000)'     #\r\n#{\r\n# Program name...: aws_get_doc_no.4gl\r\n# Descriptions...: \u63d0\u4f9b ERP \u55ae\u64da\u81ea\u52d5\u53d6\u865f\u670d\u52d9\r\n# Date &amp; Author..: 2008\/03\/03 by Brendan\r\n# Memo...........:\r\n# Modify.........: \u65b0\u5efa\u7acb  #FUN-720021\r\n#\r\n#}\r\n\r\nDATABASE ds\r\n\r\nGLOBALS \"..\/..\/config\/top.global\"\r\n\r\nGLOBALS \"..\/4gl\/aws_ttsrv2_global.4gl\"   #TIPTOP Service Gateway \u4f7f\u7528\u7684\u5168\u57df\u8b8a\u6578\u6a94\r\n           \r\n\r\n#[\r\n# Description....: \u63d0\u4f9b ERP \u55ae\u64da\u81ea\u52d5\u53d6\u865f\u670d\u52d9\u670d\u52d9(\u5165\u53e3 function)\r\n# Date &amp; Author..: 2008\/03\/03 by Brendan  #FUN-720021\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_doc_no()\r\n\r\n\r\n    WHENEVER ERROR CONTINUE\r\n\r\n    CALL aws_ttsrv_preprocess()    #\u547c\u53eb\u670d\u52d9\u524d\u7f6e\u8655\u7406\u7a0b\u5e8f\r\n    \r\n    #--------------------------------------------------------------------------#\r\n    # \u55ae\u64da\u81ea\u52d5\u53d6\u865f                                                        #\r\n    #--------------------------------------------------------------------------#\r\n    IF g_status.code = \"0\" THEN\r\n       CALL aws_get_doc_no_process()\r\n    END IF\r\n\r\n    CALL aws_ttsrv_postprocess()   #\u547c\u53eb\u670d\u52d9\u5f8c\u7f6e\u8655\u7406\u7a0b\u5e8f\r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u81ea\u52d5\u53d6\u865f\r\n# Date &amp; Author..: 2008\/03\/03 by Brendan\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_get_doc_no_process()\r\n    DEFINE l_sys       LIKE smu_file.smu03,\r\n           l_slip      STRING,\r\n           l_date      LIKE type_file.dat,\r\n          l_type      STRING,\r\n           l_tab       STRING,\r\n           l_fld       STRING,\r\n           l_dbs       STRING,\r\n           l_runcard   LIKE type_file.chr1,\r\n           l_smy       STRING\r\n    DEFINE l_result    LIKE type_file.num5\r\n    DEFINE l_return    RECORD             #\u56de\u50b3\u503c\u5fc5\u9808\u5ba3\u544a\u70ba\u4e00\u500b RECORD \u8b8a\u6578, \u4e14\u6b64 RECORD \u9700\u5305\u542b\u6240\u6709\u8981\u56de\u50b3\u7684\u6b04\u4f4d\u540d\u7a31\u8207\u5b9a\u7fa9\r\n                          slip   STRING   #\u56de\u50b3\u7684\u6b04\u4f4d\u540d\u7a31\r\n                       END RECORD\r\n\r\n    \r\n    \r\n    #\u53d6\u5f97\u5404\u9805\u53c3\u6578\r\n    LET l_sys = aws_ttsrv_getParameter(\"sys\")\r\n    LET l_slip = aws_ttsrv_getParameter(\"slip\")\r\n    LET l_date = aws_ttsrv_getParameter(\"date\")\r\n    LET l_type = aws_ttsrv_getParameter(\"type\")\r\n    LET l_tab = aws_ttsrv_getParameter(\"tab\")\r\n    LET l_fld = aws_ttsrv_getParameter(\"fld\")\r\n    LET l_dbs = aws_ttsrv_getParameter(\"dbs\")\r\n    LET l_runcard = aws_ttsrv_getParameter(\"runcard\")\r\n    LET l_smy = aws_ttsrv_getParameter(\"smy\")\r\n    \r\n    BEGIN WORK\r\n\r\n    #\u55ae\u64da\u7de8\u865f\u6aa2\u67e5\r\n    CALL s_check_no(l_sys, l_slip, l_slip, l_type, l_tab, l_fld, l_dbs) \r\n         RETURNING l_result, l_return.slip\r\n   \r\n    IF l_result THEN\r\n       #\u4f9d\u7167\u7cfb\u7d71\u5225\u3001\u55ae\u5225\u81ea\u52d5\u7de8\u865f\r\n       CALL s_auto_assign_no(l_sys, l_slip, l_date, l_type, l_tab, l_fld, l_dbs, l_runcard, l_smy)\r\n            RETURNING l_result, l_return.slip \r\n        \r\n       IF l_result THEN\r\n            COMMIT WORK\r\n       ELSE\r\n            ROLLBACK WORK\r\n            LET g_status.code = \"sub-146\"\r\n       END IF\r\n    ELSE\r\n       ROLLBACK WORK\r\n       LET g_status.code = \"sub-141\"\r\n    END IF\r\n    \r\n    IF g_status.code = 0 THEN\r\n       CALL aws_ttsrv_addParameterRecord(base.TypeInfo.create(l_return))   #\u56de\u50b3\u81ea\u52d5\u53d6\u865f\u7d50\u679c\r\n    END IF\r\nEND FUNCTION<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>\u5199\u5165 ERP \u5355\u6587\u4ef6, \u4ee5\u4e0b\u8303\u4f8b\u4e3a\u5199\u5165 ERP \u5ba2\u6237\u57fa\u672c\u6570\u636e\u670d\u52a1\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\"># Prog. Version..: '5.10.00-07.10.03(00001)'     #\r\n#{\r\n# Program name...: aws_create_customer_data.4gl\r\n# Descriptions...: \u63d0\u4f9b\u5efa\u7acb\u5ba2\u6236\u57fa\u672c\u8cc7\u6599\u7684\u670d\u52d9\r\n# Date &amp; Author..: 2007\/02\/06 by Brendan\r\n# Memo...........:\r\n# Modify.........: \u65b0\u5efa\u7acb FUN-720021\r\n#\r\n#}\r\n\r\nDATABASE ds\r\n\r\n#FUN-720021\r\n\r\nGLOBALS \"..\/..\/config\/top.global\"\r\n\r\nGLOBALS \"..\/4gl\/aws_ttsrv2_global.4gl\"   #TIPTOP Service Gateway \u4f7f\u7528\u7684\u5168\u57df\u8b8a\u6578\u6a94\r\n\r\n\r\n#[\r\n# Description....: \u63d0\u4f9b\u5efa\u7acb\u5ba2\u6236\u57fa\u672c\u8cc7\u6599\u7684\u670d\u52d9(\u5165\u53e3 function)\r\n# Date &amp; Author..: 2007\/02\/06 by Brendan\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_create_customer_data()\r\n    \r\n    \r\n    WHENEVER ERROR CONTINUE\r\n    \r\n    CALL aws_ttsrv_preprocess()    #\u547c\u53eb\u670d\u52d9\u524d\u7f6e\u8655\u7406\u7a0b\u5e8f\r\n    \r\n    #--------------------------------------------------------------------------#\r\n    # \u65b0\u589e\u5ba2\u6236\u57fa\u672c\u8cc7\u6599                                                        #\r\n    #--------------------------------------------------------------------------#\r\n    IF g_status.code = \"0\" THEN\r\n       CALL aws_create_customer_data_process()\r\n    END IF\r\n\r\n    CALL aws_ttsrv_postprocess()   #\u547c\u53eb\u670d\u52d9\u5f8c\u7f6e\u8655\u7406\u7a0b\u5e8f\r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u4f9d\u64da\u50b3\u5165\u8cc7\u8a0a\u65b0\u589e\u4e00\u7b46 ERP \u5ba2\u6236\u57fa\u672c\u8cc7\u6599\r\n# Date &amp; Author..: 2007\/02\/08 by Brendan\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_create_customer_data_process()\r\n    DEFINE l_i       LIKE type_file.num10\r\n    DEFINE l_sql     STRING        \r\n    DEFINE l_cnt1    LIKE type_file.num10,\r\n           l_cnt2    LIKE type_file.num10\r\n    DEFINE l_occ01   LIKE occ_file.occ01\r\n    DEFINE l_wc      STRING\r\n    DEFINE l_node    om.DomNode\r\n   \r\n        \r\n    #--------------------------------------------------------------------------#\r\n    # \u8655\u7406\u547c\u53eb\u65b9\u50b3\u905e\u7d66 ERP \u7684\u5ba2\u6236\u57fa\u672c\u8cc7\u6599                                      #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_cnt1 = aws_ttsrv_getMasterRecordLength(\"occ_file\")            #\u53d6\u5f97\u5171\u6709\u5e7e\u7b46\u55ae\u6a94\u8cc7\u6599 *** \u539f\u5247\u4e0a\u61c9\u8a72\u50c5\u4e00\u6b21\u4e00\u7b46\uff01 ***\r\n    IF l_cnt1 = 0 THEN\r\n       LET g_status.code = \"-1\"\r\n       LET g_status.description = \"No recordset processed!\"\r\n       RETURN\r\n    END IF\r\n    \r\n    BEGIN WORK\r\n    \r\n    FOR l_i = 1 TO l_cnt1       \r\n        LET l_node = aws_ttsrv_getMasterRecord(l_i, \"occ_file\")         #\u76ee\u524d\u8655\u7406\u55ae\u6a94\u7684 XML \u7bc0\u9ede\r\n        \r\n        LET l_occ01 = aws_ttsrv_getRecordField(l_node, \"occ01\")         #\u53d6\u5f97\u6b64\u7b46\u55ae\u6a94\u8cc7\u6599\u7684\u6b04\u4f4d\u503c\r\n        IF cl_null(l_occ01) THEN\r\n           LET g_status.code = \"-286\"                                   #\u4e3b\u9375\u7684\u6b04\u4f4d\u503c\u4e0d\u53ef\u70ba NULL\r\n           EXIT FOR\r\n        END IF\r\n        \r\n        #----------------------------------------------------------------------#\r\n        # \u5224\u65b7\u6b64\u8cc7\u6599\u662f\u5426\u5df2\u7d93\u5efa\u7acb, \u82e5\u5df2\u5efa\u7acb\u5247\u70ba Update                          #\r\n        #----------------------------------------------------------------------#\r\n        SELECT COUNT(*) INTO l_cnt2 FROM occ_file WHERE occ01 = l_occ01\r\n        IF l_cnt2 = 0 THEN\r\n           LET l_sql = aws_ttsrv_getRecordSql(l_node, \"occ_file\", \"I\", NULL)   #I \u8868\u793a\u53d6\u5f97 INSERT SQL\r\n        ELSE\r\n           LET l_wc = \" occ01 = '\", l_occ01 CLIPPED, \"' \"                      #UPDATE SQL \u6642\u7684 WHERE condition\r\n           LET l_sql = aws_ttsrv_getRecordSql(l_node, \"occ_file\", \"U\", l_wc)   #U \u8868\u793a\u53d6\u5f97 UPDATE SQL\r\n        END IF\r\n   \r\n        #----------------------------------------------------------------------#\r\n        # \u57f7\u884c INSERT \/ UPDATE SQL                                             #\r\n        #----------------------------------------------------------------------#\r\n        EXECUTE IMMEDIATE l_sql\r\n        IF SQLCA.SQLCODE THEN\r\n           LET g_status.code = SQLCA.SQLCODE\r\n           LET g_status.sqlcode = SQLCA.SQLCODE\r\n           EXIT FOR\r\n        END IF\r\n    END FOR\r\n\r\n    #\u5168\u90e8\u8655\u7406\u90fd\u6210\u529f\u624d COMMIT WORK\r\n    IF g_status.code = \"0\" THEN\r\n       COMMIT WORK\r\n    ELSE\r\n       ROLLBACK WORK\r\n    END IF\r\nEND FUNCTION\r\n<\/code><\/pre>\n<p>\u5199\u5165 ERP \u53cc\u6587\u4ef6, \u4ee5\u4e0b\u8303\u4f8b\u4e3a\u5199\u5165 ERP \u8be2\u4ef7\u5355\u670d\u52a1\uff1a<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"null\"># Prog. Version..: '5.10.00-07.10.03(00001)'     #\r\n#{\r\n# Program name...: aws_create_quotation_data.4gl\r\n# Descriptions...: \u63d0\u4f9b\u5efa\u7acb\u5831\u50f9\u55ae\u8cc7\u6599\u7684\u670d\u52d9\r\n# Date &amp; Author..: 2007\/02\/09 by Brendan\r\n# Memo...........:\r\n# Modify.........: \u65b0\u5efa\u7acb FUN-720021\r\n#\r\n#}\r\n\r\nDATABASE ds\r\n\r\n#FUN-720021\r\n\r\nGLOBALS \"..\/..\/config\/top.global\"\r\n\r\nGLOBALS \"..\/4gl\/aws_ttsrv2_global.4gl\"   #TIPTOP Service Gateway \u4f7f\u7528\u7684\u5168\u57df\u8b8a\u6578\u6a94\r\n\r\n\r\n#[\r\n# Description....: \u63d0\u4f9b\u5efa\u7acb\u5831\u50f9\u55ae\u8cc7\u6599\u7684\u670d\u52d9(\u5165\u53e3 function)\r\n# Date &amp; Author..: 2007\/02\/09 by Brendan\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_create_quotation_data()\r\n \r\n    \r\n    WHENEVER ERROR CONTINUE\r\n\r\n    CALL aws_ttsrv_preprocess()    #\u547c\u53eb\u670d\u52d9\u524d\u7f6e\u8655\u7406\u7a0b\u5e8f\r\n    \r\n    #--------------------------------------------------------------------------#\r\n    # \u65b0\u589e\u5831\u50f9\u55ae\u8cc7\u6599                                                           #\r\n    #--------------------------------------------------------------------------#\r\n    IF g_status.code = \"0\" THEN\r\n       CALL aws_create_quotation_data_process()\r\n    END IF\r\n\r\n    CALL aws_ttsrv_postprocess()   #\u547c\u53eb\u670d\u52d9\u5f8c\u7f6e\u8655\u7406\u7a0b\u5e8f\r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u4f9d\u64da\u50b3\u5165\u8cc7\u8a0a\u65b0\u589e ERP \u5831\u50f9\u55ae\u8cc7\u6599\r\n# Date &amp; Author..: 2007\/02\/09 by Brendan\r\n# Parameter......: none\r\n# Return.........: none\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_create_quotation_data_process()\r\n    DEFINE l_i        LIKE type_file.num10,\r\n       l_j        LIKE type_file.num10\r\n    DEFINE l_sql      STRING        \r\n    DEFINE l_cnt      LIKE type_file.num10,\r\n           l_cnt1     LIKE type_file.num10,\r\n           l_cnt2     LIKE type_file.num10\r\n    DEFINE l_oqt01    LIKE oqt_file.oqt01,\r\n           l_oqt02    LIKE oqt_file.oqt02\r\n    DEFINE l_oqu03    LIKE oqu_file.oqu03\r\n    DEFINE l_node1    om.DomNode,\r\n           l_node2    om.DomNode\r\n    DEFINE l_flag     LIKE type_file.num10\r\n    DEFINE l_return   RECORD                           #\u56de\u50b3\u503c\u5fc5\u9808\u5ba3\u544a\u70ba\u4e00\u500b RECORD \u8b8a\u6578, \u4e14\u6b64 RECORD \u9700\u5305\u542b\u6240\u6709\u8981\u56de\u50b3\u7684\u6b04\u4f4d\u540d\u7a31\u8207\u5b9a\u7fa9\r\n                         oqt01   LIKE oqt_file.oqt01   #\u56de\u50b3\u7684\u6b04\u4f4d\u540d\u7a31\r\n                      END RECORD\r\n\r\n        \r\n    #--------------------------------------------------------------------------#\r\n    # \u8655\u7406\u547c\u53eb\u65b9\u50b3\u905e\u7d66 ERP \u7684\u5831\u50f9\u55ae\u8cc7\u6599                                        #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_cnt1 = aws_ttsrv_getMasterRecordLength(\"oqt_file\")            #\u53d6\u5f97\u5171\u6709\u5e7e\u7b46\u55ae\u6a94\u8cc7\u6599 *** \u539f\u5247\u4e0a\u61c9\u8a72\u50c5\u4e00\u6b21\u4e00\u7b46\uff01 ***\r\n    IF l_cnt1 = 0 THEN\r\n       LET g_status.code = \"-1\"\r\n       LET g_status.description = \"No recordset processed!\"\r\n       RETURN\r\n    END IF\r\n    \r\n    BEGIN WORK\r\n    \r\n    FOR l_i = 1 TO l_cnt1       \r\n        LET l_node1 = aws_ttsrv_getMasterRecord(l_i, \"oqt_file\")        #\u76ee\u524d\u8655\u7406\u55ae\u6a94\u7684 XML \u7bc0\u9ede\r\n        \r\n        LET l_oqt01 = aws_ttsrv_getRecordField(l_node1, \"oqt01\")         #\u53d6\u5f97\u6b64\u7b46\u55ae\u6a94\u8cc7\u6599\u7684\u6b04\u4f4d\u503c\r\n        LET l_oqt02 = aws_ttsrv_getRecordField(l_node1, \"oqt02\")\r\n        \r\n        #----------------------------------------------------------------------#\r\n        # \u5831\u50f9\u55ae\u81ea\u52d5\u53d6\u865f                                                       #\r\n        #----------------------------------------------------------------------#       \r\n        CALL s_check_no(\"AXM\", l_oqt01, \"\", \"10\", \"oqt_file\", \"oqt01\", \"\")\r\n             RETURNING l_flag, l_oqt01\r\n        IF NOT l_flag THEN\r\n           LET g_status.code = \"axm-551\"   #\u5831\u50f9\u55ae\u81ea\u52d5\u53d6\u865f\u5931\u6557\r\n           EXIT FOR\r\n        END IF\r\n        CALL s_auto_assign_no(\"AXM\", l_oqt01, l_oqt02, \"10\", \"oqt_file\", \"oqt01\", \"\", \"\", \"\")\r\n             RETURNING l_flag, l_oqt01\r\n        IF NOT l_flag THEN\r\n           LET g_status.code = \"axm-551\"   #\u5831\u50f9\u55ae\u81ea\u52d5\u53d6\u865f\u5931\u6557\r\n           EXIT FOR\r\n        END IF\r\n        \r\n        CALL aws_ttsrv_setRecordField(l_node1, \"oqt01\", l_oqt01)   #\u66f4\u65b0 XML \u53d6\u865f\u5b8c\u6210\u5f8c\u7684\u5831\u50f9\u55ae\u55ae\u865f\u6b04\u4f4d(oqt01)\r\n        \r\n        IF NOT aws_create_quotation_data_default(l_node1) THEN     #\u6aa2\u67e5\u5831\u50f9\u55ae\u6b04\u4f4d\u9810\u8a2d\u503c\r\nEND IF\r\n        \r\n        LET l_sql = aws_ttsrv_getRecordSql(l_node1, \"oqt_file\", \"I\", NULL)   #I \u8868\u793a\u53d6\u5f97 INSERT SQL\r\n   \r\n        #----------------------------------------------------------------------#\r\n        # \u57f7\u884c\u55ae\u982d INSERT SQL                                                  #\r\n        #----------------------------------------------------------------------#\r\n        EXECUTE IMMEDIATE l_sql\r\n        IF SQLCA.SQLCODE THEN\r\n           LET g_status.code = SQLCA.SQLCODE\r\n           LET g_status.sqlcode = SQLCA.SQLCODE\r\n           EXIT FOR\r\n        END IF\r\n        \r\n        #----------------------------------------------------------------------#\r\n        # \u8655\u7406\u55ae\u8eab\u8cc7\u6599                                                         #\r\n        #----------------------------------------------------------------------#\r\n        LET l_cnt2 = aws_ttsrv_getDetailRecordLength(l_node1, \"oqu_file\")       #\u53d6\u5f97\u76ee\u524d\u55ae\u982d\u5171\u6709\u5e7e\u7b46\u55ae\u8eab\u8cc7\u6599\r\n        IF l_cnt2 = 0 THEN\r\n           LET g_status.code = \"mfg-009\"   #\u5fc5\u9808\u6709\u55ae\u8eab\u8cc7\u6599\r\n           EXIT FOR\r\n        END IF\r\n        \r\n        FOR l_j = 1 TO l_cnt2\r\n            LET l_node2 = aws_ttsrv_getDetailRecord(l_node1, l_j, \"oqu_file\")   #\u76ee\u524d\u55ae\u8eab\u7684 XML \u7bc0\u9ede\r\n        \r\n            CALL aws_ttsrv_setRecordField(l_node2, \"oqu01\", l_oqt01)            #\u5beb\u5165\u81ea\u52d5\u7de8\u865f\u7522\u751f\u7684\u5831\u50f9\u55ae\u55ae\u865f  \r\n        \r\n            #------------------------------------------------------------------#\r\n            # \u6aa2\u67e5\u6599\u4ef6\u7de8\u865f\u8cc7\u6599\u662f\u5426\u6b63\u78ba                                         #\r\n            #------------------------------------------------------------------#\r\n            LET l_oqu03 = aws_ttsrv_getRecordField(l_node2, \"oqu03\")\r\n            SELECT COUNT(*) INTO l_cnt FROM ima_file WHERE ima01 = l_oqu03\r\n            IF l_cnt = 0 THEN\r\n               LET g_status.code = \"mfg0002\"   #\u6599\u4ef6\u4e3b\u6a94\u4e2d\u7121\u6b64\u6599\u4ef6\u7de8\u865f\r\n               EXIT FOR\r\n            END IF\r\n            \r\n            LET l_sql = aws_ttsrv_getRecordSql(l_node2, \"oqu_file\", \"I\", NULL)   #I \u8868\u793a\u53d6\u5f97 INSERT SQL\r\n            \r\n            #------------------------------------------------------------------#\r\n            # \u57f7\u884c\u55ae\u8eab INSERT SQL                                              #\r\n            #------------------------------------------------------------------#\r\n            EXECUTE IMMEDIATE l_sql\r\n            IF SQLCA.SQLCODE THEN\r\n               LET g_status.code = SQLCA.SQLCODE\r\n               LET g_status.sqlcode = SQLCA.SQLCODE\r\n               EXIT FOR\r\n            END IF\r\n        END FOR\r\n        IF g_status.code != \"0\" THEN   #\u5982\u679c\u55ae\u8eab\u8655\u7406\u6709\u4efb\u4f55\u932f\u8aa4, \u5247\u96e2\u958b\r\n           EXIT FOR\r\n        END IF\r\n     \r\n    END FOR\r\n    \r\n    #\u5168\u90e8\u8655\u7406\u90fd\u6210\u529f\u624d COMMIT WORK\r\n    IF g_status.code = \"0\" THEN\r\n       LET l_return.oqt01 = l_oqt01\r\n       CALL aws_ttsrv_addParameterRecord(base.TypeInfo.create(l_return))   #\u56de\u50b3 ERP \u5efa\u7acb\u7684\u5831\u50f9\u55ae\u55ae\u865f\r\n       COMMIT WORK\r\n    ELSE\r\n       ROLLBACK WORK\r\n    END IF\r\n    \r\nEND FUNCTION\r\n\r\n\r\n#[\r\n# Description....: \u5831\u50f9\u55ae\u8a2d\u5b9a\u6b04\u4f4d\u9810\u8a2d\u503c\r\n# Date &amp; Author..: 2007\/02\/11 by Brendan\r\n# Parameter......: p_node   - om.DomNode - \u5831\u50f9\u55ae\u55ae\u982d XML \u7bc0\u9ede \r\n# Return.........: l_status - INTEGER    - TRUE \/ FALSE \u9810\u8a2d\u503c\u6aa2\u67e5\u7d50\u679c\r\n# Memo...........:\r\n# Modify.........:\r\n#\r\n#]\r\nFUNCTION aws_create_quotation_data_default(p_node)\r\n    DEFINE p_node      om.DomNode\r\n    DEFINE l_oqt04     LIKE oqt_file.oqt04,\r\n           l_oqt06     LIKE oqt_file.oqt06,\r\n           l_oqt07     LIKE oqt_file.oqt07,\r\n           l_oqt10     LIKE oqt_file.oqt10,\r\n           l_oqt11     LIKE oqt_file.oqt11,\r\n           l_oqtconf   LIKE oqt_file.oqtconf   #\u5831\u50f9\u55ae\u78ba\u8a8d\u78bc\r\n    DEFINE l_cnt       LIKE type_file.num5\r\n\r\n  \r\n    #--------------------------------------------------------------------------#\r\n    # \u6aa2\u67e5\u5ba2\u6236\u7de8\u865f\u8cc7\u6599\u662f\u5426\u6b63\u78ba                                                 #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_oqt04 = aws_ttsrv_getRecordField(p_node, \"oqt04\")\r\n    SELECT COUNT(*) INTO l_cnt FROM occ_file WHERE occ01 = l_oqt04\r\n    IF l_cnt = 0 THEN\r\n       LET g_status.code = \"mfg4106\"   #\u7121\u6b64\u5ba2\u6236\u7de8\u865f\u8cc7\u6599\u5b58\u5728\r\n       RETURN FALSE\r\n    END IF\r\n\r\n    #--------------------------------------------------------------------------#\r\n    # \u4f9d\u64da ERP \u696d\u52d9\u54e1\u7de8\u865f\uff0c\u81ea\u52d5\u9810\u8a2d\u90e8\u9580\u7de8\u865f(\u82e5\u547c\u53eb\u7aef\u7121\u7d66\u4e88\u90e8\u9580\u7de8\u865f\u6b04\u4f4d\u503c\u6642)    #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_oqt06 = aws_ttsrv_getRecordField(p_node, \"oqt06\")    \r\n    IF cl_null(l_oqt06) THEN\r\n       LET l_oqt07 = aws_ttsrv_getRecordField(p_node, \"oqt07\")\r\n       SELECT gen03 INTO l_oqt06 FROM gen_file WHERE gen01 = l_oqt07\r\n       CALL aws_ttsrv_setRecordField(p_node, \"oqt06\", l_oqt06)\r\n       IF cl_null(l_oqt06) THEN   #\u82e5\u6b04\u4f4d\u503c\u70ba NULL \u503c\u4e14\u53c8\u662f\u5fc5\u8981\u8f38\u5165\u6b04\u4f4d,\u5247\u56de\u50b3\u63d0\u793a\u8a0a\u606f\r\n          #LET g_status.description = cl_getmsg('aws-098', g_lang)  \r\n       END IF \r\n    END IF\r\n\r\n    #--------------------------------------------------------------------------#\r\n    # \u4f9d\u64da ERP \u5ba2\u6236\u7de8\u865f, \u81ea\u52d5\u9810\u8a2d\u4ea4\u6613\u689d\u4ef6(\u82e5\u547c\u53eb\u7aef\u7121\u7d66\u4e88\u4ea4\u6613\u689d\u4ef6\u6b04\u4f4d\u503c\u6642)      #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_oqt10 = aws_ttsrv_getRecordField(p_node, \"oqt10\")\r\n    IF cl_null(l_oqt10) THEN\r\n       SELECT occ44 INTO l_oqt10 FROM occ_file WHERE occ01 = l_oqt04      \r\n       CALL aws_ttsrv_setRecordField(p_node, \"oqt10\", l_oqt10)\r\n       IF cl_null(l_oqt10) THEN   #\u82e5\u6b04\u4f4d\u503c\u70ba NULL \u503c\u4e14\u53c8\u662f\u5fc5\u8981\u8f38\u5165\u6b04\u4f4d,\u5247\u56de\u50b3\u63d0\u793a\u8a0a\u606f\r\n          #LET g_status.description = cl_getmsg('aws-098', g_lang)\r\n       END IF \r\n    END IF\r\n\r\n    #--------------------------------------------------------------------------#\r\n    # \u4f9d\u64da ERP \u5ba2\u6236\u7de8\u865f, \u81ea\u52d5\u9810\u8a2d\u904b\u8f38\u65b9\u5f0f(\u82e5\u547c\u53eb\u7aef\u7121\u7d66\u4e88\u904b\u8f38\u65b9\u5f0f\u6b04\u4f4d\u503c\u6642)      #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_oqt11 = aws_ttsrv_getRecordField(p_node, \"oqt11\")\r\n    IF cl_null(l_oqt11) THEN\r\n       SELECT occ47 INTO l_oqt11 FROM occ_file WHERE occ01 = l_oqt04     \r\n       CALL aws_ttsrv_setRecordField(p_node, \"oqt11\", l_oqt11)\r\n       IF cl_null(l_oqt11) THEN   #\u82e5\u6b04\u4f4d\u503c\u70ba NULL \u503c\u4e14\u53c8\u662f\u5fc5\u8981\u8f38\u5165\u6b04\u4f4d,\u5247\u56de\u50b3\u63d0\u793a\u8a0a\u606f  \r\n          #LET g_status.description = cl_getmsg('aws-098', g_lang)\r\n       END IF \r\n    END IF\r\n\r\n    #--------------------------------------------------------------------------#\r\n    # \u7576\u6b04\u4f4d\u9810\u8a2d\u503c\u7570\u5e38\u6642\uff0c\u5247\u4e0d\u53ef\u81ea\u52d5\u78ba\u8a8d                                       #\r\n    #--------------------------------------------------------------------------#\r\n    LET l_oqtconf = aws_ttsrv_getRecordField(p_node, \"oqtconf\")\r\n    IF l_oqtconf = \"Y\" AND ( NOT cl_null(g_status.description) ) THEN\r\n       #-----------------------------------------------------------------------#\r\n       # \u7570\u5e38\u6642\uff0c\u78ba\u8a8d\u78bc\u70ba\u300cN:\u672a\u78ba\u8a8d\u300d\u3001\u72c0\u6cc1\u78bc\u70ba\u300c0:\u958b\u7acb\u300d                      #\r\n       #-----------------------------------------------------------------------#\r\n       CALL aws_ttsrv_setRecordField(p_node, \"oqtconf\", \"N\")\r\n       CALL aws_ttsrv_setRecordField(p_node, \"oqt21\", \"0\")\r\n    ELSE\r\n       #-----------------------------------------------------------------------#\r\n       # \u78ba\u8a8d\u78bc\u70ba\u300cY:\u5df2\u78ba\u8a8d\u300d\uff0c\u72c0\u6cc1\u78bc\u61c9\u8a72\u300c1:\u5df2\u6838\u51c6\u300d;                         #\r\n       # \u78ba\u8a8d\u78bc\u70ba\u300cN:\u5df2\u78ba\u8a8d\u300d\uff0c\u72c0\u6cc1\u78bc\u61c9\u8a72\u300c0:\u958b\u7acb\u300d                            #\r\n       #-----------------------------------------------------------------------#\r\n       IF l_oqtconf = \"Y\" THEN\r\n          CALL aws_ttsrv_setRecordField(p_node, \"oqt21\", \"1\")\r\n       ELSE\r\n          CALL aws_ttsrv_setRecordField(p_node, \"oqt21\", \"0\")\r\n       END IF\r\n    END IF\r\n    \r\n    RETURN TRUE\r\nEND FUNCTION\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.hefeiyu.com\">\u8d6b\u975e\u57df<\/a> &raquo; <a href=\"https:\/\/www.hefeiyu.com\/?p=739\">TIPTOP Service Gateway ver 2.0<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>TIPTOP Service Gateway ver 2.0 \u7b80\u8ff0 &nbsp; \u6982\u5ff5 \u900f\u8fc7\u4e00\u5171\u540c\u7684 Web Services \u5b58\u53d6\u70b9(URL), \u4e0d\u540c\u670d\u52a1\u9700\u6c42\u800c ERP \u7aef\u6709\u64b0\u5199\u5bf9\u5e94\u7684 4GL function \u6765\u56de\u5e94. \u7ecf\u8fc7\u5404\u79cd\u529f\u80fd\u9700\u6c42\u7684 4GL [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[242,49,229],"class_list":["post-739","post","type-post","status-publish","format-standard","hentry","category-4gl","tag-function","tag-gl","tag-service"],"_links":{"self":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=739"}],"version-history":[{"count":3,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/739\/revisions"}],"predecessor-version":[{"id":743,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=\/wp\/v2\/posts\/739\/revisions\/743"}],"wp:attachment":[{"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hefeiyu.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}