zoukankan      html  css  js  c++  java
  • 智遥工作流中调用SAP基础数据

         话说公司选用智遥工作流,就是看中智遥的扩展灵活,与SAP系统交互方便。
     
         SAP系统是公司花了血本上的,公司的运作都是以SAP为基础的。要想开发出实用的工作流,难免要从SAP取数据。尤其是一些公司基本信息,很多流程都要用到,比如:工厂资料,客户资料,供应商资料,物料信息等等。
     
         通常我们要调用其他系统的数据时,直接连接他们的数据库,然后直接调用里面的数据就好了,但是SAP不允许这样直接连接他的数据库,只能通过写程序来调用SAP中的RFC程序。
     
         如果每调用一个基础数据就写一个对应的RFC,个人感觉太麻烦了,太费力了(没办法,我懒人就是这样想的);于是就想写一个通用的RFC,通过传递不同的参数,来获取到想要的基础数据。
    如图: 
     
    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还是挺简单的。

    有些日子没写博客了,加油~~~~~

     
  • 相关阅读:
    无法在WEB服务器上启动调试
    Zedgraph悬停时显示内容闪烁的解决
    用ZedGraph控件作图圆
    34.node.js之Url & QueryString模块
    33.Node.js 文件系统fs
    32.Node.js中的常用工具类util
    31.Node.js 常用工具 util
    30.Node.js 全局对象
    28.Node.js 函数和匿名函数
    27.Node.js模块系统
  • 原文地址:https://www.cnblogs.com/zhiyao/p/3156051.html
Copyright © 2011-2022 走看看