壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 671|回复: 0

[ABAP] sap发料单打印-abap

[复制链接]
发表于 2013/5/28 10:55:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
*&---------------------------------------------------------------------*
* Program Name          :ZMMR007                                       *
* Purpose               :出库单打印                                    *
* Created by            :m0001                                  *
* Create on             :2013-03-010                                   *
* Functional Consultant :                                              *
* Description           :smart form功能创建打印单
*&---------------------------------------------------------------------*

REPORT  ZMMR007

MESSAGE-ID 00 "00,系统消息类
       LINE-SIZE 132 "报表宽度
       LINE-COUNT 11 "报表列数
       NO STANDARD PAGE HEADING. "报表不显示表头

type-pools:slis. "声明使用的存储系统数据的共享表格

TABLES:mkpf,mseg,mara,makt,bkpf,t006a,T001L,CSKT. "声明程序会使用的表

*data:
* danjia type P decimals 2, "单价
* heji type P decimals 2.  "总额合计
*  mblnr like mseg-mblnr,    "物料凭证号
*  smblp like mseg-smblp,    "行号
*  matnr like mseg-matnr,    "物料编码
*  maktx like makt-maktx,    "物料名称
*  werks like mseg-werks,    "工厂
*  menge like mseg-menge,    "数量
*  meins like mseg-meins,    "单位
*  lgort like mseg-lgort,    "发料库位
*  dmbtr like mseg-dmbtr,    "总额
*  kostl like mseg-kostl,    "领料部门
*  budat like mkpf-budat,    "过账日期

data:chuku like table of zmm001  with header line,
     chuku_tmp like table of zmm001  with header line.


DATA BB like ZMM001 OCCURS 0 WITH HEADER LINE.

data: gt_fieldcat   type slis_t_fieldcat_alv,
      gs_fieldcat   like line of gt_fieldcat ,
      g_repid      like sy-repid,
      g_grid type ref to cl_gui_alv_grid,
      g_layout    type slis_layout_alv,
      g_status     type slis_formname value 'FRM_SET_STATUS',
      g_command    type slis_formname value 'FRM_USER_COMMAND'.


*--------------------------------------------------------------------
*---定义选择屏幕

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:MBLNR FOR mseg-MBLNR.
SELECTION-SCREEN END OF BLOCK block1.

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:MATNR for mseg-MATNR.
SELECTION-SCREEN END OF BLOCK block2.

SELECTION-SCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS:WERKS for mseg-WERKS.
SELECTION-SCREEN END OF BLOCK block3.

SELECTION-SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE TEXT-004.
SELECT-OPTIONS:budat for mkpf-budat.
SELECTION-SCREEN END OF BLOCK block4.


*AT SELECTION-SCREEN. "通常在此事件块中进行用户输入数据的合法性检查
*
*  IF MBLNR = SPACE.
*
*    MESSAGE E001.
*
*  ENDIF.

*----------------------------------------------------------------
start-of-selection.

*---读取数据库表到内表
FORM FRM_GET_DATA .

  select a~mblnr a~zeile a~matnr c~maktx a~werks a~menge a~meins D~LGOBE a~dmbtr e~ktext b~budat
    into (chuku-mblnr ,chuku-smblp,chuku-matnr,chuku-maktx,chuku-werks,chuku-menge,
    chuku-meins,chuku-lgort,chuku-dmbtr,chuku-kostl,chuku-budat )
    from mseg as a
    inner join  mkpf as b on a~mblnr = b~mblnr
    inner join  makt as c on a~matnr = c~matnr
    inner join  T001L as d on d~LGOrt = a~lgort
    inner join  CSKT as e on e~kostl = a~kostl
    where a~mblnr in mblnr and b~budat in budat and a~MATNR in MATNR and a~werks in werks AND A~BWART = '201'."冲销场景还未考虑
    append chuku.
    clear chuku.
  endselect.


loop at chuku.

    IF chuku-menge <> 0 .
      chuku-danjia = chuku-dmbtr / chuku-menge.
      condense chuku-danjia.
      chuku-sl = chuku-menge.
      condense chuku-sl.
      chuku-zonge = chuku-dmbtr.
      condense chuku-zonge.
      modify chuku.
    ENDIF.

  endloop.


  sort chuku by mblnr smblp. "根据物料凭证号排序



ENDFORM.



initialization."事件块规则中最优先执行的部分
  g_repid = sy-repid.

start-of-selection.
  perform frm_get_data.

  if chuku[] is initial.
    message '无满足条件的数据' type 'S' display like 'W'.
  else.
    perform frm_display.
  endif.

