SAP_ABAP 采购价格条件报表(改进版1)

1.通过inner join 将两个具有相同字段的父表和字表连接起来,减少代码的繁杂度,增加搜索精度和速度,减少对内存空间的占用。

&-----------------------------------------------------------------------------------------------------*
*&                CHANGE HISTORY for XX project                                 *
*&-----------------------------------------------------------------------------------------------------*
*&   DATE     |     PROGRAMMER   |   FLAG                                     *
*& 2022/8/13   |     Lee   |   XX-BW                                             *
*------------------------------------------------------------------------------------------------------*REPORT  ZT006.*Declaration tables 数据库表的申明
TABLES:EKKO, "采购凭证抬头EKPO, "采购凭证项目KONV, "条件(事务数据)MSEG, "凭证段:物料MKPF. "抬头:物料凭证DATA:"采购凭证项目BEGIN OF GIT_EKPO OCCURS 0,EBELN TYPE EKPO-EBELN,             "采购凭证号EBELP TYPE EKPO-EBELP,             "采购凭证的项目编号BUKRS TYPE EKKO-BUKRS,             "公司代码BSART TYPE EKKO-BSART,             "采购凭证类型KNUMV TYPE EKKO-KNUMV,             "单据条件数MATNR TYPE EKPO-MATNR,             "物料号TXZ01 TYPE EKPO-TXZ01,             "短文本END OF GIT_EKPO,"条件(事务数据)BEGIN OF GIT_KONV OCCURS 0,KNUMV TYPE KONV-KNUMV,             "单据条件数KPOSN TYPE KONV-KPOSN,             "条件项目号MATNR TYPE KONV-STUNR,             "步骤编号ZAEHK TYPE KONV-ZAEHK,             "条件计数器KBETR TYPE KONV-KBETR,             "基本计量单位KSCHL TYPE KONV-KSCHL,             "条件类型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,             "采购凭证的项目编号MATNR TYPE MSEG-MATNR,             "物料号WAERS TYPE MSEG-WAERS,             "货币码BUDAT TYPE MKPF-BUDAT,             "凭证中的过帐日期END OF GIT_MSEG,"结果表BEGIN OF GIT_RESULT OCCURS 0,EBELN TYPE MSEG-EBELN,             "采购凭证号EBELP TYPE EKPO-EBELP,             "采购凭证的项目编号BSART TYPE EKKO-BSART,             "采购凭证类型MATNR TYPE EKPO-MATNR,             "物料号TXZ01 TYPE EKPO-TXZ01,             "短文本BUDAT TYPE MKPF-BUDAT,             "凭证中的过帐日期MENGE TYPE MSEG-MENGE,             "数量MEINS TYPE MSEG-MEINS,             "单位JIA01 TYPE KONV-KBETR,             "价格JIN01 TYPE KONV-KBETR,             "金额JIA02 TYPE KONV-KBETR,             "折扣JIN02 TYPE KONV-KBETR,             "折扣金额JIN03 TYPE KONV-KBETR,             "最终金额HUOBI TYPE MSEG-WAERS,             "货币单位END OF GIT_RESULT.*Ranges
"RANGES: r_hkont      FOR bseg-hkont,            "G/L Account*Constants
"CONSTANTS:
"  c_awtyp_vbrr    TYPE bkpf-awtyp VALUE 'VBRR',      "Refer. Transac
TYPE-POOLS: SLIS.       "引用ALV显示功能所需要的类型库DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
"参考slis类型库中的t_fieldcat_alv定义变量。PRG LIKE SY-REPID.************************************************************************
*                      Selection screen                                *
************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*Input screen: selection options
SELECT-OPTIONS:S_BUKRS FOR EKKO-BUKRS OBLIGATORY,        "公司代码S_BUDAT FOR MKPF-BUDAT,                   "过账日期S_BSART FOR EKKO-BSART,                   "采购凭证类型S_EBELN FOR EKPO-EBELN,                   "采购凭证号S_MATNR FOR EKPO-MATNR.                    "物料号
SELECTION-SCREEN: END OF BLOCK B1.************************************************************************
*                      Start of selection                              *
************************************************************************
START-OF-SELECTION. "程序真正从这里开始执行*   Main processPERFORM 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*----------------------------------------------------------------------*
***INCLUDE ZT005_FRM_GET_DATAF01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA ."读取数据 SQL结构化查询语句SELECT  A~EBELN "采购凭证号A~BUKRS  "公司代码A~BSART   "采购凭证类型A~KNUMV "单据条件数B~EBELP  "采购凭证的项目编号B~MATNR  "物料号B~TXZ01  "短文本INTO CORRESPONDING FIELDS OF TABLE GIT_EKPOFROM EKKO AS AINNER JOIN EKPO AS BON A~EBELN = B~EBELNWHERE A~EBELN IN S_EBELN  "采购凭证号AND A~BUKRS IN S_BUKRS  "公司代码AND A~BSART IN S_BSART  "采购凭证类型AND B~MATNR IN S_MATNR. "物料号IF GIT_EKPO[] IS NOT INITIAL.SELECTA~MBLNR  "物料凭证编号A~MJAHR  "物料凭证年度A~ZEILE  "物料凭证中的项目A~MENGE  "数量A~MEINS  "基本计量单位A~EBELN  "采购凭证号A~EBELP  "采购凭证的项目编号A~MATNR  "物料号A~WAERS  "货币码B~BUDAT  "过账日期INTO CORRESPONDING FIELDS OF TABLE GIT_MSEGFROM MSEG AS AINNER JOIN MKPF AS BON  A~MBLNR = B~MBLNRAND A~MJAHR = B~MJAHRFOR ALL ENTRIES IN GIT_EKPOWHERE A~MATNR IN S_MATNRAND A~EBELN = GIT_EKPO-EBELNAND A~EBELP = GIT_EKPO-EBELPAND B~BUDAT IN S_BUDAT.SELECT KNUMV  "单据条件数KPOSN  "条件项目号STUNR  "步骤编号ZAEHK  "条件计数器KBETR  "基本计量单位KSCHL  "条件类型INTO CORRESPONDING FIELDS OF TABLE GIT_KONVFROM KONVFOR ALL ENTRIES IN GIT_EKPOWHERE KNUMV = GIT_EKPO-KNUMVAND ( 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_EKPO BY EBELN EBELP.SORT GIT_KONV BY KNUMV KSCHL.LOOP AT GIT_MSEG INTO GIT_MSEG.GIT_RESULT-EBELN = GIT_MSEG-EBELN. "采购凭证GIT_RESULT-EBELP = GIT_MSEG-EBELP. "采购凭证项目编号'GIT_RESULT-MATNR = GIT_MSEG-MATNR. "物料号GIT_RESULT-BUDAT = GIT_MSEG-BUDAT. "过账日期GIT_RESULT-MENGE = GIT_MSEG-MENGE. "数量GIT_RESULT-MEINS = GIT_MSEG-MEINS. "单位GIT_RESULT-HUOBI = GIT_MSEG-WAERS. "货币READ TABLE GIT_EKPO INTO GIT_EKPOWITH KEY EBELN = GIT_RESULT-EBELNEBELP = GIT_RESULT-EBELPBINARY SEARCH.IF SY-SUBRC = 0.GIT_RESULT-TXZ01 = GIT_EKPO-TXZ01.GIT_RESULT-BSART = GIT_EKPO-BSART.READ TABLE GIT_KONV INTO GIT_KONVWITH KEY KNUMV = GIT_EKPO-KNUMVKSCHL = 'PB00'BINARY SEARCH.IF SY-SUBRC = 0.GIT_RESULT-JIA01 = GIT_KONV-KBETR.GIT_RESULT-JIN01 = GIT_RESULT-JIA01 * GIT_RESULT-MENGE.CLEAR GIT_KONV.ENDIF.READ TABLE GIT_KONV INTO GIT_KONVWITH KEY KNUMV = GIT_EKPO-KNUMVKSCHL = 'SKTO'BINARY SEARCH.IF SY-SUBRC = 0.GIT_RESULT-JIA02 = GIT_KONV-KBETR / 1000.GIT_RESULT-JIN02 = GIT_RESULT-JIA01 / 100 * GIT_RESULT-JIN01.CLEAR GIT_KONV.ENDIF.CLEAR GIT_EKPO.ENDIF.GIT_RESULT-JIN03 = GIT_RESULT-JIN01 + GIT_RESULT-JIN02.APPEND GIT_RESULT TO GIT_RESULT.CLEAR GIT_RESULT.CLEAR GIT_MSEG.ENDLOOP.ENDFORM.                    "FRM_MERGE_DATA" 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'     ''  ''  '10'      '采购凭证号.'                   ''.FC 'EBELP'     ''  ''  '6'       '采购凭证的项目编号'                      ''.FC 'BSART'     ''  ''  '4'      '采购凭证类型.'                       ''.FC 'MATNR'     ''  ''  '10'       '物料号'                         ''.FC 'TXZ01'     ''  ''  '30'      '短文本'                       ''.FC 'BUDAT'     ''  ''  '10'      '凭证中的过帐日期'                  ''.FC 'MENGE'     ''  ''  '15'      '数量'                  ''.FC 'MEINS'     ''  ''  '6'      '单位'                   ''.FC 'JIA01'     ''  ''  '10'       '净价'               ''.FC 'JIN01'     ''  ''  '10'      '金额'                     ''.FC 'JIA02'     ''  ''  '10'       '折扣率'              ''.FC 'JIN02'     ''  ''  '10'       '折扣金额'              ''.FC 'JIN03'     ''  ''  '10'       '最终金额'              ''.FC 'HUOBI'     ''  ''  '10'       '货币'              ''."调用显示PRG = SY-REPID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGI_CALLBACK_PROGRAM = PRGIT_FIELDCAT        = GT_FIELDCAT
*     is_layout          = ls_layout
*     i_save             = 'A'TABLEST_OUTTAB           = GIT_RESULT.ENDFORM.                    " FRM_DISPLAY_DATA

SAP_ABAP 采购价格条件报表(改进版1)相关推荐

  1. po 价格条件表_海纳易拓图文讲解SAP MM模块采购价格条件

    MM物料管理是SAP R/3系统的一个模块,支持日常发生的业务处理功能和过程.MM系统(物料管理)的目的是满足下列各种处理,即物料需求计划.物料采购.库存管理.发票确认和物料估价.主要包括:物料需求计 ...

  2. po 价格条件表_SAP-MM定价条件全解析 -

    定价条件 1.定价条件后台配置路径: SPRO->物料管理->采购->条件->定义价格确认流程 主要用到:"定义条件类型","定义计算方案&quo ...

  3. SAP中利用价格条件有效期条件重叠实现修改价格条件单位的需求实例分析测试

    接采购用户反馈,采购信息记录或采购合同中价格条件记录中的单位一单建立保存后就无法修改.如下图,寻求处理方法. 首先,价格条件建立后可打删除标记再重建,但并不能直接删除.SAP中的删除机制是先标记再归档 ...

  4. 采购价格标准法和标准成本

    采购价格标准法和标准成本 采购价格分析的方法很多,像历史数据法.目标价格法.网络数据法.采购价格标准法等等,前三个暂时略过,我们重点说一下采购价格标准法的定义,以及涉及到的标准成本. 采购价格标准法和 ...

  5. SAP MM 采购价格里的阶梯价格

    SAP MM 采购价格里的阶梯价格 1, 采购信息记录里的阶梯价格数据 2,采购订单新建时, 3,采购订单保存后, 阶梯价格生效了! -完- 写于2021-10-15早上.

  6. SAP RETAIL MM42维护的采购价格,等同于ME11ME12的效果

    SAP RETAIL MM42维护的采购价格,等同于ME11&ME12的效果 SAP零售系统,跟传统制造业系统(SAP标准系统)比较起来,变化不小.一个重要的地方就是商品主数据里集成进了采购信 ...

  7. 采购价格合同与采购计划协议(采购订单)的项目对应关系分析

    采购计划协议(订单)采用参照采购价格合同的方式创建.在这种模式下,合同与协议间产生了关联的关系.当采购合同中价格变化时,由采购处理,并将变化传导至采购计划协议中.这样的好处市显在而易见的.物流在处理采 ...

  8. ODOO15如何简易查看产品历史交易价格和采购价格【免费分享OCA模块】

    如何查看A产品 对于A客户的 历史交易记录呢? 1.进入报价单,输入客户,在单据明细行输入产品编号,单击左侧的 箭头: 2.显示 产品基本信息,选择卡片:previous prices history ...

  9. 企业信息化必看,跨国集团采购部门的报表系统是怎样的

    福耀集团是国内最具规模.技术水平最高.出口量最大的汽车玻璃生产供应商,产品"FY"商标是中国汽车玻璃行业第一个"中国驰名商标",自2004年起连续两届被授予&q ...

  10. SAP采购订单-条件类型-配置开发步骤

    更多内容关注公众号:SAP Technical 各位可以关注我的公众号:SAP Technical 由于采购业务变更,需要创建新的价格类型,并添加新的计算逻辑计算.首先在例程(VOFM)中创建计算逻辑 ...

最新文章

  1. torch.manual_seed的意义为了每次得到的随机数是固定的,为了复现实验的目的
  2. Asp.net中执行.EXE程序的方法
  3. POJ1236 Network of Schools
  4. 零XML的Spring配置
  5. 亿佰特WiFi无线通信模块在物联网智慧农场应用案例
  6. Application Virtualization 4.5 部署之(二)
  7. php编写一个投票程序,实例学习PHP之投票程序篇(一)
  8. Ceph rbd cmd练习
  9. jquery 选择器 逗号
  10. 控制图的绘制步骤_实战!脚手架排布图绘制步骤和技巧讲解!图文展示
  11. HTML+CSS实现个人简历
  12. 利用matlab进行图片的二值化处理
  13. 一款免费、炫酷的GUI:AWTK
  14. 机器学习梯度消失,梯度爆炸原因
  15. java 汽车加油问题_贪心算法---汽车加油问题
  16. python再计算无限循环小数的循环节
  17. Android项目 moudle和library转换
  18. 高级shell编程笔记(第十二章 外部过滤器,程序和命令)
  19. Cookie,sessionstorage,localstorage,Token ,JWT,session的区别
  20. s32k144 isystem linux,S32k144 简易 Bootloader

热门文章

  1. [K8S] PV动态供给
  2. 面试官;经典面试题-JVM篇
  3. 通过DMA方式进行连续发送
  4. 一只小野鸭的超能量(超有启发性)
  5. 在编辑word时,如何查找和替换空格符呢?
  6. SSD-tensorflow-2 制作自己的数据集
  7. 2021高考成绩查询数学和物理,2021高考成绩什么时候几点可以查
  8. SVG_16_defs标签_use标签_style标签_红绿灯效果
  9. Python语言程序设计基础 第二版(嵩天著)课后答案第五章
  10. mysql课设体会_课程设计心得体会8篇