· 9 years ago · Dec 21, 2016, 09:54 AM
1*----------------------------------------------------------------------*
2* Report SAPBC480_DEMO
3*----------------------------------------------------------------------*
4* Printing of documents using PDF-based forms
5*----------------------------------------------------------------------*
6
7INCLUDE bc480_demotop.
8INCLUDE bc480_demo_sel_screen_events.
9INCLUDE bc480_demof01.
10
11
12**********************************************************************
13START-OF-SELECTION.
14 CASE pa_url.
15 WHEN c_intranet.
16 gv_url = c_intranet_image.
17 WHEN c_internet.
18 gv_url = c_internet_image.
19 ENDCASE.
20
21 PERFORM graphic_file_from_pc.
22
23 PERFORM select_business_data.
24 IF sy-dbcnt > 0.
25 PERFORM form_process.
26 ELSE.
27 MESSAGE i042.
28 ENDIF.
29
30
31
32*&---------------------------------------------------------------------*
33*& Include BC480_DEMOTOP
34*&---------------------------------------------------------------------*
35REPORT sapbc480_demo MESSAGE-ID bc480.
36
37* Dropdown list for image requires a type pool
38TYPE-POOLS: vrm.
39
40* Data declaration
41CONSTANTS:
42 c_internet(20) VALUE 'INTERNET',
43 c_intranet(20) VALUE 'INTRANET',
44 c_internet_image(255) VALUE
45 'http://www.sap.com/global/images/sap_logo.gif',
46 c_intranet_image(255) VALUE
47" 'http://wts:1080/portal/corp/pictures/sap_logo.gif'.
48 'http://wts.wdf.sap.corp:1080/portal/Image/sap_logo.gif'.
49
50DATA:
51 gt_customers TYPE TABLE OF scustom,
52 gs_customer LIKE LINE OF gt_customers,
53 gt_all_bookings TYPE ty_bookings,
54 gt_bookings TYPE ty_bookings, "table of sbook
55 gs_booking LIKE LINE OF gt_bookings,
56 gv_url TYPE string,
57 gv_image_file TYPE xstring,
58 gv_mime_type TYPE string,
59 gv_fm_name TYPE rs38l_fnam,
60 interface_type TYPE fpinterfacetype,
61
62* parameters for calling the generated function module
63* for new interface
64 gs_docparams TYPE sfpdocparams,
65 gs_outputparams TYPE sfpoutputparams,
66 gs_result TYPE fpformoutput,
67 gv_xml_data TYPE xstring,
68
69* for Smart Forms compatible interface
70 old_control_params TYPE ssfctrlop,
71 old_output_options TYPE ssfcompop,
72
73 old_document_output_info TYPE ssfcrespd,
74 old_job_output_info TYPE ssfcrescl,
75 old_job_output_options TYPE ssfcresop,
76
77 r_error TYPE REF TO cx_root,
78 error_string TYPE string,
79
80* for mailing
81 pdf_content TYPE solix_tab,
82
83
84* flags
85 gv_advanced,
86 gv_sundries, " ADS/interactive features on sel.screen?
87 gv_proc_type, " advanced procssing (fax/mail) on sel. screen?
88 gv_max, " dynamic text module and graphic content on sel. screen?
89 gv_download_ok,
90
91* help fields
92 gv_ads_type TYPE string,
93 gs_land TYPE t005,
94 downl_path TYPE string,
95 upl_path TYPE string,
96 image_upload_filename TYPE string,
97 gv_file_filter TYPE string,
98 gv_window_text TYPE string,
99 file_exists,
100 dot TYPE i,
101 last_char TYPE i,
102 old_radio_button(10) VALUE 'PA_SPOOL',
103 gv_subrc TYPE sy-subrc,
104
105* Dropdown list for image on selection-screen must be filled
106 field_for_dropdown TYPE vrm_id,
107 gt_values TYPE vrm_values,
108 gs_values LIKE LINE OF gt_values,
109
110
111* ranges tables for switching between different customers,
112* depending on user's selection on the screen
113 ra_cus1 LIKE RANGE OF gs_customer-id,
114 ra_cus2 LIKE RANGE OF gs_customer-id,
115 ra_cus1_line LIKE LINE OF ra_cus1.
116
117
118**********************************************************************
119* Selection screen
120PARAMETERS:
121 pa_form TYPE fpwbformname MEMORY ID fpwbform MODIF ID sho
122 OBLIGATORY MATCHCODE OBJECT hfpwbform.
123
124SELECTION-SCREEN SKIP.
125
126SELECT-OPTIONS:
127 so_cusid FOR gs_customer-id DEFAULT 1 MODIF ID cus.
128
129SELECTION-SCREEN SKIP.
130SELECTION-SCREEN PUSHBUTTON /1(30) push01 USER-COMMAND
131 advanced MODIF ID sho.
132
133SELECTION-SCREEN SKIP.
134
135* Data source settings
136SELECTION-SCREEN BEGIN OF SCREEN 110 AS SUBSCREEN.
137PARAMETERS:
138 pa_any RADIOBUTTON GROUP sel USER-COMMAND toggle_customers,
139 pa_four RADIOBUTTON GROUP sel.
140
141SELECTION-SCREEN SKIP.
142
143SELECTION-SCREEN BEGIN OF BLOCK number_of_bookings.
144PARAMETERS:
145 pa_db RADIOBUTTON GROUP book USER-COMMAND toggle_bookings,
146 pa_no_db RADIOBUTTON GROUP book,
147 pa_numb TYPE i MODIF ID num MEMORY ID number_of_bookings. "#EC EXISTS
148SELECTION-SCREEN END OF BLOCK number_of_bookings.
149SELECTION-SCREEN SKIP.
150PARAMETERS:
151 pa_url LIKE gs_values-key AS LISTBOX VISIBLE LENGTH 40
152 MEMORY ID graphic_from_url, "#EC EXISTS
153 pa_image TYPE text255 MEMORY ID graphic_from_upload "#EC EXISTS
154 MODIF ID min.
155
156SELECTION-SCREEN SKIP.
157
158PARAMETERS:
159" long texts (text module/SAPscrip text)
160 pa_sftxt TYPE ssfscreen-tname MEMORY ID ssftxtname
161 MATCHCODE OBJECT sh_stxfadm MODIF ID min,
162 pa_so10 TYPE stxh-tdname MODIF ID min.
163SELECTION-SCREEN END OF SCREEN 110.
164
165* Country settings
166SELECTION-SCREEN BEGIN OF SCREEN 120 AS SUBSCREEN.
167SELECTION-SCREEN BEGIN OF LINE.
168SELECTION-SCREEN COMMENT 1(70) text-s11 MODIF ID exp.
169SELECTION-SCREEN END OF LINE.
170SELECTION-SCREEN BEGIN OF LINE.
171SELECTION-SCREEN COMMENT 1(70) text-s12 MODIF ID exp.
172SELECTION-SCREEN END OF LINE.
173PARAMETERS:
174 pa_send TYPE adrc-country DEFAULT 'US' VALUE CHECK.
175
176SELECTION-SCREEN SKIP.
177SELECTION-SCREEN BEGIN OF BLOCK country WITH FRAME TITLE text-se5.
178SELECTION-SCREEN BEGIN OF LINE.
179SELECTION-SCREEN COMMENT 1(70) text-se9 MODIF ID la1.
180SELECTION-SCREEN END OF LINE.
181SELECTION-SCREEN BEGIN OF LINE.
182SELECTION-SCREEN COMMENT 1(70) text-s10 MODIF ID la1.
183SELECTION-SCREEN END OF LINE.
184SELECTION-SCREEN BEGIN OF LINE.
185PARAMETERS:
186 pa_cnfix AS CHECKBOX DEFAULT 'X' USER-COMMAND lang_country
187 MODIF ID la1.
188"country and language fix or dynamic
189SELECTION-SCREEN COMMENT 3(70) text-se6 MODIF ID la1
190 FOR FIELD pa_cnfix.
191SELECTION-SCREEN END OF LINE.
192PARAMETERS:
193 pa_lang TYPE sfpdocparams-langu
194 MODIF ID lan,
195 pa_cntry TYPE t005t-land1
196 MODIF ID lan MEMORY ID lnd
197 MATCHCODE OBJECT country_for_param_spr.
198SELECTION-SCREEN END OF BLOCK country.
199SELECTION-SCREEN END OF SCREEN 120.
200
201
202* Processing settings
203SELECTION-SCREEN BEGIN OF SCREEN 130 AS SUBSCREEN.
204SELECTION-SCREEN BEGIN OF BLOCK download_details.
205PARAMETERS:
206 pa_spool RADIOBUTTON GROUP proc
207 USER-COMMAND proc_type DEFAULT 'X' ,
208 pa_gui RADIOBUTTON GROUP proc,
209 pa_path(128) MEMORY ID gr8 MODIF ID pat.
210
211
212PARAMETERS:
213 pa_mail RADIOBUTTON GROUP proc,
214 pa_addr TYPE adr6-smtp_addr OBLIGATORY MODIF ID mai
215 DEFAULT sy-uname,
216 pa_fax RADIOBUTTON GROUP proc,
217 pa_faxct TYPE ad_comctry MODIF ID fax,
218 pa_faxno TYPE ad_fxnmbr MODIF ID fax,
219 pa_xfp RADIOBUTTON GROUP proc.
220
221SELECTION-SCREEN END OF BLOCK download_details.
222SELECTION-SCREEN SKIP.
223
224SELECTION-SCREEN BEGIN OF BLOCK print_settings.
225PARAMETERS:
226 pa_prnt TYPE usr01-spld OBLIGATORY MODIF ID prn,
227 pa_nodlg AS CHECKBOX DEFAULT 'X' MEMORY ID no_dialog "#EC EXISTS
228 MODIF ID prn.
229SELECTION-SCREEN BEGIN OF BLOCK preview.
230PARAMETERS:
231 pa_prev AS CHECKBOX DEFAULT 'X' USER-COMMAND prev MODIF ID prn,
232 pa_nopdf AS CHECKBOX USER-COMMAND prev MODIF ID prn.
233SELECTION-SCREEN END OF BLOCK preview.
234PARAMETERS:
235 pa_newid AS CHECKBOX DEFAULT 'X' MEMORY ID new_spool_id "#EC EXISTS
236 MODIF ID prn.
237SELECTION-SCREEN END OF BLOCK print_settings.
238SELECTION-SCREEN END OF SCREEN 130.
239
240* Sundries
241SELECTION-SCREEN BEGIN OF SCREEN 140 AS SUBSCREEN.
242SELECTION-SCREEN BEGIN OF BLOCK inter WITH FRAME TITLE text-int.
243SELECTION-SCREEN BEGIN OF LINE.
244PARAMETERS: pa_nofil RADIOBUTTON GROUP int DEFAULT 'X'.
245SELECTION-SCREEN COMMENT 3(60) text-nof FOR FIELD pa_nofil.
246SELECTION-SCREEN END OF LINE.
247SELECTION-SCREEN BEGIN OF LINE.
248PARAMETERS: pa_fill RADIOBUTTON GROUP int.
249SELECTION-SCREEN COMMENT 3(60) text-fil FOR FIELD pa_fill.
250SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE.
251PARAMETERS: pa_right RADIOBUTTON GROUP int.
252SELECTION-SCREEN COMMENT 3(60) text-rig FOR FIELD pa_right.
253SELECTION-SCREEN END OF LINE.
254SELECTION-SCREEN END OF BLOCK inter .
255
256SELECTION-SCREEN SKIP.
257PARAMETERS: pa_tag AS CHECKBOX MEMORY ID tag.
258
259SELECTION-SCREEN SKIP.
260PARAMETERS:
261 pa_rfc TYPE rfcdes-rfcdest OBLIGATORY
262 MEMORY ID rfc MATCHCODE OBJECT httpdestination
263 MODIF ID ads."h_rfcdest
264
265SELECTION-SCREEN END OF SCREEN 140.
266
267
268SELECTION-SCREEN BEGIN OF TABBED BLOCK tabs FOR 15 LINES.
269SELECTION-SCREEN TAB (30) data_src USER-COMMAND tab_data_source
270 DEFAULT SCREEN 110.
271SELECTION-SCREEN TAB (30) langcntr USER-COMMAND tab_lang_country
272 DEFAULT SCREEN 120.
273SELECTION-SCREEN TAB (30) process USER-COMMAND tab_process
274 DEFAULT SCREEN 130.
275SELECTION-SCREEN TAB (30) sundries USER-COMMAND tab_sundries
276 DEFAULT SCREEN 140.
277SELECTION-SCREEN END OF BLOCK tabs.
278
279SELECTION-SCREEN SKIP.
280
281
282
283*&---------------------------------------------------------------------*
284*& Include BC480_DEMO_SEL_SCREEN_EVENTS
285*&---------------------------------------------------------------------*
286**********************************************************************
287INITIALIZATION.
288* SAP memory parameters
289 GET PARAMETER ID 'FPWBFORM' FIELD pa_form.
290 IF pa_form IS INITIAL.
291 pa_form = 'BC480_FINAL'.
292 ENDIF.
293
294* read default printer from user profile unless specified on the selection-screen of
295* a previous run (the tab for entering the printer is hidden by default)
296* GET PARAMETER ID 'SPOOL_DEV' FIELD pa_prnt.
297 IF pa_prnt IS INITIAL.
298 SELECT SINGLE spld
299 FROM usr01
300 INTO pa_prnt
301 WHERE bname = sy-uname.
302 ENDIF.
303
304 GET PARAMETER ID 'ADVANCED_ID' FIELD gv_advanced. "#EC EXISTS
305
306 GET PARAMETER ID 'ACTIVE_TAB' FIELD tabs-activetab. "#EC EXISTS
307 GET PARAMETER ID 'ACTIVE_DYNNR' FIELD tabs-dynnr. "#EC EXISTS
308 IF tabs-activetab IS INITIAL OR tabs-dynnr IS INITIAL.
309 tabs-activetab = 'TAB_PRINTER'.
310 tabs-dynnr = '0110'.
311 ENDIF.
312
313 GET PARAMETER ID 'PREVIEW' FIELD pa_prev. "#EC EXISTS
314 IF sy-subrc <> 0. "first call
315 pa_prev = 'X'.
316 ENDIF.
317
318 GET PARAMETER ID 'SUPPR_PRT_DLG' FIELD pa_nodlg. "#EC EXISTS
319 IF sy-subrc <> 0. "first call
320 pa_nodlg = 'X'.
321 ENDIF.
322
323 GET PARAMETER ID 'SELECT_BOOKINGS' FIELD pa_db. "#EC EXISTS
324 IF sy-subrc <> 0. "first call
325 pa_db = 'X'.
326 ENDIF.
327
328
329 GET PARAMETER ID 'LANGUAGE' FIELD pa_lang. "#EC EXISTS
330 IF sy-subrc <> 0. "first call
331 pa_lang = sy-langu.
332 ENDIF.
333
334 GET PARAMETER ID 'LND' FIELD pa_cntry.
335 IF sy-subrc <> 0. "first call
336 CASE sy-langu.
337 WHEN 'D'.
338 pa_cntry = 'DE'.
339 WHEN 'E'.
340 pa_cntry = 'US'.
341 WHEN 'F'.
342 pa_cntry = 'FR'.
343 WHEN OTHERS.
344 pa_lang = 'E'.
345 pa_cntry = 'US'.
346 ENDCASE.
347 ENDIF.
348
349 GET PARAMETER ID 'SENDER_COUNTRY' FIELD pa_send. "#EC EXISTS
350 IF sy-subrc <> 0. "first call
351 CASE sy-langu.
352 WHEN 'D'.
353 pa_send = 'DE'.
354 WHEN 'E'.
355 pa_send = 'US'.
356 WHEN 'F'.
357 pa_send = 'FR'.
358 WHEN OTHERS.
359 pa_send = 'US'.
360 ENDCASE.
361 ENDIF.
362
363
364 GET PARAMETER ID 'GRAPHIC_FROM_UPLOAD' FIELD pa_image. "#EC EXISTS
365 IF sy-subrc <> 0. "first call
366 pa_image = 'c:\Windows\Coffee Bean.bmp'. "#EC NOTEXT
367 ENDIF.
368
369 GET PARAMETER ID 'GRAPHIC_FROM_URL' FIELD pa_url. "#EC EXISTS
370 IF sy-subrc <> 0. "first call
371 pa_url = c_intranet.
372 ENDIF.
373
374
375 GET PARAMETER ID 'RFC' FIELD pa_rfc.
376 IF sy-subrc <> 0. "first call
377 pa_rfc = 'ADS'.
378 ENDIF.
379
380 GET PARAMETER ID 'ADS' FIELD gv_sundries. "#EC EXISTS
381 GET PARAMETER ID 'PROC_TYPE' FIELD gv_proc_type. "#EC EXISTS
382
383 IF sy-batch IS INITIAL.
384 CALL METHOD cl_gui_frontend_services=>get_upload_download_path
385 CHANGING
386 upload_path = upl_path
387 download_path = downl_path
388 EXCEPTIONS
389 OTHERS = 6.
390 IF sy-subrc <> 0 OR STRLEN( downl_path ) = 0.
391 pa_path = 'C:\'.
392 ELSE.
393 pa_path = downl_path.
394
395 SEARCH pa_path FOR '/'.
396 last_char = STRLEN( pa_path ) - 1.
397 IF sy-subrc = 0 AND pa_path+last_char <> '/'.
398 CONCATENATE pa_path '/' INTO pa_path.
399 ELSEIF pa_path+last_char <> '\'.
400 CONCATENATE pa_path '\' INTO pa_path.
401 ENDIF.
402 ENDIF.
403 ENDIF.
404
405* Which parameter should have the dropdown list?
406 field_for_dropdown = 'PA_URL'.
407
408* Fill two-column dropdown list
409 gs_values-key = c_intranet.
410 gs_values-text = 'Image from intranet'(se7).
411 APPEND gs_values TO gt_values.
412
413 gs_values-key = c_internet.
414 gs_values-text = 'Image from Internet'(se8).
415 APPEND gs_values TO gt_values.
416
417* Pass information to function module
418 CALL FUNCTION 'VRM_SET_VALUES'
419 EXPORTING
420 id = field_for_dropdown
421 values = gt_values.
422
423
424*find four customers in four different countries.
425 ra_cus1_line-sign = 'I'.
426 ra_cus1_line-option = 'EQ'.
427
428 SELECT SINGLE id
429 FROM scustom
430 INTO ra_cus1_line-low
431 WHERE country = 'DE'. "#EC *
432 APPEND ra_cus1_line TO ra_cus1.
433
434 SELECT SINGLE id
435 FROM scustom
436 INTO ra_cus1_line-low
437 WHERE country = 'FR'. "#EC *
438 APPEND ra_cus1_line TO ra_cus1.
439
440 SELECT SINGLE id
441 FROM scustom
442 INTO ra_cus1_line-low
443 WHERE country = 'US'. "#EC *
444 APPEND ra_cus1_line TO ra_cus1.
445
446 SELECT SINGLE id
447 FROM scustom
448 INTO ra_cus1_line-low
449 WHERE country = 'GB'. "#EC *
450 APPEND ra_cus1_line TO ra_cus1.
451
452
453* set text of pushbutton
454 IF gv_advanced = 'X'.
455 push01 = 'No advanced functions'(noa).
456 ELSE.
457 push01 = 'Advanced functions'(adv).
458 ENDIF.
459
460* set texts of tab strips
461 data_src = 'Data source'(se1).
462 langcntr = 'Language/Country'(se2).
463 process = 'Processing settings'(se3).
464 sundries = 'Sundries'(se4).
465
466**********************************************************************
467* dynamic screen modifications
468AT SELECTION-SCREEN OUTPUT.
469 LOOP AT SCREEN.
470 IF gv_advanced = space AND
471 screen-group1 <> 'SHO' AND screen-group1 <> 'CUS'.
472 screen-active = 0.
473 ENDIF.
474
475 IF gv_max = space AND
476 ( screen-group1 = 'MIN' ).
477 screen-active = 0.
478 ENDIF.
479
480 IF pa_cnfix = ' ' AND screen-group1 = 'LAN'.
481 screen-active = 0.
482 ENDIF.
483
484 IF pa_four = 'X' AND screen-group1 = 'CUS'.
485 screen-input = 0.
486 ENDIF.
487
488 IF pa_no_db IS INITIAL AND screen-group1 = 'NUM' .
489 screen-active = 0.
490 ENDIF.
491
492* Spool processing?
493 IF pa_spool IS INITIAL AND pa_xfp IS INITIAL AND screen-group1 = 'PRN'.
494 screen-active = 0.
495 ENDIF.
496
497 IF pa_gui IS INITIAL AND screen-group1 = 'PAT' OR
498 pa_mail IS INITIAL AND screen-group1 = 'MAI' OR
499 pa_fax IS INITIAL AND screen-group1 = 'FAX'.
500 screen-input = 0.
501 ENDIF.
502
503* Authorization to change ADS?
504* IF screen-group1 = 'ADS'.
505* AUTHORITY-CHECK OBJECT 'S_ADMI_FCD'
506* ID 'S_ADMI_FCD' FIELD 'NADM'.
507* IF sy-subrc <> 0.
508* screen-active = 0.
509* ENDIF.
510* AUTHORITY-CHECK OBJECT 'S_TCODE'
511* ID 'TCD' FIELD 'SM59'.
512* IF sy-subrc <> 0.
513* screen-active = 0.
514* ENDIF.
515* ENDIF.
516
517 IF screen-name CS 'PA_RFC' AND gv_sundries IS INITIAL.
518 screen-active = 0.
519 ENDIF.
520
521* deactivate tab with processing details
522 IF screen-name = 'PROCESS' AND gv_proc_type IS INITIAL.
523 screen-active = 0.
524 ENDIF.
525
526 MODIFY SCREEN.
527
528 ENDLOOP.
529
530
531**********************************************************************
532AT SELECTION-SCREEN ON pa_form.
533 SELECT SINGLE name
534 FROM fpcontext
535 INTO pa_form
536 WHERE name = pa_form AND
537 state = 'A'.
538 CHECK sy-subrc <> 0.
539 MESSAGE e004 WITH pa_form.
540* No active form &1 available
541
542
543**********************************************************************
544AT SELECTION-SCREEN ON BLOCK country.
545 CHECK pa_cnfix = 'X'.
546 CASE sy-ucomm.
547 WHEN 'ONLI' OR 'ADVANCED' OR 'TAB_DATA_SOURCE' OR 'TAB_LANG_COUNTRY'
548 OR 'TAB_PROCESS' OR 'TAB_SUNDRIES'.
549 IF pa_lang IS INITIAL.
550 MESSAGE e007.
551* Enter language
552 ENDIF.
553 IF pa_cntry IS INITIAL.
554 MESSAGE e008.
555* Enter country
556 ENDIF.
557
558 SELECT SINGLE *
559 FROM t005
560 INTO gs_land
561 WHERE land1 = pa_cntry.
562 IF sy-dbcnt = 0.
563 MESSAGE e038 WITH pa_cntry.
564* Country &1 does not exist.
565 ELSEIF gs_land-spras <> pa_lang.
566 MESSAGE e037 WITH pa_lang pa_cntry.
567* Language &1 is not spoken in country &2.
568 ENDIF.
569 ENDCASE.
570
571
572**********************************************************************
573AT SELECTION-SCREEN ON BLOCK number_of_bookings.
574 CHECK pa_db IS INITIAL.
575 CASE sy-ucomm.
576 WHEN 'ONLI' OR 'ADVANCED' OR 'TAB_DATA_SOURCE' OR 'TAB_LANG_COUNTRY'
577 OR 'TAB_PRINTER' OR 'TAB_SUNDRIES'.
578 IF pa_numb IS INITIAL.
579 MESSAGE e009.
580* Enter number of bookings'
581
582 ENDIF.
583 ENDCASE.
584
585**********************************************************************
586AT SELECTION-SCREEN ON BLOCK preview.
587 IF pa_prev = 'X' AND pa_nopdf = 'X'.
588 MESSAGE w011.
589* Preview needs PDF. Flag "No PDF" will be ignored.
590 ENDIF.
591
592**********************************************************************
593AT SELECTION-SCREEN ON BLOCK download_details.
594 IF pa_gui IS NOT INITIAL AND old_radio_button = 'PA_GUI'.
595 IF pa_path IS INITIAL.
596 MESSAGE e010.
597* Enter download path
598 ENDIF.
599
600 downl_path = pa_path.
601 CALL METHOD cl_gui_frontend_services=>directory_exist
602 EXPORTING
603 directory = downl_path
604 RECEIVING
605 result = file_exists
606 EXCEPTIONS
607 OTHERS = 5.
608
609 IF file_exists IS INITIAL.
610 MESSAGE e012.
611* Invalid download path
612 ENDIF.
613 ENDIF.
614
615 CASE 'X'.
616 WHEN pa_spool.
617 old_radio_button = 'PA_SPOOL'.
618 WHEN pa_gui.
619 old_radio_button = 'PA_GUI'.
620 WHEN pa_mail.
621 old_radio_button = 'PA_MAIL'.
622 ENDCASE.
623
624AT SELECTION-SCREEN ON pa_image.
625* This event will be fired even if the subscreen is hidden ->
626* Make sure flag gv_max is set before checking that an entry
627* in pa_image is correct.
628 CHECK gv_max IS NOT INITIAL.
629 IF pa_image IS NOT INITIAL.
630 image_upload_filename = pa_image.
631 CALL METHOD cl_gui_frontend_services=>file_exist
632 EXPORTING
633 file = image_upload_filename
634 RECEIVING
635 result = file_exists
636 EXCEPTIONS
637 OTHERS = 5.
638 IF file_exists IS INITIAL.
639 MESSAGE e013.
640* File for image does not exist
641 ENDIF.
642
643* evaluate file type
644* FIND ALL OCCURRENCES OF '.' IN image_upload_filename MATCH OFFSET dot.
645 PERFORM find_last_substring
646 USING
647 image_upload_filename
648 '.'
649 CHANGING
650 dot.
651
652 dot = dot + 1.
653 gv_mime_type = pa_image+dot.
654 TRANSLATE gv_mime_type TO UPPER CASE.
655 CASE gv_mime_type.
656 WHEN 'BMP' OR 'PNG'.
657 gv_mime_type = 'image/bmp'.
658 WHEN 'GIF'.
659 gv_mime_type = 'image/gif'.
660 WHEN 'JPG' OR 'JPEG'.
661 gv_mime_type = 'image/jpeg'.
662 WHEN 'TIF' OR 'TIFF'.
663 gv_mime_type = 'image/tif'.
664 WHEN OTHERS.
665 MESSAGE e014.
666* Invalid MIME type
667 ENDCASE.
668 ENDIF.
669
670AT SELECTION-SCREEN ON pa_rfc.
671* This event will be fired even if the subscreen is hidden ->
672* Make sure flag gv_sundries is set before checking that an entry
673* in pa_rfc is correct.
674 CHECK gv_sundries IS NOT INITIAL.
675 SELECT SINGLE rfcdest
676 FROM rfcdes
677 INTO pa_rfc
678 WHERE rfcdest = pa_rfc AND
679 rfctype = 'G'.
680 IF sy-dbcnt <> 1.
681 MESSAGE e015.
682* Enter valid RFC destination for Adobe document services
683 ENDIF.
684
685AT SELECTION-SCREEN ON pa_prnt.
686 PERFORM check_printer_for_ads
687 USING pa_prnt
688 CHANGING gv_ads_type.
689 IF gv_ads_type IS INITIAL.
690 IF gv_proc_type = 'X'. "tab with printer is displayed
691 MESSAGE e044.
692* Please enter a PS, PCL, or PDF printer
693 ELSE.
694 MESSAGE a043.
695* Please set a PS, PCL, or PDF printer as your default printer
696 ENDIF.
697 ENDIF.
698
699
700**********************************************************************
701AT SELECTION-SCREEN.
702 CASE sy-ucomm.
703 WHEN 'ADS'.
704 gv_sundries = 'X'.
705 SET PARAMETER ID 'ADS' FIELD gv_sundries. "#EC EXISTS
706 WHEN 'NOADS'.
707 gv_sundries = ' '.
708 SET PARAMETER ID 'ADS' FIELD gv_sundries. "#EC EXISTS
709 WHEN 'MAX'.
710 gv_max = 'X'.
711 WHEN 'PROC'.
712 gv_proc_type = 'X'.
713 SET PARAMETER ID 'PROC_TYPE' FIELD gv_proc_type. "#EC EXISTS
714 WHEN 'NOPROC'.
715 pa_spool = 'X'.
716 gv_proc_type = ' '.
717 SET PARAMETER ID 'PROC_TYPE' FIELD gv_proc_type. "#EC EXISTS
718 IF tabs-activetab = 'TAB_PROCESS'.
719 tabs-activetab = 'TAB_DATA_SOURCE'.
720 tabs-dynnr = '0110'.
721 ENDIF.
722 ENDCASE.
723
724 CASE sy-dynnr.
725 WHEN '0120'.
726 SELECT SINGLE language "#EC *
727 FROM fplayoutt
728 INTO gs_values-key
729 WHERE name = pa_form AND
730 state = 'A' AND
731 language = pa_lang.
732 IF sy-dbcnt <> 1.
733 MESSAGE w036 WITH pa_form pa_lang.
734* form &1 is not available in language &2
735 ENDIF.
736
737
738 WHEN 1000.
739 IF gv_proc_type IS INITIAL.
740 PERFORM check_printer_for_ads
741 USING pa_prnt
742 CHANGING gv_ads_type.
743 IF gv_ads_type IS INITIAL.
744 MESSAGE a043.
745* Please set a PS, PCL, or PDF printer as your default printer
746 ENDIF.
747 ENDIF.
748
749 IF sy-ucomm = 'ADVANCED'.
750 IF gv_advanced = 'X'.
751 CLEAR gv_advanced.
752 push01 = 'Advanced functions'(adv).
753 ELSE.
754 gv_advanced = 'X'.
755 push01 = 'No advanced functions'(noa).
756 ENDIF.
757 SET PARAMETER ID 'ADVANCED_ID' FIELD gv_advanced. "#EC EXISTS
758 ENDIF.
759
760 SET PARAMETER ID 'ACTIVE_TAB' FIELD tabs-activetab. "#EC EXISTS
761 SET PARAMETER ID 'ACTIVE_DYNNR' FIELD tabs-dynnr. "#EC EXISTS
762
763 WHEN OTHERS.
764 IF sy-ucomm = 'TOGGLE_CUSTOMERS'.
765 ra_cus2[] = so_cusid[].
766 so_cusid[] = ra_cus1[].
767 ra_cus1[] = ra_cus2[].
768 ra_cus2[] = so_cusid[].
769 ENDIF.
770
771 ENDCASE.
772 SET PARAMETER ID 'PREVIEW' FIELD pa_prev. "#EC EXISTS
773 SET PARAMETER ID 'SUPPR_PRT_DLG' FIELD pa_nodlg. "#EC EXISTS
774 SET PARAMETER ID 'SELECT_BOOKINGS' FIELD pa_db. "#EC EXISTS
775 SET PARAMETER ID 'SENDER_COUNTRY' FIELD pa_send. "#EC EXISTS
776 SET PARAMETER ID 'LANGUAGE' FIELD pa_lang. "#EC EXISTS
777
778
779
780**********************************************************************
781AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_path.
782 gv_window_text = 'Select download directory'(dow).
783 CALL METHOD cl_gui_frontend_services=>directory_browse
784 EXPORTING
785 window_title = gv_window_text
786 CHANGING
787 selected_folder = downl_path
788 EXCEPTIONS
789 cntl_error = 1
790 error_no_gui = 2
791 not_supported_by_gui = 3
792 OTHERS = 4.
793 IF sy-subrc <> 0.
794 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
795 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
796 ENDIF.
797
798 pa_path = downl_path.
799
800AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_image.
801 DATA:
802 gt_files TYPE filetable,
803 gv_rc TYPE i,
804 window_title TYPE string.
805
806 image_upload_filename = pa_image.
807
808 CONCATENATE
809 'Image Files|*.BMP;*.GIF;*.PNG;*.JPG;*.JPEG;*.TIF|' "#EC NOTEXT
810 'All files (*.*)|*.*|' "#EC NOTEXT
811 INTO gv_file_filter.
812
813 window_title = 'Choose graphic file'(cho).
814 CALL METHOD cl_gui_frontend_services=>file_open_dialog
815 EXPORTING
816 window_title = window_title
817 default_filename = image_upload_filename
818 initial_directory = 'C:\'
819 multiselection = space
820 file_filter = gv_file_filter
821 CHANGING
822 file_table = gt_files
823 rc = gv_rc
824 EXCEPTIONS
825 OTHERS = 5.
826 IF sy-subrc <> 0.
827* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
828* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
829 ENDIF.
830 READ TABLE gt_files INDEX gv_rc INTO pa_image.
831
832
833
834
835
836*&---------------------------------------------------------------------*
837*& Include BC480_DEMOF01
838*&---------------------------------------------------------------------*
839
840
841*&---------------------------------------------------------------------*
842*& Form select_business_data
843*&---------------------------------------------------------------------*
844FORM select_business_data .
845 DATA:
846 lv_spfli_entries TYPE sy-dbcnt,
847 lv_bookings_count TYPE sy-dbcnt,
848 lv_bookings_per_carrier TYPE sy-dbcnt.
849
850 SELECT * "#EC CI_SGLSELECT
851 FROM scustom
852 INTO TABLE gt_customers
853 WHERE id IN so_cusid.
854 CHECK sy-subrc = 0.
855
856 IF pa_db IS NOT INITIAL.
857 SELECT *
858 FROM sbook
859 INTO TABLE gt_all_bookings
860 FOR ALL ENTRIES IN gt_customers
861 WHERE customid = gt_customers-id
862 ORDER BY PRIMARY KEY.
863 ELSE.
864* The user can decide how bookings should be selected from DB table
865* SBOOK. This is helpful for testing dynamic page breaks.
866* Mind however that this option will not reflect the actual bookings
867* of the specific customer(s) entered on the selection-screen - you
868* will get back as many random bookings per customer as you specify.
869 SELECT COUNT(*) "#EC CI_BYPASS
870 FROM spfli
871 INTO lv_spfli_entries .
872 lv_bookings_per_carrier = ( pa_numb - 1 ) DIV lv_spfli_entries + 1.
873
874 SELECT carrid connid
875 FROM spfli
876 INTO (gs_booking-carrid, gs_booking-connid).
877 SELECT *
878 FROM sbook
879 INTO gs_booking
880 WHERE carrid = gs_booking-carrid AND
881 connid = gs_booking-connid.
882 APPEND gs_booking TO gt_bookings.
883 ADD 1 TO lv_bookings_count.
884 IF sy-dbcnt >= lv_bookings_per_carrier
885 OR lv_bookings_count >= pa_numb.
886 EXIT.
887 ENDIF.
888 ENDSELECT.
889 IF lv_bookings_count >= pa_numb.
890 EXIT.
891 ENDIF.
892 ENDSELECT.
893 ENDIF.
894 SORT gt_bookings BY carrid connid fldate bookid.
895ENDFORM. " select_business_data
896
897*&---------------------------------------------------------------------*
898*& Form download_pdf
899*&---------------------------------------------------------------------*
900FORM download_pdf
901 USING p_pdf_hex TYPE xstring
902 p_number TYPE scustom-id
903 CHANGING gv_download_ok TYPE c.
904 DATA:
905 lt_itab TYPE TABLE OF x,
906 lv_len TYPE i,
907 lv_filename TYPE string VALUE 'XYZ.pdf',
908 lv_separator VALUE '\',
909 last TYPE i.
910
911 IF pa_path CS '/'.
912 lv_separator = '/'.
913 ENDIF.
914
915* FIND ALL OCCURRENCES OF lv_separator IN pa_path MATCH OFFSET last.
916 PERFORM find_last_substring
917 USING
918 pa_path
919 lv_separator
920 CHANGING
921 last.
922
923 IF pa_path+last <> lv_separator.
924 last = STRLEN( pa_path ).
925 pa_path+last = lv_separator.
926 ENDIF.
927
928 REPLACE 'X' IN lv_filename WITH pa_path.
929 REPLACE 'Y' IN lv_filename WITH pa_form.
930 REPLACE 'Z' IN lv_filename WITH p_number.
931
932 CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
933 EXPORTING
934 buffer = p_pdf_hex
935 IMPORTING
936 output_length = lv_len
937 TABLES
938 binary_tab = lt_itab.
939
940
941 CALL FUNCTION 'GUI_DOWNLOAD'
942 EXPORTING
943 bin_filesize = lv_len
944 filename = lv_filename
945 filetype = 'BIN'
946 TABLES
947 data_tab = lt_itab
948 EXCEPTIONS
949 file_write_error = 1
950 no_batch = 2
951 gui_refuse_filetransfer = 3
952 invalid_type = 4
953 no_authority = 5
954 unknown_error = 6
955 header_not_allowed = 7
956 separator_not_allowed = 8
957 filesize_not_allowed = 9
958 header_too_long = 10
959 dp_error_create = 11
960 dp_error_send = 12
961 dp_error_write = 13
962 unknown_dp_error = 14
963 access_denied = 15
964 dp_out_of_memory = 16
965 disk_full = 17
966 dp_timeout = 18
967 file_not_found = 19
968 dataprovider_exception = 20
969 control_flush_error = 21
970 OTHERS = 22.
971 IF sy-subrc <> 0.
972 CLEAR gv_download_ok.
973 MESSAGE e006.
974* Download failure
975 ELSE.
976 gv_download_ok = 'X'.
977 ENDIF.
978ENDFORM. "download_pdf
979
980
981*&--------------------------------------------------------------------*
982*& Form XSTRING_TO_SOLIX
983*&--------------------------------------------------------------------*
984FORM xstring_to_solix
985 USING ip_xstring TYPE xstring.
986
987 DATA:
988 lp_offset TYPE i,
989 lt_solix TYPE solix_tab,
990 ls_solix_line TYPE solix,
991 lp_pdf_string_len TYPE i,
992 lp_solix_rows TYPE i,
993 lp_last_row_length TYPE i,
994 lp_row_length TYPE i.
995
996* transform xstring to SOLIX
997 DESCRIBE TABLE lt_solix.
998 lp_row_length = sy-tleng.
999 lp_offset = 0.
1000
1001 lp_pdf_string_len = XSTRLEN( ip_xstring ).
1002
1003 lp_solix_rows = lp_pdf_string_len DIV lp_row_length.
1004 lp_last_row_length = lp_pdf_string_len MOD lp_row_length.
1005 DO lp_solix_rows TIMES.
1006 ls_solix_line-line =
1007 ip_xstring+lp_offset(lp_row_length).
1008 APPEND ls_solix_line TO pdf_content.
1009 ADD lp_row_length TO lp_offset.
1010 ENDDO.
1011 IF lp_last_row_length > 0.
1012 CLEAR ls_solix_line-line.
1013 ls_solix_line-line = ip_xstring+lp_offset(lp_last_row_length).
1014 APPEND ls_solix_line TO pdf_content.
1015 ENDIF.
1016
1017ENDFORM. "XSTRING_TO_SOLIX
1018
1019*&--------------------------------------------------------------------*
1020*& Form fax_or_mail_pdf
1021*&
1022*& Detail information on Business Communication Service can be found
1023*& in the SAP Library, Topic "Generic Business Tools for Application
1024*& Developers (BC-SRV-GBT)"
1025*&
1026*& See also standard demo reports BCS_EXAMPLE_...
1027*&
1028*&--------------------------------------------------------------------*
1029
1030FORM fax_or_mail_pdf
1031 USING p_fax_or_mail TYPE c.
1032
1033* BCS data
1034 DATA:
1035 send_request TYPE REF TO cl_bcs,
1036 document TYPE REF TO cl_document_bcs,
1037 recipient TYPE REF TO if_recipient_bcs,
1038 bcs_exception TYPE REF TO cx_bcs,
1039 lv_sent_to_all TYPE os_boolean,
1040 lp_pdf_size TYPE so_obj_len.
1041
1042
1043
1044* ------------ Call BCS interface ----------------------------------
1045
1046 TRY.
1047* ---------- create persistent send request ----------------------
1048 send_request = cl_bcs=>create_persistent( ).
1049
1050* ---------- add document ----------------------------------------
1051* get PDF xstring and convert it to BCS format
1052 lp_pdf_size = XSTRLEN( gs_result-pdf ).
1053
1054 PERFORM xstring_to_solix
1055 USING
1056 gs_result-pdf.
1057
1058 document = cl_document_bcs=>create_document(
1059 i_type = 'PDF' " cf. RAW, DOC
1060 i_hex = pdf_content
1061 i_length = lp_pdf_size
1062 i_subject = 'test created by BC480_DEMO' ). "#EC NOTEXT
1063
1064* add document to send request
1065 send_request->set_document( document ).
1066
1067
1068* --------- set sender -------------------------------------------
1069* note: this is necessary only if you want to set the sender
1070* different from actual user (SY-UNAME). Otherwise sender is
1071* set automatically with actual user.
1072*
1073* sender = cl_sapuser_bcs=>create( sy-uname ).
1074* CALL METHOD send_request->set_sender
1075* EXPORTING i_sender = sender.
1076
1077
1078* ---------- add recipient (e-mail address) ----------------------
1079 CASE p_fax_or_mail.
1080 WHEN 'F' OR 'f'.
1081 recipient = cl_cam_address_bcs=>create_fax_address(
1082 i_country = pa_faxct
1083 i_number = pa_faxno ).
1084
1085 WHEN 'M' OR 'm'.
1086 recipient = cl_cam_address_bcs=>create_internet_address(
1087 i_address_string = pa_addr ).
1088 ENDCASE.
1089
1090
1091* add recipient to send request
1092 send_request->add_recipient( i_recipient = recipient ).
1093
1094* ---------- send document ---------------------------------------
1095 lv_sent_to_all = send_request->send(
1096 i_with_error_screen = 'X' ).
1097
1098 IF lv_sent_to_all = 'X'.
1099 MESSAGE i022(so).
1100 ENDIF.
1101
1102* ---------- explicit 'commit work' is mandatory! ----------------
1103 COMMIT WORK.
1104
1105 CATCH cx_bcs INTO bcs_exception.
1106 MESSAGE e019 WITH bcs_exception->error_type.
1107* Sending fax/mail failed
1108 EXIT.
1109
1110 ENDTRY.
1111ENDFORM. "mail_pdf
1112
1113
1114*&---------------------------------------------------------------------*
1115*& Form graphic_file_from_PC
1116*&---------------------------------------------------------------------*
1117* This form uploads a graphic file from the location entered on the
1118* selection screen
1119* The file name (and its MIME type) is passed on to the generated
1120* function module, to be used for an image of type "graphic content".
1121*&---------------------------------------------------------------------*
1122FORM graphic_file_from_pc .
1123 DATA:
1124 gt_graphic TYPE TABLE OF x,"hexline,
1125 gs_graphic LIKE LINE OF gt_graphic.
1126
1127 IF pa_image IS NOT INITIAL.
1128 image_upload_filename = pa_image.
1129 CALL FUNCTION 'GUI_UPLOAD'
1130 EXPORTING
1131 filename = image_upload_filename
1132 filetype = 'BIN'
1133 TABLES
1134 data_tab = gt_graphic
1135 EXCEPTIONS
1136 OTHERS = 17.
1137 IF sy-subrc <> 0.
1138 " then we do not have a file :-(
1139 ENDIF.
1140 LOOP AT gt_graphic INTO gs_graphic.
1141 CONCATENATE gv_image_file gs_graphic
1142 INTO gv_image_file IN BYTE MODE.
1143 ENDLOOP.
1144 ENDIF.
1145ENDFORM. " graphic_file_from_PC
1146
1147*&--------------------------------------------------------------------*
1148*& Form find_last_substring
1149*&--------------------------------------------------------------------*
1150FORM find_last_substring
1151 USING i_string "TYPE string
1152 i_substring "TYPE string
1153 CHANGING c_position TYPE i.
1154
1155 DATA:
1156 lv_string TYPE string,
1157 lv_position TYPE i.
1158
1159 lv_string = i_string. c_position = 0.
1160 DO.
1161 FIND i_substring IN lv_string MATCH OFFSET lv_position.
1162 IF sy-subrc <> 0.
1163 EXIT.
1164 ENDIF.
1165 lv_position = lv_position + 1.
1166 lv_string = lv_string+lv_position.
1167 c_position = c_position + lv_position.
1168 ENDDO.
1169 c_position = c_position - 1.
1170ENDFORM. "find_last_substring
1171
1172*&--------------------------------------------------------------------*
1173*& Form check_printer_for_ads
1174*---------------------------------------------------------------------*
1175* only types PCL, PS, PDF, and zebra are supported - not LOCL!
1176*---------------------------------------------------------------------*
1177FORM check_printer_for_ads
1178 USING p_printer LIKE pa_prnt
1179 CHANGING p_ads_type TYPE string.
1180
1181 DATA:
1182 lv_patype TYPE tsp03-patype.
1183
1184 SELECT SINGLE patype
1185 FROM tsp03
1186 INTO lv_patype
1187 WHERE padest = p_printer.
1188
1189 CALL FUNCTION 'ADS_GET_DEVTYPE_ATTRIBUTES'
1190 EXPORTING
1191 prtype = lv_patype
1192 IMPORTING
1193 adstype = p_ads_type.
1194ENDFORM. "check_printer_for_ads
1195
1196*&---------------------------------------------------------------------*
1197*& Form form_process
1198*&---------------------------------------------------------------------*
1199FORM form_process.
1200 DATA:
1201 ls_output_result TYPE sfpjoboutput,
1202 lt_spoolids TYPE tfpspoolid,
1203 ls_spoolid LIKE LINE OF lt_spoolids,
1204 mess_text TYPE string.
1205
1206
1207* Get name of the generated function module
1208 TRY.
1209 CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
1210 EXPORTING
1211 i_name = pa_form
1212 IMPORTING
1213 e_funcname = gv_fm_name
1214 e_interface_type = interface_type.
1215 CATCH cx_root INTO r_error.
1216 error_string = r_error->get_text( ).
1217 MESSAGE error_string TYPE 'E'.
1218 ENDTRY.
1219
1220* Set output parameters for old interface
1221 old_control_params-no_dialog = pa_nodlg.
1222 old_control_params-preview = pa_prev.
1223 old_output_options-tddest = pa_prnt.
1224
1225* Set output parameters for new interface
1226 gs_outputparams-nodialog = pa_nodlg. " show printer dialog popup
1227 gs_outputparams-preview = pa_prev. " launch print preview
1228 gs_outputparams-dest = pa_prnt. " set printer
1229 gs_outputparams-nopdf = pa_nopdf.
1230 gs_outputparams-reqnew = pa_newid.
1231
1232* XFP settings for external interface
1233 gs_outputparams-xfp = pa_xfp.
1234 gs_outputparams-xfptype = space. " with context evaluation
1235 gs_outputparams-xfpoutdev = pa_prnt.
1236
1237* determine RFC destination for Adobe Document Services
1238 gs_outputparams-connection = pa_rfc.
1239
1240 IF pa_gui = 'X' OR pa_mail = 'X' OR pa_fax = 'X'.
1241 gs_outputparams-getpdf = 'X'.
1242 ENDIF.
1243
1244 IF pa_tag IS INITIAL.
1245 gs_outputparams-pdftagged = '-'.
1246 ELSE.
1247 gs_outputparams-pdftagged = 'X'.
1248 ENDIF.
1249
1250
1251* Print job needs to be opened exclusively for forms of new interface
1252 IF interface_type <> 'S'.
1253 CALL FUNCTION 'FP_JOB_OPEN'
1254 CHANGING
1255 ie_outputparams = gs_outputparams
1256 EXCEPTIONS
1257 cancel = 1
1258 usage_error = 2
1259 system_error = 3
1260 internal_error = 4
1261 OTHERS = 5.
1262 CASE sy-subrc.
1263 WHEN 0.
1264 WHEN 1.
1265 EXIT.
1266 WHEN OTHERS.
1267 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
1268 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
1269 ENDCASE.
1270 ENDIF.
1271
1272
1273* enable interactive features
1274 CASE 'X'.
1275 WHEN pa_nofil. " no interactive feature'
1276 gs_docparams-fillable = space.
1277 WHEN pa_fill. "interactive, but no Reader rights
1278 gs_docparams-fillable = 'N'.
1279 WHEN pa_right. " interactive and Reader rights
1280 gs_docparams-fillable = 'X'.
1281 ENDCASE.
1282
1283 LOOP AT gt_customers INTO gs_customer.
1284* Set form language and country (->form locale)
1285 IF pa_cnfix = 'X'.
1286* new interface
1287 gs_docparams-langu = pa_lang.
1288 gs_docparams-country = pa_cntry.
1289* Smart Forms compatible interface
1290 old_control_params-langu = pa_lang.
1291 SET COUNTRY pa_cntry.
1292 ELSE.
1293* new interface
1294 gs_docparams-langu = gs_customer-langu.
1295 gs_docparams-country = gs_customer-country.
1296* Smart Forms compatible interface
1297 old_control_params-langu = gs_customer-langu.
1298 SET COUNTRY gs_customer-country.
1299 ENDIF.
1300
1301
1302 IF pa_db IS NOT INITIAL.
1303 CLEAR: gt_bookings.
1304
1305* build internal table that contains only the bookings for the
1306* current customer
1307* required only for selection-screen setting "Bookings from database"
1308 LOOP AT gt_all_bookings
1309 INTO gs_booking
1310 WHERE customid = gs_customer-id.
1311 APPEND gs_booking TO gt_bookings.
1312 ENDLOOP.
1313 ENDIF.
1314
1315**************************************************
1316* Now call the generated function module
1317**************************************************
1318 CALL FUNCTION gv_fm_name
1319 EXPORTING
1320* parameters for Smart Forms compatible interface
1321 control_parameters = old_control_params
1322 output_options = old_output_options
1323 user_settings = space
1324* parameter for new interface
1325 /1bcdwb/docparams = gs_docparams
1326* parameter for XML interface
1327 /1bcdwb/docxml = gv_xml_data
1328* parameters for both interfaces
1329 is_customer = gs_customer
1330 it_bookings = gt_bookings
1331 iv_image_url = gv_url
1332 iv_image_file = gv_image_file
1333 iv_mime_type = gv_mime_type
1334 iv_sending_country = pa_send
1335 iv_sf_text = pa_sftxt
1336 iv_so10_text = pa_so10
1337 IMPORTING
1338* parameters for Smart Forms compatible interface
1339 document_output_info = old_document_output_info
1340 job_output_info = old_job_output_info
1341 job_output_options = old_job_output_options
1342* parameter for new interface
1343 /1bcdwb/formoutput = gs_result
1344
1345 EXCEPTIONS
1346* exceptions of SmartForms compatible interface
1347 formatting error = 1
1348 send_error = 2
1349 user_canceled = 3
1350* exceptions of new interface
1351 usage_error = 4
1352 system_error = 5
1353* exceptions of both interfaces
1354 internal_error = 6
1355 OTHERS = 7.
1356
1357 gv_subrc = sy-subrc.
1358 CASE sy-subrc.
1359 WHEN 0.
1360 IF interface_type = 'S' AND pa_spool = 'X'
1361 AND pa_prev IS INITIAL.
1362 MESSAGE i017.
1363 ENDIF.
1364
1365 WHEN OTHERS.
1366 CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
1367 IMPORTING
1368 e_adserrstr = error_string.
1369 IF NOT error_string IS INITIAL.
1370* we received a detailed error description
1371 MESSAGE error_string TYPE 'E'.
1372 EXIT.
1373 ELSE.
1374 IF sy-msgid IS NOT INITIAL AND sy-msgno IS NOT INITIAL.
1375 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
1376 sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
1377 ELSE.
1378 MESSAGE e018 WITH gv_subrc.
1379* Form processing error: return code = &1
1380 ENDIF.
1381 ENDIF.
1382 ENDCASE.
1383
1384
1385 CASE 'X'.
1386 WHEN pa_gui.
1387 IF sy-batch = 'X'.
1388 WRITE: 'Download not possible in background'(eba).
1389 ELSE.
1390 PERFORM download_pdf
1391 USING gs_result-pdf gs_customer-id
1392 CHANGING gv_download_ok.
1393 ENDIF.
1394
1395 WHEN pa_mail.
1396 PERFORM fax_or_mail_pdf USING 'M'.
1397
1398 WHEN pa_fax.
1399 PERFORM fax_or_mail_pdf USING 'F'.
1400 ENDCASE.
1401 ENDLOOP.
1402
1403 IF pa_gui = 'X'.
1404 IF gv_download_ok = 'X'.
1405 MESSAGE s016 WITH pa_path 'BC480...pdf'.
1406 ELSE.
1407 MESSAGE e006. " Download failure
1408 ENDIF.
1409 ENDIF.
1410
1411* Close spool job
1412 IF interface_type <> 'S'.
1413 CALL FUNCTION 'FP_JOB_CLOSE'
1414 IMPORTING
1415 e_result = ls_output_result
1416 EXCEPTIONS
1417 usage_error = 1
1418 system_error = 2
1419 internal_error = 3
1420 OTHERS = 4.
1421 CASE sy-subrc.
1422 WHEN 0.
1423 IF pa_spool = 'X' AND pa_prev IS INITIAL.
1424 MESSAGE i017.
1425 ENDIF.
1426
1427 IF pa_xfp = 'X'.
1428 LOOP AT lt_spoolids INTO ls_spoolid.
1429 ENDLOOP.
1430 mess_text = sy-tabix.
1431 CONCATENATE 'Number of spool IDs created:'(ids) mess_text INTO mess_text
1432 SEPARATED BY space.
1433 MESSAGE mess_text TYPE 'S'.
1434 ENDIF.
1435 WHEN OTHERS.
1436 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
1437 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
1438 ENDCASE.
1439 ENDIF.
1440ENDFORM. " form_process