ZVT003出闸纸列印
来源:互联网 发布:windows api 创建窗体 编辑:程序博客网 时间:2024/05/22 02:03
恐怕很多了都很陌生吧。啥东西叫做出闸纸咯。咳!其实它为公司指示货柜堆场将吉柜(即空柜)交与本单持有人的书面凭证,重柜与吉柜进出码头均受到海关监控,出CY的柜须有“出闸放行条”(有人称“出闸纸”)。简单点引申为:放行条。大家先看看效果。列印中用到scriptform.有不了解的童鞋可以参考我之前的教程:SAP ScriptForms 教程系列http://blog.csdn.net/jiali765/article/details/7041900。最终的效果为:
现在接着来看看代码:
*&---------------------------------------------------------------------**& Report ZVT003*&---------------------------------------------------------------------** Author : Jasson.Lee
Date 2011.07.29* Purpose :* Modi Log: 2011.07.29 Gavin Create* Modi Log: 2011.08.23 Gavin 出货数改为整数* Modi Log: 2011.08.24 Gavin 出货数改为字符型,以便于报关修正* Modi Log: 2011.08.25 Gavin 增加备注* Modi Log: 2012.02.04 Gavin 增加名称栏位宽度*----------------------------------------------------------------------REPORT ZVT003.TABLES: VTTK,VTTP,VEKP,VEPO.TYPE-POOLS: SLIS.*--------------------------------* Selection Screen*--------------------------------SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.PARAMETERS: P_TKNUM LIKE VTTK-TKNUM OBLIGATORY . "SHIPMETN NO.SELECTION-SCREEN END OF BLOCK B1.* For Line ItemsSELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.PARAMETERS: P_CHK AS CHECKBOX DEFAULT '', P1 TYPE I DEFAULT 0, P2(50) TYPE C.SELECTION-SCREEN END OF BLOCK B2.*****************************************************************************DATA: G_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD_02'. "加工具栏DATA: I_FIELDCAT_ALV TYPE SLIS_T_FIELDCAT_ALV, I_FIELDCAT TYPE SLIS_FIELDCAT_ALV, I_LAYOUT TYPE SLIS_LAYOUT_ALV, I_EVENTS TYPE SLIS_T_EVENT, W_EVENTS LIKE LINE OF I_EVENTS, I_LIST_COMMENTS TYPE SLIS_T_LISTHEADER, W_LIST_COMMENTS LIKE LINE OF I_LIST_COMMENTS, W_REPID LIKE SY-REPID.DATA: W_LOOP TYPE SY-TABIX,L_PROD_NUM1 TYPE CO_PSMNG,L_PROD_NUM2 TYPE CO_PSMNG.DATA: BEGIN OF I_TAB0 OCCURS 0, TKNUM LIKE VTTK-TKNUM, ERDAT LIKE VTTK-ERDAT, EXTI1 LIKE VTTK-EXTI1, EXTI2 LIKE VTTK-EXTI2, END OF I_TAB0.DATA: BEGIN OF I_TAB1 OCCURS 0, TKNUM LIKE VTTP-TKNUM, VBELN LIKE LIPS-VBELN, MATNR LIKE LIPS-MATNR, ARKTX LIKE LIPS-ARKTX, LFIMG LIKE LIPS-LFIMG, VPOBJKEY LIKE VEKP-VPOBJKEY, END OF I_TAB1.DATA: BEGIN OF I_TAB2 OCCURS 0, VENUM LIKE VEKP-VENUM, VPOBJKEY LIKE VEKP-VPOBJKEY, BRGEW LIKE VEKP-BRGEW, VBELN LIKE VEPO-VBELN, POSNR LIKE VEPO-POSNR, MATNR LIKE VEPO-MATNR, VEMNG LIKE VEPO-VEMNG, END OF I_TAB2.DATA: BEGIN OF I_TAB3 OCCURS 0, MATNR LIKE LIPS-MATNR, BRGEW LIKE VEKP-BRGEW, VEMNG LIKE VEPO-VEMNG, END OF I_TAB3.DATA: BEGIN OF I_TAB4 OCCURS 0, TKNUM LIKE VTTP-TKNUM, MATNR LIKE LIPS-MATNR, ARKTX LIKE LIPS-ARKTX, LFIMG TYPE I,"LIKE LIPS-LFIMG, VEMNG TYPE I,"LIKE VEPO-VEMNG, BRGEW TYPE I,"LIKE VEKP-BRGEW, VEMNG1 TYPE I,"LIKE VEPO-VEMNG, BRGEW1 TYPE I,"LIKE VEKP-BRGEW, LFIMG1(10) TYPE C,"LIKE LIPS-LFIMG, END OF I_TAB4.DATA: BEGIN OF I_TAB5 OCCURS 0, TKNUM LIKE VTTP-TKNUM, MATNR LIKE LIPS-MATNR, ARKTX LIKE LIPS-ARKTX, LFIMG TYPE I,"LIKE LIPS-LFIMG, VEMNG TYPE I,"LIKE VEPO-VEMNG, BRGEW TYPE I,"LIKE VEKP-BRGEW, VEMNG1 TYPE I,"LIKE VEPO-VEMNG, BRGEW1 TYPE I,"LIKE VEKP-BRGEW, END OF I_TAB5.DATA :P_COCO LIKE KNB1-BUKRS.DATA :W_TOTAL(10) TYPE C.DATA :W_LOOP1 LIKE SY-TABIX.DATA :W_LOOP2 LIKE SY-TABIX.DATA :W_LOOP3 LIKE SY-TABIX.DATA SCOUNT(8).DATA :RCOUNT LIKE SY-TABIX.DATA LSTR(20).DATA LSTR1(40).DATA LSTR2(40).DATA LSTR3(100).DATA LSTR4(40).DATA LSTR5(40).*--------------------------------* Initialization*--------------------------------INITIALIZATION.*--------------------------------* At Selection Screen PBO*--------------------------------AT SELECTION-SCREEN OUTPUT.*--------------------------------* Start of Selection*--------------------------------START-OF-SELECTION. PERFORM GET_DATA. PERFORM PROCESS_DATA. PERFORM CAL_DATA. PERFORM EVENTS_BUILD. PERFORM LAYOUT_BUILD. PERFORM FIELDS_BUILD. PERFORM DISPLAY_DATA.END-OF-SELECTION.*--------------------------------* Top of Page*--------------------------------TOP-OF-PAGE.*&---------------------------------------------------------------------**& Form get_data*&---------------------------------------------------------------------*FORM GET_DATA.* 主档 SELECT K~TKNUM K~ERDAT K~EXTI1 K~EXTI2 INTO TABLE I_TAB0 FROM VTTK AS K WHERE K~TKNUM = P_TKNUM.* SELECT T~TKNUM P~VBELN P~MATNR P~ARKTX P~LFIMG INTO TABLE I_TAB1 FROM VTTP AS T INNER JOIN LIPS AS P ON T~VBELN = P~VBELN WHERE T~TKNUM = P_TKNUM AND P~LFIMG > 0 AND P~POSNR >= '900001' . L_PROD_NUM1 = 0. LOOP AT I_TAB1. W_LOOP = SY-TABIX. L_PROD_NUM1 = L_PROD_NUM1 + I_TAB1-LFIMG. I_TAB1-VPOBJKEY = I_TAB1-VBELN. MODIFY I_TAB1 INDEX W_LOOP. SY-TABIX = W_LOOP + 1. ENDLOOP.* 取得出包装箱数 SELECT K~VENUM K~VPOBJKEY K~BRGEW P~VBELN P~POSNR P~MATNR P~VEMNG INTO TABLE I_TAB2 FROM VEKP AS K LEFT JOIN VEPO AS P ON K~VENUM = P~VENUM FOR ALL ENTRIES IN I_TAB1 WHERE K~VPOBJKEY = I_TAB1-VPOBJKEY AND K~STATUS = '0020'. L_PROD_NUM2 = 0. LOOP AT I_TAB2. L_PROD_NUM2 = L_PROD_NUM2 + I_TAB2-BRGEW. ENDLOOP.ENDFORM. "get_data*&---------------------------------------------------------------------**& Form process_data*&---------------------------------------------------------------------*FORM PROCESS_DATA . LOOP AT I_TAB2. W_LOOP = SY-TABIX. I_TAB3-MATNR = I_TAB2-MATNR. I_TAB3-BRGEW = I_TAB2-BRGEW. I_TAB3-VEMNG = I_TAB2-VEMNG. COLLECT I_TAB3. SY-TABIX = W_LOOP + 1. ENDLOOP. LOOP AT I_TAB1. W_LOOP = SY-TABIX. I_TAB4-TKNUM = I_TAB1-TKNUM. I_TAB4-MATNR = I_TAB1-MATNR. I_TAB4-ARKTX = I_TAB1-ARKTX. I_TAB4-LFIMG = I_TAB1-LFIMG. COLLECT I_TAB4. SY-TABIX = W_LOOP + 1. ENDLOOP. SORT I_TAB3 BY MATNR.* SORT I_TAB4 BY MATNR. LOOP AT I_TAB4. W_LOOP = SY-TABIX. CLEAR I_TAB3. READ TABLE I_TAB3 WITH KEY MATNR = I_TAB4-MATNR BINARY SEARCH. IF SY-SUBRC = 0. I_TAB4-BRGEW = I_TAB3-BRGEW. I_TAB4-VEMNG = I_TAB3-VEMNG. "输入前值 I_TAB4-LFIMG = I_TAB3-VEMNG. " I_TAB4-BRGEW1 = L_PROD_NUM2. I_TAB4-VEMNG1 = L_PROD_NUM1. ENDIF. I_TAB4-LFIMG1 = I_TAB4-LFIMG. "数量转成字符 MODIFY I_TAB4 INDEX W_LOOP. SY-TABIX = W_LOOP + 1. ENDLOOP. I_TAB4-TKNUM = ''. I_TAB4-MATNR = ''. I_TAB4-ARKTX = ''. I_TAB4-BRGEW = 0. I_TAB4-VEMNG = 0. "输入前值 I_TAB4-LFIMG1 = '0'. " I_TAB4-LFIMG = 0. " I_TAB4-BRGEW1 = 0. I_TAB4-VEMNG1 = 0. IF P_CHK = 'X'. DO P1 TIMES. APPEND I_TAB4. ENDDO. ENDIF.ENDFORM. " process_data*&---------------------------------------------------------------------**& Form Form_Open*&---------------------------------------------------------------------*FORM FORM_OPEN . CALL FUNCTION 'OPEN_FORM' EXPORTING FORM = 'ZSHIPMENT_DOC2' LANGUAGE = SY-LANGU DIALOG = 'X'* DEVICE = SCREEN EXCEPTIONS OTHERS = 1.ENDFORM. " Form_Open*&---------------------------------------------------------------------**& Form write_form*&---------------------------------------------------------------------*FORM WRITE_FORM USING ELEMENT WINDOW TYPE. CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = ELEMENT WINDOW = WINDOW TYPE = TYPE.ENDFORM. " write_form*&---------------------------------------------------------------------**& Form FORM_CLOSE*&---------------------------------------------------------------------*FORM FORM_CLOSE. CALL FUNCTION 'CLOSE_FORM' EXCEPTIONS OTHERS = 1.ENDFORM. " FORM_CLOSE*&---------------------------------------------------------------------**& Form CAL_DATA*&---------------------------------------------------------------------*FORM CAL_DATA . DESCRIBE TABLE I_TAB4 LINES RCOUNT. SCOUNT = RCOUNT. CONCATENATE '符合条件的记录数:' SCOUNT INTO LSTR. IF I_TAB4[] IS INITIAL . MESSAGE I000(ZMSG) WITH '没找到对应的数据,请更改查询条件'. LEAVE LIST-PROCESSING . ENDIF.ENDFORM. " CAL_DATA*&---------------------------------------------------------------------**& Form EVENTS_BUILD*&---------------------------------------------------------------------*FORM EVENTS_BUILD . CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = I_EVENTS.* 页眉 READ TABLE I_EVENTS WITH KEY NAME = 'TOP_OF_PAGE' INTO W_EVENTS. IF SY-SUBRC = 0. MOVE 'ALV_TOP_OF_PAGE' TO W_EVENTS-FORM. MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX. ENDIF.* 页尾 READ TABLE I_EVENTS WITH KEY NAME = 'END_OF_LIST' INTO W_EVENTS. IF SY-SUBRC = 0. MOVE 'ALV_END_OF_LIST' TO W_EVENTS-FORM. MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX. ENDIF.* 页跳转 READ TABLE I_EVENTS WITH KEY NAME = 'USER_COMMAND' INTO W_EVENTS. IF SY-SUBRC = 0. MOVE 'USER_COMMAND' TO W_EVENTS-FORM. MODIFY I_EVENTS FROM W_EVENTS INDEX SY-TABIX. ENDIF.ENDFORM. " EVENTS_BUILD*&--------------------------------------------------------------------**& Form ALV_END_OF_LIST*&--------------------------------------------------------------------*FORM ALV_TOP_OF_PAGE. CLEAR: I_LIST_COMMENTS. W_LIST_COMMENTS-TYP = 'H'. W_LIST_COMMENTS-KEY = ''. W_LIST_COMMENTS-INFO = ' '. APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. CLEAR W_LIST_COMMENTS. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = I_LIST_COMMENTS I_END_OF_LIST_GRID = 'X'.ENDFORM. "ALV_TOP_OF_PAGE*&--------------------------------------------------------------------**& Form ALV_END_OF_LIST*&--------------------------------------------------------------------*FORM ALV_END_OF_LIST. CLEAR: I_LIST_COMMENTS. W_LIST_COMMENTS-TYP = 'H'. W_LIST_COMMENTS-KEY = ''. W_LIST_COMMENTS-INFO = LSTR. APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. CLEAR W_LIST_COMMENTS. W_LIST_COMMENTS-TYP = 'S'. W_LIST_COMMENTS-KEY = ''. W_LIST_COMMENTS-INFO = ' 报表开发者:IT部--Jasson 重新开发日期:2011/07/29'. APPEND W_LIST_COMMENTS TO I_LIST_COMMENTS. CLEAR W_LIST_COMMENTS. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = I_LIST_COMMENTS I_END_OF_LIST_GRID = 'X'.ENDFORM. "ALV_END_OF_LIST*&---------------------------------------------------------------------**& Form LAYOUT_BUILD*&---------------------------------------------------------------------*FORM LAYOUT_BUILD . I_LAYOUT-ZEBRA = 'X' . " 显示界面成色带交替 I_LAYOUT-DETAIL_POPUP = 'X'. "弹出详细信息窗口 I_LAYOUT-INFO_FIELDNAME = 'COLOR'. "颜色值* I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "优化列宽选项 I_LAYOUT-DETAIL_INITIAL_LINES = 'X'. I_LAYOUT-DETAIL_TITLEBAR = '出闸纸打印'. I_LAYOUT-NO_COLHEAD =' '.* I_LAYOUT-BOX_FIELDNAME = 'BOX' . " 指明复选框 W_REPID = SY-REPID.ENDFORM. " LAYOUT_BUILD*&---------------------------------------------------------------------**& Form DISPLAY_DATA*&---------------------------------------------------------------------*FORM DISPLAY_DATA .* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "用户触发事件 I_CALLBACK_PF_STATUS_SET = G_STATUS "调用用户事件和按钮事件 I_CALLBACK_PROGRAM = W_REPID "当前程序 IS_LAYOUT = I_LAYOUT "子函数layout_build填充的格式定义 IT_FIELDCAT = I_FIELDCAT_ALV[] "子函数fields填充的各列 IT_EVENTS = I_EVENTS[] I_SAVE = 'A' "保存变式 TABLES T_OUTTAB = I_TAB4. "假设数据都在itab内表中ENDFORM. " DISPLAY_DATA*-----------------------------------------------------------------------* FORM PF_STATUS_SET 加工具栏*-----------------------------------------------------------------------FORM STANDARD_02 USING EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS 'STD' EXCLUDING EXTAB.ENDFORM. "STANDARD_02*&---------------------------------------------------------------------**& Form USER_COMMAND*&---------------------------------------------------------------------*FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD. CLEAR I_TAB5[]. IF P_CHK = ''. LOOP AT I_TAB4 . IF I_TAB4-TKNUM <> ''. MOVE-CORRESPONDING I_TAB4 TO I_TAB5. I_TAB5-LFIMG = I_TAB4-LFIMG1. APPEND I_TAB5. ENDIF. ENDLOOP.* I_TAB5[] = I_TAB4[]. ELSE. L_PROD_NUM1 = 0. L_PROD_NUM2 = 0. LOOP AT I_TAB4. I_TAB4-LFIMG = I_TAB4-LFIMG1. L_PROD_NUM1 = L_PROD_NUM1 + I_TAB4-LFIMG. L_PROD_NUM2 = L_PROD_NUM2 + I_TAB4-BRGEW. ENDLOOP. LOOP AT I_TAB4 . IF I_TAB4-TKNUM <> ''. I_TAB4-VEMNG = I_TAB4-LFIMG1. I_TAB4-BRGEW1 = L_PROD_NUM2. I_TAB4-VEMNG1 = L_PROD_NUM1. MOVE-CORRESPONDING I_TAB4 TO I_TAB5. I_TAB5-LFIMG = I_TAB4-LFIMG1. APPEND I_TAB5. ENDIF. ENDLOOP. ENDIF. CASE I_UCOMM. WHEN '&PRT'. IF I_TAB5[] IS INITIAL. MESSAGE I000(ZMSG) WITH '没有要打印的物料.'. ELSE. PERFORM FORM_OPEN. IF SY-SUBRC = 0. READ TABLE I_TAB0 INDEX 1. PERFORM WRITE_FORM USING 'TITLE1' 'HEADER' 'BODY '. PERFORM WRITE_FORM USING 'GENERAL_HEADER_DATA_TITLE' 'MAIN' 'BODY '.* SORT I_TAB5 BY MATNR. LOOP AT I_TAB5. W_LOOP1 = SY-TABIX. PERFORM WRITE_FORM USING 'DELIVERY_ITEM' 'MAIN' 'BODY '. SY-TABIX = W_LOOP3. ENDLOOP. PERFORM WRITE_FORM USING 'SEGMENT_OVERVIEW_TITLE ' 'MAIN' 'BODY '. PERFORM WRITE_FORM USING 'NEW' 'MAIN' 'BODY '. PERFORM FORM_CLOSE. ELSE. PERFORM FORM_CLOSE. ENDIF. ENDIF. WHEN OTHERS. ENDCASE.ENDFORM. "callback_ucomm*&---------------------------------------------------------------------**& Form FIELDS_BUILD*&---------------------------------------------------------------------*FORM FIELDS_BUILD . DATA TMP_POS TYPE I. REFRESH I_FIELDCAT_ALV. CLEAR I_FIELDCAT. TMP_POS = TMP_POS + 1. I_FIELDCAT-COL_POS = TMP_POS. I_FIELDCAT-FIELDNAME = 'TKNUM'. I_FIELDCAT-SELTEXT_L = '装运单号'. I_FIELDCAT-OUTPUTLEN = 10. I_FIELDCAT-NO_ZERO = 'X'. I_FIELDCAT-KEY = 'X'. IF P_CHK = 'X'. I_FIELDCAT-INPUT = 'X'. ENDIF. APPEND I_FIELDCAT TO I_FIELDCAT_ALV. CLEAR I_FIELDCAT. TMP_POS = TMP_POS + 1. I_FIELDCAT-COL_POS = TMP_POS. I_FIELDCAT-FIELDNAME = 'MATNR'. I_FIELDCAT-SELTEXT_L = '物料编号'. I_FIELDCAT-OUTPUTLEN = 18. I_FIELDCAT-KEY = 'X'. IF P_CHK = 'X'. I_FIELDCAT-INPUT = 'X'. ENDIF. APPEND I_FIELDCAT TO I_FIELDCAT_ALV. CLEAR I_FIELDCAT. TMP_POS = TMP_POS + 1. I_FIELDCAT-COL_POS = TMP_POS. I_FIELDCAT-FIELDNAME = 'ARKTX'. I_FIELDCAT-SELTEXT_L = '物料名称'. I_FIELDCAT-OUTPUTLEN = 60. IF P_CHK = 'X'. I_FIELDCAT-INPUT = 'X'. ENDIF. APPEND I_FIELDCAT TO I_FIELDCAT_ALV. CLEAR I_FIELDCAT. TMP_POS = TMP_POS + 1. I_FIELDCAT-COL_POS = TMP_POS. I_FIELDCAT-FIELDNAME = 'LFIMG1'. I_FIELDCAT-SELTEXT_L = '数量'. I_FIELDCAT-OUTPUTLEN = 12. I_FIELDCAT-NO_ZERO = 'X'. IF P_CHK = 'X'. I_FIELDCAT-INPUT = 'X'. ENDIF. APPEND I_FIELDCAT TO I_FIELDCAT_ALV. CLEAR I_FIELDCAT.** TMP_POS = TMP_POS + 1.* I_FIELDCAT-COL_POS = TMP_POS.* I_FIELDCAT-FIELDNAME = 'VEMNG'.* I_FIELDCAT-SELTEXT_L = '实出数'.* I_FIELDCAT-OUTPUTLEN = 9.* I_FIELDCAT-NO_ZERO = 'X'.* APPEND I_FIELDCAT TO I_FIELDCAT_ALV.* CLEAR I_FIELDCAT. TMP_POS = TMP_POS + 1. I_FIELDCAT-COL_POS = TMP_POS. I_FIELDCAT-FIELDNAME = 'BRGEW'. I_FIELDCAT-SELTEXT_L = '箱数'. I_FIELDCAT-OUTPUTLEN = 9. I_FIELDCAT-NO_ZERO = 'X'. IF P_CHK = 'X'. I_FIELDCAT-INPUT = 'X'. ENDIF. APPEND I_FIELDCAT TO I_FIELDCAT_ALV. CLEAR I_FIELDCAT.ENDFORM. " FIELDS_BUILD
接着我们再来回顾一下se41.本程式用到的如下:
那么se71是否可以再看看它的设置。如下:
- ZVT003出闸纸列印
- web列印
- 列印版面設定
- 從瀏覽器列印報表
- 付款凭证列印
- PHP列印条码
- js 网页列印
- CMYK列印颜色
- 自定义纸张列印
- 頁面列印
- web 打印 Excel列印方式
- 以Mime方式列印Excel
- web列印的js簡單寫法10/26
- [asp.net]頁面列印9/20
- ASP.NET使用OWC組件繪圖、列印
- 網頁列印的分頁方法。
- 迴圈列印的把戲
- 列印java所支持的國家語言環境
- capec
- 比较Java中几种数据cache方式
- SQL语句备忘
- C++ 类设计核查表
- 0.VC(Custom)-Visual Studio默认使用原始编译版本打开(小技巧)
- ZVT003出闸纸列印
- iPhone开发--提交appStore审核时出现的问题--iPhone/iPod Touch: application executable is missing a required archit
- jQuery 与prototype冲突解决
- 出现“android library projects cannot be launched”解决方案
- 图像处理和图像识别中常用的OpenCV函数
- Scenario and Attack Graphs
- 正则表达式
- Tidy 使用 转的
- Linux bond的参数解释