标签归档abap

abapGit分支策略

各位ABAP公民等、特别是应用abapGit的诸位,你们好。

自之团体以及自以朝着大家大快朵颐自己店外引入abapGit晚发生的一些开发问题。我所当的公司是一样下做SAP第三方软件之商店,目前第一以ABAP和UI5。

正文专门对ABAP方面。

 

首先,我们爱abapGit,相信你们中之众吧是一样…

图片 1

GitHub repository

俺们的git仓库使用GitLab托管在地方,有着各种用户自己的表征。

咱起码每天push一不好我们的commit,生成版本(可以说凡是一个外加的备份层)。

经过以GitLabs的代码审查功能,也要代码审查变得容易了过多。

咱俩近年来评估了应用分支的可能,得出的结论是:我们不克在存活的底子设备之上使用她。

正文的剩下部分用探讨如何运用abapGit实现分支。

 

正文链接:http://www.cnblogs.com/hhelibeb/p/7754487.html

英文原文:abapGit Branching Strategy
Discussion

场景1:无分支

马上虽是咱们现在的工作方法。所有开发者在同之SAP系统与代码基础(code
base)上干活,所有人且push代码到主“分支”上。

图片 2

优势

  • 还好的代码版本控制
  • 轻进行代码审查

劣势

  • 分是勿可能的,开发者同时于相同的代码基础及修改对象
    • 切换分支时,会变动每个开发者的代码基础,虽然他们或者会觉得自己还于她们之支行上
  • 代码会为其他人的题材commit出错
    • 上修改了靶A,乙后来也改了其
      优质在未晓得乙修改过A的景下进行了commit
    • 对,进行最终一个改的总人口方可以abapGit工作台上面看到这个,但是,你仍然发生或没有盼她。

场景2:使用分支

无法立即采取分支的根本原因在于,所有开发者使用同一的代码基础。开发者没有断他们同事的代码修改行为。

故此,实现真正分的首先步就是是,分割每个开发者的付出环境。这意味,每个开发者要有客协调的SAP系统来进展支付。

当下带来为咱们第一独整体的不利条件:

  • 开发者数量之加带动的高昂的维护费用。

Local VMs

咱的首先独想法是,为什么非以开发者的机及虚拟化运行SAP系统吧?

开发者在进行相同桩职责时,可以push到他俩之分层中,直到其创建一个merge
request。

预告开发体系(DEV)只由主分支拉取,主分支只包含被认可的merge request。

图片 3

优势

  • 连日至你的SAP系统不时,不需要网络接口
  • 乃可于未连续公司网络的景下开
    • 但需要在push代码到git仓库的时才要连续公司网络
  • 以SSD上面运行SAP系统真的快极了

劣势

  • 大保障开销
    • 领队对机器的支配比较麻烦
  • 开发者需要理解哪些被/关闭他们的杜撰机/SAP系统
    • 竟可能需要他们协调定时备份虚拟机    

 

某些总体问题也打击了咱们:

升级开发者的SAP系统

  • 哪吃系统打补丁(支持保险,notes,系统级补丁)?
  • 当用获得定制数据、主数据以及作业数据来支付新特征、重现bug并且修复时,要怎么获得其?

升级主开发SAP系统

  • 怎处理abapGit不克序列化的开支目标?
  • 当需要获得定制数据、主数据以及事情数据来支付新特征、重现bug并且修复时,主开发体系设怎么样获得她?
  • 从今主分支拉取代码后,要如何处理开发目标为将她分配至相当的导请求之上?
    • 或你闹只复杂的传导规则以扶植代码复用。我们就算是如此。

卿还用一个策略来应本着以下问题:

  • 为无法序列化的目标单独维护与配备与单独地导入定制及工作台传输
    • 任凭起来如相同团糟
  • 支出体系的复制(只复制SAP)
    • 独是为了给您定制数据
  • 克隆主开发体系运行的虚拟机(OS+SAP)
    • 同时重命名SID和全称域名(Full Qualified Domain
      Name),否则你晤面遇到网络问题
  • …… 

而,更新的效率是?

  • 按需
  • 在创立一个新分支前
  • 于一个初的颁发循环起来之下
  • ……

Hosted VMs

提升看起是只十分问题,也许并非一个本地虚拟机、而是采取托管虚拟机会还好。

这样的话,无论用何种政策来更新,都可以更轻松地执行。

图片 4

优势:

  • 组织者可以在外时间看机器

劣势:

  • 运转开发虚拟机带来的托管资金

结论

为此,进行即时周的优点是啊?

咱的见识是:

  • 的确的分支成可能,编码时不干预其它开发者
  • 由于merge request和多独commit的结,更加便民代码审查
  • 本着几近单发行本的优异支持,容易切换至一个批发分支上去
  • ……

值得也夫做出过多底不竭吧?

俺们的团并不知道答案。系统共带来的资金,看起是高大的。

于马上点达我们感觉不舒服,因此转向社区,希望听到你们当是话题上之底见和经历。

 

非常感谢,

André

 

参考文章:abapGit简介

 

 

 

abapGit分支策略

各位ABAP公民等、特别是使用abapGit的各位,你们好。

自我的团体与本人用朝大家享受自己公司内引入abapGit继有的某些开发问题。我所于的公司举凡均等贱做SAP第三正在软件的柜,目前紧要运用ABAP和UI5。

本文专门针对ABAP方面。

 

率先,我们爱abapGit,相信你们中的森啊是一样…

澳门新葡亰官网 1

GitHub repository

咱的git仓库使用GitLab托管在地头,有着各种用户自己之特征。

俺们足足每天push一次于我们的commit,生成版本(可以说凡是一个格外的备份层)。

经下GitLabs的代码审查功能,也使代码审查变得容易了重重。

我们最近评估了下分支的可能,得出的下结论是:我们不能够在存活的基本功设备之上使用她。

本文的多余部分用探讨如何利用abapGit实现分支。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/7754487.html

英文原文:abapGit Branching Strategy
Discussion

场景1:无分支

即时便是咱们今天底工作方法。所有开发者在同之SAP系统跟代码基础(code
base)上工作,所有人数还push代码到主“分支”上。

