SAP打印出库单 新需求
*&---------------------------------------------------------------------*
*& Report Z_SD_CKD
*&
*&---------------------------------------------------------------------*
*&产品出库单
*&
*&---------------------------------------------------------------------*
REPORT ZSDF002.
INCLUDE ZSDF002_INC.
*INCLUDE Z_SD_CKD_INC.
TYPE-POOLS: slis.
TABLES:LIKP, KNA1, LIPS ,MKPF ,MSEG.
TYPES: BEGIN OF TY_ALL,
VBELV LIKE VBFA-VBELV , "销售订单号
VBELN_IM LIKE MSEG-VBELN_IM ,"交货单号
NAME1 LIKE KNA1-NAME1 ,"客户
KUNNR LIKE MSEG-KUNNR ,"送达方
STRAS LIKE KNA1-STRAS ,"客户地址
BUDAT_MKPF LIKE MSEG-BUDAT_MKPF ,"出库时间
TELFX LIKE KNA1-TELFX ,"电话
USNAM_MKPF LIKE MSEG-USNAM_MKPF ,"经办人
MATNR LIKE MSEG-MATNR ,"物料编码
ARKTX LIKE LIPS-ARKTX ,"物料描述
LGORT LIKE MSEG-LGORT ,"库存地点
MENGE LIKE MSEG-MENGE ,"数量
VRKME LIKE LIPS-VRKME ,"单位
CHARG LIKE MSEG-CHARG ,"批次
VBELP_IM LIKE MSEG-VBELP_IM ,"项目
BOLNR LIKE LIKP-BOLNR ,"物流单号
BRGEW LIKE LIPS-BRGEW,"单项目毛重
BEIZHU(20) TYPE C ,"备注
END OF TY_ALL.
TYPES:BEGIN OF TY_HEADER,
VBELV LIKE VBFA-VBELV , "销售订单号
VBELN_IM LIKE MSEG-VBELN_IM ,"交货单号
NAME1 LIKE KNA1-NAME1 ,"客户
KUNNR LIKE MSEG-KUNNR ,"送达方
STRAS LIKE KNA1-STRAS ,"客户地址
BUDAT_MKPF LIKE MSEG-BUDAT_MKPF ,"出库时间
TELFX LIKE KNA1-TELFX ,"电话
USNAM_MKPF LIKE MSEG-USNAM_MKPF ,"经办人
TOTAL_BRGEW LIKE LIPS-BRGEW,"项目总毛重
BOLNR LIKE LIKP-BOLNR,"物流单号
END OF TY_HEADER.
TYPES:BEGIN OF TY_ITEMS,
VBELN_IM LIKE MSEG-VBELN_IM ,"交货单号
MATNR LIKE MSEG-MATNR ,"物料编码
ARKTX LIKE LIPS-ARKTX ,"物料描述
LGORT LIKE MSEG-LGORT ,"库存地点
MENGE LIKE MSEG-MENGE ,"数量
VRKME LIKE LIPS-VRKME ,"单位
CHARG LIKE MSEG-CHARG ,"批次
VBELP_IM LIKE MSEG-VBELP_IM ,"项目
BRGEW LIKE LIPS-BRGEW,"单项目毛重
BOLNR LIKE LIKP-BOLNR ,"物流单号
BEIZHU(20) TYPE C ,"备注
END OF TY_ITEMS.
DATA:WA_ALL TYPE TY_ALL,
GT_ALL TYPE TY_ALL OCCURS 0.
DATA:WA_HEADER TYPE TY_HEADER,
GT_HEADER TYPE TY_HEADER OCCURS 0 .
DATA:WA_ITEMS TYPE TY_ITEMS,
GT_ITEMS TYPE TY_ITEMS OCCURS 0.
*定义传入到smartforms的变量开始
DATA:fm_name TYPE rs38l_fnam.
DATA:itemsname(32) TYPE c.
DATA:headername(32) TYPE c.
*定义传入到smartforms的变量结束
*定义存储ALV向smartforms传入数据的内表开始
DATA:GT_HEADER_TEMP TYPE TY_HEADER OCCURS 0.
DATA:GT_ITEMS_TEMP TYPE TY_ITEMS OCCURS 0.
DATA:GT_ALL_TEMP TYPE TY_ALL OCCURS 0.
*定义存储ALV向smartforms传入数据的内表结束
"控制smartforms参数声明开始
DATA :control_parameters TYPE ssfctrlop.
"控制smartforms参数声明结束
DATA: gs_fcat TYPE lvc_s_fcat,
gt_fcat TYPE lvc_t_fcat,
gs_layo TYPE lvc_s_layo,
gs_grid TYPE lvc_s_glay.
DATA: gt_event TYPE slis_t_event WITH HEADER LINE,
gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.
DATA: ref_grid TYPE REF TO cl_gui_alv_grid .
START-OF-SELECTION.
SELECT-OPTIONS: P_VBELN FOR MSEG-VBELN_IM, "交货单号
P_WERKS FOR MSEG-WERKS , "工厂 ,
P_LGORT FOR MSEG-LGORT ,"库存地点
P_BUDAT FOR MKPF-BUDAT,"过账日期
P_USNAM FOR MKPF-USNAM."创建者
"P_TPLST FOR VTTK-TPLST ,
"P_ERNAM FOR VTTK-ERNAM ,
"P_ROUTE FOR VTTK-ROUTE .
PERFORM FRM_GET_DATA.
PERFORM display_data .
END-OF-SELECTION.
"当屏幕失去焦点时,自动刷新声明类开始
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS handle_modify
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified et_good_cells.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_modify.
* PERFORM refresh.
DATA stbl TYPE lvc_s_stbl.
stbl-row = 'X'." 基于行的稳定刷新
stbl-col = 'X'." 基于列稳定刷新
CALL METHOD ref_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDMETHOD. "HANDLE_MODIFY
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
DATA gt_event_receiver TYPE REF TO lcl_event_receiver .
"当屏幕失去焦点时,自动刷新声明类结束
FORM FRM_GET_DATA .
SELECT VA~VBELV M~VBELN_IM K~NAME1 M~KUNNR K~STRAS M~BUDAT_MKPF
K~TELFX M~USNAM_MKPF M~MATNR LS~ARKTX M~LGORT M~MENGE
LS~VRKME M~CHARG M~VBELP_IM LP~BOLNR LS~BRGEW
INTO CORRESPONDING FIELDS OF TABLE GT_ALL
FROM MSEG AS M
INNER JOIN MKPF AS MF
ON M~MBLNR = MF~MBLNR AND MF~MJAHR = M~MJAHR
INNER JOIN LIPS AS LS
ON M~VBELN_IM = LS~VBELN AND M~VBELP_IM = LS~POSNR
INNER JOIN LIKP AS LP
ON LP~VBELN = LS~VBELN
INNER JOIN KNA1 AS K
ON K~KUNNR = LP~KUNNR
INNER JOIN VBFA AS VA
ON VA~VBELN = LS~VBELN AND VA~POSNN = LS~POSNR
WHERE M~VBELN_IM IN P_VBELN AND
M~WERKS IN P_WERKS AND
M~LGORT IN P_LGORT AND
MF~BUDAT IN P_BUDAT AND
MF~USNAM IN P_USNAM .
"DELETE ADJACENT DUPLICATES FROM GT_ALL.
ENDFORM.
FORM display_data .
PERFORM set_fcat.
PERFORM set_layout.
PERFORM show_alv TABLES gt_fcat GT_ALL[]
USING gs_layo.
ENDFORM. " DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM set_fcat .
PERFORM csalv_set_fcat USING:
" 'Field' 'Text' 'Edit' 'Zero' 'Type' 'Qfieldname' 'Key' 'Hostspot' 'Emphasize' 'Checkbox'
'VBELV' '销售订单号' '' '' '' '' '' '' '' '' '' '',
'VBELN_IM' '交货单号' '' '' '' '' '' '' '' '' '' '',
'NAME1' '客户' '' '' '' '' '' '' '' '' '' '',
'KUNNR' '送达方' '' '' '' '' '' '' '' '' '' '',
'VBELP_IM' '项目' '' '' '' '' '' '' '' '' '' '',
'MATNR' '物料编码' '' '' '' '' '' '' '' '' '' '',
'ARKTX' '物料描述' '' '' '' '' '' '' '' '' '' '',
'VRKME' '单位' '' '' '' '' '' '' '' '' '' '',
'MENGE' '数量' '' '' '' '' '' '' '' '' '' '0',
'BRGEW' '毛重' '' '' '' '' '' '' '' '' '' '0',
'LGORT' '库存地点' '' '' '' '' '' '' '' '' '' '',
'USNAM_MKPF' '经办人' '' '' '' '' '' '' '' '' '' '',
'BEIZHU' '备注' 'X' '' '' '' '' '' '' '' '' ''.
" 'zsel' '是否打印 ' 'X' '' '' '' '' '' '' 'X' ''.
ENDFORM. " SET_FCAT
*&---------------------------------------------------------------------*
FORM set_layout .
gs_layo
-zebra = 'X'.
* gs_layout-stylefname = 'FIELD_STYLE'.
* gs_layo-CWIDTH_OPT = 'X'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
FORM csalv_set_fcat USING
p_name
p_text
p_edit
p_zero
p_type
p_qfieldname
p_key
p_hotspot
p_emphasize
p_checkbox
P_DO_SUM
P_decimals_out
.
gs_fcat
-fieldname = p_name.
* gs_fcat-reptext_l =
* gs_fcat-selddictxt =
gs_fcat
-reptext = p_text.
gs_fcat
-edit = p_edit.
gs_fcat
-no_zero = p_zero.
gs_fcat
-datatype = p_type.
gs_fcat
-qfieldname = p_qfieldname.
gs_fcat
-key = p_key.
gs_fcat
-hotspot = p_hotspot.
gs_fcat
-emphasize = p_emphasize.
gs_fcat
-checkbox = p_checkbox.
gs_fcat
-DO_SUM = P_DO_SUM.
gs_fcat
-decimals_o = P_decimals_out.
APPEND gs_fcat TO gt_fcat.
ENDFORM. "csalv_set_fcat
*&---------------------------------------------------------------------*
FORM show_alv TABLES pt_fcat
pt_tab
USING ps_layout.
gs_grid
-edt_cll_cb = 'X'."当屏幕失去焦点时,自动刷新
gt_event
-name = 'CALLER_EXIT'. "slis_ev_caller_exit_at_start事件
gt_event
-FORM = 'FM_BUTTON'.
APPEND gt_event .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program
= sy-repid
i_callback_user_command
= 'USER_COMMAND'
i_grid_settings
= gs_grid
i_callback_pf_status_set
= 'SET_PF_STATUS'
is_layout_lvc
= gs_layo
it_fieldcat_lvc
= pt_fcat[]
it_events
= gt_event[]
* it_event_exit = gt_event_exit[]
TABLES
t_outtab
= pt_tab
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS = 2
.
ENDFORM. "csalv_set_fcat
FORM PRINT.
DATA:PTR_COUNT(10) TYPE C.
DATA: lines TYPE I."获取往smartforms传入的要打印的行数目
DATA: insertRows TYPE i."需要再插入多少空行
DATA: ROWS TYPE i VALUE 16."一页要打印的行数
CLEAR GT_ALL_TEMP.
CLEAR GT_HEADER_TEMP.
CLEAR GT_ITEMS_TEMP.
DATA COUNT LIKE LIPS-BRGEW VALUE 0.
DATA:ls_row TYPE lvc_s_row,
lt_rows
type lvc_t_row.
"CLEAR GT_HEADER.
"CLEAR GT_ITEMS.
CALL METHOD ref_grid->get_selected_rows
IMPORTING
et_index_rows
= lt_rows
* et_row_no =
.
LOOP AT lt_rows INTO ls_row.
READ TABLE GT_ALL INTO WA_ALL INDEX ls_row-index.
APPEND WA_ALL TO GT_ALL_TEMP.
* APPEND WA_ITEMS TO GT_ITEMS_TEMP.
* COUNT = WA_ITEMS-BRGEW + COUNT.
ENDLOOP.
MOVE-CORRESPONDING GT_ALL_TEMP TO GT_HEADER.
MOVE-CORRESPONDING GT_ALL_TEMP TO GT_ITEMS.
DELETE ADJACENT DUPLICATES FROM GT_HEADER.
* LOOP AT GT_ITEMS INTO WA_ITEMS.
CLEAR: CONTROL_PARAMETERS.
CONTROL_PARAMETERS
-PREVIEW = 'X'.
CONTROL_PARAMETERS
-NO_OPEN = 'X'.
CONTROL_PARAMETERS
-NO_CLOSE = 'X'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
CONTROL_PARAMETERS
= CONTROL_PARAMETERS
EXCEPTIONS
FORMATTING_ERROR
= 1
INTERNAL_ERROR
= 2
SEND_ERROR
= 3
USER_CANCELED
= 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
LOOP AT GT_HEADER INTO WA_HEADER.
APPEND WA_HEADER TO GT_HEADER_TEMP.
LOOP AT GT_ITEMS INTO WA_ITEMS.
IF ( WA_ITEMS-VBELN_IM EQ WA_HEADER-VBELN_IM ) .
APPEND WA_ITEMS TO GT_ITEMS_TEMP.
COUNT = WA_ITEMS-BRGEW + COUNT.
ENDIF.
ENDLOOP.
WA_HEADER
-TOTAL_BRGEW = COUNT.
MODIFY TABLE GT_HEADER_TEMP FROM WA_HEADER.
CLEAR WA_ITEMS.
CLEAR WA_HEADER.
CLEAR COUNT.
IF GT_ITEMS_TEMP IS INITIAL.
MESSAGE i000(0k) WITH '请选中要打印的内容!'.
EXIT .
ENDIF.
call function 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname
= 'ZSDSF002'
IMPORTING
fm_name
= fm_name
EXCEPTIONS
no_form
= 1
no_function_module
= 2
OTHERS = 3.
"SET HANDLER gt_event_receiver->handle_modify FOR ref_grid.
DESCRIBE TABLE GT_ITEMS_TEMP LINES lines.
insertRows
= lines mod ROWS .
insertRows
= ROWS - insertRows.
DO insertRows TIMES.
APPEND WA_ITEMS TO GT_ITEMS_TEMP.
ENDDO.
PERFORM FRM_PRINT_DATA.
ENDLOOP.
CALL FUNCTION 'SSF_CLOSE'
EXCEPTIONS
FORMATTING_ERROR
= 1
INTERNAL_ERROR
= 2
SEND_ERROR
= 3
OTHERS = 4.
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_PRINT_DATA.
CONCATENATE 'ZDDITEMMM' SY-UZEIT INTO itemsname.
CONCATENATE 'ZDDHEADER' SY-UZEIT INTO headername.
savebuffer GT_ITEMS_TEMP itemsname
.
savebuffer GT_HEADER_TEMP headername
.
* PTR_COUNT = GV_COUNT .
*调用 smartForms
call function fm_name
EXPORTING
control_parameters
= CONTROL_PARAMETERS
PTR_ITEMS
= itemsname
PTR_HEADER
= headername
* PTR_TOTAL = GV_COUNT
EXCEPTIONS
formatting_error
= 1
internal_error
= 2
send_error
= 3
user_canceled
= 4.
clearbuffer itemsname
.
clearbuffer headername
.
CLEAR GT_HEADER_TEMP.
CLEAR GT_ITEMS_TEMP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->PS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield
TYPE slis_selfield.
CASE r_ucomm.
WHEN '&DATA_SAVE'.
WHEN '&PRINT'.
PERFORM PRINT.
WHEN OTHERS.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form SET_PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab..
SET PF-STATUS 'STANDARD'.
ENDFORM. "SET_PF_STATUS
*&---------------------------------------------------------------------*
*& Form fm_button
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->E_GRID text
*----------------------------------------------------------------------*
FORM fm_button USING e_grid TYPE slis_data_caller_exit.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
e_grid
= ref_grid
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
* CALL METHOD ref_grid->check_changed_data.
* 设置enter事件
CALL METHOD ref_grid->register_edit_event
EXPORTING
i_event_id
= cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
error
= 1
OTHERS = 2.
CREATE OBJECT gt_event_receiver.
SET HANDLER gt_event_receiver->handle_modify FOR ref_grid.
ENDFORM. "FM_BUTTON
SAP打印出库单 新需求的更多相关文章
- SAP打印出库单需求
*&---------------------------------------------------------------------* *& Report Z_SD_CKD ...
- PHP实现打印出库单,有没有实现过?
https://mp.weixin.qq.com/s/X3JldplICRq7KR0HNFcpuw 背景 有时候你在实现一个出库订单之类的功能模块,这里也有可能要你的站点也实现相应的打印出库单预览,今 ...
- SD--怎样增强是同一类出库单使用不同号码段
在现实的业务中,一个公司有多个销售组织,它们使用同一个出库类型,业务往往希望它们创建的出库单的号码採用不同号码范围.但在sap里出库单号码范围是在出库单类型里设置,也就是使用同样的出库单类型,也就使用 ...
- SAP 出库单新版
*&---------------------------------------------------------------------* *& Report ZSDR045 ...
- U811.1接口EAI系列之二--生成销售出库单调用U8的EAI通用处理方法--PowerBuilder语言
1.销售系统销售出库,更新U811.1材料库存的EAI的XML生成. 2.主要根据U8配置会生成出库单和同时是否更新库存量,还是更新现存量等等. 3.具体参考代码如下: 作者:王春天 2013-11- ...
- 基于VUE实现的h5网页Web出库单入库单打印设计
经过将近一个月的研发,初步实现了打印单据的自定义设计,样子还有点丑陋,但是功能基本都实现了,实现了以下功能: 1.表头表尾支持动态添加行.添加列.合并单元格(可多行多列合并). 2.表头表尾分别布局, ...
- WMS出库单重复
发货通知单?WMS备货单选项勾选 不自动复制?新增?
- 使用Jasperreporter生成入库出库单打印等报表操作
项目需要打印报表:就是那种生成入库单,出库单等的操作.使用到的技术:使用iReport Designer5.1.0设计报表,使用struts2+jasperreporter生成最终填充数据的报表 首先 ...
- ERP出库审核业务(四十四)
结束表单流程的代码: protected void btnSubmit_Click(object sender, EventArgs e) { if(this.txtreceiveDate.Text! ...
随机推荐
- linux安装-版本选择-终极决定
选用64位或32位的版本,注意看硬件: 内存大于4G的用64位, 小于4G的用32位 同时, 64位的版本在软件源, 软件的兼容性等问题. ----------------------------- ...
- java.lang.Class
java.lang.Class 一.Class类是什么 Class是一个类,位于java.lang包下. 在Java中每个类都有一个相对应的Class类的对象,换句话说:Java程序在启动运行时 一个 ...
- c#winform选择文件,文件夹,打开指定目录方法
private void btnFile_Click(object sender, EventArgs e) { OpenFileDialog fileDialog = new OpenFileDia ...
- 设置二级域名共享一级域名Cookie和删除共享Cookie
设置共享Cookie: 二级域名要想共享一级域名的cookie,只需要设置cookie.Domain = ".一级域名.com"; 删除共享Cookie: HttpCook ...
- Windows疑难杂症之开机无法显示桌面。
开机无法显示桌面可能有以下两种情况. 1.系统故障或病毒引起explorer.exe无法加载启动. 2.注册表故障造成默认的值不是explorer.exe.(可能是安装了某些软件造成此问题) 3,某开 ...
- Swift2.1 语法指南——扩展
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- linux之awk、sed命令
总结: 两个命令的正则表达式都用''单引号进行区分. 输出变量名用单引号,输出变量值用双引号,这个在bash脚本里一般是通用的. 在bash脚本里要使用变量值,都要加上双引号 awk用法: 参考网址: ...
- 纯CSS多级菜单
主要代码部分: /*新增的二级菜单部分*/ .menu ul ul { visibility:hidden;/*开始时是隐藏的*/ position:absolute; left:0px; top:3 ...
- Android 软键盘盖住输入框的问题
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...
- 引擎崩溃、异常、警告、BUG与提示总结及解决方法
http://www.58player.com/blog-635-128.html [Unity3D]引擎崩溃.异常.警告.BUG与提示总结及解决方法 此贴会持续更新,都是项目中常会遇到的问题,总 ...