首次写报表

入职后从0开始学习abap,在此记录开发的第一个简单报表:生产订单工序查询报表

通过单选框分别显示订单信息,工序信息,组件信息

REPORT ytest_01.
*声明表
TABLES:aufk,afko.
*结构
TYPES:
  BEGIN OF ty_alv,
    werks  TYPE aufk-werks,      "工厂
    aufnr  TYPE aufk-aufnr,      "订单号
    stlbez TYPE afko-stlbez,     "物料号
    maktx  TYPE makt-maktx,      "物料描述
    auart  TYPE aufk-auart,      "订单类型
    gamng  TYPE afko-gamng,      "订单数量
    igmng  TYPE afko-igmng,      "确认数量
    wemng  TYPE afpo-wemng,      "交货数量
    rmnga  TYPE afko-rmnga,      "返工数量
    iasmg  TYPE afko-iasmg,      "报废数量
    gmein  TYPE afko-gmein,      "单位
    erdat  TYPE aufk-erdat,      "创建日期
    ftrmi  TYPE afko-ftrmi,      "下达日期
    sttxt  TYPE bsvx-sttxt,      "系统状态
  END OF ty_alv,

  BEGIN OF ty_alv2,
    werks  TYPE aufk-werks,
    aufnr  TYPE aufk-aufnr,
    stlbez TYPE afko-stlbez,
    maktx  TYPE makt-maktx,
    vornr  TYPE afvc-vornr,      "工序号
    ktsch  TYPE afvc-ktsch,      "文本码
    ltxa1  TYPE afvc-ltxa1,      "工序短文本
    bmsch  TYPE afvv-bmsch,      "工序数量
    meinh  TYPE afvv-meinh,      "工序单位
    vgw01  TYPE afvv-vgw01,      "标准人工工时
    vgw02  TYPE afvv-vgw02,      "标准机械工时
    vge01  TYPE afvv-vge01,      "时间单位
  END OF ty_alv2,

  BEGIN OF ty_alv3,
    werks   TYPE aufk-werks,
    aufnr   TYPE aufk-aufnr,
    stlbez  TYPE afko-stlbez,
    maktx   TYPE makt-maktx,
    posnr   TYPE resb-posnr,     "项目号
    matnr   TYPE resb-matnr,     "组件物料
    s_maktx TYPE makt-maktx,     "组件物料描述
    bdmng   TYPE resb-bdmng,     "需求数量
    enmng   TYPE resb-enmng,     "提货数量
    meins   TYPE resb-meins,     "单位
    avoau   TYPE resb-avoau,     "工序报废
    alpgr   TYPE resb-alpgr,     "组
    alprf   TYPE resb-alprf,     "优先级
    vornr   TYPE resb-vornr,     "工序
  END OF ty_alv3.
*表
DATA:
  gt_alv  TYPE STANDARD TABLE OF ty_alv,
  gt_alv2 TYPE STANDARD TABLE OF ty_alv2,
  gt_alv3 TYPE STANDARD TABLE OF ty_alv3.
*变量
DATA:
  gv_program TYPE sy-repid,
  gs_layout  TYPE lvc_s_layo,
  gt_fcat    TYPE lvc_t_fcat.
*选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME.

SELECT-OPTIONS : s_werks FOR aufk-werks OBLIGATORY NO-EXTENSION,       "工厂
                 s_stlbez FOR afko-stlbez NO-EXTENSION,                "物料号
                 s_aufnr FOR aufk-aufnr NO-EXTENSION,                  "订单号
                 s_auart FOR aufk-auart NO-EXTENSION,                  "订单类型
                 s_ftrmi FOR afko-ftrmi NO-EXTENSION.                  "下达日期

PARAMETERS : r_rad1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND uc,
             r_rad2 RADIOBUTTON GROUP g1,
             r_rad3 RADIOBUTTON GROUP g1.

SELECTION-SCREEN END OF BLOCK a.