澳门新葡亰官网 2

优势

  • 再度好之代码版本控制
  • 善进行代码审查

劣势

  • 分段是免可能的,开发者同时在同等的代码基础及改对象
    • 切换分支时,会转移每个开发者的代码基础,虽然她们也许会认为自己还于她们之分段上
  • 代码会盖其他人的题材commit出错
    • 优质修改了对象A,乙后来也改了它
      优质在不理解乙修改过A的情形下进行了commit
    • 没错,进行末一个修改的丁可于abapGit工作台上面看到是,但是,你仍然发生或没有盼她。

场景2:使用分支

无法立即用分支的根本原因在于,所有开发者使用同一的代码基础。开发者没有断他们同事的代码修改行为。

就此,实现真正分的首先步就是是,分割每个开发者的支付环境。这表示,每个开发者要生他协调之SAP系统来展开开发。

旋即带来吃咱们先是个完整的不利条件:

  • 开发者数量之长拉动的高昂的维护费用。

Local VMs

俺们的首先个想法是,为什么非在开发者的机及虚拟化运行SAP系统啊?

开发者在开展同样码任务时,可以push到他俩的道岔中,直到它创建一个merge
request。

预告开发体系(DEV)只于主分支拉取,主分支只包含被准的merge request。

澳门新葡亰官网 3

优势

  • 一连到您的SAP系统不时,不需网络接口
  • 而可当不总是公司网络的景况下支付
    • 止待以push代码到git仓库的上才用连接公司网络
  • 每当SSD上面运行SAP系统真的快极了

劣势

  • 赛保护开销
    • 领队对机械的决定比较难以
  • 开发者需要明白什么被/关闭他们之杜撰机/SAP系统
    • 竟然可能需要他们友善定时备份虚拟机    

 

一些总体问题吧打击了俺们:

晋级开发者的SAP系统

  • 什么吃系统打补丁(支持担保,notes,系统级补丁)?
  • 当用取定制数据、主数据和业务数据来支付新特点、重现bug并且修复时,要哪些获得她?

晋级主开发SAP系统

  • 什么样处理abapGit不能够序列化的支付目标?
  • 当得获得定制数据、主数据以及事情数据来支付新特征、重现bug并且修复时,主开发体系要争获得她?
  • 起主分支拉取代码后,要怎样处理开发目标为把它分配至适当的传请求之上?
    • 莫不你发个复杂的传导规则为拉代码复用。我们不怕是这么。

您还索要一个政策来应针对以下问题:

  • 否无法序列化的目标单独维护及安排以及单独地导入定制和工作台传输
    • 放任起像相同团糟
  • 付出体系的复制(只复制SAP)
    • 单纯是为着吃你定制数据
  • 克隆主开发体系运作的虚拟机(OS+SAP)
    • 而重命名SID和统称域名(Full Qualified Domain
      Name),否则你会碰到网络问题
  • …… 

与此同时,更新的效率是?

  • 按需
  • 每当开立一个新分支前
  • 在一个初的揭示循环开始的时
  • ……

Hosted VMs

晋级看起是单深问题,也许并非一个地面虚拟机、而是利用托管虚拟机会再度好。

这样的话,无论采取何种政策来更新,都可以重新轻松地实施。

澳门新葡亰官网 4

优势:

  • 组织者可以于另时间看机器

劣势:

  • 运作开发虚拟机带来的托管资产

结论

故而,进行即时周的助益是呀?

俺们的观点是:

  • 委的分支成可能,编码时不干涉其它开发者
  • 鉴于merge request和多独commit的重组,更加便利代码审查
  • 针对大多单发行本的脍炙人口支持,容易切换至一个批发分支上去
  • ……

值得也之做出过多的大力吧?

俺们的团队并不知道答案。系统并带来的老本,看起是伟的。

当即时点达我们感觉不舒服,因此转向社区,希望听到你们在这个话题上之底视角和经验。

 

澳门新葡亰官网非常感谢,

André

 

参照文章:abapGit简介

 

 

 

怎ABAP开发者需要以面向对象技术?

ABAP对面向对象的支持就发生十几近年之史,然而在生产实践中,我们针对立即门技术之运特别少。

一派,面向过程的惯性长期存在着;另一方面,对于绝大多数二次开发工作而言,似乎并从未足够的理促使开发者使用面向对象技术。二者结合的结果,就是眼下大部分ABAP开发者还以独写面向过程的代码。

自己未以为面向对象是好解决开发被各种题材的“银弹”,但是它们毕竟是平项经过了考验的技能。在2017年之本,多数人口都认可面向对象给咱们带了相当之益处。面向对象的老三单着力特征、五单着力尺度已经变成路人皆知的作业。关于它的通常的补益,本文不打算再复述,毕竟相关的文章讨论一度太多。

另外,对于ABAP开发而言,它还有一些额外的益处。在下文,我会分别介绍其。

 

正文链接:http://www.cnblogs.com/hhelibeb/p/7641965.html

转载请注明

1, 避免过时语法

咱解,在abap的宣示语法中,type是一直声明类型,like是参考声明类型。很多新手在入门时见面吃like与type的区别弄晕,甚至以不离谱,完全用like代替type。而abap是支持啊变量起一个与品种名相同的变量名的,如果程序是着同种名相同的变量名,开发者又无明了like和type的分别的话,代码中难免会出错。类似之“小知识”给开发者带来了无聊之承担。虽然这种特性都在文档中标记为obsolete,但是,出于兼容性之类的考虑,SAP依然允许她的运。

而以OO语境中,语法检查器会指向过时语法报错,这让开发者可以告慰抛开某些ABAP中在的历史包袱,不需要重新勉强自己牢记那些无谓的平整。

另外,SAP也也面向对象编程提供了附加的工具,比如单元测试类生成。如果还是采用form的话,就不得不手写单元测试类了。

图片 1

 

2, 理解标准程序

