웹딘프로 PDF

18
웹웹웹웹 PDF 작작작 : 작작작 작작작 : 2008.02.04

description

웹딘프로 PDF. 작성인 : 김홍파 작성일 : 2008.02.04. 개요. 본 문서는 이미 스마트폼을 만들어놓은 상황에서 어떻게 웹딘프로에서 PDF 로 출력하는가를 설명한 Tutorial 문서이다. Step - 1. 웹딘프로 컴포넌트를 생성하고 애플리케이션을 만들어준다. Step – 2. 컴포넌트 컨트롤러에서 PDF 노드를 생성해주고 카디날러티를 1:1 로 해준다. Step – 3. - PowerPoint PPT Presentation

Transcript of 웹딘프로 PDF

Page 1: 웹딘프로  PDF

웹딘프로 PDF

작성인 : 김홍파 작성일 : 2008.02.04

Page 2: 웹딘프로  PDF

개요

• 본 문서는 이미 스마트폼을 만들어놓은 상황에서 어떻게 웹딘프로에서 PDF 로 출력하는가를 설명한 Tutorial 문서이다 .

Page 3: 웹딘프로  PDF

Step - 1

• 웹딘프로 컴포넌트를 생성하고 애플리케이션을 만들어준다 .

Page 4: 웹딘프로  PDF

Step – 2

• 컴포넌트 컨트롤러에서 PDF 노드를 생성해주고 카디날러티를 1:1로 해준다 .

Page 5: 웹딘프로  PDF

Step – 3

• PDF 노드에 ‘ SOURCE’ 라는 이름으로 attribute 를 추가해주고 타입은 Xstring 으로 해준다 .

Page 6: 웹딘프로  PDF

Step - 4

• 웹딘프로 컴포넌트에서 ‘ pdfview’ 라는 이름으로 view 를 하나 생성시켜주고 window 에 embedded 시킨다 .

• View 의 layout 에서 ‘ interactive_form’ 이라는 이름으로 interactiveform 타입의 element 를 생성하여준다 .

• Height 와 width 속성을 각각 800px 와 1000 px 로 수정하여 준다 .

Page 7: 웹딘프로  PDF

Step - 5

• Pdfview 의 context 에서 컴포넌트 컨트롤러의 pdf 노드를 context mapping 시켜준다 .

Page 8: 웹딘프로  PDF

Step - 6

• 다시 pdfview 의 layout 으로 돌아가 interactiveform 을 클릭한뒤 pdfsource 의 오른쪽에 있는 버튼을 클릭하여 pdf 노드의 source attribute 를 선택하여 binding 시켜 준다 .

Page 9: 웹딘프로  PDF

Step - 7

• 컴포넌트 컨트롤러의 methods 탭에서 displaypdf 라는 메소드를 생성하여 준다 . 여기에 들어갈 소스는 본 문서의 제일 마지막 소스를 참조 .

Page 10: 웹딘프로  PDF

Step - 8

• Pdfview 의 wddoinit 메소드의 위와 같은 소스 삽입

Page 11: 웹딘프로  PDF

Step - 9

• 웹딘프로 애플리케이션을 실행

Page 12: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 1

• DATA : l_x(1) VALUE 'X'.• DATA: lv_text TYPE char3,• lv_syucomm TYPE char1,• ls_pdf TYPE xstring,• lv_fm_name TYPE rs38l_fnam,• lv_control_parameters TYPE ssfctrlop,• lv_output_options TYPE ssfcompop,• lv_ssf_output TYPE ssfcrescl,• lt_otfdata TYPE TABLE OF itcoo.

• DATA: node_input1 TYPE REF TO if_wd_context_node,• elem_input1 TYPE REF TO if_wd_context_element.• ***** 스크린에서 데이타를 받아와서 스마트 폼을 출력할때• * navigate from <CONTEXT> to <INPUT1> via lead selection• *node_input1 = wd_context->get_child_node( name =• *ig_componentcontroller=>wdctx_zinput ).• ** get element via lead selection• *elem_input1 = node_input1->get_element( ).• ** get all declared attributes• *elem_input1->get_static_attributes(• *importing• *static_attributes = stru_input1 ).

Page 13: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 2

• CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'• EXPORTING• formname = 'Z_WD_SMARTFORMS'• IMPORTING• fm_name = lv_fm_name• EXCEPTIONS• no_form = 1• no_function_module = 2• OTHERS = 3.

• IF sy-subrc <> 0.• * Error MESSAGE• ENDIF.

Page 14: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 3

• * Set relevant control parameters• lv_control_parameters-getotf = l_x. "OTF output• lv_control_parameters-no_dialog = l_x. "No print dialog• lv_control_parameters-preview = space. "No preview

• * Set relevant output options• lv_output_options-tdnewid = l_x. "Print parameters,• lv_output_options-tdDEST = 'LP01'. "Print parameters,• lv_output_options-tddelete = space. "Print parameters,

Page 15: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 4

• CALL FUNCTION lv_fm_name• EXPORTING• control_parameters = lv_control_parameters• output_options = lv_output_options• user_settings = space• * pernr = stru_input1-zpernr• * reinr = stru_input1-zreinr• * pdvrs = stru_input1-zpdvrs• IMPORTING• * DOCUMENT_OUTPUT_INFO• job_output_info = lv_ssf_output• * JOB_OUTPUT_OPTIONS• 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.• ENDIF.

Page 16: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 5

• REFRESH lt_otfdata.

• lt_otfdata[] = lv_ssf_output-otfdata[].

• CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'• EXPORTING• i_otf = lt_otfdata• EXCEPTIONS• convert_otf_to_pdf_error = 1• cntl_error = 2• OTHERS = 3.

• IF sy-subrc <> 0.• MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno• WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.• ENDIF.

Page 17: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 6

• DATA: l_dummy TYPE STANDARD TABLE OF tline,• pdf_data TYPE xstring,• pdf_size TYPE i.

• CLEAR: pdf_data, pdf_size.• * convert otf to pdf

• CALL FUNCTION 'CONVERT_OTF'• EXPORTING• format = 'PDF'• IMPORTING• bin_filesize = pdf_size• bin_file = pdf_data• TABLES• otf = lt_otfdata[]• lines = l_dummy• EXCEPTIONS• err_max_linewidth = 1• err_format = 2• err_conv_not_possible = 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.

Page 18: 웹딘프로  PDF

Displaypdf 메소드에 들어갈 코드 – 7

• DATA: node_pdf TYPE REF TO if_wd_context_node,• elem_pdf TYPE REF TO if_wd_context_element,• stru_pdf TYPE if_componentcontroller=>element_pdf ,• item_source LIKE stru_pdf-source.

• * navigate from <CONTEXT> to <PDF> via lead selection• node_pdf = wd_context->get_child_node( name = if_componentcontroller=>wdctx_pdf ).

• * get element via lead selection• elem_pdf = node_pdf->get_element( ).• * set single attribute

• elem_pdf->set_attribute(• EXPORTING• name = `SOURCE`• value = pdf_data ).