一个简单BOM的类二维报表。
代码如下:

TABLES: MARA, T001W, AUFK.TYPES: BEGIN OF TY_OUTPUT,IDNRK  TYPE STPOX-IDNRK, "物料编码MAKTX  TYPE MAKT-MAKTX, "物料名称NORMT  TYPE MARA-NORMT, "零件简码ZZPURT TYPE MARC-ZZPURT, "EDMC采购类型LIFNR  TYPE STRING, "供应商编码LIFNR_NM  TYPE STRING, "供应商名称POTX1  TYPE STPOX-POTX1, "下一落点BESKZ  TYPE MARC-BESKZ, "采购类型SOBSL  TYPE MARC-SOBSL, "特殊采购类RGEKZ  TYPE MARC-RGEKZ, "反冲SORTF  TYPE STPOX-SORTF, "排序字符串DUMPS  TYPE STPOX-DUMPS, "虚拟项目标识MTART  TYPE MARA-MTART, "物料类型MATKL  TYPE MARA-MATKL, "物料组MEINS  TYPE MARA-MEINS, "基本单位END OF TY_OUTPUT.DATA: GT_OUTPUT TYPE TABLE OF TY_OUTPUT,GS_OUTPUT TYPE TY_OUTPUT.TYPES: BEGIN OF TY_ITEM,MATNR TYPE MARA-MATNR, "物料号IDNRK TYPE STPOX-IDNRK, "组件SORTF TYPE STPOX-SORTF, "排序字符串DUMPS TYPE STPOX-DUMPS, "虚拟项目标识POTX1 TYPE STPOX-POTX1, "下一落点MNGLG TYPE STPOX-MNGLG, "数量END OF TY_ITEM.DATA: GT_ITEM TYPE TABLE OF TY_ITEM,GS_ITEM TYPE TY_ITEM.DATA: GT_FCAT TYPE LVC_T_FCAT,GS_FCAT TYPE LVC_S_FCAT.
DATA: GS_LAYO TYPE LVC_S_LAYO.FIELD-SYMBOLS: <GT_OUTPUT> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <GS_OUTPUT> .SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR NO INTERVALS. "MTOC
PARAMETERS: P_WERKS TYPE T001W-WERKS OBLIGATORY DEFAULT '6002'. "工厂
PARAMETERS: P_ERDAT TYPE AUFK-ERDAT OBLIGATORY DEFAULT SY-DATUM . "时间
SELECTION-SCREEN END OF BLOCK BLK .INITIALIZATION.AT SELECTION-SCREEN.AT SELECTION-SCREEN OUTPUT.TOP-OF-PAGE.START-OF-SELECTION.
"创建动态内表
PERFORM FRM_CRT_DYNTAB.
"获取数据
PERFORM FRM_SELECT_DATA.
"处理数据
PERFORM FRM_PROCESS_DATA.END-OF-SELECTION.
"展示数据
PERFORM FRM_SHOW_DATA.END-OF-PAGE.*&---------------------------------------------------------------------*
*& Form FRM_CRT_DYNTAB
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_CRT_DYNTAB .DATA: LV_NUM TYPE EKPO-EBELP.DATA: R_TABDESCR TYPE REF TO CL_ABAP_STRUCTDESCR.DATA: LT_DFIES TYPE DDFIELDS,LS_FIELD TYPE DFIES."获取结构属性R_TABDESCR ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( GS_OUTPUT ).CALL METHOD CL_SALV_DATA_DESCR=>READ_STRUCTDESCREXPORTINGR_STRUCTDESCR = R_TABDESCRRECEIVINGT_DFIES       = LT_DFIES."将获取到的结构字段属性转存到内表中,并进行一些处理LOOP AT LT_DFIES INTO LS_FIELD.CLEAR GS_FCAT.MOVE-CORRESPONDING LS_FIELD TO GS_FCAT.IF GS_FCAT-FIELDNAME EQ 'LIFNR'.GS_FCAT-SCRTEXT_L = '供应商编码'.ENDIF.IF GS_FCAT-FIELDNAME EQ 'LIFNR_NM'.GS_FCAT-SCRTEXT_L = '供应商名称'.ENDIF.IF GS_FCAT-FIELDNAME EQ 'POTX1'.GS_FCAT-SCRTEXT_L = '下一落点'.ENDIF.
*    IF GS_FCAT-FIELDNAME EQ 'DUMPS'.
*      GS_FCAT-CHECKBOX = 'X'.
*    ENDIF.
*    IF GS_FCAT-INTTYPE = 'P'.
*      GS_FCAT-INTLEN = 23.
*    ENDIF.APPEND GS_FCAT TO GT_FCAT.ENDLOOP.SORT S_MATNR.DELETE ADJACENT DUPLICATES FROM S_MATNR.CLEAR LV_NUM.LOOP AT S_MATNR.CLEAR GS_FCAT."因为物料号的长度为40位,而FIELDNAME这个字段长度只有30位,所以这里用了一个编号拼接代替物料号LV_NUM = LV_NUM + 1.GS_FCAT-FIELDNAME = 'MTOC' && LV_NUM.GS_FCAT-SCRTEXT_L = S_MATNR-LOW.GS_FCAT-INTTYPE = 'P'.GS_FCAT-INTLEN = 23.GS_FCAT-DECIMALS = 2.APPEND GS_FCAT TO GT_FCAT.ENDLOOP."构造出动态内表DATA: DY_TABLE TYPE REF TO DATA.DATA: REF_LINE TYPE REF TO DATA.CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLEEXPORTINGIT_FIELDCATALOG = GT_FCATIMPORTINGEP_TABLE        = DY_TABLE.ASSIGN DY_TABLE->* TO <GT_OUTPUT>.CREATE DATA REF_LINE LIKE LINE OF <GT_OUTPUT>.ASSIGN REF_LINE->* TO <GS_OUTPUT>.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SELECT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SELECT_DATA .DATA: LV_MATNR TYPE MARA-MATNR.DATA: LT_STB TYPE TABLE OF STPOX,LS_STB TYPE STPOX."用屏幕输入的物料编码展开BOM,现将每个BOM的数据都记录到一个内表中,以物料号,组件,排序字符串为主键LOOP AT S_MATNR.CLEAR LV_MATNR.LV_MATNR = S_MATNR-LOW.
"展开BOMCLEAR LT_STB.CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTINGCAPID                 = 'PP01'DATUV                 = P_ERDATEMENG                 = 1MEHRS                 = 'X'MTNRV                 = LV_MATNRWERKS                 = P_WERKSTABLESSTB                   = LT_STB
*       MATCAT                =EXCEPTIONSALT_NOT_FOUND         = 1CALL_INVALID          = 2MATERIAL_NOT_FOUND    = 3MISSING_AUTHORIZATION = 4NO_BOM_FOUND          = 5NO_PLANT_DATA         = 6NO_SUITABLE_BOM_FOUND = 7CONVERSION_ERROR      = 8OTHERS                = 9.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.SORT LT_STB BY IDNRK.CLEAR LS_STB.LOOP AT LT_STB INTO LS_STB.CLEAR GS_ITEM.GS_ITEM-MATNR = LV_MATNR. "MTOCGS_ITEM-IDNRK = LS_STB-IDNRK. "组件GS_ITEM-SORTF = LS_STB-SORTF. "排序字符串GS_ITEM-POTX1 = LS_STB-POTX1. "下一落点GS_ITEM-DUMPS = LS_STB-DUMPS. "下一落点
*      GS_MTOC1-STLNR = LS_STB-STLNR. "物料单GS_ITEM-MNGLG = LS_STB-MNGLG.APPEND GS_ITEM TO GT_ITEM.CLEAR LS_STB.ENDLOOP.ENDLOOP.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_DATA .DATA: LT_ITEM TYPE TABLE OF TY_ITEM,LS_ITEM TYPE TABLE OF TY_ITEM."以组件和排序字符串为组件,去重,然后获取相关的数据LT_ITEM[] = GT_ITEM[].SORT LT_ITEM BY IDNRK SORTF.DELETE ADJACENT DUPLICATES FROM LT_ITEM COMPARING IDNRK SORTF.SORT GT_ITEM BY IDNRK SORTF."将数据转存和取出其他一些字段值SELECT A~IDNRK,A~SORTF,A~DUMPS,A~POTX1,B~NORMT,B~MTART,B~MATKL,B~MEINS,C~MAKTX,D~ZZPURT,D~BESKZ,D~SOBSL,D~RGEKZFROM @LT_ITEM AS AINNER JOIN MARA AS B ON A~IDNRK EQ B~MATNRINNER JOIN MAKT AS C ON B~MATNR EQ C~MATNR ANDC~SPRAS EQ @SY-LANGUINNER JOIN MARC AS D ON B~MATNR EQ D~MATNR ANDD~WERKS EQ @P_WERKSINTO CORRESPONDING FIELDS OF TABLE @<GT_OUTPUT>.LOOP AT <GT_OUTPUT> ASSIGNING <GS_OUTPUT>.ASSIGN COMPONENT 'IDNRK' OF STRUCTURE <GS_OUTPUT> TO FIELD-SYMBOL(<FS_IDNRK>).LOOP AT GT_ITEM INTO GS_ITEM WHERE IDNRK = <FS_IDNRK>."因为MTOC用的是编码,所以这里需要一个转换READ TABLE GT_FCAT INTO GS_FCAT WITH KEY SCRTEXT_L = GS_ITEM-MATNR.IF SY-SUBRC EQ 0.ASSIGN COMPONENT GS_FCAT-FIELDNAME OF STRUCTURE <GS_OUTPUT> TO FIELD-SYMBOL(<FS_FIELD>).<FS_FIELD> = GS_ITEM-MNGLG.ENDIF.ENDLOOP.ENDLOOP.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SHOW_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SHOW_DATA .PERFORM FRM_SET_LAYO.PERFORM FRM_SET_FCAT.PERFORM FRM_SET_ALVO.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SET_LAYO .CLEAR GS_LAYO.GS_LAYO-ZEBRA = 'X'.GS_LAYO-CWIDTH_OPT = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SET_FCAT .ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_ALVO
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_SET_ALVO .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGI_CALLBACK_PROGRAM = SY-REPID
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_GRID_SETTINGS    =IS_LAYOUT_LVC      = GS_LAYOIT_FIELDCAT_LVC    = GT_FCATI_DEFAULT          = 'X'I_SAVE             = 'A'
*     IS_VARIANT         =
*     IT_EVENTS          =TABLEST_OUTTAB           = <GT_OUTPUT>EXCEPTIONSPROGRAM_ERROR      = 1OTHERS             = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.ENDFORM.