相对于客户于定义开发之始末,SAP系统被一度有的程序于我们叫标准程序。SAP已经当系标准程序中大量运用了面向对象技术,在少数产品与模块中,可以说面向对象成为了主流。比如CRM中的BOL,还有SAP正在拓宽的框架BOPF。

ABAP的开工作是因SAP系统的,对业内程序的读书理解、调试、修改(增强)是ABAP程序员工作的关键内容。如果开发者没有定之面向对象编程经验的讲话,就生麻烦对这些大量施用了面向对象技术的次序进行加强开发,也难对它们进行跟踪及调节,从而被办事带来不便。

在协调编排面向对象程序的进程遭到,我们得以慢慢了解并、多态等概念,熟悉和面向对象相关相关的语法,借这加强自己对业内代码的理解能力。

3, 从另一个角度自省

随着工作的开展和村办左右的文化之变,我们见面对相同段功能有新的视角,从而用新的代码来开展发挥,因此不少人口闹重构甚至更写代码的习惯。不过人之耐性总是有限的,重筑几浅,感觉自己之代码都“差不多了”,已经只是复用、便于扩展,甚至早已“接近完美”,无需还变更。这是难以避免的事务,因为,人之大脑产生疏失熟悉的物的倾向,同样的男/女朋友,看久了,便会忽视他们的美丑。如何推进团结进一步自省?使用初技巧可能是一个主意。

以品味将代码转换为面向对象的长河中,新技巧之采用会促使我们从另一个角度对曾经过于熟悉以至于让忽略的代码,激发大脑越运作,从而获取新的看法和启迪。原本已经固定的代码,又有何不可再次重构了。当然,这种变动不必然总是好之。面向对象的一个引起争议的地方,就是它导致多程序员、特别是中等水平的程序员,会不自觉地同情被“过度设计”,无必要地设计多余的接口和延续关系、使用各种设计模式,为多程序的复杂度。但于个体而言,相比收益,这或多或少代价还是可以承受的,毕竟,没有犯错,又何来发展为?

总结

以SAP的世界里,面向对象技术一度具备不小让面向过程的地位,并且还在牢固地升级中。本文无意鼓吹其中的一者替代另一个,但是,对ABAP程序员而言,了解和利用面向对象技术的力量已换得十分必要。最后,引用一词名言作为完结:最好之古生物不是不过强之呢不是无比明白的,而是最适于变化之。

 

 

ABAP中的AMDP(ABAP-Managed Database Procedures )

ABAP管理下之数据库存储过程(ABAP-Managed Database
Procedure,以下简称AMDP)是在APAP on SAP
HANA开发中之同一种植优化模式。AMDP使用数据库语言书写,比如Native
SQL或者是SQL
Script,并且以AMDP类的AMDP方法外实现。因此用它开发数据库存储过程尽管产生接触类似于编辑ABAP类。

概括,AMDP允许开发者直接在ABAP中描写数据库存储过程。

 

正文链接:http://www.cnblogs.com/hhelibeb/p/7976533.html

转载请注明

胡以AMDP?

按SAP的法定建议,在可下Open
SQL实现用的效果要优化目标的时段,不建议以AMDP。而在需要动用Open
SQL不在的表征,或者是大方处理流和分析导致了数据库暨应用服务器之间来重新的汪洋数量传的图景下,则当以AMDP。

实际的例证可以省:AMDP, Comparison of SQLScript with Open
SQL
,

          SAP HANA, Currency Conversion with
SQLScript
   

AMDP还能提供以下好处:

  • SQL Script的静态代码检查
  • 语法高亮(支持pretty printer格式优化器) 
  • 在AMDP内访问其它AMDP方法、ABAP字典的视图和表 
  • 好像一般的ABAP方法一致调用(不包括AMDP function)  
  • 行使ST22进行运转时不当的详细分析    

介绍视频:

语法

AMDP在AMDP类中落实,需要一个正式的静态方法或者实例方法,可见性任意:

CLASS <my_amdp_class> DEFINITION.

  PUBLIC SECTION.
* 指定的Marker接口
  INTERFACES IF_AMDP_MARKER_<DB_TYPE>.
   ...

  METHODS <my_amdp_method>.
   ...

ENDCLASS.


CLASS <my_amdp_class> IMPLEMENTATION.

...

* AMDP 方法 
  METHOD <my_amdp_method> BY DATABASE PROCEDURE 
        FOR <db_type>
        LANGUAGE <db_language>
         OPTIONS <db_options>  
         USING   <db_entity>.

      "使用数据库语言实现存储过程
     ...

  ENDMETHOD.
    ...

ENDCLASS.

AMDP类就是司空见惯的接近,并实现IF_AMDP_MARKER_<DB_TYPE>接口。如果是HANA数据库,那么尽管是贯彻接口IF_AMDP_MARKER_HDB。不过,虽然条件上AMDP是为支持各种数据库的存储过程要有的,但到当下(ABAP
7.52)为止,AMDP只支持SAP
HANA数据库。可以运用类似CL_ABAP_DBFEATURES遭之常量CALL_AMDP_METHOD来认可AMDP对目前数据库的支持。

简短示例

示例类CL_DEMO_AMDP_SCARR绑定了接口IF_AMDP_MARKER_HDB,并且包含AMDP方法SELECT_SCARR来打表SCARR中获取数据(笔者目前从未有过对应的条件,所以写了个ztest_amdp来替代示例):

CLASS ztest_amdp DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.
    CLASS-DATA: scarr_tab TYPE ty_scarr.
    METHODS select_scarr IMPORTING VALUE(clnt)      TYPE mandt
                         EXPORTING VALUE(scarr_tab) TYPE ty_scarr.
ENDCLASS.


CLASS ztest_amdp IMPLEMENTATION.
  METHOD select_scarr
         BY DATABASE PROCEDURE FOR HDB
         LANGUAGE SQLSCRIPT
         OPTIONS READ-ONLY
         USING scarr.
    scarr_tab =
    SELECT *
           FROM "SCARR"
           WHERE mandt = clnt
           ORDER BY carrid;
  ENDMETHOD.
ENDCLASS.

 

以下代码可以用来调用方法、获取结果:

DATA result TYPE ty_scarr.

