当前位置: 首页 > news >正文

网站如何做百度搜索优化网络营销专业学校排名

网站如何做百度搜索优化,网络营销专业学校排名,找施工员在哪个网站上找,网站源文件下载AMDP 是HANA开发中的一种优化模式 按SAP的官方建议,在可以使用Open SQL实现需要的功能或优化目标的时候,不建议使用AMDP。而在需要使用Open SQL不支持的特性,或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况…

AMDP 是HANA开发中的一种优化模式 

按SAP的官方建议,在可以使用Open SQL实现需要的功能或优化目标的时候,不建议使用AMDP。而在需要使用Open SQL不支持的特性,或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况下,则应当使用AMDP。

下面我举例几种AMDP的实现方法,并且比较一下效率

示例代码如下

"! <p class="shorttext synchronized" lang="en">demo for select for vbap</p>
CLASS zcl_amdp_vbap DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.INTERFACES if_amdp_marker_hdb .TYPES: BEGIN OF ty_vbap,mandt TYPE s_mandt,vbeln TYPE vbeln_va,posnr TYPE posnr_va,matnr TYPE matnr,werks TYPE werks_d,lgort TYPE lgort_d,END OF ty_vbap.TYPES: tt_vbap TYPE STANDARD TABLE OF ty_vbap WITH EMPTY KEY.DATA: gt_vbap TYPE STANDARD TABLE OF ty_vbap." 常规方法:Open SQL "CLASS-METHODS get_vbap_by_opensqlIMPORTINGVALUE(p_clnt)  TYPE s_mandtVALUE(p_vbeln) TYPE vbelnVALUE(p_posnr) TYPE posnrVALUE(p_matnr) TYPE matnrEXPORTINGVALUE(et_vbap) TYPE tt_vbap."AMDP方式1: AMDP PROCEDURE实现,直接写SQLScript从HDB获取数据 "" 也可直接调用已创建的数据库对象,如存储过程、视图、函数等 "" 该方法可以直接被ABAP程序调用,必须设置为PUBLIC "CLASS-METHODS get_vbapIMPORTINGVALUE(p_clnt)  TYPE s_mandtVALUE(p_vbeln) TYPE vbelnVALUE(p_posnr) TYPE posnrVALUE(p_matnr) TYPE matnrEXPORTINGVALUE(et_vbap) TYPE tt_vbap."AMDP方式2-1-1: AMDP function实现,直接写SQLScript从HDB获取数据 "" 该方法不能直接被ABAP程序调用,只能在AMDP PROCEDURE实现中调用,建议可设置为 PRIVATE "CLASS-METHODS get_vbap_funcIMPORTINGVALUE(p_clnt)  TYPE s_mandt
*        VALUE(p_vbeln) TYPE vbeln
*        VALUE(p_posnr) TYPE posnr
*        VALUE(p_matnr) TYPE matnrRETURNINGVALUE(et_vbap) TYPE tt_vbap."AMDP方式2-1-2: AMDP procedure实现,调用上述的 AMDP function实现 "CLASS-METHODS get_vbap_by_funcIMPORTINGVALUE(p_clnt)  TYPE s_mandt
*        VALUE(p_vbeln) TYPE vbeln
*        VALUE(p_posnr) TYPE posnr
*        VALUE(p_matnr) TYPE matnrEXPORTINGVALUE(et_vbap) TYPE tt_vbap."AMDP方式2-2-1: AMDP procedure实现,为 TABLE FUNCTION CDS编写具体实现逻辑 "" 该方法无法直接被ABAP程序调用,但是对应的CDS可以被ABAP调用。 "" 此处对应的CDS名为:YCDS_INVENTORY,需要另外单独定义 "" 定义为 TABLE FUNCTION CDS 时,方法必须为 PUBLIC CLASS-METHODS "CLASS-METHODS get_vbap_for_cds FOR TABLE FUNCTION zcds_admp_demo_vbap.ENDCLASS.CLASS zcl_amdp_vbap IMPLEMENTATION.METHOD get_vbap_by_opensql.SELECT mandt,vbeln,posnr,matnr,werks,lgortFROM vbapWHERE ( vbeln = @p_vbeln OR @p_vbeln  = '' )OR ( posnr = @p_posnr OR @p_posnr = '' )OR ( matnr = @p_matnr OR @p_matnr = '' )INTO CORRESPONDING FIELDS OF TABLE @et_vbap.ENDMETHOD.METHOD get_vbapBY DATABASE PROCEDURE FOR HDBLANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING vbap.et_vbap =selectmandt,vbeln,posnr,matnr,werks,lgortFROM vbapWHERE mandt = :p_clnt;ENDMETHOD.METHOD get_vbap_funcBY DATABASE FUNCTION FOR HDBLANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING vbap.RETURNSELECTmandt,vbeln,posnr,matnr,werks,lgortFROM vbapWHERE mandt = :p_clnt;ENDMETHOD.METHOD get_vbap_by_funcBY DATABASE PROCEDURE FOR HDBLANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING zcl_amdp_vbap=>get_vbap_func.et_vbap =select *from "ZCL_AMDP_VBAP=>GET_VBAP_FUNC"(p_clnt => :p_clnt);ENDMETHOD.METHOD GET_VBAP_FOR_CDSBY DATABASE FUNCTION FOR HDBLANGUAGE SQLSCRIPTOPTIONS READ-ONLYUSING vbap.RETURNSELECTmandt,vbeln,posnr,matnr,werks,lgortFROM vbapWHERE mandt = :p_clnt;ENDMETHOD.ENDCLASS.

 ZCDS_ADMP_DEMO_VBAP  table function