显示效果如下:

报表的Y轴是选择屏幕输入的BOM物料展开后下面使用到的用料,X轴是这些组件的相关数据,选择屏幕上输入一个BOM物料号,X轴就会增加一列,这一列显示的是这个BOM下这行组件的用量。
PS:供应商编码请自行取值。
OVER……

SAP BOM的类二维报表相关推荐

  1. mysql 二维表 查询_二维报表数据表设计

    报表原型: 这里随便挑了一个二维报表 二维报表设计分析: 上面的报表原型行和列都有数据项,我们可以根据地理位置的经纬度定坐标点的思想来进行设计 这里使用列行来表示 c1r1表示第一列第一行 c1r2表 ...

  2. Python——两类二维数据线性判别fisher

    题目: 说明:下述问题在 Python 中编程求解. 1.已知两类二维数据, (1)第一类共 4 个样本:[6,6],[4,5],[5,5],[5,4],第二类共 4 个样本: [0,1],[1,2] ...

  3. Himall商城图形码帮助类二维码中生成图片(1)

    Himall上次图形吗帮助类 using com.google.zxing; using com.google.zxing.common; using System; using System.Col ...

  4. java合成海报的工具类(二维码、头像、海报)

    参考网站 https://my.oschina.net/u/2426590/blog/3027726 java Graphics2D绘制文字并居中并解决服务器乱码问题 https://blog.csd ...

  5. Himall商城图形码帮助类二维码中生成图片(2)

    /// <summary>         /// 生成图片         /// </summary>         /// <param name="c ...

  6. Android-生成二维码工具类

    目录 二维码生成工具类 二维码生成工具类 /*** 生成条形码和二维码的工具*/ public class ZXingUtils {/*** 生成二维码 要转换的地址或字符串,可以是中文** @par ...

  7. com.google.zxing 二维码工具类

    com.google.zxing 二维码工具类 pom 工具类 使用 pom <dependency><groupId>com.google.zxing</groupId ...

  8. 如何制作库位管理二维码

    库位管理是指利用库位使商品处于"被保管状态"并能明确显示出商品所储存的位置,同时能够准确记录商品位置和数量上的变动,使管理者能够随时掌握商品的数量.位置及去向.库位管理本质上是一种 ...

  9. 二维码扫描和应用跳转

    转载自: http://sindrilin.com/ios-dev/2015/11/01/二维码扫描和应用跳转.html 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫 ...

最新文章

  1. 彻底理解 Cookie,Session,Token
  2. /proc文件夹介绍
  3. EmbeddedWebBrowser(EmbeddedWB)不显示图片
  4. freemarker的${!}
  5. 一系列用于Fuzzing学习的资源汇总
  6. 使用netfilter_queue改包笔记
  7. linux性能监控常用命令
  8. Leetcode 15.三数之和
  9. Ubuntu 18.04/20.04 部署minikube
  10. STL中的序列式容器——vector(向量)
  11. ubuntu系统安装TeamViwer远程控制软件
  12. php sns 源码,全网首发-LaySNS高仿资源网源码免费分享
  13. 谈谈我对广告投放系统的一点认识
  14. SecureCRT快捷键大全
  15. echarts使用复选框样式legend控制显隐
  16. 隐马尔科夫模型(HMMM)
  17. office办公所有版本齐全
  18. 文件传输协议FTP/TFTP/SSH/SCP——应用层
  19. 关于Python绘制柱状图等图形,以及数据拆分与合并详细讲解
  20. JQuery自定义属性的设置和获取

热门文章

  1. Navicat Premium 15安装教程
  2. 趣图:大佬如何解决bug的
  3. steam教育文化传承的必要性
  4. Word在目录里插入引导符(页码前的小点点)的方法
  5. ADB将外置TF储存卡融合本机ROM(内部储存)
  6. 外卖CPS用抖音高权重号评论引流,日引万粉
  7. 1052 卖个萌(20 分)
  8. java协议标准与规范
  9. 我终于刷完了《觉醒年代》,对PMP有了新的思考...
  10. 2022年旅游网站开发功能分析、开发意义在哪