NEW ztest_amdp( )->select_scarr(
  EXPORTING clnt = sy-mandt
  IMPORTING scarr_tab = result ).

cl_demo_output=>display( result ). 

AMDP方法

AMDP方法发生少种植实现,一种植是AMDP
procedure落实;另一样栽是AMDP
function实现。

AMDP procedure实现

亟待采用Method语句的叠加项BY DATABASE
PROCEDURE。例子见上文。这种实现方式写成的点子和平凡的ABAP对象方法以用方式及没分。

AMDP function实现

消采取Method语句的叠加项BY DATABASE
FUNCTION。它用AMDP方法实现呢一个table function。

tips: table function

  table function是只读的用户定义的方法,可以接收多个输入参数。接收单一的表返回值。

  在SQL Scitpt中,table function可以在与数据库表或者视图相同的位置使用。

 

示范代码:

REPORT demo_amdp_functions_inpcl.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.
    IF NOT cl_abap_dbfeatures=>use_features(
          EXPORTING
            requested_features =
              VALUE #( ( cl_abap_dbfeatures=>call_amdp_method )
                       ( cl_abap_dbfeatures=>amdp_table_function ) ) ).
      cl_demo_output=>display(
        `System does not support AMDP or CDS table functions` ).
      RETURN.
    ENDIF.

    DATA carrid TYPE s_carr_id VALUE 'LH'.
    cl_demo_input=>request( CHANGING field = carrid ).
    carrid = to_upper( carrid ).

    "Database function selected in database procedure
    TRY.
        NEW cl_demo_amdp_functions_inpcl( )->select_get_scarr_spfli(
          EXPORTING clnt   = sy-mandt
                    carrid = carrid
          IMPORTING scarr_spfli_tab = DATA(result1) ).
      CATCH cx_amdp_error INTO DATA(amdp_error).
        cl_demo_output=>display( amdp_error->get_text( ) ).
        RETURN.
    ENDTRY.

    cl_demo_output=>display( result1 ).

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

 

上面这例子访问的AMDP
function可以在类CL_DEMO_AMDP_FUNCTIONS_INPCL中看到。

方法GET_SCARR_SPFLI是一个AMDP
function实现,它是免克一直以ABAP中做客的:

METHOD get_scarr_spfli BY DATABASE FUNCTION FOR HDB
                       LANGUAGE SQLSCRIPT
                       OPTIONS READ-ONLY
                       USING scarr spfli.
  RETURN SELECT sc.carrname, sp.connid, sp.cityfrom, sp.cityto
                FROM scarr AS sc
                  INNER JOIN spfli AS sp ON sc.mandt = sp.mandt AND
                                            sc.carrid = sp.carrid
                  WHERE sp.mandt = :clnt AND sp.carrid = :carrid
                  ORDER BY sc.mandt, sc.carrname, sp.connid;

ENDMETHOD.

 

而方法SELECT_GET_SCARR_SPFLI是一个AMDP
procedure实现,它利用select从者的function实现中获取数据。代码如下:

METHOD select_get_scarr_spfli
       BY DATABASE PROCEDURE FOR HDB
       LANGUAGE SQLSCRIPT
       OPTIONS READ-ONLY
       USING cl_demo_amdp_functions_inpcl=>get_scarr_spfli.
  SCARR_SPFLI_TAB =
  SELECT *
         FROM "CL_DEMO_AMDP_FUNCTIONS_INPCL=>GET_SCARR_SPFLI"(
                clnt => :clnt,
                carrid => :carrid );
ENDMETHOD.

 

啊得以将AMDP function实现吗CDS table function。这里虽非贴示例了。

 

有关AMDP实现的视频教程:

AMDP异常

AMDP
procedure实现之不行名前缀是CX_AMDP。这些老都当目录CX_DYNAMIC_CHECK之下,必须动RASING显式地于AMDP
procedure实现的概念着声明。

CX_ROOT
  |
  |–CX_DYNAMIC_CHECK
       |
       |–CX_AMDP_ERROR
           |
           |–CX_AMDP_VERSION_ERROR
           |    |
           |    |–CX_AMDP_VERSION_MISMATCH
           |
           |–CX_AMDP_CREATION_ERROR
           |    |
           |    |–CX_AMDP_CDS_CLIENT_MISMATCH
           |    |
           |    |–CX_AMDP_DBPROC_GENERATE_FAILED
           |    |
           |    |–CX_AMDP_DBPROC_CREATE_FAILED
           |    |
           |    |–CX_AMDP_NATIVE_DBCALL_FAILED
           |    |
           |    |–CX_AMDP_WRONG_DBSYS
           |
           |–CX_AMDP_EXECUTION_ERROR
           |    |
           |    |–CX_AMDP_EXECUTION_FAILED
           |    |
           |    |–CX_AMDP_IMPORT_TABLE_ERROR
           |    |
           |    |–CX_AMDP_RESULT_TABLE_ERROR
           |
           |–CX_AMDP_CONNECTION_ERROR
                |
                |–CX_AMDP_NO_CONNECTION
                |
                |–CX_AMDP_NO_CONNECTION_FOR_CALL
                |
                |–CX_AMDP_WRONG_CONNECTION

在意:AMDP
function没有大类。

工具支持

AMDP在SAP NetWeaver AS ABAP 7.40
SP05版本被让引入。只有基于Eclipse的开发工具(即ADT,版本要无小于2.19)才支撑AMDP的编辑,SAP
GUI上面的SE80凡是不提供编辑功能的,只能用来阅读代码。

有关AMDP调试的视频教程:

总结

行使ABAP Managed Database Procedure(AMDP)和CDS开发,属于自上而下的ABAP
for
HANA开发方式。在用层即ABAP程序中管理数据计算逻辑与建模,激活后会以HANA中开创相应的数据库对象。相比叫老片Database
Procedure Proxy,AMDP提供了简约的调用SQL Script等数据库语言的办法。

 

参考文章:

[1] AMDP – ABAP Managed Database
Procedures

[2] ABAP Managed Database Procedures –
Introduction

[3] ABAP Development for SAP
HANA

