SAP abap采购报表开发
*&----------------------------------------------------------------------*
REPORT ZZ_CGBB_01.
*声明表
TABLES: EKKO,
EKPO,
KONV,
MSEG,
MKPF.
*内表声明
DATA:
"表名
BEGIN OF GIT_EKKO OCCURS 0,
EBELN TYPE EKKO-EBELN, "采购凭证号
BUKRS TYPE EKKO-BUKRS, "公司代码
BSART TYPE EKKO-BSART, "采购凭证类型
KNUMV TYPE EKKO-KNUMV, "单据条件数
END OF GIT_EKKO,
BEGIN OF GIT_EKPO OCCURS 0,
EBELN TYPE EKPO-EBELN, "采购凭证号
EBELP TYPE EKPO-EBELP, "采购凭证的项目编号
EMATN TYPE EKPO-EMATN, "物料号
BUKRS TYPE EKPO-BUKRS, "公司代码
TXZ01 TYPE EKPO-TXZ01, "短文本
END OF GIT_EKPO,
BEGIN OF GIT_KONV OCCURS 0,
KNUMV TYPE KONV-KNUMV, "单据条件数
KPOSN TYPE KONV-KPOSN, "条件项目号
STUNR TYPE KONV-STUNR, "步骤编号
ZAEHK TYPE KONV-ZAEHK, "条件计数器
KSCHL TYPE KONV-KSCHL, "条件类型
KBETR TYPE KONV-KBETR, "价格
END OF GIT_KONV,
BEGIN OF GIT_MSEG OCCURS 0,
MBLNR TYPE MSEG-MBLNR, "物料凭证编号
MJAHR TYPE MSEG-MJAHR, "物料凭证年度
ZEILE TYPE MSEG-ZEILE, "物料凭证中的项目
MENGE TYPE MSEG-MENGE, "数量
MEINS TYPE MSEG-MEINS, "基本计量单位
EBELN TYPE MSEG-EBELN, "采购凭证号
EBELP TYPE MSEG-EBELP, "采购凭证的项目编号
END OF GIT_MSEG,
BEGIN OF GIT_MKPF OCCURS 0,
MBLNR TYPE MKPF-MBLNR, "物料凭证编号
MJAHR TYPE MKPF-MJAHR, "物料凭证年度
BUDAT TYPE MKPF-BUDAT, "凭证中的过帐日期
END OF GIT_MKPF,
BEGIN OF GIT_RESULT OCCURS 0,
EBELN TYPE EKKO-EBELN, "采购凭证号
EBELP TYPE EKPO-EBELP, "采购凭证的项目编号
BSART TYPE EKKO-BSART, "采购凭证类型
EMATN TYPE EKPO-EMATN, "物料号
TXZ01 TYPE EKPO-TXZ01, "短文本
BUDAT TYPE MKPF-BUDAT, "凭证中的过帐日期
MENGE TYPE MSEG-MENGE, "数量
MEINS TYPE MSEG-MEINS, "基本计量单位
JIAGE01 TYPE MSEG-MENGE, "PB00价格
JINE01 TYPE MSEG-MEINS, "PB00金额
JIAGE02 TYPE MSEG-MENGE, "折扣
JINE02 TYPE MSEG-MEINS, "折扣金额
END OF GIT_RESULT.
*变量申明
*RANGES: r_hkont FOR bseg-hkont. "G/L Account
*常量申明
*CONSTANTS:
*c_awtyp_vbrr TYPE bkpf-awtyp VALUE 'VBRR', "Refer. Transaction
TYPE-POOLS: slis. "引用ALV显示功能所需要的类型库
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv, "参考slis类型库中的t_fieldcat_alv定义变量。
prg LIKE sy-repid.
*选择屏幕申明
************************************************************************
* 选择屏幕申明 *
************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_BUKRS for EKKO-BUKRS OBLIGATORY, "Company code
s_BUDAT FOR MKPF-BUDAT,
s_EBELN FOR EKKO-EBELN,
s_BSART FOR EKKO-BSART,
s_EMATN FOR EKPO-EMATN.
SELECTION-SCREEN: END OF BLOCK b1.
*主程序
************************************************************************
* Start of selection *
************************************************************************
START-OF-SELECTION.
* Main process
PERFORM frm_main_process.
*&---------------------------------------------------------------------*
*& Form frm_main_process
*&---------------------------------------------------------------------*
* main process
*----------------------------------------------------------------------*
FORM frm_main_process .
* 取数
PERFORM frm_get_data.
* 整合数据
PERFORM frm_merge_data.
* 显示数据
PERFORM frm_display_data.
ENDFORM. " frm_main_process
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
SELECT
EBELN "采购凭证号
BUKRS ""公司代码
BSART "采购凭证类型
KNUMV "单据条件数
INTO CORRESPONDING FIELDS OF TABLE GIT_EKKO
FROM EKKO
WHERE EBELN IN S_EBELN "采购凭证号
AND BUKRS IN S_BUKRS "公司代码
AND BSART IN S_BSART. "采购凭证类型 屏幕选择里有的用in
IF GIT_EKKO[] IS NOT INITIAL.
SELECT
EBELN "采购凭证号
EBELP "采购凭证的项目编号
EMATN "物料号
TXZ01 "短文本
INTO CORRESPONDING FIELDS OF TABLE GIT_EKPO
FROM EKPO
FOR ALL ENTRIES IN GIT_EKKO
WHERE EMATN IN S_EMATN
AND EBELN = GIT_EKKO-EBELN.
IF GIT_EKPO[] IS NOT INITIAL.
SELECT
MBLNR "物料凭证编号
MJAHR "物料凭证年度
ZEILE "物料凭证中的项目
MENGE "数量
MEINS "基本计量单位
EBELN "采购凭证号
EBELP "采购凭证的项目编号
INTO CORRESPONDING FIELDS OF TABLE GIT_MSEG
FROM MSEG
FOR ALL ENTRIES IN GIT_EKPO
WHERE EBELP = GIT_EKPO-EBELP
AND EBELN = GIT_EKPO-EBELN.
IF GIT_EKPO[] IS NOT INITIAL.
SELECT
MBLNR "物料凭证编号
MJAHR "物料凭证年度
BUDAT "凭证中的过帐日期
INTO CORRESPONDING FIELDS OF TABLE GIT_MKPF
FROM MKPF
FOR ALL ENTRIES IN GIT_MSEG
WHERE MBLNR = GIT_MSEG-MBLNR
AND MJAHR = GIT_MSEG-MJAHR
and BUDAT in s_BUDAT.
endif.
endif.
endif.
IF GIT_EKKO[] IS NOT INITIAL.
SELECT
KNUMV "单据条件数
KPOSN "条件项目号
STUNR "步骤编号
ZAEHK "条件计数器
KSCHL "条件类型
KBETR "价格
INTO CORRESPONDING FIELDS OF TABLE GIT_KONV
FROM KONV
FOR ALL ENTRIES IN GIT_EKKO
WHERE KNUMV = GIT_EKKO-KNUMV
AND ( KSCHL = 'PB00' OR KSCHL = 'SKTO' ).
endif.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_MERGE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_MERGE_DATA .
SORT GIT_MKPF BY MBLNR MJAHR.
SORT GIT_EKPO BY EBELN EBELP.
SORT GIT_EKKO BY EBELN.
SORT GIT_KONV BY KNUMV.
LOOP AT GIT_MSEG INTO GIT_MSEG.
READ TABLE GIT_MKPF INTO GIT_MKPF
WITH KEY MBLNR = GIT_MSEG-MBLNR
MJAHR = GIT_MSEG-MJAHR
BINARY SEARCH.
IF SY-SUBRC = 0.
GIT_RESULT-EBELN = GIT_MSEG-EBELN. "采购凭证号
GIT_RESULT-EBELP = GIT_MSEG-EBELP. "采购凭证的项目编号
GIT_RESULT-BUDAT = GIT_MKPF-BUDAT. "凭证中的过帐日期
GIT_RESULT-MENGE = GIT_MSEG-MENGE. "数量
GIT_RESULT-MEINS = GIT_MSEG-MEINS. "基本计量单位
READ TABLE GIT_EKPO INTO GIT_EKPO
WITH KEY EBELN = GIT_MSEG-EBELN
EBELP = GIT_MSEG-EBELP
BINARY SEARCH.
IF SY-SUBRC = 0.
GIT_RESULT-TXZ01 = GIT_EKPO-TXZ01. "短文本
GIT_RESULT-EMATN = GIT_EKPO-EMATN. "物料号
READ TABLE GIT_EKKO INTO GIT_EKKO
WITH KEY EBELN = GIT_EKPO-EBELN
BINARY SEARCH.
IF SY-SUBRC = 0.
GIT_RESULT-BSART = GIT_EKKO-BSART. "采购凭证类型
READ TABLE GIT_KONV INTO GIT_KONV
WITH KEY KNUMV = GIT_EKKO-KNUMV
KSCHL = 'PB00'
BINARY SEARCH.
IF SY-SUBRC = 0.
GIT_RESULT-JIAGE01 = GIT_KONV-KBETR. "PB00价格
GIT_RESULT-JINE01 = GIT_KONV-KBETR * GIT_RESULT-MENGE. "PB00金额
clear GIT_KONV.
endif.
READ TABLE GIT_KONV INTO GIT_KONV
WITH KEY KNUMV = GIT_EKKO-KNUMV
KSCHL = 'SKTO'
BINARY SEARCH.
IF SY-SUBRC = 0.
GIT_RESULT-JIAGE01 = GIT_KONV-KBETR. "PB00价格
GIT_RESULT-JINE01 = GIT_KONV-KBETR * GIT_RESULT-MENGE. "PB00金额
clear GIT_KONV.
endif.
clear GIT_EKKO.
endif.
clear GIT_EKPO.
endif.
append git_result to git_result.
clear git_result.
clear GIT_MKPF.
endif.
clear git_mseg.
endLOOP.
ENDFORM. " FRM_MERGE_DATA
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_DATA .
DATA gs_fieldcat LIKE LINE OF gt_fieldcat.
DEFINE fc.
gs_fieldcat-fieldname = &1.
if not &2 is initial.
gs_fieldcat-ref_tabname = &2.
gs_fieldcat-ref_fieldname = &3.
else.
gs_fieldcat-outputlen = &4.
gs_fieldcat-seltext_l = &5.
endif.
gs_fieldcat-lzero = &6.
append gs_fieldcat to gt_fieldcat.
clear gs_fieldcat.
END-OF-DEFINITION.
FC 'EBELN' '' '' '30' '采购凭证号' ''.
FC 'EBELP' '' '' '30' '采购凭证的项目编号' ''.
FC 'BSART' '' '' '30' '采购凭证类型' ''.
FC 'EMATN' '' '' '30' '物料号' ''.
FC 'TXZ01' '' '' '30' '短文本' ''.
FC 'BUDAT' '' '' '30' '凭证中的过帐日期' ''.
FC 'MENGE' '' '' '30' '数量' ''.
FC 'MEINS' '' '' '30' '基本计量单位' ''.
FC 'JIAGE01' '' '' '30' 'PB00价格' ''.
FC 'JINE01' '' '' '30' 'PB00金额' ''.
FC 'JIAGE02' '' '' '30' '折扣' ''.
FC 'JINE02' '' '' '30' '折扣金额' ''.
prg = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = prg
it_fieldcat = gt_fieldcat
* is_layout = ls_layout
* i_save = 'A'
TABLES
t_outtab = git_result.
ENDFORM. " FRM_DISPLAY_DATA
SAP abap采购报表开发相关推荐
- SAP MM 采购报表中Delivery Date的显示
SAP MM 采购报表中Delivery Date的显示 经反复研究与测试,得知ME2L/ME2N/ME2M等报表是无法很友好的显示Delivery Date. 以ME2L为例, Scope of l ...
- SAP ABAP 配置表开发常见问题总结与开发指南(SM30 SM34 SE54)
SAP ABAP 配置表开发常见问题总结与开发指南(SM30 SM34 SE54) 引言: 需求开发时,我们经常会通过配置表实现配置/基础/主数据的维护,但企业实际应用中,开发的配置表经常存在种种问题 ...
- 如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
在本教程的这篇步骤里,我们介绍了 ALV 层次顺序表的输出实现明细. SAP ABAP ALV 层次顺序表如何使用双表头(Multiple Headers)进行数据输出 本文介绍如何在 ALV 层次顺 ...
- SAP abap alv报表实例
这是一个sap alv报表实例 REPORT ztest005.*定义类型组 TYPE-POOLS: abap,slis.*定义ALV变量 DATA : lt_fieldcat TYPE slis_t ...
- SAP ABAP屏幕(Dialog)开发中,获取文本框的内容并且存到数据库中。
续更SAP相关内容. 这次讲一下在ABAP屏幕开发中怎样获取文本框的值. 在C# Winform开发中,我们直接 textBox.Text就可以取到文本框的值,但在ABAP中要繁琐一些. 好了,操作. ...
- 具备自动刷新功能的 SAP ABAP ALV 报表
该报表主要结构如下,完整代码见文末. f_call_rfc_wait: 发起异步调用,等待 1 秒钟,来模拟每隔 1 秒刷新屏幕的效果. f_display_data: ALV 常规操作,调用函数 R ...
- SAP MD04相关报表开发
场景描述:MD04是MRP的运行结果,逻辑复杂,功能比较强大.平时可能会遇到业务人员想要将MD04里面某些字段取出来用ALV展示的需求,比如库存短缺报表等,可以用下面的方式来取MD04里面的数据,这个 ...
- 关于 SAP ABAP 报表的多语言显示问题试读版
本专栏计划的文章数在 150 篇左右,到 2022年11月9日为止,目前已经更新了 63 篇,专栏完成度为 42% 笔者这套零基础快速学习 ABAP从 2021年4月10日写下第一篇文章以来,感谢广大 ...
- 视频教程-SAP ABAP 开发入门-其他
SAP ABAP 开发入门 16年IT行业从业经验,本科学机械工程及自动化专业,毕业后转行IT行业至今:期间取得北航软件学院软件工程专业硕士学位:工作期间主要从事过项目实施,软件开发工作:擅长系统架构 ...
- SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全)
SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全) 简介: 一个 SAP 更改文档对象(SCDO:SAP Change Document Object )由一组更改表和更改设 ...
最新文章
- (C++)字符数组初始化的两种方法
- mysql charindex_mysql中替代charindex的函数substring_index、find_in_set | 学步园
- java 中的 Scanner
- 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用
- [面试题]事件循环经典面试题解析
- C#LeetCode刷题之#69-x 的平方根(Sqrt(x))
- tcs标准编写软件_tcs2010下载-tcs2010(中国标准编写模板) 免费版 - 河东下载站
- python合并相同内容单元格_快速合并单元格相同项的内容
- Spring Cloud微服务实战
- 手机如何测光照度_手机摄影,如何进行准确的测光?一篇文章教会你玩转“测光”...
- 程序员表白技巧:程序员木讷? 我反手就是一串代码
- rpm -e卸载mysql_rpm
- APP逆向案例之(三)sign 参数破解
- 关于PYTHON里SUPER使用时报的typeerror错误 - dongua的日志 - 网易博客
- 2018美团CodeM 题解
- 马太效应(Matthew effect) 强者愈强 弱者愈弱
- 2007年中国优秀无线互联网站点TOP50点评
- 【Pandas数据处理100例】(三十一):Pandas读取Excel(xlsx)表格文件
- Windows常用快捷键(提高您的工作效率轻松完成日常工作)
- 关闭windows安全警报_关闭 Windows 10 系统中自带 Defender 防病毒软件三种方法
热门文章
- 弱水三千的由来(转)
- 功率因数 matlab,基于Matlab的功率因数校正电路的仿真分析
- 手机黑圆点怎么打_输入法:外国人名字中间的点(实心小黑点)怎么打出来?...
- 在IE浏览器访问网址时显示证书错误,导航已阻止
- 河海大学计算机信息学院2013年考研录取名单,河海大学地学院2013年考研录取名单...
- 网易软件测试面试总结分享——送给正在找工作的你
- Dex.top新手使用教程
- Python基础数据类型:字符串,列表,元组,集合,字典用法总结
- 20205月6日服务器维护,国服12月6日维护公告:各大区服务器分时段维护
- 量化交易系统之python+mysql(二)