START-OF-SELECTION.

  PERFORM frm_main.
*主处理
FORM frm_main.
  IF r_rad1 = 'X'.
    PERFORM frm_data_get.
    PERFORM frm_data_display.
  ELSEIF r_rad2 = 'X'.
    PERFORM frm_data_get2.
    PERFORM frm_data_display2.
  ELSEIF r_rad3 = 'X'.
    PERFORM frm_data_get3.
    PERFORM frm_data_display3.
  ENDIF.
ENDFORM.
*取数
FORM frm_data_get .
  SELECT a~aufnr
    a~werks
    a~auart
    a~erdat
    b~stlbez
    b~ftrmi
    b~gamng
    b~gmein
    b~igmng
    b~iasmg
    b~rmnga
    c~wemng
    d~maktx
   FROM aufk AS a INNER JOIN afko AS b
   ON a~aufnr = b~aufnr
   INNER JOIN afpo AS c
   ON a~aufnr = c~aufnr
   INNER JOIN makt AS d
   ON b~stlbez = d~matnr
   AND d~spras = sy-langu
    INTO CORRESPONDING FIELDS OF TABLE gt_alv
   WHERE a~werks IN s_werks
     AND b~stlbez IN s_stlbez
     AND a~aufnr IN s_aufnr
     AND a~auart IN s_auart
     AND b~ftrmi IN s_ftrmi.
  SORT gt_alv by aufnr.
ENDFORM.
FORM frm_data_get2 .
  SELECT a~werks
    a~aufnr
    b~stlbez
    c~maktx
    d~vornr
    d~ktsch
    d~ltxa1
    e~bmsch
    e~meinh
    e~vgw01
    e~vgw02
    e~vge01
  FROM aufk AS a INNER JOIN afko AS b
  ON a~aufnr = b~aufnr
  INNER JOIN makt AS c
  ON b~stlbez = c~matnr
  INNER JOIN afvc AS d
  ON b~aufpl = d~aufpl
  INNER JOIN afvv AS e
  ON d~aplzl = e~aplzl
  AND d~aufpl = e~aufpl
   INTO CORRESPONDING FIELDS OF TABLE gt_alv2
  WHERE a~werks IN s_werks
     AND b~stlbez IN s_stlbez
     AND a~aufnr IN s_aufnr
     AND a~auart IN s_auart
     AND b~ftrmi IN s_ftrmi.
  SORT gt_alv2 by aufnr vornr.
ENDFORM.
FORM frm_data_get3 .
  SELECT a~werks
    a~aufnr
    b~stlbez
    c~maktx
    d~posnr
    d~matnr
    d~bdmng
    d~enmng
    d~meins
    d~avoau
    d~alpgr
    d~alprf
    d~vornr
  FROM aufk AS a INNER JOIN afko AS b
  ON a~aufnr = b~aufnr
  INNER JOIN makt AS c
  ON b~stlbez = c~matnr
  INNER JOIN resb AS d
  ON b~aufnr = d~aufnr
  AND b~rsnum = d~rsnum
  AND d~xloek <> 0
   INTO CORRESPONDING FIELDS OF TABLE gt_alv3
  WHERE a~werks IN s_werks
    AND b~stlbez IN s_stlbez
    AND a~aufnr IN s_aufnr
    AND a~auart IN s_auart
    AND b~ftrmi IN s_ftrmi.
  SORT gt_alv3 by aufnr posnr.