[4] How to use AMDP Function implementation for a CDS Table Function
as a data source in CDS
views

别资料:

SAP HANA SQL Script
Reference

ABAP CDS Table
Function介绍与示范

 

SAP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC

大约八月份之时段做过一个关于两单SAP系统中资金分担传输的路,使用到了RFC(Remote
Function
Call)技术。因为前面所有医疗-CRM相关接口开发的涉,以为自己对RFC很熟稔了,做起来会非常顺畅,不思还是撞了把问题。打算整治一下有关其的情节,进一步学习。

正文内容的最主要缘于是SAP的英文文档。会于讲究基本概念上之事物,偶尔涉及实际的代码、配置。后续可能会见基于自身的实际使用状态更新更详细的介绍。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/8066753.html

总述

对此SAP与SAP系统以及SAP与非SAP系统里面的连日而言,远程函数调用(Remote
Function
Call,以下简称RFC)是平等种标准的通信方式,它可实现对长途系统受函数的调用。

持有RFC类型都由此CPI-C或TCP/IP协议进行传输。
它们组成了一样种Gateway通信。

正文是针对具备RFC变体的讲述,它们有着不同之特色与称之采用状况。

同步RFC:sRFC

及步RFC(Synchronous
RFC,sRFC)是最最核心的RFC形式。在sRFC调用中,调用者会等待远程被调用者的处理过程。

它的语法形式是:

CALL FUNCTION func DESTINATION dest. 

卓越的以状况包括:

  • 销售:为歧体系创造市订单(central sales)。
  • 销售:对于有查询,在供应商系统里实施一个于指定物料的可用性检查。
  • 物品管理:在另一个系里对某个物料订单执行来源判断。
  • CRM/SRM:对SAP后端平系统倡导某个物料的可用性检查。
  • CRM/SRM:在SRM组件中开创市订单时,在先生集中核算中吗卿的基金中心开展预算检查。
  • 先生:向会计集中核算体系要一个成本中心清单。
  • BW:调用BW组件(商业信息仓库)来呼吁一个特地之evaluation。

异步RFC:aRFC

异步RFC(Asynchronous
RFC,aRFC)类似与tRFC,用户在此起彼伏调用会话之前,不需拭目以待她的落成。不过,aRFC和tRFC之间吧是几乎接触不同的地方:

  • 当调用者开始一个aRFC的时节,被调用的服务器必须得接到请求。aRFC的参数不会见记录在数据库被,而是径直发送给对方服务器。
  • aRFC允许用户和远程系统进行交互式对话。
  • 调用程序可以由aRFC接收结果。

若得在当您需要树立和一个远端系统的连续、但是期望当调用RFC后未期待等待结果而是希望继续处理时利用aRFC。aRFC也得以发送给同样的体系。在这种景象下,系统打开一个新的对话(窗口)。你可于调用对话与让调用会话间切换。使用下的讲话开启一个aRFC:

CALL FUNCTION Remotefunction STARTING NEW TASK Taskname

DESTINATION ...

EXPORTING...

TABLES ...

EXCEPTIONS...

 RECEIVE RESULTS FROM FUNCTION Remotefunction 用于一个子先后外接受aRFC的调用结果。可以采取以下收取参数:

  • IMPORTING

  • TABLES

  • EXCEPTIONS

附加项KEEPING
TASK
阻碍连接在收取处理结果后关。相关的长距离上下文(滚动区域)保持得选用的状态,直至调用者终止连接。

再度多关于aRFC的音讯可自以下地方获得:

  • aRFC的调用属性

  • 打aRFC接收结果

  • 保远程上下文

  • aRFC的并行处理

至于aRFC变体的描述:

  • CALL FUNCTION – STARTING NEW
    TASK

  • RECEIVE

  • WAIT
    UNTIL

  • RFC示例

事务RFC:tRFC

以以事务RFC( transactional
RFC,tRFC)的当儿,被调用的函数模块于受调用系统面临恰恰运行一软(Exactly Once)。

远端系统非待以RFC客户端程序运行tRFC的时候可用。tRFC组件将给调用的RFC函数和连锁数据存储在SAP系统的数据库里,包含一个唯一的作业标识符(transaction
identifier,TID)。

若果调用发送了,接收系统也是宕机状态,调用会保留在地头队列中一段时间。调用对话程序可以以非等待远程调用成功/失败的事态下继续运行。如果收到系统于一段时间后仍不可用,调用将给计划吗后台作业运行。

tRFC使用后缀IN BACKGROUND TASK.

即跟旅调用一样,参数
DESTINATION在远距离系统定义了次及下文。结果是,如果你针对一个destination重复地调用一个函数(或者一次性调用多单函数),则可以在同等之内外文中访问为调用函数的大局数据。。

网会在表ARFCSSTATE和表ARFCSDATA中记录远程连接要与她的百分之百参数值。你可利用事务SM58来查。当调用程序到达COMMIT
WORK
言时,远程调用会吃转发到让对方系统。

在两个COMMIT
WORK
里,所有的有着与一个destination的tRFC属于同一个逻辑单元(LUW)。

tRFC处理流图示:

澳门新葡亰官网 1

君可以某些情况下利用使用tRFC,比如,对于需要在作业之不等阶段更新相关数据库表的纷繁的处理过程。

tRFC会确保所有的计划更新在次到达COMMIT WORK语句时叫实践。

(注意:tRFC的概念着莫可知闹任何EXPORT参数,因为调用程序中使来IMPORT参数,就见面造成语法错误。此外,你为无可以本着实践回调的主次开展异步调用)

系统可用性:

而远程系统未可用,SAP系统会将报表RSARFCSE计划吗后台作业,并拿相关的事情ID作为变式,再开展处理。这个表格程序会再度地给调用,直到她成地连对方系统了。

当为计划吧后台作业时,RSARFCSE自动地以一个时空间隔运行(默认是各级15分钟运行一蹩脚,最多尝试30涂鸦)。你可经过提高程序SABP0000和SABP0003来自定义该时间间隔。

