SAP ALV报表开发实战案例(三)
SAP ALV报表开发实战案例
嗨!大家好~我是SAP小白,今天给大家分享一下我今天,不!是这几天开发的"实战级"的案例开发.如果有哪里感到疑惑或错误,欢迎大家评论区留言哦,让我们一起努力,拿高薪!!!冲冲冲!
对于学过openSQL的同学,上手起来可能会相对性的容易一些.我呢,主要说我的思路和部分代码,提供给大家参考学习.
如果大家对openSQL有遗忘的话请阅读这个博客哦
简单的来说就是做查询(增加,修改,删除),多表联查,单值查询,笛卡尔积,左连接,右连接,内连接,子查询,以及性能优化(目前水平没有涉及到事务).我今天主要讲的就是查询!查询!查询!重要的事情说三遍.本次主要使用的是内连接的方式.我把两种编写openSQL的方式分别写出来,给大家作比较.
//MySQL写法
SELECT * FROM emp e
INNER JOIN empext t
ON e.empno=t.empnpo
WHERE e.ename='tony'//SAP SQL写法
SELECT * FROM EMP AS E
INTO CORRESPONDING FIELDS OF TABLE GT_TABLE
INNER JOIN EMPEXT AS T
ON E~EMPNO = T~EMPNO
WHERE E~ENAME = 'NAME' .
大家看完之后会发现其实二者的区别并不是太大.
好了!接下来我开始进入今天的实战主题,不要走神哦.
首先!看需求!
选择屏幕
输出界面
从输出界面中我们可以看出来,需要查询的不止是三四张表那么容易,从理论上来讲数据在查询的时候关联的数据库越多性能就越差.今天咱不讲性能问题!
宣! SAP SQL进殿面上!
SELECT DISTINCTa~vkorg "销售组织a~vtweg "分销渠道a~vkgrp "销售组a~auart "订单类型a~erdat "订单日期a~vbeln "订单号a~kunnr "客户编码a~waerk "币种a~ERNAM "制单人b~posnr "行号c~name1 "客户全称d~kursk "汇率
INTO CORRESPONDING FIELDS OF TABLE GT_VBAK
FROM VBAK AS A
INNER JOIN VBAP AS B ON a~vbeln = b~vbeln
INNER JOIN KNA1 AS C ON a~kunnr = c~kunnr
INNER JOIN VBKD AS D ON a~vbeln = d~vbelnWHERE a~vbeln = p_vbeln .
写到这里调用REUSE_ALV_GRID_DISPLAY
然候ALV就可以直接输出到屏幕上了,这一张表关联了三张表.
接下来就是重点了.
当你在关联报表的时候应该会发现,输出界面上的这些字段,有的没有半毛钱关系,这个时候你就要采用分而治之
的思想来做了.
说白了就是把其他表之间的关联性较大的放在一起再次查询.需要你从新定义内表和工作区.
TYPES:BEGIN OF ty_vbep,vbeln TYPE vbep-vbeln,posnr TYPE vbep-posnr,wadat TYPE vbep-wadat,END OF ty_vbep.DATA: lt_vbep TYPE TABLE OF ty_vbep,ls_vbep TYPE ty_vbep.SELECT DISTINCTvbelnposnrwadatINTO CORRESPONDING FIELDS OF TABLE lt_vbepFROM vbepFOR ALL ENTRIES IN gt_vbakWHERE vbeln = gt_vbak-vbelnAND posnr = gt_vbak-posnr.SORT:lt_vbep BY vbeln posnr.LOOP AT gt_vbak INTO gs_vbak.
READ TABLE lt_vbepINTO ls_vbepWITH KEY vbeln = gs_vbak-vbeln posnr = gs_vbak-posnrBINARY SEARCH.MODIFY gt_vbak FROM gs_vbak.
ENDLOOP .
在这里定义内表和工作区都是局部的,只能在该函数中使用,所以我们还要到 include top
去添加相应的字段,换而言之就是把小表循环插入到大表当中去.
然后就把刚定义的工作区和内表正常使用即可,然后最好是做一个排序.
这里是比较重点的了,现在我们已经拿到数据,就需要loop
循环到大表中,最终的显示.
READ TABLE
这个语法就是:读取内表it_vbep
中的一行(按顺序从上到下读取)到is_vbep
,在通过is_vbep
中读取到数据输入到大表gs_vbak
中的相应字段,用二分法的方法.
一句话:把小表is_vbep
中的数据对应字段输入到大表gs_vbak
中.
整个取数的代码块仅供参考
也有其他逻辑.
FORM get_data . "取数TYPES:BEGIN OF ty_vbep,vbeln TYPE vbep-vbeln,posnr TYPE vbep-posnr,wadat TYPE vbep-wadat,END OF ty_vbep.DATA: lt_vbep TYPE TABLE OF ty_vbep,ls_vbep TYPE ty_vbep.* IF P_1 = 'X'.SELECT DISTINCTa~vkorg "销售组织a~vtweg "分销渠道a~vkgrp "销售组a~auart "订单类型a~erdat "订单日期a~vbeln "订单号a~kunnr "客户编码a~waerk "币种a~ERNAM "制单人b~posnr "行号c~name1 "客户全称d~kursk "汇率INTO CORRESPONDING FIELDS OF TABLE gt_vbakFROM vbak AS aINNER JOIN vbap AS b ON a~vbeln = b~vbelnINNER JOIN kna1 AS c ON a~kunnr = c~kunnrINNER JOIN vbkd AS d ON a~vbeln = d~vbelnWHERE a~vbeln = p_vbeln .IF gt_vbak IS NOT INITIAL.SELECT DISTINCTvbelnposnrwadatINTO CORRESPONDING FIELDS OF TABLE lt_vbepFROM vbepFOR ALL ENTRIES IN gt_vbakWHERE vbeln = gt_vbak-vbelnAND posnr = gt_vbak-posnr.ENDIF.SELECT *INTO TABLE @DATA(lt_tvakt)FROM tvaktWHERE spras = '1'.TYPES: BEGIN OF ty_vbkd,zlsch TYPE vbkd-zlsch , "付款方式ktext TYPE t151t-ktext, "客户级别kdgrp TYPE vbkd-kdgrp,bztxt TYPE t171t-bztxt,bzirk TYPE vbkd-bzirk,END OF ty_vbkd.DATA: lt_vbkd TYPE TABLE OF ty_vbkd,ls_vbkd TYPE ty_vbkd.SELECT vbkd~zlscht151t~ktextt171t~bztxtINTO CORRESPONDING FIELDS OF TABLE lt_vbkdFROM vbkdINNER JOIN t151t ON vbkd~kdgrp = t151t~kdgrpINNER JOIN t171t ON vbkd~bzirk = t171t~bzirkWHERE vbkd~kdgrp = t151t~kdgrpAND vbkd~bzirk = t171t~bzirk.SORT:lt_vbep BY vbeln posnr,lt_tvakt BY auart .LOOP AT gt_vbak INTO gs_vbak.READ TABLE lt_vbepINTO ls_vbepWITH KEY vbeln = gs_vbak-vbeln posnr = gs_vbak-posnrBINARY SEARCH.READ TABLE lt_vbkdINTO ls_vbkdWITH KEY kdgrp = t151t-kdgrp bzirk = gs_vbak-bzirkBINARY SEARCH.IF sy-subrc = 0.gs_vbak-wadat = ls_vbep-wadat.gs_vbak-ktext = ls_vbkd-ktext.gs_vbak-bztxt = ls_vbkd-bztxt.gs_vbak-bezei2 = gs_vbak-bezei.ENDIF.READ TABLE lt_tvakt INTO DATA(ls_tvakt) WITH KEY auart = gs_vbak-auart BINARY SEARCH.IF sy-subrc = 0.gs_vbak-bezei = ls_tvakt-bezei.ENDIF.MODIFY gt_vbak FROM gs_vbak."APPEND GS_VBAK TO GT_VBAK1.CLEAR:gs_vbak.ENDLOOP.
ENDFORM.
SAP ALV报表开发实战案例(三)相关推荐
- 27 行代码开发一个最简单的 SAP ALV 报表
所谓 ALV,全称是 ABAP List View,是 SAP GUI 环境下一种深受用户喜爱的数据呈现方式.网络上有很多关于如何编写 ALV 的例子,但大多都是大段大段的代码,缺乏必要的文字描述,对 ...
- 智能对话机器人开发实战案例剖析(2)
一.前言 本文是<智能对话机器人开发实战案例剖析>系列的第2篇:智能对话机器人分类标准,旨在对智能对话系统的进行一个系统性的介绍.相关内容已同步录制成视频课程,发布在网易云课堂. 二.正文 ...
- 知识图谱开发实战案例剖析_我从剖析Web开发人员路线图中学到的知识
知识图谱开发实战案例剖析 by Nicole Archambault 妮可·阿坎巴特(Nicole Archambault) 我从剖析Web开发人员路线图中学到的知识 (What I learned ...
- Python开发实战案例之网络爬虫(附源码)-张子良-专题视频课程
Python开发实战案例之网络爬虫(附源码)-35人已学习 课程介绍 课程特色: 特色1:案例驱动-围绕两大完整的Python网络爬虫实战开发案例:IT电子书下载网络爬虫和股票交易数据 ...
- 一个 Python 报表自动化实战案例
本篇文章将带你了解报表自动化的流程,并教你用Python实现工作中的一个报表自动化实战,篇幅较长,建议先收藏,文章具体的目录为: 1.Excel的基本组成 2.一份报表自动化的流程 3.报表自动化实战 ...
- 微信小程序蓝牙BLE开发实战——案例(二)
微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...
- h5端登录是什么意思_H5混合式APP开发实战案例终结篇
随着H5的功能不断完善,使用前端技术来开发安装在手机上的APP已经成为了许多人的选择,而且也有许多成熟的商业使用案例.本专栏注重实战,没有铺垫过多理论知识,因为实践出真知,实践是最好的学习方式.我选择 ...
- unity应用开发实战案例_Unity3D游戏引擎开发实战从入门到精通
Unity3D游戏引擎开发实战从入门到精通(坦克大战项目实战.NGUI开发.GameObject) 一.Unity3D游戏引擎开发实战从入门到精通是怎么样的一门课程(介绍) 1.1.Unity3D游戏 ...
- 敏捷开发实战(三)--每日晨会,是否只是摆设?
经过上面总结的两篇博文敏捷开发实践(一)–谈谈我对敏捷开发的理解和敏捷开发实战(二)–你真的了解Scrum吗?,我们已经对Scrum进行了整体的认识和学习,这篇博文我们一起讨论和学习,我在实施敏捷的过 ...
最新文章
- C++之头文件与源文件
- js判断页面是首次加载还是刷新
- PHP操作redis
- abap alv新增行数据_ALV DMEO 09:REUSE_ALV_GRID_DISPLAY 使用HTML 居中 颜色大小 加粗 斜体 超链接 控制...
- 哥德巴赫猜想(洛谷P1304题题解,Java语言描述)
- Rectangles
- android安装apk提示版本号不同,android 安装apk 遇到的问题
- 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU
- 德鲁伊druid数据库明文密码加密
- 兰州交通大学计算机科学与技术专业排名,专业排行
- idea调试怎么跳出循环_Intellij IDEA调试功能使用总结
- linux whois 命令 详解
- WebRTC下载及编译(二)
- 苹果提交版本后显示”缺少出口合规证明“的解决办法
- [置顶] 话说你最拼命的时候怎样拼命的?
- 微信APP支付 C#
- ArcGIS 对起伏度、坡度和道路等及进行重分类处理
- 信息安全与密码学概论
- 冯仑《企业领导最容易犯的十大错误》
- myeclipse8.5汉化