abap ALV报表的空程序模板

该代码示例展示了如何在SAPABAP中创建一个ALV空程序,用于动态地从数据库获取数据并显示。程序使用了SLIS类型池和表格SSCRFIELDS,AFPO,定义了数据结构和字段,然后通过用户输入筛选条件,获取员工和生产订单信息,并用REUSE_ALV_GRID_DISPLAY函数来显示数据。此外,还实现了字段的编辑功能和颜色设置。
摘要由CSDN通过智能技术生成

*ALV空程序
*TYPE-POOLS: slis.
*TABLES:sscrfields,afpo.
*
*DATA functxt TYPE smp_dyntxt.
*DATA: fldcat          TYPE slis_t_fieldcat_alv,
*      slayt           TYPE slis_layout_alv,
*      varnt           LIKE disvariant,
*      repid           LIKE sy-repid,
*      i_title         TYPE lvc_title,
*      i_grid_settings TYPE lvc_s_glay.
*DATA: slines TYPE string.
*
*DATA: BEGIN OF gs_istr ,
*        pernr TYPE pa0001-pernr, " 员工号
*        sname TYPE pa0001-sname, " 姓名
*      END OF gs_istr.
**ALV显示
*DATA: BEGIN OF gt_itab OCCURS 0.
*        INCLUDE STRUCTURE gs_istr.
*DATA:   chkbx TYPE c,
*        cellc TYPE slis_t_specialcol_alv,
*      END OF gt_itab.
*
*DATA: color TYPE slis_t_specialcol_alv WITH HEADER LINE.
**文本下载
*DATA:gt_itab_d LIKE gs_istr OCCURS  0 WITH HEADER LINE.
*
*
*
*SELECTION-SCREEN BEGIN OF BLOCK zb WITH FRAME TITLE t1.
*  PARAMETERS : p_werks TYPE werks_d DEFAULT '1000' OBLIGATORY."工厂
*  SELECT-OPTIONS : s_aufnr FOR afpo-aufnr . "生产订单编码
*  SELECT-OPTIONS : s_matnr FOR afpo-matnr . "生产订单编码
*SELECTION-SCREEN END OF BLOCK zb.
**定义说明文本
*SELECTION-SCREEN COMMENT /1(80): txt000,txt001,txt002.
*
*INITIALIZATION.
*  %_p_werks_%_app_%-text = '工厂'.
*  %_s_aufnr_%_app_%-text = '生产订单'.
*  %_s_matnr_%_app_%-text = '生产物料'.
*  CLEAR:fldcat[].
*  PERFORM catlg_set USING 'PERNR' '员工号'(103).
*  PERFORM catlg_set USING 'SNAME' '姓名'(104).
*
*START-OF-SELECTION.
*  PERFORM getdata.
*  PERFORM outdata.
*
**&---------------------------------------------------------------------*
**&      Form  GETDATA
**&---------------------------------------------------------------------*
*FORM getdata.
*  DATA: ilines TYPE i.
*
*
*
*  ilines = lines( gt_itab ).
*  slines = ilines.
**颜色使用实例
**  color-color-col = '6'.
**  color-color-int = '1'.
**  color-color-inv = '0'.
**  APPEND color.
**  itab-cellc[] = color[].
**  APPEND itab.
*ENDFORM.                    " GETDATA
*
**&---------------------------------------------------------------------*
**&      Form  outdata
**&---------------------------------------------------------------------*
*FORM outdata.
*  slayt-box_fieldname = 'CHKBX'.
*  slayt-box_tabname  = 'ITAB'.
*  slayt-colwidth_optimize = 'X'.
*  slayt-zebra             = 'X'.
*  slayt-coltab_fieldname = 'CELLC'.
*  slayt-window_titlebar  = '员工病事旷规则'.
*  PERFORM getalvtitle CHANGING i_title.
*  repid = sy-repid.
*  i_grid_settings-edt_cll_cb  = 'X' .  "显示界面可编辑字段上修改了数据,回车后就会立即将内表的数据也修改
*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
*    EXPORTING
*      i_callback_program      = repid
*      it_fieldcat             = fldcat[]
*      i_save                  = 'A'
*      is_layout               = slayt
*      i_callback_user_command = 'USER_COMMAND'
**     i_callback_pf_status_set = 'SET_STATUS'
*      i_grid_settings         = i_grid_settings
*      i_grid_title            = i_title
*    TABLES
*      t_outtab                = gt_itab[]
*    EXCEPTIONS
*      program_error           = 1
*      OTHERS                  = 2.
*
*ENDFORM.                    " outdata
*FORM getalvtitle CHANGING i_title TYPE lvc_title.
*  i_title = slines .
*  CONDENSE i_title.
*  CONCATENATE '条目数:'   i_title INTO   i_title .
*ENDFORM.
*
**&---------------------------------------------------------------------*
**& Module STATUS_0100 OUTPUT
**&---------------------------------------------------------------------*
*FORM set_status USING rt_extab TYPE slis_t_extab.
**  SET PF-STATUS 'STA1'   EXCLUDING rt_extab.
*ENDFORM.
**---------------------------------------------------------------------*
**       FORM frm_catlg_set                                            *
**---------------------------------------------------------------------*
*FORM catlg_set USING s_field s_text.
*  DATA: ls_fldcat TYPE slis_fieldcat_alv,
*        s_mask    TYPE  dd04l-convexit.
*
*  ls_fldcat-fieldname     =  s_field.
*  ls_fldcat-seltext_l     =  s_text.
*
*  SELECT SINGLE convexit  INTO  s_mask  FROM dd04l WHERE rollname = s_field.
*  IF sy-subrc = 0 AND s_mask IS NOT INITIAL.
*    CONCATENATE '==' s_mask INTO ls_fldcat-edit_mask .
*  ENDIF.
*
*  CASE ls_fldcat-fieldname.
*    WHEN 'BSTMG' OR 'BDMNG' OR 'MENGE'.
*      ls_fldcat-qfieldname = 'MEINS'.
*      ls_fldcat-decimals_out = 3.
*      ls_fldcat-no_zero = 'X'.
*    WHEN 'WRBTR' OR 'KBERE' OR 'BFAAC'.
*      ls_fldcat-cfieldname = 'BWAER'.
*      ls_fldcat-decimals_out = 2.
*    WHEN 'LIFNR' OR 'AUFNR' OR 'KUNNR'.
*      ls_fldcat-edit_mask = '==ALPHA'.
*    WHEN 'MATNR' OR 'IDNRK'.
*      ls_fldcat-edit_mask = '==MATN1'.
*    WHEN 'BSTME' OR 'MEINS' .
*      ls_fldcat-edit_mask = '==CUNIT'.
*    WHEN OTHERS.
*  ENDCASE.
*
*  APPEND ls_fldcat TO fldcat .
*  CLEAR ls_fldcat .
*ENDFORM.                    "frm_catlg_set

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值