由此SM59安排destination,选择一个destination并且选择
编辑->TRFC选项,在这边定义连接尝试次数上限和再次连接尝试的时日距离。

澳门新葡亰官网 2

万一在品尝指定的次数后依旧不足抵达相应的系,系统会停调用RSARFCSE,并勾画副状态CPICERR至表ARFCSDATA中。在另外一个指定的岁月后(默认是8天),在表ARFCSSTATE内之条条框框也会于去除。当然为可以定制者时,或者手动在SM59起先相应的事情条目。

tRFC的缺点:

  • tRFC独立地拍卖所有LUW。根据激活的tRFC数量,程序来或会见明显地降低调用系统及吃调用系统的习性。
  • 另外,在运用被定义之LUW的调用顺序是不能够得保持的。因此无法确保事务会按照用期望之逐一运行。tRFC唯一能保证的只有:所有LUW都见面或早或晚地于传。

可当此处翻tRFC语句之描述:

CALL FUNCTION IN BACKGROUND
TASK

队列RFC:qRFC

列RFC(queued Remote Function
Call,qRFC)是tRFC的一个扩张。它同意你拿大半个tRFC调用序列化为一个行列。

qRFC调用会首先被函数模块TRFC_SET_QUEUE_NAME进行序列化处理,然后这些调用被一个tRFC进行实际的dispatch。

qRFC可以当他往行(由调用系统序列化)处理,或者是内为行(由叫调用系统序列化)。

* *

以下是三种业务数据传的面貌(为什么图片被的契是德文?):

澳门新葡亰官网 3

场景1:tRFC

该场面适用于数交互间单独发送的动静。系统1蒙受是一个调用应用(client)使用tRFC连接系统2受到的给调用应用(r
server)。在该场景中,数据由tRFC传输,意味着发送至对象体系的函数模块调用会为包单独运行一差。你免可以定义函数模块运行的一一及时空。如果传输过程被发生了左,系统会计划一个后台作业,在15分钟后又发送函数模块调用。

场景2:带有外往行的qRFC

于该场景中,发送系统应用一个生动活泼队列来序列化被发送的多寡。这代表发送系统的外向队列包含着在依靠关系的函数模块调用。当数码发送时,会保持确定的顺序,并且调用会以正好同一不成都有序的方式(exactly once in order)发送给目标体系。

顾:目标体系处理常莫待改qRFC的逐条,但是,它必须开tRFC功能。

气象3:带有内于行的qRFC(以及活跃队列)

在这个状况下,不仅发送系统(client)有他往行,目标体系啊闹内为行。如果qRFC存在有外于行,这也意味着它们在殡葬系统上肯定存在外往行。内为行在一段时间里只能处理系统资源允许处理的函数模块调用数量。它好防止服务器被一个客户端阻塞。只有以劳务体系独立在一个内往行的状况是未可能是的,因为用在客户端系统是外望行,来设置顺序并堵住单独的行使阻塞客户端系统的合办事历程。

再多系消息可见:

  • Queued Remote Function Call
    (qRFC)

后台RFC:bgRFC

使用

bgRFC(Background Remote Function
Call)允许吃调用程序稍晚一些接收数据,而非是一同接收。接收数据的时,需要保证数据只现出平糟糕还无序(
transactional) 、或者只出现同涂鸦都有序(queued)。

利用bgRFC进行异步调用,会来如下优势:

  • 以跟一个SAP系统内(同一个系统ID,同一个client):解耦,同时提供了连行化能力。负载会分布在该系统的可用之应用服务器上。这个bgRFC场景被用作一个外为程序。

  • 于简单单远程SAP系统内:解耦,并且通过可以兑现用或工作场景的物理细分。异步调用的结果是,调用者和受调用者的应用服务器的关键特性差异可以赢得平衡。记录工作于调用系统被好。这个情景是一个活蹦乱跳程序。

  • 星星独程序成为外-内程序:该措施得以博全套优化增选的优势。不过,如果您挑选了这么做,数据会让记录点滴浅,一破是调用者(外向处理)、一糟是给调用应用(
    内向程序的出格类型)。这招数据库、应用服务器会生出格外的承担。

bgRFC使用队列组织不同之调用。当一个调用同时为停在差不多个队的时光,系统会为这些队列创建依赖。这带来了一个同步点(synchronization
point),类似于锁。

如若一个调用处于依赖队列中,那么当且单独当它坐落依赖队列的顶上层时,它才见面让拍卖。

对于和一个destination,不得以用bgRFC和tRFC、qRFC结合起来以。不过,对于不同的destination,你得定义你想使用的报道类。

语法:

 CALL FUNCTION 'function_name'

IN BACKGROUND UNIT unit

          EXPORTING ... 

 

集成

自qRFC转换为bgRFC的应用程序,必须支持创造qRFC中的队与bgRFC中的队中的旋链接的迁徙方案。通过这样的方案,可以管对的序列顺序,即便是在自qRFC变为bgRFC的随时。

只顾:从bgRFC改回qRFC是勿容许的。

每当SAP NetWeaver Release
7.11及再强的版本及,bgRFC也得同basXML(二进制ABAP序列化XML)通信协议一起以。

架构

俗的qRFC模型只有当数被RFC调度程序处理的时光才探测各个独立单元中的依赖性关系。对于每个destination,外向调度程序还见面敞开一个调度程序来处理者destination的多少。

与的相对的是,bgRFC的因关系在数码存储的时光便控制了。通过这样做,RFC调度程序可以一次性找到有的需吃拍卖的单元,并且通过极端小之大力(minimum
effort)就可以找到其中间的依赖性关系。在囤数据的时刻需要交给的附加努力,则可以充分十分程度达由于数据库设计中的大效率算法和优化补偿。

每个客户端定义一定数量的外向计划,并且并行处理队列负载,虽然目标体系的负载会在一个较短的岁月间隔后被确定,但是呢因此会越规范。

单元及排澳门新葡亰官网的删除程序

暨风俗习惯的先后不同,如果出另外单元或队列被删,依赖还会保持。因为单元会被优先打及号,并且在及时下只是被调度程序删除。

澳门新葡亰官网 4