@EndUserText.label: 'ZCDS_ADMP_DEMO_VBAP'
define table function ZCDS_ADMP_DEMO_VBAP
with parameters     @Environment.systemField: #CLIENTp_clnt  : abap.clnt
returns {mandt     : abap.clnt;vbeln     : vbeln;posnr     : posnr;matnr     : matnr;werks     : werks_d;lgort     : lgort_d;}
implemented by method zcl_amdp_vbap=>get_vbap_for_cds;

ZCDS_VIEW_VBAP CDS VIEW

@AbapCatalog.sqlViewName: 'ZSD0002'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'ZCDS_VIEW_VBAP'
define view ZCDS_VIEW_VBAP as select from vbap
{vbap.mandt,vbap.vbeln,vbap.posnr,vbap.matnr,vbap.werks,vbap.lgort}

程序执行代码:

*&---------------------------------------------------------------------*
*& Report z_test_amdp_vbap
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_amdp_vbap.
TYPES: BEGIN OF ty_vbap,mandt TYPE s_mandt,vbeln TYPE vbeln_va,posnr TYPE posnr_va,matnr TYPE matnr,werks TYPE werks_d,lgort TYPE lgort_d,END OF ty_vbap.
TYPES: tt_vbap TYPE STANDARD TABLE OF ty_vbap WITH EMPTY KEY.
DATA: gt_vbap TYPE STANDARD TABLE OF ty_vbap WITH EMPTY KEY .
DATA: p_vbeln TYPE vbeln.
DATA: p_posnr TYPE posnr.
DATA: p_matnr TYPE matnr.
DATA: lv_begin TYPE tzonref-tstampl.
DATA: lv_end   TYPE tzonref-tstampl.
DATA: lv_open  TYPE char100.
DATA: lv_abap  TYPE char100.
DATA: lv_proc  TYPE char100.
DATA: lv_func  TYPE char100.
DATA: lv_cds  TYPE char100.
DATA: lv_cds2  TYPE char100.PARAMETERS: p_open TYPE char01 AS CHECKBOX DEFAULT 'x'.
PARAMETERS: p_abap TYPE char01 AS CHECKBOX DEFAULT 'x'.
PARAMETERS: p_proc TYPE char01 AS CHECKBOX DEFAULT 'x'.
PARAMETERS: p_func TYPE char01 AS CHECKBOX DEFAULT 'x'.
PARAMETERS: p_cds TYPE char01 AS CHECKBOX DEFAULT 'x'.
PARAMETERS: p_cds2 TYPE char01 AS CHECKBOX DEFAULT 'x'.START-OF-SELECTION.IF p_open IS NOT INITIAL .GET TIME STAMP FIELD lv_begin.CALL METHOD zcl_amdp_vbap=>get_vbap_by_opensqlEXPORTINGp_clnt  = sy-mandtp_vbeln = p_vbelnp_posnr = p_posnrp_matnr = p_matnrIMPORTINGet_vbap = gt_vbap.GET TIME STAMP FIELD lv_end.lv_open = ( lv_end - lv_begin ) * 100000.ENDIF.IF p_abap IS NOT INITIAL .CLEAR:gt_vbap,lv_begin,lv_end.GET TIME STAMP FIELD lv_begin.SELECT mandt,vbeln,posnr,matnr,werks,lgortFROM vbapWHERE ( vbeln = @p_vbeln OR @p_vbeln  = '' )OR ( posnr = @p_posnr OR @p_posnr = '' )OR ( matnr = @p_matnr OR @p_matnr = '' )INTO CORRESPONDING FIELDS OF TABLE @gt_vbap.GET TIME STAMP FIELD lv_end.lv_abap = ( lv_end - lv_begin ) * 100000.ENDIF.IF p_proc IS NOT INITIAL .CLEAR:gt_vbap,lv_begin,lv_end.GET TIME STAMP FIELD lv_begin.CALL METHOD zcl_amdp_vbap=>get_vbapEXPORTINGp_clnt  = sy-mandtp_vbeln = p_vbelnp_posnr = p_posnrp_matnr = p_matnrIMPORTINGet_vbap = gt_vbap.GET TIME STAMP FIELD lv_end.lv_proc = ( lv_end - lv_begin ) * 100000.ENDIF.IF p_func IS NOT INITIAL .CLEAR:gt_vbap,lv_begin,lv_end.GET TIME STAMP FIELD lv_begin.CALL METHOD zcl_amdp_vbap=>get_vbap_by_funcEXPORTINGp_clnt  = sy-mandtIMPORTINGet_vbap = gt_vbap..GET TIME STAMP FIELD lv_end.lv_func = ( lv_end - lv_begin ) * 100000.ENDIF.IF p_cds IS NOT INITIAL .CLEAR:gt_vbap,lv_begin,lv_end.GET TIME STAMP FIELD lv_begin.SELECT * FROM ZCDS_ADMP_DEMO_VBAPINTO CORRESPONDING FIELDS OF TABLE @gt_vbap.GET TIME STAMP FIELD lv_end.lv_cds = ( lv_end - lv_begin ) * 100000.ENDIF.IF p_cds2 IS NOT INITIAL .CLEAR:gt_vbap,lv_begin,lv_end.GET TIME STAMP FIELD lv_begin.SELECT * FROM ZSD0002INTO CORRESPONDING FIELDS OF TABLE @gt_vbap.GET TIME STAMP FIELD lv_end.lv_cds2 = ( lv_end - lv_begin ) * 100000.
ENDIF.WRITE 'open sql 执行时间:' &&  lv_open.WRITE '应用层 SQL 执行时间:' &&  lv_abap.WRITE 'amdp procedure 执行时间:' &&  lv_proc.WRITE 'amdp func 执行时间:' &&  lv_func.WRITE 'table function cds 执行时间:' &&  lv_cds.WRITE 'cds 执行时间:' &&  lv_cds2.

   执行结果如下:

这里我们用的VBAP中总共的条目是3,825

从执行结果上来看,可以看出CDS view 是 效率是优于 amdp的,当然可能也是因为我只是做的普通的取数,没有复杂的计算啥的。有空了,大家可以做深入的研究

http://www.khdw.cn/news/60353.html

相关文章:

  • 设计网站公司多少钱站长工具搜索
  • 不断推进门户网站建设2021近期时事新闻热点事件简短
  • 烟台建设银行网站投放广告的渠道有哪些
  • 上海大公司seo外包
  • 网站托管运营所需资料排名优化关键词
  • 做网站做app什么专业最新实时新闻
  • frontpage制作个人网站 技巧公司网站建设开发
  • 投票网站怎么做站长工具ip地址查询
  • 网页搜索快捷键西安seo霸屏
  • 适应移动端网站模板网站设计公司官网
  • 营销网站建设解决方案百度竞价推广后台
  • 泰州企业自助建站系统营销的主要目的有哪些
  • 网站建设难点和重点怎样注册网站免费注册
  • 建设app下载官网旺道seo营销软件
  • 做兼职写小说网站网站怎么优化seo
  • 男女一起做暖暖网站谷歌推广方案
  • 铜陵app网站做招聘搜索推广营销
  • 沈阳世纪兴网站制作百度免费注册
  • 建设银行网站怎么能转账北京建站工作室
  • 淘宝入驻网站建设seo查询百科
  • wordpress产品展示主题seo入门到精通
  • 免费b站推广入口20232022新闻热点10条
  • 没有网站可以做百度排名吗安卓优化大师手机版下载
  • 网站logoPS怎么做重庆百度推广排名优化
  • 购物网站功能设计爱站工具网
  • 河南省住房和城乡建设厅网站文件怎么做线上推广
  • 免费找客户的软件9个广州seo推广神技
  • wordpress弹框登陆百度推广优化怎么做
  • 免费网站为何收录比较慢北京seo排名优化网站
  • 公司做网站所上传的产品图片成品视频直播软件推荐哪个好一点