10
Criando um BDS: Para nosso exemplo, vamos criar um EXCEL: Esse excel vamos chama-lo de ZTESTE.

BDS - DOCUMET

Embed Size (px)

DESCRIPTION

Gerando um documento BDS.

Citation preview

Criando um BDS:Para nosso exemplo, vamos criar um EXCEL:

Esse excel vamos chama-lo de ZTESTE.

Na transao OAOR, importar um documento.

Duplo clique (Modo de Tabela):

E escolher o arquivo...

Clique em OK...Objeto criado:

Para chamar esse template, criar um programa ABAP (se38) com o onte abaixo:*&---------------------------------------------------------------------**&ReportZTESTE_EXCEL*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORTzteste_excel.

**************************************************************************INSTNCIAS**************************************************************************DATA:v_documentTYPEREFTOi_oi_document_proxy,v_spreadsheetTYPEREFTOi_oi_spreadsheet,v_controlTYPEREFTOi_oi_container_control,l_arqTYPEstring.

DATA:w_conteudoTYPEsoi_generic_item,w_rangesdefTYPEsoi_dimension_item,t_conteudoTYPEsoi_generic_table,t_rangesdefTYPEsoi_dimension_table.

*----------------------------------------------------------------------**ParametersandSelect-Options---------------------------------------**----------------------------------------------------------------------*SELECTION-SCREENBEGINOFBLOCKb1WITHFRAMETITLEtext-001.PARAMETERSp_nomeTYPEchar25.SELECTION-SCREENENDOFBLOCKb1.

*----------------------------------------------------------------------**AtSelection-Screen-------------------------------------------------**----------------------------------------------------------------------*ATSELECTION-SCREEN.

*----------------------------------------------------------------------**Initialization-----------------------------------------------------**----------------------------------------------------------------------*INITIALIZATION.

*----------------------------------------------------------------------**Start-Of-Selection--------------------------------------------------**----------------------------------------------------------------------*START-OF-SELECTION.

*CriaObjetoExcelPERFORMzf_gera_objetos_excel_oaor.

PERFORMzf_abre_layput.PERFORMzf_atualiza_infUSING:*nome:12p_nome.

l_arq='c:\temp\teste.xls'.

PERFORMzf_salva_unimed_tmUSINGl_arq.

END-OF-SELECTION.*&---------------------------------------------------------------------**&FormZF_ABRE_LAYPUT*&---------------------------------------------------------------------**text*----------------------------------------------------------------------**-->p1text*get_infoEXPORTINGclassname='SOFFICEINTEGRATION'classtype='OT'object_key='ZTESTE'CHANGINGcomponents=t_componentssignature=t_signatureEXCEPTIONSnothing_found=1error_kpro=2internal_error=3parameter_error=4not_authorized=5not_allowed=6.IFsy-subrcNE0.ENDIF.

*RetornaURLparaObjetoCALLMETHODl_bds_instance->get_with_urlEXPORTINGclassname='SOFFICEINTEGRATION'classtype='OT'object_key='ZTESTE'CHANGINGuris=t_urissignature=t_signatureEXCEPTIONSnothing_found=1error_kpro=2internal_error=3parameter_error=4not_authorized=5not_allowed=6.IFsy-subrcNE0.ENDIF.

*LeituraURLDocumentoREADTABLEt_componentsINTOw_componentsINDEX1.READTABLEt_urisINTOw_urisINDEX1.

CASEw_components-mimetype.WHEN'application/x-rtf'OR'text/rtf'.l_doc_format=soi_docformat_rtf.WHEN'application/x-oleobject'.l_doc_format=soi_docformat_compound.WHEN'text/plain'.l_doc_format=soi_docformat_text.WHENOTHERS.l_doc_format=soi_docformat_native.ENDCASE.

CALLMETHODc_oi_container_control_creator=>mime_to_oleEXPORTINGmimetype=w_components-mimetypeversion=l_versionIMPORTINGoletypes=t_oletypes.READTABLEt_oletypesINTOl_document_typeINDEX1.

*EncerradocumentoIFNOTv_documentISINITIAL.CALLMETHODv_document->close_document.ENDIF.

CALLMETHODv_control->get_document_proxyEXPORTINGdocument_type=l_document_typedocument_format=l_doc_formatregister_container='X'IMPORTINGdocument_proxy=v_documenterror=l_error.

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

*AbreURLCALLMETHODv_document->open_documentEXPORTINGdocument_url=w_uris-uriopen_inplace='X'open_readonly='X'protect_document=''IMPORTINGerror=l_error.

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

