设为首页 收藏本站
查看: 1231|回复: 0

[经验分享] 智遥工作流中调用SAP基础数据

[复制链接]

尚未签到

发表于 2015-9-21 13:16:57 | 显示全部楼层 |阅读模式
话说公司选用智遥工作流,就是看中智遥的扩展灵活,与SAP系统交互方便。



     SAP系统是公司花了血本上的,公司的运作都是以SAP为基础的。要想开发出实用的工作流,难免要从SAP取数据。尤其是一些公司基本信息,很多流程都要用到,比如:工厂资料,客户资料,供应商资料,物料信息等等。



     通常我们要调用其他系统的数据时,直接连接他们的数据库,然后直接调用里面的数据就好了,但是SAP不允许这样直接连接他的数据库,只能通过写程序来调用SAP中的RFC程序。



     如果每调用一个基础数据就写一个对应的RFC,个人感觉太麻烦了,太费力了(没办法,我懒人就是这样想的);于是就想写一个通用的RFC,通过传递不同的参数,来获取到想要的基础数据。

如图: DSC0000.jpg

DSC0001.jpg

RFC代码如下:




  1 FUNCTION ZGET_KEY_TEXT_LIST.
  2   DATA:BEGIN OF T_ZLIST OCCURS 0.
  3           INCLUDE STRUCTURE ZLIST.
  4   DATA:END OF T_ZLIST.
  5
  6   DATA:BEGIN OF T_TEMP OCCURS 0.
  7           INCLUDE STRUCTURE ZLIST.
  8   DATA:END OF T_TEMP.
  9
