使用事务码DBCO实现SAP链接外部数据库以及读取例程

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

一、链接SQLServer数据库

执行事务码DBCO,点新条目按钮,填写如下图所示信息

这里的连接信息很接近 Sql Server 的连接字符串,但是参数名略有不同。指定主机IP、数据库名即可。

二、链接DB2数据库
执行事务码DBCO,点新条目按钮,填写如下图所示信息

连接信息看上去比较直接,分别是数据库名、端口号、主机IP地址。

三、链接Oracle数据库

执行事务码DBCO,点新条目按钮,填写如下图所示信息

连接信息比较隐晦,必须在 SAP 应用服务器上安装 Oracle Client,然后设置连接,并在这里将连接信息指定与连接名一致。
为了防止乱码,我们还应该在链接信息后加如下参数:ZHS16GBK
格式如下:ORCL.WORLD:ZHS16GBK

四、链接MaxDB数据库

执行事务码DBCO,点新条目按钮,填写如下图所示信息

MaxDB 是 SAP 自己的数据库,这个连接则是 NetWeaver Developer 版中默认创建的一个连接

访问外部数据库


 
1. 实例:SAP系统访问PeopleSoft数据库

*&----------------------------------------------------------------------------------------------------- &*
*& 定义常量                                                                                           &*
*&------------------------------------------------------------------------------------------------------&*
CONSTANTS: CNS_YGJK TYPE C LENGTH 10 VALUE 'HR9DEV'. 
 
**打开连接
  EXEC SQL.
    CONNECT TO :CNS_YGJK
  ENDEXEC.
 
***获取人事数据
  TRY.
      EXEC SQL PERFORMING PF_GET_RS.
        SELECT MANDT,
               ZID,
               OTYPE,
               INFTY,
               ZUPDATE,
               OPERA,
               ZDATA
          INTO :WA_HR01-MANDT,
               :WA_HR01-ZID,
               :WA_HR01-OTYPE,
               :WA_HR01-INFTY,
               :WA_HR01-ZUPDATE,
               :WA_HR01-OPERA,
               :WA_HR01-ZDATA
          FROM z00hrjzlch01
         WHERE SAP_GET = ''
      ENDEXEC.
 
**处理人事数据
      IF IT_HR01[] IS NOT INITIAL.
        LOOP AT IT_HR01 INTO WA_HR01.
          EXEC SQL.
            UPDATE z00hrjzlch01
               SET SAP_GET = 'X'
             WHERE MANDT = :WA_HR01-MANDT
               AND ZID = :WA_HR01-ZID
          ENDEXEC.
          IF SY-SUBRC = 0.
*********更新ERP数据库表
            EXEC SQL.
              COMMIT
            ENDEXEC.
            MODIFY Z00HRJZLCH01 FROM WA_HR01.
            COMMIT WORK.
          ENDIF.
        ENDLOOP.
      ENDIF.
**关闭连接
      EXEC SQL.
        DISCONNECT :CNS_YGJK
      ENDEXEC.
**获取异常
    CATCH CX_SY_NATIVE_SQL_ERROR INTO CL_EXEC_REF.
      EXIT.
    CATCH CX_SQL_EXCEPTION INTO CL_SQLERR_REF.
      EXIT.
  ENDTRY. 
*&---------------------------------------------------------------------*
*&      Form  PF_GET_ZZ
*&---------------------------------------------------------------------*
*       组织增量数据
*----------------------------------------------------------------------*
FORM PF_GET_ZZ .
  APPEND WA_HR02 TO IT_HR02.
ENDFORM. 

事务代码:DBCO查看,SAP系统现存的连接

程序中使用的是连接【HR9DEV.WORLD】,双击这行如下图所示:

先在SAP底层ORACLE数据库编辑TNS文件,一般由BASIS配置完成,配置路径:DIR_ORAHOME->network->admin->tnsnames.ora;配置完成后我们可以用事务码:AL11查看配置是否正确,AL11查看连接【HR9DEV.WORLD】具体配置

博客转移,点击进入:使用事务码DBCO实现SAP链接外部数据库以及读取例程

我在公众号里写了很多SAP的文章

有兴趣可以关注一下

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Windows 11的API实现HID蓝牙连接和通信,你可以使用Windows.Devices.Bluetooth.GenericAttributeProfile命名空间中提供的类来实现。以下是一个简单的C#代示例: ``` using System; using System.Linq; using System.Threading.Tasks; using Windows.Devices.Bluetooth; using Windows.Devices.Bluetooth.GenericAttributeProfile; using Windows.Devices.Enumeration; namespace BluetoothHIDExample { class Program { static async Task Main(string[] args) { // 获取系统中所有蓝牙设备 string deviceSelector = BluetoothDevice.GetDeviceSelector(); var devices = await DeviceInformation.FindAllAsync(deviceSelector); // 查找HID设备 var hidDevice = devices.FirstOrDefault(device => { return device.Name.StartsWith("HID Device Name"); }); if (hidDevice == null) { Console.WriteLine("未找到HID设备"); return; } // 连接到HID设备 var bluetoothDevice = await BluetoothDevice.FromIdAsync(hidDevice.Id); var gattServicesResult = await bluetoothDevice.GetGattServicesAsync(); var gattService = gattServicesResult.Services.FirstOrDefault(service => { return service.Uuid == GattServiceUuids.HumanInterfaceDevice; }); if (gattService == null) { Console.WriteLine("未能连接到HID服务"); return; } // 获取HID服务的特征 var gattCharacteristicsResult = await gattService.GetCharacteristicsAsync(); var gattCharacteristic = gattCharacteristicsResult.Characteristics.FirstOrDefault(characteristic => { return characteristic.Uuid == GattCharacteristicUuids.Report; }); if (gattCharacteristic == null) { Console.WriteLine("未找到HID服务的特征"); return; } // 订阅HID服务的通知 var status = await gattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify); if (status == GattCommunicationStatus.Success) { Console.WriteLine("成功订阅HID服务的通知"); } else { Console.WriteLine("未能订阅HID服务的通知"); return; } // 接收HID服务的通知 gattCharacteristic.ValueChanged += (sender, args) => { var reader = DataReader.FromBuffer(args.CharacteristicValue); byte[] inputReport = new byte[args.CharacteristicValue.Length]; reader.ReadBytes(inputReport); Console.WriteLine($"收到HID服务的通知,内容为:{BitConverter.ToString(inputReport)}"); }; } } } ``` 请注意,此示例仅演示了如何连接到HID设备并订阅其通知。要实现完整的HID蓝牙通信,你需要进一步了解HID协议和蓝牙GATT协议,并使用相应的API实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值