|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服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)
|
|