smartforms 调用代码
1 REPORT zscm_taobaoso_ptint. 2 INCLUDE zscm_taobaoso_ptint_d01. 3 INCLUDE zscm_taobaoso_ptint_s01. 4 INCLUDE zscm_taobaoso_ptint_e01. 5 INCLUDE zscm_taobaoso_ptint_f01.
1 TABLES: VBAK,ADRC. 2 TYPES : BEGIN OF contact, 3 vbeln TYPE vbak-vbeln, "凭证订单号 4 END OF contact. 5 6 TYPES : BEGIN OF main01, 7 knumv TYPE knumv, 8 kbetr TYPE kbetr, 9 kschl TYPE kschl, 10 END OF main01. 11 DATA: gt_main01 TYPE TABLE OF main01. 12 DATA: gs_main01 TYPE main01. 13 14 DATA: gt_main LIKE TABLE OF zdsprint_main. "主工作区 及 主内表 15 16 DATA: gs_main LIKE zdsprint_main. 17 18 DATA: gt_item LIKE TABLE OF zdsprint_item."行项目 19 DATA: gs_item LIKE zdsprint_item. 20 DATA: gt_item01 LIKE TABLE OF zdsprint_item. 21 DATA: gs_item01 LIKE zdsprint_item. 22 23 DATA: gt_contact TYPE TABLE OF contact. "关联 24 DATA: gs_contact TYPE contact. 25 26 27 28 CONSTANTS: c_auart TYPE vbak-auart VALUE 'ZDS'. 29 CONSTANTS: c_parvw TYPE vbpa-parvw VALUE 'WE', 30 c_y007(4) VALUE 'Y007', 31 c_y008(4) VALUE 'Y008', 32 c_zm01(4) VALUE 'ZM01'. 33 34 ***定义控制参数 35 DATA: func_module_name TYPE rs38l_fnam. 36 DATA: output_options TYPE ssfcompop. 37 DATA: control_parameters TYPE ssfctrlop. 38 DATA: job_output_options TYPE ssfcresop. 39 40 DATA: ds_name TYPE name1.
1 *&---------------------------------------------------------------------* 2 *& 包括 ZSCM_TAOBAOSO_PTINT_E01 3 *&---------------------------------------------------------------------* 4 5 START-OF-SELECTION. 6 PERFORM getdata. "取数据过程 分别取抬头数据和行项目数据到相关的内表中 7 PERFORM print_from . 8 "PERFORM PRINT_PROGRAM. "调用smartforms进行打印
1 *&---------------------------------------------------------------------* 2 *& 包括 ZSCM_TAOBAOSO_PTINT_S01 3 *&---------------------------------------------------------------------* 4 SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-108. 5 PARAMETERS: S_VKBUR TYPE T001W-WERKS OBLIGATORY DEFAULT '1508'. "门店 6 SELECT-OPTIONS: S_DATE FOR VBAK-ERDAT DEFAULT SY-DATUM. "订单日期 7 SELECT-OPTIONS: S_SOID FOR VBAK-VBELN. "销售订单号 8 SELECTION-SCREEN: END OF BLOCK B1 .
1 *&---------------------------------------------------------------------* 2 *& 包括 ZSCM_TAOBAOSO_PTINT_F01 3 *&---------------------------------------------------------------------* 4 *&---------------------------------------------------------------------* 5 *& Form GETDATA 6 *&---------------------------------------------------------------------* 7 * 取数据过程 8 *----------------------------------------------------------------------* 9 * --> p1 text 10 * <-- p2 text 11 *----------------------------------------------------------------------* 12 FORM GETDATA . 13 DATA LINE TYPE I . "主数据的行数,判断是否为空 14 * 取出抬头数据 15 SELECT A~VBELN A~VKBUR A~KNUMV A~KUNNR C~ADRNR D~NAME1 D~CITY1 D~STREET D~HOUSE_NUM1 D~POST_CODE1 D~TEL_NUMBER 16 INTO CORRESPONDING FIELDS OF TABLE GT_MAIN 17 FROM VBAK AS A 18 INNER JOIN LIPS AS B ON A~VBELN = B~VGBEL 19 INNER JOIN VBPA AS C ON A~KUNNR = C~KUNNR AND A~VBELN = C~VBELN 20 INNER JOIN ADRC AS D ON D~ADDRNUMBER = C~ADRNR 21 WHERE A~AUART = C_AUART AND A~VBELN IN S_SOID AND A~ERDAT IN S_DATE AND A~VKBUR = S_VKBUR AND C~PARVW = C_PARVW . 22 23 *判断主数据是否为空 24 SORT GT_MAIN BY VBELN KNUMV. 25 DELETE ADJACENT DUPLICATES FROM GT_MAIN. 26 DESCRIBE TABLE GT_MAIN LINES LINE . 27 IF LINE IS INITIAL . 28 MESSAGE TEXT-002 TYPE 'E'. 29 ENDIF. 30 31 *取出明细数据 32 SELECT A~VBELN A~POSNR A~MATNR A~ARKTX A~KMEIN A~NETPR B~LGMNG AS RV45A INTO CORRESPONDING FIELDS OF TABLE GT_ITEM 33 FROM VBAP AS A 34 INNER JOIN LIPS AS B ON B~VGBEL = A~VBELN AND B~VGPOS = A~POSNR 35 FOR ALL ENTRIES IN GT_MAIN WHERE ( A~VBELN = GT_MAIN-VBELN ). "取数据到行项目表 36 37 *判断明细数据是否为空 38 IF LINES( GT_ITEM ) = 0 . 39 MESSAGE TEXT-002 TYPE 'E'. 40 ENDIF. 41 42 *取出Y008 Y007 两个条件定价的数据 43 SELECT KNUMV KBETR KSCHL INTO CORRESPONDING FIELDS OF TABLE GT_MAIN01 FROM KONV 44 FOR ALL ENTRIES IN GT_MAIN WHERE KNUMV = GT_MAIN-KNUMV AND KSCHL IN (C_Y007,C_Y008) AND KINAK = ' ' . 45 46 SORT GT_MAIN BY VBELN KNUMV. 47 SORT GT_MAIN01 BY KNUMV. 48 49 LOOP AT GT_MAIN INTO GS_MAIN . 50 "假设GT_MAIN01不为空 进行赋值 51 IF GT_MAIN01 IS NOT INITIAL . 52 READ TABLE GT_MAIN01 INTO GS_MAIN01 WITH KEY KNUMV = GS_MAIN-KNUMV KSCHL = C_Y007 BINARY SEARCH. 53 IF SY-SUBRC = 0 . 54 GS_MAIN-KBETR1 = 0 - GS_MAIN01-KBETR / 10 . "取折扣金额 55 ENDIF. 56 CLEAR GS_MAIN01 . 57 READ TABLE GT_MAIN01 INTO GS_MAIN01 WITH KEY KNUMV = GS_MAIN-KNUMV KSCHL = C_Y008 BINARY SEARCH. 58 IF SY-SUBRC = 0 . 59 GS_MAIN-KBETR2 = 0 - GS_MAIN01-KBETR. "取抹零金额 60 ENDIF. 61 CLEAR GS_MAIN01 . 62 ENDIF. 63 "联系人地址连接 64 CONCATENATE GS_MAIN-CITY1 GS_MAIN-STREET GS_MAIN-HOUSE_NUM1 INTO GS_MAIN-ADDRESS. 65 MODIFY GT_MAIN FROM GS_MAIN . 66 ENDLOOP. 67 68 *取KNUMV字段到 69 LOOP AT GT_ITEM INTO GS_ITEM. 70 READ TABLE GT_MAIN INTO GS_MAIN WITH KEY VBELN = GS_ITEM-VBELN BINARY SEARCH. "前面已经排序 71 IF SY-SUBRC = 0 . 72 GS_ITEM-KNUMV = GS_MAIN-KNUMV. 73 MODIFY GT_ITEM FROM GS_ITEM. 74 ENDIF. 75 ENDLOOP. 76 77 *取出ZM01 条件定价的数据 78 SELECT KNUMV KBETR KPOSN AS POSNR INTO CORRESPONDING FIELDS OF TABLE GT_ITEM01 FROM KONV 79 FOR ALL ENTRIES IN GT_ITEM WHERE KNUMV = GT_ITEM-KNUMV AND KPOSN = GT_ITEM-POSNR AND KSCHL = C_ZM01 AND KINAK = ' ' . 80 81 *取价格和总价 82 IF GT_ITEM01 IS NOT INITIAL . 83 SORT GT_ITEM01. 84 LOOP AT GT_ITEM INTO GS_ITEM. 85 READ TABLE GT_ITEM01 WITH KEY KNUMV = GS_ITEM-KNUMV POSNR = GS_ITEM-POSNR INTO GS_ITEM01 . 86 IF SY-SUBRC = 0 . 87 GS_ITEM-KBETR = GS_ITEM01-KBETR. 88 ENDIF. 89 90 GS_ITEM-SUM_KBETR = GS_ITEM-KBETR * GS_ITEM-RV45A . 91 MODIFY GT_ITEM FROM GS_ITEM. 92 ENDLOOP. 93 ENDIF. 94 95 SELECT SINGLE NAME1 INTO (DS_NAME) FROM T001W WHERE WERKS = S_VKBUR . "取电商名称 96 97 ENDFORM. " GETDATA 98 99 100 *&---------------------------------------------------------------------* 101 *& Form PRINT_FROM 102 *&---------------------------------------------------------------------* 103 * text 104 *----------------------------------------------------------------------* 105 FORM PRINT_FROM . 106 ***设置用户参数可用*** 107 * OUTPUT_OPTIONS-TDIMMED = 'X'. 108 * OUTPUT_OPTIONS-TDNEWID = 'X'. 109 * OUTPUT_OPTIONS-TDDELETE = 'X'. 110 * OUTPUT_OPTIONS-tdfinal = 'X'. 111 * 112 CONTROL_PARAMETERS-PREVIEW = 'X'. 113 CONTROL_PARAMETERS-NO_OPEN = 'X'. 114 CONTROL_PARAMETERS-NO_CLOSE = 'X'. 115 CONTROL_PARAMETERS-NO_DIALOG = ' '. 116 CONTROL_PARAMETERS-DEVICE = 'PRINTER'. 117 118 ***调用Smartfomr*** 119 CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 120 EXPORTING 121 FORMNAME = 'ZSCM_TAOBAOSO_PTINT_SMART' 122 IMPORTING 123 FM_NAME = FUNC_MODULE_NAME 124 EXCEPTIONS 125 NO_FORM = 1 126 NO_FUNCTION_MODULE = 2 127 OTHERS = 3. 128 IF SY-SUBRC <> 0. 129 EXIT. 130 ENDIF. 131 132 133 ***调用SSF_OPEN Form Call*** 134 CALL FUNCTION 'SSF_OPEN' 135 EXPORTING 136 USER_SETTINGS = 'X' 137 OUTPUT_OPTIONS = OUTPUT_OPTIONS 138 CONTROL_PARAMETERS = CONTROL_PARAMETERS 139 IMPORTING 140 JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS 141 EXCEPTIONS 142 FORMATTING_ERROR = 1 143 INTERNAL_ERROR = 2 144 SEND_ERROR = 3 145 USER_CANCELED = 4 146 OTHERS = 5. 147 IF SY-SUBRC <> 0. 148 * Implement suitable error handling here 149 ENDIF. 150 151 152 CALL FUNCTION FUNC_MODULE_NAME 153 EXPORTING 154 USER_SETTINGS = 'X' 155 OUTPUT_OPTIONS = OUTPUT_OPTIONS 156 CONTROL_PARAMETERS = CONTROL_PARAMETERS 157 DS_NAME = DS_NAME 158 * IMPORTING 159 * DOCUMENT_OUTPUT_INFO = DOCUMENT_OUTPUT_INFO 160 * JOB_OUTPUT_INFO = JOB_OUTPUT_INFO 161 * JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS 162 TABLES 163 GT_MAIN = GT_MAIN 164 GT_ITEM = GT_ITEM 165 EXCEPTIONS 166 FORMATTING_ERROR = 1 167 INTERNAL_ERROR = 2 168 SEND_ERROR = 3 169 USER_CANCELED = 4 170 . 171 172 173 174 ***调用SSF_CLOSE*** 175 CALL FUNCTION 'SSF_CLOSE' 176 * IMPORTING 177 * JOB_OUTPUT_INFO = 178 EXCEPTIONS 179 FORMATTING_ERROR = 1 180 INTERNAL_ERROR = 2 181 SEND_ERROR = 3 182 OTHERS = 4. 183 184 185 186 187 ENDFORM. " PRINT_FROM