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报表开发实战案例(三)相关推荐

  1. 27 行代码开发一个最简单的 SAP ALV 报表

    所谓 ALV,全称是 ABAP List View,是 SAP GUI 环境下一种深受用户喜爱的数据呈现方式.网络上有很多关于如何编写 ALV 的例子,但大多都是大段大段的代码,缺乏必要的文字描述,对 ...

  2. 智能对话机器人开发实战案例剖析(2)

    一.前言 本文是<智能对话机器人开发实战案例剖析>系列的第2篇:智能对话机器人分类标准,旨在对智能对话系统的进行一个系统性的介绍.相关内容已同步录制成视频课程,发布在网易云课堂. 二.正文 ...

  3. 知识图谱开发实战案例剖析_我从剖析Web开发人员路线图中学到的知识

    知识图谱开发实战案例剖析 by Nicole Archambault 妮可·阿坎巴特(Nicole Archambault) 我从剖析Web开发人员路线图中学到的知识 (What I learned ...

  4. Python开发实战案例之网络爬虫(附源码)-张子良-专题视频课程

    Python开发实战案例之网络爬虫(附源码)-35人已学习 课程介绍         课程特色: 特色1:案例驱动-围绕两大完整的Python网络爬虫实战开发案例:IT电子书下载网络爬虫和股票交易数据 ...

  5. 一个 Python 报表自动化实战案例

    本篇文章将带你了解报表自动化的流程,并教你用Python实现工作中的一个报表自动化实战,篇幅较长,建议先收藏,文章具体的目录为: 1.Excel的基本组成 2.一份报表自动化的流程 3.报表自动化实战 ...

  6. 微信小程序蓝牙BLE开发实战——案例(二)

    微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...

  7. h5端登录是什么意思_H5混合式APP开发实战案例终结篇

    随着H5的功能不断完善,使用前端技术来开发安装在手机上的APP已经成为了许多人的选择,而且也有许多成熟的商业使用案例.本专栏注重实战,没有铺垫过多理论知识,因为实践出真知,实践是最好的学习方式.我选择 ...

  8. unity应用开发实战案例_Unity3D游戏引擎开发实战从入门到精通

    Unity3D游戏引擎开发实战从入门到精通(坦克大战项目实战.NGUI开发.GameObject) 一.Unity3D游戏引擎开发实战从入门到精通是怎么样的一门课程(介绍) 1.1.Unity3D游戏 ...

  9. 敏捷开发实战(三)--每日晨会,是否只是摆设?

    经过上面总结的两篇博文敏捷开发实践(一)–谈谈我对敏捷开发的理解和敏捷开发实战(二)–你真的了解Scrum吗?,我们已经对Scrum进行了整体的认识和学习,这篇博文我们一起讨论和学习,我在实施敏捷的过 ...

最新文章

  1. C++之头文件与源文件
  2. js判断页面是首次加载还是刷新
  3. PHP操作redis
  4. abap alv新增行数据_ALV DMEO 09:REUSE_ALV_GRID_DISPLAY 使用HTML 居中 颜色大小 加粗 斜体 超链接 控制...
  5. 哥德巴赫猜想(洛谷P1304题题解,Java语言描述)
  6. Rectangles
  7. android安装apk提示版本号不同,android 安装apk 遇到的问题
  8. 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU
  9. 德鲁伊druid数据库明文密码加密
  10. 兰州交通大学计算机科学与技术专业排名,专业排行
  11. idea调试怎么跳出循环_Intellij IDEA调试功能使用总结
  12. linux whois 命令 详解
  13. WebRTC下载及编译(二)
  14. 苹果提交版本后显示”缺少出口合规证明“的解决办法
  15. [置顶] 话说你最拼命的时候怎样拼命的?
  16. 微信APP支付 C#
  17. ArcGIS 对起伏度、坡度和道路等及进行重分类处理
  18. 信息安全与密码学概论
  19. 冯仑《企业领导最容易犯的十大错误》
  20. myeclipse8.5汉化

热门文章

  1. ffmpeg里转场transition
  2. 基于微信小程序做直播的截图(微信小程序发起视频直播)
  3. C语言谭浩强第三版第九章例题及课后题:预处理命令
  4. Logisim入门实验 1位加减法器 4位加减法器 用加法器实现32位加减法器
  5. 北邮石川教授:「异质信息网络」研究现状及未来发展
  6. Openssh7.4p1更换为8.2
  7. VMware出现点虚拟机和新建虚拟机没反应的解决办法
  8. 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试
  9. 《游戏机制——高级游戏设计技术》一2.4 渐进型游戏
  10. 保存富文本编辑器内容