FORM FRM_DISPLAY .

  clear gt_fieldcat[].
  perform frm_set_fieldcat using    'MBLNR' '单据编号'   'MSEG' 'MBLNR' ''  ''.
  perform frm_set_fieldcat using    'SMBLP' '行号'    'MSEG' 'SMBLP' ''  ''.
  perform frm_set_fieldcat using    'MATNR' '物料编码'    'MSEG' 'MATNR' ''  ''.
  perform frm_set_fieldcat using    'MAKTX' '物料名称'    'MAKT' 'MAKTX' ''  ''.
  perform frm_set_fieldcat using    'SL' '数量'    '' '' ''  ''.
  perform frm_set_fieldcat using    'MEINS' '单位'    'MSEG' 'MEINS' ''  ''.
  perform frm_set_fieldcat using    'DANJIA' '单价' '' '' ''  ''.
  perform frm_set_fieldcat using    'ZONGE' '总额'    '' '' ''  ''.
  perform frm_set_fieldcat using    'LGORT' '库存地点'    'MSEG' 'LGORT' ''  ''.
  perform frm_set_fieldcat using    'KOSTL' '领料部门'    'MSEG' 'KOSTL' ''  ''.



  clear g_layout.
  g_layout-no_min_linesize = 'X'.
  g_layout-min_linesize    = 10.
* g_layout-info_fieldname  = 'COLOR'.
  g_layout-no_vline = ' '.
  g_layout-colwidth_optimize = 'X'.
  g_layout-zebra = 'X'.
  g_layout-box_fieldname = 'BOX'.
  g_layout-totals_only = 'X'.
*----------------------------通过数据字典显示ALV

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = g_repid
      i_callback_user_command  = g_command
      i_callback_pf_status_set = g_status
      is_layout                = g_layout
      it_fieldcat              = gt_fieldcat[]
      i_default                = 'X'
      i_save                   = 'A'
    TABLES
      t_outtab                 = chuku[]
    EXCEPTIONS
      program_error            = 1
      others                   = 2.

ENDFORM.



form frm_set_fieldcat  using
                               p_fieldname
                               p_coltext_m
                               p_ref_t
                               p_ref_f
                               p_edit
                               p_fix.
  clear gs_fieldcat .
*  gs_fieldcat-tabname       = p_tabname.
  gs_fieldcat-fieldname     = p_fieldname .
  gs_fieldcat-seltext_m     = p_coltext_m.
  gs_fieldcat-ref_tabname   = p_ref_t.
  gs_fieldcat-ref_fieldname = p_ref_f.
  gs_fieldcat-edit          = p_edit.
  gs_fieldcat-fix_column    = p_fix.
  gs_fieldcat-no_zero       = 'X'.
  append gs_fieldcat to gt_fieldcat .

endform.

form frm_set_status using extab type slis_t_extab.
  data:fcode like table of sy-ucomm with header line.
  set pf-status 'GUI_STATUS_CHUKU' excluding extab.

endform.

form frm_user_command using pr_ucomm like sy-ucomm
                             pr_selfield type slis_selfield.

  data: ls_row_id  type lvc_s_row,
        ls_col_id  type lvc_s_col,
        l_value(50) type c.

  pr_selfield-refresh = 'X'.
  pr_selfield-col_stable = 'X'.

*
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = g_grid.
  CALL METHOD g_grid->check_changed_data.

  case pr_ucomm.
***双击
*    when '&IC1'.
*      CALL METHOD g_grid->get_current_cell
*        IMPORTING
*          es_row_id = ls_row_id
*          es_col_id = ls_col_id
*          e_value   = l_value.
*
*      if ls_col_id eq 'EBELN'.
*        set parameter id 'BES' field l_value.
*        call transaction 'ME23N' and skip first screen.
*      endif.
** 打印
    when '&PRT'. "打印
      perform frm_print.

* 退出
    when '&BACK'.
      leave to screen 0.
  endcase.
  clear pr_ucomm.
endform.
*--------------------------------------------------------------------*



FORM FRM_PRINT .
*打印

  data:f_name type rs38l_fnam.      " Function module name
  data:im_head like zmm001.
  data:IM_TOTAL(15).
  data:AA like table of zmm001 with header line.

**处理选中的数据行 放入打印的临时内表chuku_tmp
  clear:chuku_tmp,
        chuku_tmp[],
        IM_TOTAL,
        AA.

  loop at chuku into AA where box = 'X'.

  endloop.

  loop at chuku where mblnr = AA-mblnr.
    append chuku to chuku_tmp.
    IM_TOTAL = IM_TOTAL + chuku-dmbtr.
    condense IM_TOTAL.
  endloop.

  im_head = chuku.
  if chuku_tmp[] is initial.
    message '选择打印的数据行' type 'I'.
    exit.
  endif.
*
*  loop at chuku_tmp.
*    chuku_tmp-index = sy-tabix.
*    modify chuku_tmp.
*  endloop.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = 'ZMMCK001'
    IMPORTING
      fm_name            = f_name
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      others             = 3.


  CALL FUNCTION f_name
    EXPORTING
      im_head  = im_head
      im_total = im_total
    TABLES
      chuku = chuku_tmp[].

ENDFORM.

sap发料单打印-abap.txt (9.09 KB, 下载次数: 0)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 02:47 , Processed in 0.019507 second(s), 19 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表