ENDFORM.
*显示
FORM frm_data_display .
** 布局结构设置
  CLEAR gs_layout.
  gs_layout-zebra = 'X'.         "使ALV表格按斑马线间隔条码方式显示
  gs_layout-cwidth_opt = 'X'.    "自动优化列宽
  gs_layout-sel_mode = 'A'.      "选择模式,A-选择按钮,space-空白  “A”在最左端有选择按钮

  CLEAR gt_fcat.
  PERFORM frm_fieldcat_set
    USING: 'WERKS'    '工厂',
           'AUFNR'    '订单号',
           'STLBEZ'   '物料号',
           'MAKTX'    '物料描述',
           'AUART'    '订单类型',
           'GAMNG'    '订单数量',
           'IGMNG'    '确认数量',
           'WEMNG'    '交货数量',
           'RMNGA'    '返工数量',
           'IASMG'    '报废数量',
           'GMEIN'    '单位',
           'ERDAT'    '创建日期',
           'FTRMI'    '下达日期',
           'STTXT'    '系统状态'.
  gv_program = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = gv_program
**     i_callback_pf_status_set = 'SET_PF_STATUS'
**     i_callback_user_command  = 'USER_COMMAND'
*     i_save             = 'A'
      is_layout_lvc      = gs_layout
      it_fieldcat_lvc    = gt_fcat
    TABLES
      t_outtab           = gt_alv.
*    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.
FORM frm_data_display2 .
  CLEAR gs_layout.
  gs_layout-zebra = 'X'.
  gs_layout-cwidth_opt = 'X'.
  gs_layout-sel_mode = 'A'.

  CLEAR gt_fcat.
  PERFORM frm_fieldcat_set
    USING: 'WERKS'    '工厂',
           'AUFNR'    '订单号',
           'STLBEZ'   '物料号',
           'MAKTX'    '物料描述',
           'VORNR'    '工序号',
           'KTSCH'    '文本码',
           'LTXA1'    '工序短文本',
           'BMSCH'    '工序数量',
           'MEINH'    '工序单位',
           'VGW01'    '标准人工工时',
           'VGW02'    '标准机械工时',
           'VGE01'    '时间单位'.
  gv_program = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = gv_program
**     i_callback_pf_status_set = 'SET_PF_STATUS'
**     i_callback_user_command  = 'USER_COMMAND'
*     i_save             = 'A'
      is_layout_lvc      = gs_layout
      it_fieldcat_lvc    = gt_fcat
    TABLES
      t_outtab           = gt_alv2.
*    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.
FORM frm_data_display3 .
  CLEAR gs_layout.
  gs_layout-zebra = 'X'.
  gs_layout-cwidth_opt = 'X'.
  gs_layout-sel_mode = 'A'.

  CLEAR gt_fcat.
  PERFORM frm_fieldcat_set
    USING: 'WERKS'    '工厂',
           'AUFNR'    '订单号',
           'STLBEZ'   '物料号',
           'MAKTX'    '物料描述',
           'POSNR'    '项目号',
           'MATNR'    '组件物料',
           'MAKTX'    '组件物料描述',
           'BDMNG'    '需求数量',
           'ENMNG'    '提货数量',
           'MEINS'    '单位',
           'AVOAU'    '工序报废',
           'ALPGR'    '组',
           'ALPRF'    '优先级',
           'VORNR'    '工序'.
  gv_program = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = gv_program
**     i_callback_pf_status_set = 'SET_PF_STATUS'
**     i_callback_user_command  = 'USER_COMMAND'
*     i_save             = 'A'
      is_layout_lvc      = gs_layout
      it_fieldcat_lvc    = gt_fcat
    TABLES
      t_outtab           = gt_alv3.
*    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.
*fieldcat设置
FORM frm_fieldcat_set  USING   VALUE(pv_name)
                               VALUE(pv_text).
  DATA ls_fcat TYPE lvc_s_fcat.

  ls_fcat-fieldname = pv_name.      "字段名称
  ls_fcat-scrtext_s = pv_text.      "短文本
  ls_fcat-scrtext_m = pv_text.      "中文本
  ls_fcat-scrtext_l = pv_text.      "长文本
  ls_fcat-no_zero   = 'X'.          "如果取值为零,则为空,既不输出零

  APPEND ls_fcat TO gt_fcat.
ENDFORM.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值