展示BOM界面的数据

2 篇文章 0 订阅

BOM物料主数据展开

  1. 实现功能:在项目中,根据开发文档的需求,展示BOM数据,但是部分字段在BOM界面中没有,所以需要通过增强来实现,在不方便用增强的时候我我们可以选择自己开发一个BOM程序。
  2. 实现效果如下:
    在这里插入图片描述在这里插入图片描述
  3. 代码如下:
*&---------------------------------------------------------------------*
*& Report ZDEMO_BOM
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zdemo_bom.

*******************************
*数据类型定义
*******************************
*&-----------------------------------------------------------------*
*&  包含                ZMMR_812_TOP
*&-----------------------------------------------------------------*

TYPE-POOLS: slis,icon.


TYPES: BEGIN OF ty_data,
        clr   TYPE char4, "可以控制行颜色
        objic TYPE cs_objicon.

        INCLUDE STRUCTURE   stpox.
TYPES  END OF ty_data.

*&-----------------------------------------------------------------
*
*内表、工作区、变量、常量、指针定义
*
*&-----------------------------------------------------------------
DATA: gt_data TYPE STANDARD TABLE OF ty_data,
     gs_data TYPE ty_data.
DATA: gt_stb TYPE STANDARD TABLE OF stpox,
     gs_stb TYPE stpox.

DATA: gs_layout   TYPE lvc_s_layo.
DATA: gt_fieldcat TYPE lvc_t_fcat,
     gs_fieldcat TYPE lvc_s_fcat.
TYPES:t_emeng TYPE char20.
*******************************
*屏幕处理
*******************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
 PARAMETERS:p_matnr TYPE rc29l-matnr,
            p_werks TYPE rc29l-werks,
            p_stlal TYPE rc29l-stlal,
            p_capid TYPE rc29l-capid.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
 PARAMETERS:p_datum TYPE sy-datum DEFAULT sy-datum,
            p_emeng TYPE t_emeng.
SELECTION-SCREEN END OF BLOCK b2.
*******************************
*主程序入口
*******************************
*&--------------------------------------------------------------
**初始化处理
*&--------------------------------------------------------------
INITIALIZATION.

*&--------------------------------------------------------------
**选择屏幕控制
*&--------------------------------------------------------------
AT SELECTION-SCREEN OUTPUT.

*&-------------------------------------------------------------*
*& 参数输入检查
*&-------------------------------------------------------------*
AT SELECTION-SCREEN.

*&-------------------------------------------------------------
**程序开始处理
*&-------------------------------------------------------------
START-OF-SELECTION.
********************************
*获取数据
********************************
 PERFORM get_data.
*********************************
**处理数据
*********************************
 PERFORM pro_data.

********************************
*显示数据
********************************

* ALV显示
 PERFORM frm_set_alv.          "设置ALV属性
 PERFORM frm_dis_alv.          "调用ALV

END-OF-SELECTION.

*******************************
*FORM子程序
*******************************
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       获取数据
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data.
 DATA lv_emeng TYPE emeng.
 lv_emeng = p_emeng.
 CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
   EXPORTING
     capid                 = p_capid
     datuv                 = p_datum
     emeng                 = lv_emeng
     mehrs                 = 'X'
     mtnrv                 = p_matnr
     stlal                 = p_stlal
     werks                 = p_werks
   TABLES
     stb                   = gt_stb
   EXCEPTIONS
     alt_not_found         = 1
     call_invalid          = 2
     material_not_found    = 3
     missing_authorization = 4
     no_bom_found          = 5
     no_plant_data         = 6
     no_suitable_bom_found = 7
     conversion_error      = 8
     OTHERS                = 9.
 IF sy-subrc <> 0.
* Implement suitable error handling here
 ENDIF.