苟图,在剔除了Unit4之后,Unit6只会以Unit3之后运行,因为Unit4只有在调度程序处理过Unit3之后才会叫删。如果你剔除掉queue2,那么会发生下面的情形:

澳门新葡亰官网 5

Unit6会面于Unit2事后运行,所有选定的unit都见面给调度程序删除。

注意:删除队列或者单元总是有高风险的。在咱们的事例里,它见面造成Unit6遇到错误,或者造成目标体系的数据库不平等,因为其的前提Unit4因为于去除而从未运行。

Gateway:Gateway是别一个神秘的特性瓶颈,在bgRFC中,它为获了优化。bgRFC中的新的概念是碰头调剂在相同光应用服务器上而运转的活跃调度程序的极特别数额,也会见调剂全部RFC调度程序可用之绝大连接数。这个范围会维护地方的Gateway使之不至于过载。

每个发送系统的彼此的活跃调度程序数量与其的不过大连接数也是可安排的,因此对于destination的Gateway也存在过载保护。

属性的震慑:新bgRFC实现的优化在青出于蓝负荷、多因之景下特别明白。首坏运行的时光,线性对数可伸缩性(a
linear logarithmical
scalability)的RFC数据处理成可能(视系统兼容性而定)。

函数队排的业务特性使得,在拍卖单独的单元时,bgRFC不极端容易获取有目共睹的性能提升,但是在使还多或又快的硬件的时,则可显著提升吞吐量。限制因素会是数据库的属性和这些单元的处理速度。

此外,新的API也是优化的等同片段。一些剩下的函数被移除,某些老的API也不再使用。这使相关的干活更是平整和有效率,减少支持组织及出团队的工作量。

重新多信息:

重复多关于bgRFC的信息, 请看:

  • bgRFC:
    配置

  • bgRFC:
    管理

  • bgRFC:
    编程

当地数据列:LDQ

本地数据列(Local Data Queue
)是一致种植专门之RFC通信。在这种利用情况下,系统非见面积极发送数据。相反,根据拉取规则,系统会管数量存储在地方,直到于外表系统调用(比如移动设备)。

LDQ可以替原先出于qRFC在不发送场景下提供的意义(qRFC No
Send)。相比之下它提供了再度有效率的数据模型。

重多内容:

Local Data Queue
(LDQ)

名词对照

scheduler:调度程序

outbound  queue:外往行

inbound queue:内往行

 

连带文章:ABAP
RFC远程调用

 

 

澳门新葡亰官网SAP中的BOPF(Business Object Processing Framework)

望简化你的事情应用开发进程?业务对象处理框架(Business Object
Processing Framework,以下简称BOPF)也许得拉到你。

BOPF是SAP Business
Suite
蒙用来开发业务对象的底子设备。通过BOPF,你可以于开发周期中节省时间,因为不用还亲落实有技术细节了,比如权限控制、低等级的事务处理、缓存管理、提供消费者API和编制业务逻辑。通过当BOPF中动用对象驱动的措施,你可以小心于实际的事情需要自己。

 

本文链接:http://www.cnblogs.com/hhelibeb/p/8227382.html

英文标题:Introduction to Business Object Processing Framework
(BOPF)

BOPF代表什么?

BOPF是一个冲面向对象ABAP的框架,提供了通用的劳动同功能集,以支援开发者加速、标准化、模块化开发进程。BOPF管理而的作业对象的全生命周期,会盖工作应用开发的有所地方。这使得用开发者不再消费时以付出以基础设备方面,而是专注于故意的政工逻辑。通过下BOPF,你可免费得到整个应用基础设备与多只零部件的合。这允许你根据稳定之、通过客户验证的功底设备来飞地构建利用。

哪位当应用BOPF?

BOPF并无是一个初框架。实际上,它都让构建得不行好,并且大地于SAP
ByDesign和SAP Business
Suite应用与成品被获得了下。比如说:运输管理(Transportation
Management,TM)、环境(Environment)、健康以及安全(Health and
Safety,EH&S)、SAP供应商生命周期管理(SAP Supplier Lifecycle
Management)、SAP变更管理(SAP Management of
Change),SAP质量问题管理(SAP Quality Issue
Management)——这就是一律组成部分。除了SAP内部的支付外,BOPF也在客户之支出品种遭到落了使用。

怎样才能使用BOPF?

为BOPF受到的关注日渐增长,它于SAP客户开发品种面临为抱了下。BOPF于SAP
Business Suite EHP5 SP11、SAP Business Suite EHP6 SP05和SAP
Business Suite EHP7中发布。此外,从SAP NetWeaver
7.50
本开始,BOPF在单独的SAP NetWeaver中可用——作为SAP
BASIS层
的同有些。

利用基础设备的要害组件有哪?

借助于BOPF,你可动用一个框架,通过其可以无缝地并不同之工作应用程序组件。可以以它变得开箱即用。因此,使用BOPF的独到之处是判的:

当以BOPF时,你切莫需要在花费下列组件时关注适配器或者集成层的开销。

澳门新葡亰官网 1

 

UI和消费

Dynpro

BOPF为传统Dynpro UI的消费提供了一个标准界面。

Web Dynpro / Floor Plan Manager (FPM)            

通过FPM,复杂用户界面的配置和生成变得前所未有的简单。FPM是一个Web Dynpro组件的实现,并且可以轻松地和BOPF集成。BOPF提供了与FPM的可配置和无编码的集成,允许你在一个免费修改的环境中简化BOPF业务对象的消费。

More: Floorplan Manager for Web Dynpro ABAP and Web Dynpro ABAP on SCN

SAPUI5

SAP UI5是为了偶发性使用而设计的轻量UI。

More: UI Developer Center on SCN

Gateway (OData)

SAP NetWeaver Gateway是一个可以提供便捷方式以将各种设备、环境和平台连接到SAP软件的技术,它基于市场标准。BOPF和Gateway的连接基于REST和OData标准。

More: SAP Gateway简介

Business Object Layer & GenIL

The Business Object Layer (BOL)提供了访问业务数据的通用API。