10   T_TEMP[] = ZLIST[].
11   IF KEY1 <> SPACE OR KEY2 <> SPACE OR KEY3 <> SPACE.
12     CLEAR:T_TEMP.
13     T_TEMP-KEY1 = KEY1.
14     T_TEMP-KEY2 = KEY2.
15     T_TEMP-KEY3 = KEY3.
16     APPEND T_TEMP.
17   ENDIF.
18
19   IF KEY2 IS INITIAL .
20     SORT T_TEMP BY KEY1 .
21     DELETE ADJACENT DUPLICATES FROM T_TEMP COMPARING KEY1.
22   ELSEIF KEY3 IS INITIAL .
23     SORT T_TEMP BY KEY1 KEY2 .
24     DELETE ADJACENT DUPLICATES FROM T_TEMP COMPARING KEY1 KEY2 .
25   ELSE.
26     SORT T_TEMP BY KEY1 KEY2 KEY3.
27     DELETE ADJACENT DUPLICATES FROM T_TEMP COMPARING KEY1 KEY2 KEY3.
28   ENDIF.
29
30 * GET ALL OR SINGLE OR LIST IN TABLE
31   REFRESH:T_ZLIST.
32
33   IF TABLE_NAME = 'T024'."PUR.GROUP
34     SELECT EKNAM EKGRP INTO TABLE T_ZLIST
35       FROM T024.
36   ELSEIF TABLE_NAME = 'TCURT'."CURRENCY
37     SELECT LTEXT WAERS INTO TABLE T_ZLIST
38       FROM TCURT
39       WHERE SPRAS = 'E' .
40   ELSEIF TABLE_NAME = 'T005T'."COUNTRY
41     SELECT LANDX50 LAND1 INTO TABLE T_ZLIST
42       FROM T005T
43       WHERE SPRAS = 'E' .
44   ELSEIF TABLE_NAME = 'BNKA'."BANK KEY
45     SELECT BANKA BANKS BANKL INTO TABLE T_ZLIST
46       FROM BNKA .
47   ELSEIF TABLE_NAME = 'TINCT'."INCO TERM
48     SELECT BEZEI INCO1 INTO TABLE T_ZLIST
49       FROM TINCT
50       WHERE SPRAS = 'E' .
51   ELSEIF TABLE_NAME = 'T052U'."Payment term
52     SELECT T052U~TEXT1 T052U~ZTERM
53       INTO TABLE T_ZLIST
54       FROM T052 INNER JOIN T052U ON T052~ZTERM = T052U~ZTERM
55                                 AND T052~ZTAGG = T052U~ZTAGG
56       WHERE T052~KOART IN ('K' , SPACE)
57         AND T052U~SPRAS = 'E' .
58 *ZBC 20130319 added begin
59   ELSEIF TABLE_NAME = 'T015W'."Instruction keys
60     SELECT DTZUS DTAWS BANKS ZLSCH INTO TABLE T_ZLIST
61       FROM T015W .
62   ELSEIF TABLE_NAME = 'T042Z'."Payment Methods
63     SELECT TEXT1 ZLSCH LAND1 INTO TABLE T_ZLIST
64       FROM T042Z .
65   ELSEIF TABLE_NAME = 'ZVEN2'."Vendor Group
66     SELECT VCNAME VCCODE INTO TABLE T_ZLIST
67       FROM ZVEN2 .
68 *ZBC 20130319 added end.
69
70 *ZBC 20130408 added begin
71   ELSEIF TABLE_NAME = 'ZCOM'."Company for Vendor creation workflow
72     SELECT BUKRS INTO TABLE T_ZLIST
73       FROM ZCOM .
74   ELSEIF TABLE_NAME = 'ZPORG'."Pur.Org for Vendor creation workflow
75     SELECT EKORG INTO TABLE T_ZLIST
76       FROM ZPORG .
77 *ZBC 20130408 added end.
78
79 * 如果有新的Table,请加在这里即可。
80   ELSE.
81     RAISE TABLE_NAME_NOT_EXIST.
82     EXIT.
83   ENDIF.
84
85   IF SY-SUBRC <> 0 .
86     RAISE NO_DATA_FOUND.
87   ENDIF.
88
89   REFRESH:ZLIST.
90   CLEAR:TEXT.
91
92   IF T_TEMP[] IS INITIAL.
93     LOOP AT T_ZLIST.
94       APPEND T_ZLIST TO ZLIST.
95       IF KEY1 = T_ZLIST-KEY1 AND KEY2 = T_ZLIST-KEY2 AND
96          KEY3 = T_ZLIST-KEY3.
97         TEXT = T_ZLIST-TEXT.
98       ENDIF.
99     ENDLOOP.
100   ELSE.
101     LOOP AT T_ZLIST.
102       READ TABLE T_TEMP WITH KEY KEY1 = T_ZLIST-KEY1
103                                  KEY2 = T_ZLIST-KEY2
104                                  KEY3 = T_ZLIST-KEY3 BINARY SEARCH.
105       IF SY-SUBRC <> 0 .
106         CONTINUE.
107       ENDIF.
108
109       APPEND T_ZLIST TO ZLIST.
110       IF KEY1 = T_ZLIST-KEY1 AND KEY2 = T_ZLIST-KEY2 AND
111          KEY3 = T_ZLIST-KEY3.
112         TEXT = T_ZLIST-TEXT.
113       ENDIF.
114     ENDLOOP.
115   ENDIF.
116
117 ENDFUNCTION.
  智遥工作流中调用RFC代码:



//获取SAP中所有的采购组织信息
SapRFCHelper SAPH = new SapRFCHelper();
string k1 = "";
string k2 = "";
string k3 = "";
string table_name = "T024";
string[] param = {
"KEY1|"+k1,
"KEY2|"+k2,
"KEY3|"+k3,
"TABLE_NAME|"+table_name                           
};
DataTable dt_result = SAPH.GetRfcOutTable("Sapconn", param, "ZGET_KEY_TEXT_LIST", "ZLIST");
//Sapconn 是系统设置好的链接参数
//ZGET_KEY_TEXT_LIST 就是刚才的RFC名称
//ZLIST 就是返回的结果表名称
  注:之前在网上搜过用C#调用SAP RFC的代码,一大坨,看了头痛。智遥工作流调用RFC还是挺简单的。
  有些日子没写博客了,加油~~~~~
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116786-1-1.html 上篇帖子: 修改SAP系统字段文本 下篇帖子: EPR和SAP的一些名词解释(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表