ENDFORM.         " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  pro_DATA
*&---------------------------------------------------------------------*
*       数据处理
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM pro_data.
 LOOP AT gt_stb INTO gs_stb.
   MOVE-CORRESPONDING gs_stb TO gs_data.
   gs_data-clr = 'C710'.
   gs_data-objic = '@AP@'."物料清单
   " gs_data-objic = '@A6@'.”物料
   APPEND gs_data TO gt_data.
 ENDLOOP.
 IF gt_data IS INITIAL.
   MESSAGE '未查询到符合条件的数据!' TYPE 'S' DISPLAY LIKE 'E'.
   LEAVE LIST-PROCESSING.
 ENDIF.
ENDFORM.       " PRO_DATA

*&---------------------------------------------------------------------*
*&      Form  FRM_SET_ALV
*&---------------------------------------------------------------------*
*       alv设置
*---------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_alv.
 DATA: l_colpos TYPE lvc_s_fcat-col_pos VALUE 0.

*&---------------------------------------------------------------------*
*&      定义宏
*&---------------------------------------------------------------------*
 DEFINE  macro_fill_fcat.
   CLEAR gs_fieldcat.
   &1 = &1 + 1.
   gs_fieldcat-col_pos       = &1.
   gs_fieldcat-fieldname     = &2.
   gs_fieldcat-coltext       = &3.
   CASE &2.
     WHEN 'OBJIC'.
       gs_fieldcat-fix_column =  'X' .
       gs_fieldcat-icon       =  'X' .
   ENDCASE.
   APPEND gs_fieldcat TO gt_fieldcat.
 END-OF-DEFINITION.

 FIELD-SYMBOLS: <fs_fieldcat> TYPE lvc_s_fcat.

 CLEAR gt_fieldcat.

 macro_fill_fcat:  l_colpos  'STUFE'        '级别'  ,
                   l_colpos  'OBJIC'        '对象'  ,
                   l_colpos  'POSNR'        '项目编号' ,
                   l_colpos  'IDNRK'        '对象标识' ,
                   l_colpos  'OJTXP'        '对象描述' ,
                   l_colpos  'MMEIN'        '组件单位' ,
                   l_colpos  'MNGLG'        '组件数量(CUP)' ,
                   l_colpos  'MNGKO'        '组件数量' ,
                   l_colpos  'ANNAM'        '创建者' ,
                   l_colpos  'ANDAT'        '创建日期' .
 CLEAR gs_layout.
 gs_layout-zebra = 'X'.
 gs_layout-cwidth_opt = 'X'.
 gs_layout-info_fname = 'CLR'.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_DIS_ALV
*&---------------------------------------------------------------------*
*       alv输出
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_dis_alv .

 DATA: lv_grid TYPE lvc_s_glay.

 lv_grid-edt_cll_cb = 'X'.

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING
     i_callback_program          = sy-repid
     i_grid_settings             = lv_grid
     is_layout_lvc               = gs_layout
     it_fieldcat_lvc             = gt_fieldcat
     i_callback_html_top_of_page = 'F_TOP_OF_PAGE'
   TABLES
     t_outtab                    = gt_data.

ENDFORM.                "     FRM_ALV

FORM f_top_of_page USING p_cl_dd TYPE REF TO cl_dd_document.
 DATA: m_p      TYPE i,
       m_buffer TYPE string.

 m_buffer = '<html><STRONG>物料 <-- 11  1</STRONG></html></br>'  .
 CALL METHOD p_cl_dd->html_insert
   EXPORTING
     contents = m_buffer
   CHANGING
     position = m_p.

 m_buffer = '<STRONG>描述    1 </STRONG></br>'.
 CALL METHOD p_cl_dd->html_insert
   EXPORTING
     contents = m_buffer
   CHANGING
     position = m_p.
 m_buffer = '<STRONG>基本数量 <-- (ST )1 </STRONG></br>'.
 CALL METHOD p_cl_dd->html_insert
   EXPORTING
     contents = m_buffer
   CHANGING
     position = m_p.
 m_buffer = '<STRONG>需求数量 <-- (ST )&nbsp;1      </STRONG></br>'.
 CALL METHOD p_cl_dd->html_insert
   EXPORTING
     contents = m_buffer
   CHANGING
     position = m_p.
ENDFORM.
  1. 其他的取数逻辑自行添加即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值