*CriaInterfacecomExcelCALLMETHODv_document->get_spreadsheet_interfaceIMPORTINGsheet_interface=v_spreadsheeterror=l_error.

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

ENDFORM."ZF_ABRE_LAYPUT

*&---------------------------------------------------------------------**&Formzf_atualiza_inf*&---------------------------------------------------------------------**text*----------------------------------------------------------------------**-->P_LINtext*-->P_COLtext*-->P_VALtext*----------------------------------------------------------------------*FORMzf_atualiza_infUSINGp_linTYPEanyp_colTYPEanyp_valTYPEany.

*VariveisLocaisDATA:l_val_fTYPEchar120.

IFNOTp_valISINITIAL.

*FormataCampoWRITEp_valTOl_val_f.CONDENSEl_val_f.CLEARw_conteudo.w_conteudo-column=p_col.w_conteudo-row=p_lin.w_conteudo-value=l_val_f.APPENDw_conteudoTOt_conteudo.

ENDIF.

ENDFORM."ZF_ATUALIZA_INF*&---------------------------------------------------------------------**&Formzf_salva_unimed_tm*&---------------------------------------------------------------------**text*----------------------------------------------------------------------**-->P_ARQtext*----------------------------------------------------------------------*FORMzf_salva_unimed_tmUSINGp_arqTYPEany.

*--------------------------------------------------------------------**Instncias*--------------------------------------------------------------------*DATA:l_errorTYPEREFTOi_oi_error.

*VariveisDATA:l_retcodeTYPEsoi_ret_string,l_file(1000)TYPEc.

*TabelaInternaLocalDATAt_rangesTYPEsoi_range_list.

l_file=p_arq.

REFRESH:t_rangesdef.

*AtualizaSadaparaAtualizaoLOOPATt_conteudoINTOw_conteudo.CLEARw_rangesdef.w_rangesdef-rows=1.w_rangesdef-columns=1.w_rangesdef-row=w_conteudo-row.w_rangesdef-column=w_conteudo-column.w_conteudo-row='1'.w_conteudo-column='1'.MODIFYt_conteudoFROMw_conteudoINDEXsy-tabix.APPENDw_rangesdefTOt_rangesdef.ENDLOOP.

*AtualizaPlanilhaCALLMETHODv_spreadsheet->set_ranges_dataEXPORTINGranges=t_rangescontents=t_conteudorangesdef=t_rangesdefIMPORTINGretcode=l_retcode.CALLMETHODc_oi_errors=>show_messageEXPORTINGtype='I'.

*SalvaArquivoCALLMETHODv_document->save_asEXPORTINGfile_name=l_fileno_flush=''prompt_user=''IMPORTINGretcode=l_retcode.

*fechadocumentov_document->close_document(EXPORTINGdo_save=abap_trueIMPORTINGerror=l_error).

ENDFORM."ZF_SALVA_UNIMED_TM*&---------------------------------------------------------------------**&FormZF_GERA_OBJETOS_EXCEL_OAOR*&---------------------------------------------------------------------**text*----------------------------------------------------------------------**-->p1text*get_container_control(IMPORTINGcontrol=v_controlerror=l_error).

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

*criacontainerCREATEOBJECTl_containerEXPORTINGcontainer_name='CONTAINER'EXCEPTIONScntl_error=1cntl_system_error=2create_error=3lifetime_error=4lifetime_dynpro_dynpro_link=5OTHERS=6.

IFsy-subrcNE0.MESSAGEe368(00)WITHtext-007.ENDIF.

*inicializacontrolesv_control->init_control(EXPORTINGinplace_enabled=abap_truer3_application_name='ExportExcel'parent=l_containerIMPORTINGerror=l_errorEXCEPTIONSjavabeannotsupported=1OTHERS=2).

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

*retornaoproxyparaodocumentov_control->get_document_proxy(EXPORTINGdocument_type=soi_doctype_excel_sheetIMPORTINGdocument_proxy=v_documenterror=l_error).

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

*criadocumentoexcelv_document->create_document(EXPORTINGdocument_title='ExportExcel'open_inplace=abap_trueIMPORTINGerror=l_error).

*casotenhafalhado,exibeamensagemdeerroIFl_error->has_failedEQabap_true.l_error->raise_message(type='E').ENDIF.

ENDFORM."ZF_GERA_OBJETOS_EXCEL_OAOR

Resultados:tela de seleo:Arquivo gerado: