`
Jack Wu
  • 浏览: 891828 次
  • 来自: ...
社区版块
存档分类
最新评论

BAPI / RFC with Delphi(系列之八)--TBAPIControl使用BUS2012建立PO(Delphi源代码)

阅读更多

 1、新建一个Form,并在form上添加下列控件
 

ComponentFunction
SAPLogonControl1SAP ActiveX-Component to logon to the system
SAPBAPIControl1SAP ActiveX-Component to connect to BAPI
Button1Button to start the procedure
Button2Button to logon
Panel1-3Elements to display messages

2、源代码如下(BUS2012建立PO) 
 

unit best;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SAPBAPIControlLib_TLB, ExtCtrls, Grids,
SAPLogonCtrl_TLB;

type
TForm1 = class(TForm)
  SAPBAPIControl1: TSAPBAPIControl;
  Button1: TButton;
  Panel1: TPanel;
  Panel2: TPanel;
  Panel3: TPanel;
  Button2: TButton;
  SAPLogonControl1: TSAPLogonControl;
  Edit1: TEdit;
  Edit2: TEdit;
  Label1: TLabel;
  Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
Connection,Mat,Header,Ret,Schedul,Item : Variant;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin

  (* select BusinessObject *)
  Mat:= SAPBapiControl1.GetSAPObject('BUS2012');

  (* define structures *)
  Header := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoHeader');
  Schedul:= SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoItemSchedules');
  Item   := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','PoItems');
  Ret    := SAPBapiCcontrol1.dimAs (Mat,'CreateFromData','Return');

  (* purchaseorder header data's *)
  Header.value ('DOC_TYPE') := 'NB';
  Header.value ('DOC_CAT')  := 'F';
  Header.value ('PURCH_ORG'):= '10';
  Header.value ('PUR_GROUP'):= '10';
  Header.value ('VENDOR')   := '0010000999';

  (* data for position 00010 *)
  Item.Rows.Add;
  Item.Value (1,'PO_ITEM')   := '00010';
  Item.Value (1,'PUR_MAT')   := '000000000000000017';
  Item.Value (1,'STORE_LOC') := '100';
  Item.Value (1,'PLANT')     := '1000';
  Item.Value (1,'NET_PRICE') := '10,00';

  (* schedules for position 00010 *)
  Schedul.Rows.Add;
  Schedul.Value (1,'PO_ITEM')    := '00010';
  Schedul.Value (1,'DEL_DATCAT') := '1';
  Schedul.Value (1,'DELIV_DATE') := '20.09.2000';
  Schedul.Value (1,'QUANTITY')   := '10';

  (* data for position 00020 *)
  Item.Rows.Add;
  Item.value (2,'PO_ITEM')   := '00020';
  Item.value (2,'PUR_MAT')   := '000000000000001161';
  Item.value (2,'STORE_LOC') := '100';
  Item.value (2,'PLANT')     := '1000';
  Item.value (2,'NET_PRICE') := '10,00';

  (* schedules for position 00020 *)
  Schedul.Rows.Add;
  Schedul.Value (2,'PO_ITEM')    := '00020';
  Schedul.Value (2,'DEL_DATCAT') := '1';
  Schedul.Value (2,'DELIV_DATE') := '20.09.2000';
  Schedul.Value (2,'QUANTITY')   := '10';

  (* call the method CreateFromData *)
  Mat.CreateFromData (PoHeader           := Header,
                      SkipItemsWithError := ' ',
                      PoItems            := Item,
                      PoItemSchedules    := Schedul,
                      Return             := Ret);

  (* Errors are saved in the structure Ret *)
  if Ret.RowCount > 0 then
  begin
    Panel1.Caption:= Ret.Value (1,'TYPE');
    Panel2.Caption:= Ret.Value (1,'MESSAGE');
  end

  (* If the method was calles without errors, *)
  (* display the number of the purchaseorder  *)
  else Panel2.Caption:= Mat.PurchaseOrder;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

  (* Logon to the system *)
  Connection                    := SAPLogoncontrol1.newConnection;
  Connection.User               := Ansiuppercase(Edit1.text);
  Connection.System             := 'IDS';
  Connection.Client             := '800';
  Connection.ApplicationServer  := 'SAPIDES';
  Connection.SystemNumber       := '00';
  Connection.Password           := Edit2.text;
  Connection.Language           := 'DE' ;
  SAPLogonControl1.Enabled      := false;

  if Connection.LogOn(0,true) = True then
  begin
    ShowMessage('Logon O.K.');
    Button1.Enabled:= true;

    (* assign the existing connection to the *)
    (* component SAPBapiControl1              *)
    SapBapiControl1.Connection:=Connection;
  end
  else
  begin
    ShowMessage('Error on logon :-(((');
  end;
end;
end.



分享到:
评论

相关推荐

    Delphi连接SAP(RFC)

    文件`6.TSAPFunctions使用BAPI创建PO(有登录对话框的delphi源代码).txt`和`8.TBAPIControl使用BUS2012建立PO(Delphi源代码).txt`中,可以看到如何使用BAPI函数来创建采购订单(PO),这是企业资源管理中的常见任务。...

    idoc 和 bapi 和 rfc 之间的区别

    在实际应用中,idoc、bapi 和 rfc 可以结合使用,例如使用 idoc 进行数据交换,然后使用 bapi 进行业务流程处理,最后使用 rfc 进行远程函数调用。 此外,ALE(Application Link Enabling)是 SAP 系统中的一种数据...

    SAP BAPI and RFC 使用总结

    SAP BAPI 和 RFC 使用总结 SAP R/3 系统提供了多种接口技术,其中最常用的是 RFC(Remote Function Call)、IDoc 和 BAPI。BAPI,全称为Business Application Programming Interface,实际上是 RFC 的一种特殊形式...

    SAP BAPI和RFC接口技术

    SAP BAPI和RFC接口技术 在SAP系统中,RFC(Remote Function Call)接口技术和BAPI(Business Application Programming Interface)接口技术是两个非常重要的技术概念。下面我们将对这两个技术进行详细的介绍。 RFC...

    SAP BAPI和RFC简介

    要访问和管理BAPI,SAP提供了一个专门的BAPI仓库,可以通过事务代码BAPI进入。在这里,用户可以查看、测试和使用BAPI,进行相关的开发和配置工作。 总之,SAP BAPI是实现企业系统集成和数据交换的重要工具,它的...

    凭证批导模板-SAP-ABAP-FI-BAPI清单案例教程-采购付款/销售收款-BAPI-ACC-DOCUMENT-POST

    SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02

    Python库 | b2bapi-2.1.1-py3-none-any.whl

    Python库“b2bapi-2.1.1-py3-none-any.whl”是一个用于B2B(Business-to-Business)交互的Python模块,它提供了方便的API接口,允许开发者轻松地与B2B系统进行数据交换和业务流程自动化。这个whl文件是Python的轮子...

    RFC BAPI

    ### RFC BAPI:深入解析与应用 #### 一、引言 在SAP的世界里,BAPI(Business Application Programming Interface)扮演着至关重要的角色。它不仅作为SAP R/3系统与外部应用程序交互的主要接口,同时也是实现业务...

    SAP BAPI & RFC Intro

    为了访问和管理BAPI,SAP提供了BAPI仓库,可以通过事务代码`BAPI`进行访问。在这里,用户可以找到所有可用的BAPIs,查看其属性、调用示例和相关的技术信息。BAPI属性通常包括接口定义、输入/输出参数、错误处理等。 ...

    用BAPI_PO_CHANGE修改(ME23N)PO出貨日期的方法

    ### 使用BAPI_PO_CHANGE修改(ME23N)采购订单(PO)出货日期的方法 在SAP系统中,采购订单(Purchase Order, PO)管理是供应链管理中的一个关键环节,涉及采购请求、供应商选择、合同谈判等多个流程。在实际业务操作...

    固定资产导入模板-SAP-ABAP-FI-BAPI清单案例教程-固定资产创建-BAPI-FIXEDASSET-OVRTAKE

    固定资产导入模板——SAP_ABAP_FI_BAPI清单案例教程——固定资产创建_BAPI_FIXEDASSET_OVRTAKE

    【测试】SAP 委外加工收货BAPI Demo

    三、委外PO的收货(这里使用BAPI_GOODSMVT_CREATE) *&---------------------------------------------------------------------* *& Report ZTEST_WWJG *& *&---------------------------------------------------...

    ABAP_RFC_BAPI培训教程.docx

    ABAP_RFC_BAPI 培训教程详细解读 SAP R/3 系统提供了多种接口技术,其中 RFC(Remote Function Call)和 BAPI(Business Application Programming Interface)是常用的两种。RFC 主要分为本地 RFC 和远程 RFC,而 ...

    sap abap常用bapi

    17. BAPI_PO_CREATE1/BAPI_PO_CHANGE/BAPI_PO_GETDETAIL/BAPI_PO_RELEASE 这些BAPI分别用于创建、更改、获取和发布采购订单,属于SAP中的采购管理模块。 了解这些BAPI的用途后,SAP ABAP程序员在开发时可以根据具体...

    Delphi通过BAPI连接SAP DEMO

    本文将详细介绍如何使用Delphi通过BAPI(Business Application Programming Interface)与SAP系统进行交互,以实现DEMO功能。 首先,BAPI是SAP提供的一种标准接口,允许外部系统与SAP内部业务逻辑进行通信。它封装...

    DELPHI SAP PACK

    DELPHI SAP PACK 是一个专为Delphi开发者设计的组件包,它允许程序通过RFC (Remote Function Call) 和BAPI (Business Application Programming Interface) 与SAP系统进行交互,而无需安装完整的SAP GUI。这一组件包...

    BAPI-ACC-DOCUMENT-POST 结构字段扩展

    ### BAPI-ACC-DOCUMENT-POST 结构字段扩展 #### 概述 在SAP系统中,`BAPI_ACC_DOCUMENT_POST` 是一个重要的业务应用程序接口(BAPI),用于执行财务凭证的过账处理。但在实际应用过程中,可能会遇到现有BAPI无法...

    RFC BAPI详解

    ABAP 高级开发RFC BAPI

    SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar

    这个名为"SAP资料集有ABAP-PP-MM-RFC-BAPI-JCO等.rar"的压缩包文件包含了多个与SAP相关的学习资料,涵盖了许多关键模块和技术,包括ABAP编程、生产计划(PP)、物料管理(MM)、远程功能调用(RFC)、业务对象接口...

Global site tag (gtag.js) - Google Analytics