`

SAP与外部数据库ORACLE操作

    博客分类:
  • abap
 
阅读更多

配置 DBCO

在SAP服务器路径下配置oracle连接。

 

实例代码

*********begin-zhugx 8D 生产订单**************
DATA: qmtab1 LIKE TABLE OF zqm004 WITH HEADER LINE.
DATA: con_name TYPE string.
IF sy-mandt = '800'.
  con_name = 'ZPRDOA'. "正式环境
ELSE.
  con_name = 'ZOA'. "OA环境
ENDIF.

DATA: qmstr(50) TYPE c.
DATA: qmstr1(10) TYPE c.
DATA: qmstr2(12) TYPE c.
DATA: qmstr3(20) TYPE c.
DATA: qmstr4(4) TYPE c value 'NG'.
DATA: qmnum TYPE i.
DATA: qmnum1 TYPE i.
DATA: d1 LIKE sy-datum.
d1 = sy-datum.
DATA: zaufnr LIKE mseg-aufnr.  "生产订单
DATA: zaufps LIKE mseg-aufps.  "生产订单行项目
DATA: zebeln LIKE mseg-ebeln.  "采购订单
DATA: zebelp LIKE mseg-ebelp.  "采购订单行项目
DATA: zmatnr TYPE mseg-matnr.  "物料
DATA: zwerks1 LIKE mseg-werks. "工厂
DATA: zbwart LIKE mseg-bwart.  "移动类型(库存管理)
DATA: zvgart LIKE mkpf-vgart.  "交易/事件类型
***********生产订单交易类型是 WF 采购订单是WE 使用MIGO时考虑生产订单和销售订单*************
zmatnr = i_mseg-matnr.
zwerks1 = i_mseg-werks.
zvgart = i_mkpf-vgart.
zbwart = i_mseg-bwart.
IF sy-tcode = 'MIGO' AND zbwart = '101' AND ( zvgart = 'WF' OR zvgart = 'WE' ).

  IF zvgart = 'WF'.
    qmstr3 = '生产工单入库'.
    zaufnr = i_mseg-aufnr.  "生产订单
    zaufps = i_mseg-aufps.  "生产订单行项目
  ENDIF.
  IF zvgart = 'WE'.
    qmstr3 = '采购订单入库'.
    zebeln = i_mseg-ebeln.  "采购订单
    zebelp = i_mseg-ebelp.  "采购订单行项目
  ENDIF.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE qmtab1 FROM zqm004
WHERE zqm004~zmatnr = zmatnr  AND zqm004~zqmawerks = zwerks1.
  IF sy-subrc = 0.
    LOOP AT qmtab1.

      IF qmtab1-zstate = 'OPEN'.
        IF qmtab1-ztype IS INITIAL OR qmtab1-ztype =  qmstr3.

************打开数据库连接**************
          EXEC SQL.
            CONNECT TO :con_name
          ENDEXEC.
******************操作OA数据*****************

            IF zvgart = 'WF'.
              EXEC SQL.
            select count(*) into :qmnum from whir$8Dxgqr where whir$8Dxgqr_ddhm = :zaufnr
              ENDEXEC.
            ENDIF.
            IF zvgart = 'WE'.
             EXEC SQL.
            select count(*) into :qmnum from whir$8Dxgqr where whir$8Dxgqr_ddhm = :zebeln and whir$8Dxgqr_ddhxm = :zebelp
              ENDEXEC.
       ENDIF.

          IF qmnum > 0.


              IF ZVGART = 'WF'.
               EXEC SQL.
              select count(*) into :qmnum1 from whir$8Dxgqr where whir$8Dxgqr_ddhm = :zaufnr and ( whir$8Dxgqr_gjjg = :qmstr4 OR whir$8Dxgqr_gjjg IS null )
               ENDEXEC.
             ENDIF.
              IF ZVGART = 'WE'.
                EXEC SQL.
              select count(*) into :qmnum1 from whir$8Dxgqr where whir$8Dxgqr_ddhm = :ZEBELN and whir$8Dxgqr_ddhxm = :ZEBELP and
              ( whir$8Dxgqr_gjjg = :qmstr4 OR whir$8Dxgqr_gjjg IS null )
               ENDEXEC.
              ENDIF.

            IF qmnum1 > 0.

              CONCATENATE '请在OA中跟进8D编号为'  qmtab1-zqmnum '的跟进结果' INTO qmstr.
              MESSAGE qmstr  TYPE 'E'.

            ENDIF.
          ELSE.

            EXEC SQL.
              select whir$8D_id into :qmstr2 from whir$8D where whir$8D_8Dbh = :QMTAB1-ZQMNUM
            ENDEXEC.
            IF qmstr2 IS NOT INITIAL.

                IF ZVGART = 'WF'.
                  EXEC SQL.
                insert into whir$8Dxgqr ( whir$8Dxgqr_id, whir$8Dxgqr_date, whir$8Dxgqr_ddhm, WHIR$8DXGQR_FOREIGNKEY)
                values (WF_SEQUENCE.nextval,  :d1, :ZAUFNR, :qmstr2 )
                  ENDEXEC.
                ENDIF.
                IF ZVGART = 'WE'.
                 EXEC SQL.
                insert into whir$8Dxgqr ( whir$8Dxgqr_id, whir$8Dxgqr_date, whir$8Dxgqr_ddhm, whir$8Dxgqr_ddhxm,WHIR$8DXGQR_FOREIGNKEY)
                values (WF_SEQUENCE.nextval,  :d1, :ZEBELN, :ZEBELP, :qmstr2 )
                 ENDEXEC.
                ENDIF.
*                    insert into whir$8Dxgqr ( whir$8Dxgqr_id ) values ( 6436534 )

              CONCATENATE qmstr3 zebeln '在OA效果确认表中产生了一条新记录请跟进' INTO qmstr.
              MESSAGE qmstr  TYPE 'E'.

            ENDIF.
          ENDIF.
***********关闭数据库连接***********
          EXEC SQL.
            DISCONNECT :con_name
          ENDEXEC.
        ENDIF.
      ENDIF.

    ENDLOOP.
  ELSE.
*      MESSAGE '没有在中间表找到数据请确定是否在OA发起8D流程!' TYPE   'E'.
  ENDIF.




***************写子方法******************************************
ELSEIF sy-tcode = 'MB31'.
  zaufnr = i_mseg-aufnr.  "生产订单
  zaufps = i_mseg-aufps.  "生产订单行项目
*          PERFORM getzqm004_data USING ZEBELN ZEBELP ZMATNR ZWERKS1 ZVGART.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE qmtab1 FROM zqm004
WHERE zqm004~zmatnr = zmatnr  AND zqm004~zqmawerks = zwerks1.
  IF sy-subrc = 0.
    LOOP AT qmtab1.

      IF qmtab1-zstate = 'OPEN'.
        IF qmtab1-ztype IS INITIAL OR qmtab1-ztype =  '生产工单入库'.

************打开数据库连接**************
          EXEC SQL.
            CONNECT TO :con_name
          ENDEXEC.
******************操作OA数据*************
          EXEC SQL.
            select count(*) into :qmnum from whir$8Dxgqr where whir$8Dxgqr_ddhm = :ZAUFNR
          ENDEXEC.
          IF qmnum > 0.

            EXEC SQL.
              select count(*) into :qmnum1 from whir$8Dxgqr where whir$8Dxgqr_ddhm = :ZAUFNR and
              ( whir$8Dxgqr_gjjg = 'NG' OR whir$8Dxgqr_gjjg IS null )
            ENDEXEC.
            IF qmnum1 > 0.

              CONCATENATE '请在OA中跟进8D编号为'  qmtab1-zqmnum '的跟进结果' INTO qmstr.
              MESSAGE qmstr  TYPE 'E'.

            ENDIF.
          ELSE.

            EXEC SQL.
              select whir$8D_id into :qmstr2 from whir$8D where whir$8D_8Dbh = :QMTAB1-ZQMNUM
            ENDEXEC.
            IF qmstr2 IS NOT INITIAL.
              EXEC SQL.
                insert into whir$8Dxgqr ( whir$8Dxgqr_id, whir$8Dxgqr_date, whir$8Dxgqr_ddhm, WHIR$8DXGQR_FOREIGNKEY)
                values (WF_SEQUENCE.nextval,  :d1, :ZAUFNR, :qmstr2 )
*                    insert into whir$8Dxgqr ( whir$8Dxgqr_id ) values ( 6436534 )
              ENDEXEC.
              CONCATENATE '生产工单入库' zaufnr '在OA效果确认表中产生了一条新记录请跟进' INTO qmstr.
              MESSAGE qmstr  TYPE 'E'.

            ENDIF.
          ENDIF.
***********关闭数据库连接***********
          EXEC SQL.
            DISCONNECT :con_name
          ENDEXEC.
        ENDIF.
      ENDIF.

    ENDLOOP.
  ELSE.
*      MESSAGE '没有在中间表找到数据请确定是否在OA发起8D流程!' TYPE   'E'.
  ENDIF.

ENDIF.

*****************************end-zhugx*************************

 

 

<!--EndFragment--><!--EndFragment--><!--EndFragment-->
分享到:
评论

相关推荐

    SAP访问其他数据库

    在SAP系统中,有时需要访问除了主数据库之外的其他外部数据库,这可能是为了整合数据、实现特定功能或与非SAP系统交互。本篇将详细介绍SAP访问其他数据库的相关知识点,包括工作环境需求、配置连接信息以及在程序中...

    SAP Data Services如何链接ORACLE

    首先,创建数据源是SAP Data Services中的一项基础操作,它允许系统连接到外部数据存储,例如ORACLE数据库。以下是创建ORACLE数据源的步骤: 1. **启动SAP Data Services Designer**:打开SAP Data Services设计...

    sap java 的安装手册,基于linux平台,oracle数据库

    本手册提供了在基于Linux平台的UNIX系统上安装SAP应用服务器Java,基于SAP NetWeaver 7.1到7.5版本,并以Oracle数据库为后端的详细指导。这份文档的目的是为了支持客户安装SAP系统,内容覆盖了从规划到实际安装的每...

    Oracle数据库教程RAC常用维护工具和命令

    ### Oracle数据库教程RAC常用维护工具和命令 ...综上所述,Oracle RAC提供了丰富的命令行工具来帮助管理员进行集群的维护与管理。通过理解并熟练掌握这些工具的使用方法,可以有效地提高系统的稳定性和性能。

    oracle&sap;

    Oracle数据库作为一种高性能的关系型数据库管理系统,与SAP系统的结合为企业带来了更高效的数据处理能力和更低的总拥有成本。本文将详细介绍Oracle for SAP解决方案的关键技术和优势,特别是Oracle Exadata、Data ...

    ORACLE与SAP的对比分析.docx

    标题中的“ORACLE与SAP的对比分析”指的是在企业资源规划(ERP)领域中,对ORACLE(甲骨文)和SAP这两家知名软件供应商的比较。这两个公司在数据库管理和企业级应用软件方面都有深厚的技术积累,但在多个维度上存在...

    SAP PI 7.31安装配置手册

    - **操作说明**:在Oracle数据库中创建名为`SAPUSER`的表,并插入相应的记录。 **3.2 修改密码** - **操作命令**: ```bash brconnect -usystem/ams12345 -fchpass -oSAPSR3 -pams12345 brconnect -usystem/ams...

    安华金和数据库安全审计系统.pdf

    它的主要功能包括数据库操作、访问用户及外部应用用户的审计,可以用于安全合规、用户行为分析、运维监控、风控审计、事件追溯等与数据库安全相关的管理活动。这款系统具备全面、准确、高效的数据库监控告警和审计...

    SAP IDES R3 安装

    本文档主要介绍了如何安装SAP IDES R3 ECC版本,该版本基于SAP R/3 Enterprise Core 4.70及SAP R/3 Enterprise Extension Set 1.10,并且在UNIX环境下运行,数据库为Oracle。 #### 二、SAP R/3 Enterprise 4.70 - ...

    BW非SAP系统数据抽取操作

    - 修改Oracle数据库的`tnsnames.ora`文件,添加外部数据库的连接信息。 2. **创建数据库连接**: - 在源系统目录下右击数据库连接,选择“创建”。 - 填写逻辑系统名称、源系统名称,并选择类型和版本。 - 选择...

    SAP BASIS PA资料第一部

    SAP BASIS PA资料第一部的知识点涵盖了SAP NetWeaver应用服务器(AS)的实施与操作,这是一项专业的课程资料,针对SAP BASIS的初学者和实践者。SAP BASIS是SAP系统的技术基础,负责维护系统稳定性和性能,是SAP技术...

    SAP NetWeaver RFC SDK

    例如,提到了微软的Windows、IBM的DB2、Oracle、UNIX等,这些都是SAP系统中可能用到的第三方技术或操作系统。 4. **商标声明与法律信息** - 文档中详细列举了多个商标和注册商标的信息,包括SAP自身的产品如R/3、...

    Notes与SAP互连

    - DECS(Distributed Computing Environment/Client)是Notes与外部系统交互的重要组件,用于管理与Oracle后台数据库的连接。首先,你需要在DECS Administrator数据库中设置这些连接,这通常涉及到配置数据库连接...

    sap start stop process

    ICM(Internet Communication Manager)处理与外部世界的通信,如HTTP、HTTPS、SMTP、SOAP和XML协议,支持Web浏览器和其他系统与SAP Web AS Java进行交互。SAP Web AS Java是SAP系统的一部分,负责处理Java相关的...

    SAP R3 联机事务码速查手册

    本人是做SAP外部顾问的,愿意结交同行分享SAP最新版本ECC6及免安装虚拟机,以 及pa标准视频,abap视频全套资料等,更有完整实施资料,包括R3版本的,需要的加 MSN或QQ: Signature Saper Q Q :397592851 MSN ...

    SAP BW AND ETL GUIDE.pdf

    SAP BW 支持与多种数据库平台的连接,包括 Oracle、Microsoft SQL Server、IBM DB2 等。这种多数据库的支持意味着 SAP BW 可以灵活地集成到现有的 IT 基础设施中,而无需对底层数据库架构进行重大更改。 #### 通用...

    sap基本API学习指南

    SAP软件产品不仅包括了自家的技术和解决方案,还集成了大量第三方软件产品的组件,例如Microsoft Windows、IBM DB2、Oracle数据库、UNIX操作系统等。这些集成使SAP系统能够更好地适应不同企业的IT环境,同时也确保了...

    用SAP 开展经营项目.pdf

    除了内部业务流程的管理,SAP还为用户提供与外部世界的连接能力,例如SAP与Adobe、Informix、Oracle等多家IT企业的合作,为用户提供更全面的IT解决方案。同时,SAP还通过收购其他企业软件公司,整合如Baan、...

    如何创建SAP_BW和SQL_Server的连接用UD

    本文将详细介绍如何配置SAP NetWeaver 7.1环境下的SAP BW系统与外部SQL Server数据库之间的连接,通过使用JDBC驱动实现UD(Universal Data Connectors)的配置。 #### SAP BW与SQL Server连接的重要性 随着业务...

Global site tag (gtag.js) - Google Analytics