The Generic Interaction Layer (GenIL)允许使用无状态的请求/相应格式来对业务数据进行统一的访问。BOPF提供了和BOL以及GenIL集成的适配器

More: SAP CRM 7.0中的BOL(Business Object Layer)

拍卖并

Post Processing Workflow

通过BOPF业务对象,你可以使用Post Processing Workflow集成业务处理

More: Post Processing Framework (PPF) (on SCN )

基础设备零件

Archive Development Kit                 (ADK)  

通过ADK你可以不仅归档数据库记录,并且可以存储业务示例。使用BOPF你可以选择需要被归档的业务对象实例并且触发它们的归档处理。

More: Archive Development Kit on the SAP help portal

Change Documents

BOPF使用SAP NetWeaver Change Documents解决方案来记录业务对象数据的更改。

More: Change Documents on the SAP help portal

Application Logging

应用日志用于记录应用处理期间的特别事件,因此,如有必要,借由它你可以在稍后重现它们。

在BOPF中,应用日志和业务对象的应用日志帮助相集成。这个业务对象会在读写制定应用的日志消息时提供支持。

More: Application Log – Guidelines for Developers on the SAP help portal

Enterprise Search

SAP NetWeaver的搜索服务提供了一个企业级的索引和搜索结构化(业务对象)和非结构化(文档)数据的框架。

BOPF的设计提供给了开启BOPF业务对象搜索的便捷方式。使用一个现有的业务对象模型,你会有选项来导入业务对象数据,并且,通过该方式,来创建相应的企业搜索模型。

More: Enterprise Search on SCN

Business Rules Framework plus (BRF+)

BRF+是一个规则引擎,它提供了可理解的API和界面用以定义和处理业务规则和表达式。

通过指定BOPF的表达式类型,可以在BRF+中创建业务对象数据检索表达式。这些表达式使得业务对象的数据在BRF+环境中可用,并支持任何的规则处理。

More: Business Rule Framework plus on SCN

编程模型包含哪些因素?

事情对象(business
objects)
是基于BOPF的编程模型的基本单元。业务使用或作业过程会运作于某些事情对象之上。业务对象被代表为节点受到之层次结构树。一个单一节点包含一多样语义相关的事体对象数据以及呼应的政工逻辑。在技术面,每个节点由一个正式字典表实现。每个节点实例对应一个单纯的表条目(表行)。节点、属性与候选键(alternative
key)组成了事情对象的data
part
。从技术视角继续羁押的言辞,属性组成了数据库表的排。节点作为连接业务对象的作业逻辑的锚点。

于每个节点,可以定义多独档次的实业,来做工作对象的特定的business
logic part

节点实体 用处

Action

用来实现业务对象的服务(操作或行为)。action由service consume(比如用户界面)显式地触发。

Determination              

在某个特定的触发场景满足是,determination会提供自动运行的功能。业务对象实例的修改会在内部触发determination。

Validation

用于检验指定的action是否可以在指定的n节点实例上运行(action检查),或者检验一个节点实例集是否一致(一致性检查).

Query

用于搜索符合特定搜索条件的业务对象实例。

Authorization Check

用于提供业务对象节点的权限检查(对于数据和对数据的操作)

Association

用于连接位于不同节点的业务对象实例

澳门新葡亰官网 2

以什么开发条件遭到BOPF可用?

工具支持 特性

SAP Internal Design Time Tools (BOBF)

这是SAP内部的开发工具集,为开发者提供了可理解的特性集,来为SAP Business Suite构建业务对象为中心的应用。

BO Builder (BOB)

这个工具适用于简单增强场景

客户可以用它增强SAP业务对象,也可以在客户命名空间创建他们自己的简单业务对象。业务对象、节点、action、determination、query和validation的创建是可扩展的,支持向导驱动工具。

BO Buider可以通过SAP GUI运行,在SAP Business Suite EHP5和更高版本中可用。

BO Builder for eXperts (BOBX)

该工具适用于有经验的BOPF开发者
它也为SAP Business Suite客户提供了可理解的特性集来构建BO中心的应用,因此客户可以用它来开发自己的项目。

BO Buider可以通过SAP GUI运行,在SAP Business Suite EHP6和更高版本中可用。

(Eclipse-Based) ABAP Development Tools for BOPF

随着SAP Business Suite EHP7发布的一个新的基于Eclipse的客户端应用。

可以与ABAP Development Tool一同安装s,该工具集在基于Eclipse的ABAP IDE之上工作,目标是支持所有类型的BO中心用例:它同时允许新的BOPF应用的创建和已有的BOPF对象的增强。

BO Builder Test Environment (BOBT)

通过开发环境,你总是可以测试每个业务对象(或增强)的当前的功能。

BO-Specific Debugging

在业务对象实体层面的调试可以加速排查问题的过程。

可以为实体设置断点,比如ctions、 determinations或validations。可以通过选项来为节点的具体活动设置观察点、

Integrated BO Test Infrastructure

BOPF支持自动化测试和测试驱动开发。你可以用ABAP unit来测试独立的业务对象单元,比如actions、validations或determinations.。此外,通过场景测试功能,可以扩展测试,来测试多个步骤的组合场景。

注意

作为SAP客户,你可以使BO Builder(BOB)、
BO Builder for eXperts
(BOBX)或者基于Eclipse的客户端来出好之事体对象。你可于这些工具的协同性中受益。你得,例如,在BOB工具创建工作对象,然后以其余工具被编它们。

教程

  • Getting Started with
    BOPF——引导您从零开始创建第一单事情对象、并采用BOPF
    API实现基本操作所需要的装有手续。
  • 读以下相关文章:
    • Navigating the BOPF: Part 2 – Business Object
      Overview
    • Navigating the BOPF: Part 3 – Working with the BOPF
      API
    • Navigating the BOPF: Part 4 – Advanced BOPF API
      Features
    • Navigating the BOPF: Part 5 – Enhancement
      Techniques
    • Navigating the BOPF: Part 6 – Testing & UI
      Integration
    • TechEd 2013: Agile custom development with
      BOPF

 

网站地图xml地图