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

 

posted @ 2014-02-12 14:41  子非鱼886  阅读(671)  评论(0编辑  收藏  举报