一个很有意思漂亮的ABAP程序-采购信息记录查询报表

*&---------------------------------------------------------------------*
*& Report  Z_XYX003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_xyx003 .
TYPE-POOLS :slis .
TABLES lfa1 ,ekpo ,eine ,eina .

INCLUDE <list> .
DATA :i_fieldcat_alv  TYPE slis_t_fieldcat_alv , "定义列标题(属性信息)
    i_layout  TYPE slis_layout_alv ,
    i_fieldcat  TYPE slis_fieldcat_alv , "定义对象
    i_events  TYPE slis_t_event , "alv事件
   w_events  LIKE  LINE  OF i_events ,
  i_list_comments  TYPE slis_t_listheader , "alv表单标题区域设置
   w_list_comments  LIKE  LINE  OF i_list_comments ,
    w_repid  LIKE sy -repid . "当前程序


*  定义内表字段
DATA : BEGIN  OF hd_itab  OCCURS  0 ,
      infnr  LIKE eine -infnr , "采购信息记录
     ekorg  LIKE eine -ekorg , "采购组织
    matnr  LIKE eina -matnr , "物料编号
   lifnr  LIKE eina -lifnr , "供应商
    erdat  LIKE eine -erdat , "创建日期
    loekz  LIKE eine -loekz , "删除标记
    urznr  LIKE eina -urznr , "批准号
      color ( 4 TYPE  c "定义颜色
      aplfz  LIKE eine -aplfz , "计划交货时间
     netpr  LIKE eine -netpr , "净价
     peinh  LIKE eine -peinh , "单位价格
     dwjj  LIKE eine -netpr , "单位净价
     bprme  LIKE eine -bprme , "订单价格单位
     maktx  LIKE makt -maktx , "物料名称
     name1  LIKE lfa1 -name1 , "供应商名称
     iicon  LIKE  icon -name "ICON 图标
      END  OF hd_itab .

*  选择屏幕
SELECTION-SCREEN  BEGIN  OF  BLOCK block1  WITH  FRAME  TITLE t1 .
SELECT-OPTIONS :s_infnr  FOR eine -infnr  MEMORY  ID inf . "信息记录号码
PARAMETERS :pr_loekz  TYPE  AS  CHECKBOX  DEFAULT  '' . "显示有删除标志的信息记录
SELECT-OPTIONS :s_ekorg  FOR eine -ekorg  MEMORY  ID eko . "采购组织
SELECT-OPTIONS :s_matnr  FOR eina -matnr  MEMORY  ID mat . "物料编号
SELECT-OPTIONS :s_lifnr  FOR eina -lifnr  MEMORY  ID lif . "供应商编号
SELECT-OPTIONS :s_erdat  FOR eina -erdat  MEMORY  ID erd . "创建日期
SELECT-OPTIONS :s_urznr  FOR eina -urznr  MEMORY  ID urz . "批准号
SELECTION-SCREEN  END  OF  BLOCK block1 .

*  初始化事件
INITIALIZATION .
*  t1 = '采购查询'.

*  屏幕开始事件
START-OF-SELECTION .
   PERFORM getdata .
   PERFORM events_build .
   PERFORM layout_build .
   PERFORM fieldcat_build .
   PERFORM alv_display_data .

*&--------------------------------------------------------------------*
*&      Form  getdata
*&--------------------------------------------------------------------*
FORM getdata .
   CLEAR hd_itab .
   CLEAR hd_itab[] .
   IF pr_loekz  '' .
     SELECT FROM eine INNER  JOIN eina  ON eine ~infnr  eina ~infnr  INTO CORRESPONDING  FIELDS  OF hd_itab
        WHERE eine ~infnr  IN s_infnr  AND eine ~ekorg  IN s_ekorg  AND eina ~matnr  IN s_matnr  AND eina ~lifnr  IN s_lifnr  AND eina ~loekz <>  'X'
       AND eine ~erdat  IN s_erdat  AND eina ~urznr  IN s_urznr
      ORDER  BY eine ~infnr  DESCENDING .
       SELECT  SINGLE maktx  FROM makt  INTO CORRESPONDING  FIELDS  OF hd_itab  WHERE matnr  hd_itab -matnr .
       SELECT  SINGLE name1  FROM lfa1  INTO CORRESPONDING  FIELDS  OF hd_itab  WHERE lifnr  hd_itab -lifnr .
       APPEND hd_itab .
       CLEAR hd_itab .
     ENDSELECT .
   ELSE .
     SELECT FROM eine INNER  JOIN eina  ON eine ~infnr  eina ~infnr  INTO CORRESPONDING  FIELDS  OF hd_itab
      WHERE eine ~infnr  IN s_infnr  AND eine ~ekorg  IN s_ekorg  AND eina ~matnr  IN s_matnr  AND eina ~lifnr  IN s_lifnr  AND eine ~erdat  IN s_erdat
       AND eina ~urznr  IN s_urznr
     ORDER  BY eine ~infnr  DESCENDING .
       SELECT  SINGLE maktx  FROM makt  INTO CORRESPONDING  FIELDS  OF hd_itab  WHERE matnr  hd_itab -matnr .
       SELECT  SINGLE name1  FROM lfa1  INTO CORRESPONDING  FIELDS  OF hd_itab  WHERE lifnr  hd_itab -lifnr .
       APPEND hd_itab .
       CLEAR hd_itab .
     ENDSELECT .

   ENDIF .

   LOOP  AT hd_itab .
     IF hd_itab -loekz  'X' .
      hd_itab - color  'C610' .
      hd_itab -iicon  icon_incomplete "ICON圖標信息
     ELSE .
      hd_itab -iicon  icon_checked "ICON圖標信息
     ENDIF .
    hd_itab -dwjj  hd_itab -netpr / hd_itab -peinh .   "净价/价格单位

     MODIFY hd_itab . "更新
     CLEAR hd_itab . "CLEAR HEADER LINE
   ENDLOOP .
ENDFORM .                     "getdata

*&---------------------------------------------------------------------------*
*&    FORM LAYOUT BUILD
*&---------------------------------------------------------------------------*
FORM layout_build .
  i_layout -zebra  'X' "ALV表格按斑马线条纹显示
   "i_layout-NO_VLINE = 'X'. "ALV表格顯示時無堅向線
  i_layout -colwidth_optimize  'X' "将ALV字段宽度设置为最优化
*    i_layout-detail_initial_lines = 'X'.
*    i_layout-detail_titlebar = '详细内容'.
*    i_layout-box_fieldname  = 'LINE'.
  i_layout -info_fieldname  'COLOR' "設置顏色FIELD
  i_layout -no_colhead  '' .
  w_repid  sy -repid .
ENDFORM .                     "layout_build


*&---------------------------------------------------------------------------*
*&    FORM FIELDCAT BUILD
*&---------------------------------------------------------------------------*
FORM fieldcat_build .
   REFRESH i_fieldcat_alv .
   CLEAR i_fieldcat .
   DATA column  TYPE  VALUE  1 .

  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'INFNR' .
  i_fieldcat -seltext_s  '采购信息记录' .
  i_fieldcat -seltext_m  '采购信息记录' .
  i_fieldcat -seltext_l  '采购信息记录' .
   "i_fieldcat-reptext_ddic = '采购信息记录号'.
  i_fieldcat -lzero  'X' "字义字段前导以"0"的形式显示
  i_fieldcat - key  'X' .
  i_fieldcat - hotspot  'X' . "设置字段是否有热点(热点字段显示有下划线)
  i_fieldcat -emphasize  'C300' . "设置字段颜色
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'LIFNR' .
  i_fieldcat -seltext_s  '供应商号码' .
  i_fieldcat -seltext_m  '供应商号码' .
  i_fieldcat -seltext_l  '供应商号码' .
   "i_fieldcat-reptext_ddic = '供应商号码'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
  i_fieldcat - hotspot  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'NAME1' .
  i_fieldcat -seltext_s  '供应商名称' .
  i_fieldcat -seltext_m  '供应商名称' .
  i_fieldcat -seltext_l  '供应商名称' .
   "i_fieldcat-reptext_ddic = '供应商名称'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'MATNR' .
  i_fieldcat -seltext_s  '物料编号' .
  i_fieldcat -seltext_m  '物料编号' .
  i_fieldcat -seltext_l  '物料编号' .
   "i_fieldcat-reptext_ddic = '物料编号'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'MAKTX' .
  i_fieldcat -seltext_s  '物料名称' .
  i_fieldcat -seltext_m  '物料名称' .
  i_fieldcat -seltext_l  '物料名称' .
   "i_fieldcat-reptext_ddic = '物料名称'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'NETPR' .
  i_fieldcat -seltext_s  '净价' .
  i_fieldcat -seltext_m  '净价' .
  i_fieldcat -seltext_l  '净价' .
   "i_fieldcat-reptext_ddic = '净价'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'PEINH' .
  i_fieldcat -seltext_s  '价格单位' .
  i_fieldcat -seltext_m  '价格单位' .
  i_fieldcat -seltext_l  '价格单位' .
   "i_fieldcat-reptext_ddic = '价格单位'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'DWJJ' .
  i_fieldcat -seltext_s  '单位净价' .
  i_fieldcat -seltext_m  '单位净价' .
  i_fieldcat -seltext_l  '单位净价' .
   "i_fieldcat-reptext_ddic = '单位净价'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'BPRME' .
  i_fieldcat -seltext_s  '计量单位' .
  i_fieldcat -seltext_m  '计量单位' .
  i_fieldcat -seltext_l  '计量单位' .
   "i_fieldcat-reptext_ddic = '计量单位'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'EKORG' .
  i_fieldcat -seltext_s  '采购组织' .
  i_fieldcat -seltext_m  '采购组织' .
  i_fieldcat -seltext_l  '采购组织' .
   "i_fieldcat-reptext_ddic = '采购组织'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'APLFZ' .
  i_fieldcat -seltext_s  '计划交货时间' .
  i_fieldcat -seltext_m  '计划交货时间' .
  i_fieldcat -seltext_l  '计划交货时间' .
   "i_fieldcat-reptext_ddic = '计划交货时间'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
  i_fieldcat -emphasize  'C211' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'ERDAT' .
  i_fieldcat -seltext_s  '创建日期' .
  i_fieldcat -seltext_m  '创建日期' .
  i_fieldcat -seltext_l  '创建日期' .
   "i_fieldcat-reptext_ddic = '创建日期'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'LOEKZ' .
  i_fieldcat -seltext_s  '删除标志' .
  i_fieldcat -seltext_m  '删除标志' .
  i_fieldcat -seltext_l  '删除标志' .
   "i_fieldcat-reptext_ddic = '删除标志'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'URZNR' .
  i_fieldcat -seltext_s  '批准标记' .
  i_fieldcat -seltext_m  '批准标记' .
  i_fieldcat -seltext_l  '批准标记' .
   "i_fieldcat-reptext_ddic = '批准标记'.
  i_fieldcat -lzero  'X' .
  i_fieldcat - key  'X' .
  i_fieldcat -emphasize  'C211' .
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

  column  column +  1 .
  i_fieldcat -col_pos  column .
  i_fieldcat -fieldname  'IICON' .
*    i_fieldcat-SELTEXT_S = '图标'.
*    i_fieldcat-SELTEXT_M = 'ICON'.
  i_fieldcat -seltext_l  'ICON' .
  i_fieldcat - hotspot  'X' .
  i_fieldcat - icon  'X' .
   "i_fieldcat-reptext_ddic = '批准标记'.
   "i_fieldcat-LZERO = 'X'.
   "i_fieldcat-KEY = 'X'.
   "i_fieldcat-Emphasize = 'C211'.
   APPEND i_fieldcat  TO i_fieldcat_alv .
   CLEAR i_fieldcat .

ENDFORM .                     "fieldcat_build

*&---------------------------------------------------------------------------*
*&    FORM ALV DISPLAY DATA
*&---------------------------------------------------------------------------*
FORM alv_display_data .
   CALL  FUNCTION  'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
      i_callback_program       w_repid
      i_grid_title             '采购信息记录汇总查询'
      is_layout                i_layout
      it_fieldcat              i_fieldcat_alv[]
      it_events                i_events[]
                                     "I_SAVE  = 'A'
      i_callback_user_command  'USER_COMMAND'  "USER_COMMAND EVENT
     TABLES
      t_outtab                 hd_itab[]
     EXCEPTIONS
      program_error            1
       OTHERS                   2 .

   IF sy -subrc <>  0 .
     MESSAGE  ID sy -msgid  TYPE sy -msgty  NUMBER sy -msgno
     WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
   ENDIF .

ENDFORM .                     "alv_display_data

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->I_UCOMM    text
*      -->I_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command  USING i_ucomm  TYPE sy -ucomm i_selfield  TYPE slis_selfield .
   CASE i_ucomm .
     WHEN  '&IC1' .   "对于热点链接,所对应的动作码为"&IC1"
       IF i_selfield -fieldname  EQ  'INFNR' "判断用户当前单击的是哪列
         PERFORM call_tran  USING i_selfield "调用自定义事务
       ENDIF .
   ENDCASE .
ENDFORM .                     "user_command



*&---------------------------------------------------------------------*
*&      Form  call_tran
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->I_SELFIELD text
*----------------------------------------------------------------------*
FORM call_tran  USING i_selfield  TYPE slis_selfield .
   "SET SCREEN 0.  "返回主屏幕
   READ  TABLE hd_itab  INDEX i_selfield -tabindex .   "i_selfield-tabindex 当击行索引,从内表中提取数据

   IF sy -subrc  0 .
     SET  PARAMETER  ID  'MAT'  FIELD hd_itab -matnr "MAT指参数ID
     SET  PARAMETER  ID  'LIF'  FIELD hd_itab -lifnr .
     SET  PARAMETER  ID  'EKO'  FIELD hd_itab -ekorg .
     SET  PARAMETER  ID  'INF'  FIELD hd_itab -infnr .
     CALL  TRANSACTION  'ME13' . "AND SKIP FIRST SCREEN "调用其它事务 ME13是我们要调用的事务
   ENDIF .
ENDFORM .                     "call_tran
*&---------------------------------------------------------------------*
*&      Form  ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_top_of_page "ALV表头信息
   CLEAR :i_list_comments .
  w_list_comments -typ  'H' .
  w_list_comments - key  '' .
  w_list_comments -info  '采购信息记录查询报表' .
   APPEND w_list_comments  TO i_list_comments .
   CLEAR w_list_comments .

   DATA :date_temp ( 30 TYPE  c .
   WRITE sy -datum  TO date_temp MM/DD/YYYY .
   CONCATENATE  '日期:' date_temp  INTO date_temp .
   CONCATENATE date_temp   '.   IT部'  INTO date_temp .


  w_list_comments -typ  'S' .
  w_list_comments - key  '' .
  w_list_comments -info  date_temp .
   APPEND w_list_comments  TO i_list_comments .
   CLEAR w_list_comments .

   CALL  FUNCTION  'REUSE_ALV_COMMENTARY_WRITE'   "输出注释
   EXPORTING
    it_list_commentary  i_list_comments
    i_logo                    'ENJOYSAP_LOGO' .
*    I_END_OF_LIST_GRID       = 'X'.
*        I_ALV_FORM               =.
ENDFORM .                     "ALV_TOP_OF_PAGE

*&---------------------------------------------------------------------*
*&      Form  ALV_END_OF_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_end_of_list .
   CLEAR i_list_comments .
*    w_list_comments-typ = 'S'.
*    w_list_comments-info = 'Create By IT DEPARTMENT'.
*    APPEND w_list_comments TO i_list_comments.
*    CLEAR w_list_comments.
*
*    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
*      EXPORTING
*        IT_LIST_COMMENTARY       = i_list_comments
**        I_LOGO                   = 'ENJOYSAP_LOGO'
*        I_END_OF_LIST_GRID       = 'X'
**       I_ALV_FORM               =
*            .

   CLEAR :i_list_comments .
  w_list_comments -typ  'S' .
  w_list_comments -info  '确认:________采购申请人:_____________' .
   APPEND w_list_comments  TO i_list_comments .
   CLEAR w_list_comments .

  w_list_comments -typ  'S' .
  w_list_comments -info  'Create By Information Department' .
   APPEND w_list_comments  TO i_list_comments .
   CLEAR w_list_comments .

   DATA :data_temp ( 30 TYPE  c .
   CONCATENATE  '打印者:' sy -uname  INTO data_temp .
  w_list_comments -typ  'S' .
  w_list_comments -info  data_temp .
   APPEND w_list_comments  TO i_list_comments .
   CLEAR w_list_comments .

   CALL  FUNCTION  'REUSE_ALV_COMMENTARY_WRITE'
     EXPORTING
      it_list_commentary  i_list_comments
      i_logo              'ENJOYSAP_LOGO'
      i_end_of_list_grid  'X' .
*       I_ALV_FORM        =

ENDFORM .                     "ALV_END_OF_LIST


*&---------------------------------------------------------------------*
*&      Form  events_build
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM events_build .
   CALL  FUNCTION  'REUSE_ALV_EVENTS_GET'  "输出一个内表类型是SLIS_T_EVENT,行项为SLIS_ALV_EVENT,包含两个字段,一个是事件名称,另一个是处理事件的FORM名称
    EXPORTING
    i_list_type            0
    IMPORTING
   et_events              i_events
   EXCEPTIONS
    list_type_wrong        1
     OTHERS                 2 .

   IF sy -subrc <>  0 .
     MESSAGE  ID sy -msgid  TYPE sy -msgty  NUMBER sy -msgno
      WITH sy -msgv1 sy -msgv2 sy -msgv3 sy -msgv4 .
   ENDIF .

   READ  TABLE i_events  WITH  KEY name  'TOP_OF_PAGE'  INTO w_events .
   IF sy -subrc  0 .
     MOVE  'ALV_TOP_OF_PAGE'  TO w_events - form .
     MODIFY i_events  FROM w_events  INDEX sy -tabix .
   ENDIF .

   READ  TABLE i_events  INTO w_events  WITH  KEY name  'USER_COMMAND' .
   IF sy -subrc  EQ  0 .
    w_events -name  'USER_COMMAND' .
     MODIFY i_events  FROM w_events  INDEX sy -tabix .
   ENDIF .

   READ  TABLE i_events  WITH  KEY name  'END_OF_LIST'  INTO w_events .
   IF sy -subrc  0 .
     MOVE  'ALV_END_OF_LIST'  TO w_events - form .
     MODIFY i_events  FROM w_events  INDEX sy -tabix .
   ENDIF .
ENDFORM .                     "events_build
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值