Você está na página 1de 21

CLUSTER: So todas as tabelas que geram os encargos (clculos) da folha de pagamento.

RUBRICA: So os encargos propriamente ditos (frias, planos, INSS, etc..) na folha de pagamento. PROGRAMA: ZCM0204 Programa que o relatrio ALV usa cor como destaque. exemplps

FUNO para ler o CLUSTER: Z_HRCM_PAYROLL_RESULTS_GET. (nesse caso vc est lendo todas as tabelas do CLUSTER.) Tipos de dados standard para tabelas CHAR = Aceita todos os caracteres com no mximo 255 de comprimento. NUMC= Aceita somente nmeros de no mximo 255 posies. INT4 = Aceita nmeros inteiros de 4bytes Maximo de 10 posies. DEC = Campo de calculo ou montante com virgula para casas decimais, comprimento Maximo de 31 posies. String Sem limite de espao no possvel usar em chave de tabela. Exemplo Elementos de dados WERKS = um char4 CENTRO ou PLANTA. UNAME = um char12 USURIO. LAND1 = Pai. MANDT = n. do mandante. BUKRS = Cdigo Empresa. FUNES
HR_GB_DISPLAY_MASTER_DATA: Retornar a tela anterior (Exibindo). Usando o submit em um infotipo voc consegue retornar (back) para o prprio infotipo depois da visualizao do submit. HR_MASTERDATA_DIALOG: Retornar a tela anterior (Editando). Usando o submit em um infotipo voc consegue retornar (back) para o prprio infotipo depois da visualizao do submit 1DK_CALC_YEARS_BETWEEN_DATES: Funo para calcular idade. DATE_CHECK_PLAUSIBILITY: funo para validar se data est dentro do padro. TIME_CHECK_PLAUSIBILITY: funo para validar se horas est dentro do padro. CONVERT_DATE_TO_INTERNAL: Funo para converter data para modelo americano (1999/10/30 DAY_ATTRIBUTES_GET: Ver dias de feriados. SAP_CONVERT_TO_CSV_FORMAT = Gera arquivo de sada com ponto e virgula no formato csv. CATS_GET_TARGET_HOURS = Trs o calendrio de horrio de trabalho do funcionrio.

CONVERSION_EXIT_ALPHA_INPUT: preenche espaos com zeros.

RS_HDSYS_CALL_TC_VARIANT
'POPUP_WITH_TABLE_DISPLAY_OK' = exibir popup de ok para log. RH_READ_OBJECT = trs descrio da unidade organizacional e outras. SO_DOCUMENT_SEND_API1 = enviar email para SAP OFFICE. TH_POPUP = mensagem para usurio. RP_CALC_DATE_IN_INTERVAL = Calcula data com formulas. CALCULATE_DATE = Calcula datas
POPUP_TO_DISPLAY_TEXT = popup com boto continuar. POPUP_TO_CONFIRM = popup com botes de confirmaes.

CALL FUNC'SO_DOCUMENT_SEND_API1' DESTINATION 'NONE' = RFC envia email.


Faz com que o comando GET s preencha os infotipos com os dados do * Perodo selecionado na tela principal. rp_set_data_interval 'ALL' pn-begda pn-endda.

Classes / mtodos
CL_GUI_FRONTEND_SERVICES / mtodo DIRECTORY_BROWSER : informar somente diretrio de sada.

COMANDOS: rp-provide-from-last: Coloca em ordem o pernr, pegando o mais recente. rp-provide-from-last p0001 subty begda endda. &sap_edit = Incluir registro na se16n
SHIFT wa_otimo-matri LEFT DELETING LEADING '0'. : Retirar zeros a esquerda.

(EQ, =, NE, <>, ><, GE, >=, LE, <=, GT, >, LT, <).

PROGRAMA MODULO POOL: ZPY02155 - Z215011(MM) - ZPCBURZBR0PEFE(Funo %PEFE Leitura de Cluster)

TRANSAES SE93 = Criao de transao. SE11 = Criao de Tabelas, domnios, ajuda de pesquisa, viso de atualizao etc. SE16 = Criao de dados. SM30 = Atualizao de viso de tabela SE14 = ABAP dicionrio: Utilitrio BD, atualizao de tabelas. SM04 = Lista de usurio (Desconectar). SM12 = Selecionar entradas de bloqueio. SE71 = SAPSCRIPT. SE91 = Classe de mensagens. SE37 = Modulo de Funo. ZD30 = Cadastrar constantes. ZD31 = Cadastrar valores das contantes. (usar request customing) SE09 = Alterao de Request. SE24 = Classe Tipo de Objeto. (Criar, exibir e modificar) SM50 = Processar Visualizao. PE04 = Atualizao Funes e Operaes (Usada para funes HR) PC_payresult = Exibio de folha de pagamento. PC00_M37_CALC = Programa de calculo de folha de pagamento. (Tela de seleo) ST22 = Ver erro de execuo (DUMP). SU01 = Atualizao senha do usurio SAP. RZ10 = Processar Pefil. (Webdympro) SU21 = Criar objeto de autorizao. SE30 = Ver performance de programa. STMS_QA = transao para liberar request para produo. MODULO DE FUNO PARA ABRIR TRANSAO = RS_HDSYS_CALL_TC_VARIANT Passo para alterao de senha no SAP spro ->IMG ref. -> adm.pessoal -> amd.organizacional -> conf.globais -> adm.autorizao -> reg.meste do usiario. CONDIES CA = Contem algum dos caracteres no contedo o mesmo podendo ser char ou string. (exp. CA abcd o comando verifica se encontra algum das letras, ele pode encontrar uma ou mais ) CO = Contem apenas um caractere de um contedo. . (exp. CO , ou . o comando verifica se

encontra um s desses caracteres, ele pode encontrar somente um ) CN= V1 pode conter caracteres que no esto em v2 *TERMO: FieldCat = catalogo de campo, usado para exibir relatrio. TIPO DE CLASSE I = Informao S = Sucesso E = Erro W = Aviso = warning Exemplo Programa de ALV TRI: ZPY141 Exemplo Programa de com MACRO, ALV zebrada: ZCM0204 Logo tipo ALV:
* * * * * Para criar preencher: - Classe = - Objeto = - Item = um logotipo, deve-se entrar na transao 0FPM002 e PICTURES OT Nome do ID da figura

Exemplo apresentao de Soma e SubSoma automtica na ALV.


FORM z_tm_display_alv_report. gd_repid = sy-repid. t_sortalv-fieldname t_sortalv-tabname t_sortalv-group t_sortalv-subtot = APPEND t_sortalv. = 'PERNR'. = 't_output'. = 'X'. 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = gd_repid i_callback_top_of_page = 'Z_TOP_OF_PAGE' is_layout = gd_layout it_fieldcat = t_fieldcatalog[] i_save = 'X' it_sort = t_sortalv[] TABLES t_outtab = t_output EXCEPTIONS program_error = 1 OTHERS = 2.

Exemplo de programa.
tables: zfunc, zcargos. data: vc_cor(1) type c, v_cargo type zcargos-cargo. select-options: s_nome for zfunc-nome no intervals,

s_cargos for zfunc-cod_cargo no intervals, s_data for zfunc-data_admi. select * from zfunc where nome in s_nome and cod_cargo in s_cargos and data_admi in s_data. select single cargo from zcargos into v_cargo where cod_cargo = zfunc-cod_cargo. *Marcao Zebra. if vc_cor is initial. format color col_normal intensified off. vc_cor = 'x'. else. format color col_normal intensified on. vc_cor = ' '. endif. write: / zfunc-codfunc, zfunc-nome, zfunc-data_admi, 061 zfunccod_cargo, 071 v_cargo, 091 zfunc-salario. endselect. if sy-subrc <> 0. message w999 with 'Registro no encontrado.'(001). endif. *Cabealho. top-of-page. write: / 'Codigo', 'Funcionario', 049'Data Admis.', 061'Cod.', 071'C argo', 091'Salario'. uline.

_____________________________________________________________________________ Programa de orientao objeto (pecistente)


data: vc_cor(1) type c, v_cargo type zcargos-cargo, t_001 type table of zfunc, wa_001 type zfunc. select-options: s_nome for zfunc-nome no intervals, s_cargos for zfunc-cod_cargo no intervals, s_data for zfunc-data_admi. start-of-selection. select * from zfunc into table t_001 where nome in s_nome and cod_cargo in s_cargos and data_admi in s_data. *Marcao Zebra. if vc_cor is initial. format color col_normal intensified off. vc_cor = 'x'. else. format color col_normal intensified on. vc_cor = ' '. endif.

end-of-selection. loop at t_001 into wa_001. select single cargo from zcargos into v_cargo where cod_cargo = wa_001-cod_cargo. write: / wa_001-codfunc, wa_001-nome, wa_001-data_admi, 061 wa_001cod_cargo, 071 v_cargo, 091 wa_001-salario.

endloop. if sy-subrc <> 0. message w999 with 'Registro no encontrado.'(001). endif. *Cabealho. top-of-page. write: / 'Codigo', 'Funcionario', 049'Data Admis.', 061'Cod.', 071'C argo', 091'Salario'. uline.

REPORT

z_gp_popula_usuario MESSAGE-ID zgp.

TYPE-POOLS: vrm. DATA: t_status_usua TYPE osreftab. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01. PARAMETERS: p_nome TYPE zgp002-nome OBLIGATORY, p_dtnasc TYPE zgp002-dt_nasc. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02. PARAMETERS: p_logra p_numem p_compl p_bairro p_cidade p_estado p_cep p_pais TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE zgp002-logradouro, zgp002-numero, zgp002-complemento, zgp002-bairro, zgp002-cidade, zgp002-estado, zgp002-cep, zgp002-pais.

SELECTION-SCREEN END OF BLOCK b2. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03. PARAMETERS: p_email p_email2 p_telef p_telef2 TYPE TYPE TYPE TYPE zgp002-email, zgp002-email2, zgp002-telefone, zgp002-telefone2.

SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-t04. PARAMETERS: p_taxa TYPE zgp002-vlr_taxa, p_status TYPE zgp012nome AS LISTBOX VISIBLE LENGTH 50 OBLIGATORY. SELECTION-SCREEN END OF BLOCK b4. INITIALIZATION. PERFORM z_preenche_status_listbox. START-OF-SELECTION. PERFORM z_insere_dados. *&--------------------------------------------------------------------* *& Form z_preenche_status_listbox *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM z_preenche_status_listbox . CONSTANTS: c_vrm_id TYPE vrm_id VALUE 'P_STATUS'. DATA: o_query_man o_query o_ca_zgp012 o_zgp012 t_vrm_vl TYPE TYPE TYPE TYPE TYPE REF TO if_os_query_manager, REF TO if_os_query, REF TO if_os_ca_persistency, REF TO zcl_gp_os_zgp012, vrm_values.

FIELD-SYMBOLS: <fs_status_usua> LIKE LINE OF t_status_usua, <fs_vrm_vl> LIKE LINE OF t_vrm_vl. * Obtm o gerenciador de queries o_query_man = cl_os_query_manager=>get_query_manager( ). * Cria uma query para buscar todos os status de usurios (query sem fi ltros) o_query = o_query_man->create_query( ). * Obtm o agente da classe de status de usurios o_ca_zgp012 = zca_gp_os_zgp012=>agent. * Obtm todos os status de usurios t_status_usua = o_ca_zgp012->get_persistent_by_query( o_query ). * Preenche uma tabela com todos os nomes dos status de usurios para a listbox LOOP AT t_status_usua ASSIGNING <fs_status_usua>. o_zgp012 ?= <fs_status_usua>. APPEND INITIAL LINE TO t_vrm_vl ASSIGNING <fs_vrm_vl>.

<fs_vrm_vl>-key = o_zgp012->get_nome( ). * Se o status de usurio o DEFAULT, inicializa a varivel de tela IF NOT o_zgp012->get_flg_default( ) IS INITIAL. p_status = <fs_vrm_vl>-key. ENDIF. ENDLOOP. * Preenche a listbox com os status de usurios CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = c_vrm_id values = t_vrm_vl EXCEPTIONS id_illegal_name = 1 OTHERS = 2. ENDFORM. " z_preenche_status_listbox

*&--------------------------------------------------------------------* *& Form z_insere_dados *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * --> p1 text * <-- p2 text *---------------------------------------------------------------------* FORM z_insere_dados. DATA: o_zgp002 o_agente wa_zgp002 o_zgp012 TYPE TYPE TYPE TYPE REF TO zcl_gp_os_zgp002, REF TO zca_gp_os_zgp002, zgp002, REF TO zcl_gp_os_zgp012.

FIELD-SYMBOLS: <fs_status_usua> LIKE LINE OF t_status_usua. o_agente = zca_gp_os_zgp002=>agent. o_zgp002 ?= o_agente->if_os_factory~create_persistent( ). * * * * * * * * * * * * * * * o_zgp002->set_nome( p_nome ). o_zgp002->set_logradouro( p_logra ). o_zgp002->set_numero( p_numem ). o_zgp002->set_complemento( p_compl ). o_zgp002->set_bairro( p_bairro ). o_zgp002->set_cidade( p_cidade ). o_zgp002->set_estado( p_estado ). o_zgp002->set_cep( p_cep ). o_zgp002->set_pais( p_pais ). o_zgp002->set_email( p_email ). o_zgp002->set_email2( p_email2 ). o_zgp002->set_telefone( p_telef ). o_zgp002->set_telefone2( p_telef2 ). o_zgp002->set_dt_nasc( p_dtnasc ). o_zgp002->set_vlr_taxa( p_taxa ). wa_zgp002-nome = p_nome. wa_zgp002-logradouro = p_logra.

wa_zgp002-numero = p_numem. wa_zgp002-complemento = p_compl. wa_zgp002-bairro = p_bairro. wa_zgp002-cidade = p_cidade. wa_zgp002-estado = p_estado. wa_zgp002-cep = p_cep. wa_zgp002-pais = p_pais. wa_zgp002-email = p_email. wa_zgp002-email2 = p_email2. wa_zgp002-telefone = p_telef. wa_zgp002-telefone2 = p_telef2. wa_zgp002-dt_nasc = p_dtnasc. wa_zgp002-vlr_taxa = p_taxa. o_zgp002->map_from_struct( wa_zgp002 ). * Atribui o status para o usurio criado LOOP AT t_status_usua ASSIGNING <fs_status_usua>. o_zgp012 ?= <fs_status_usua>. IF o_zgp012->get_nome( ) = p_status. o_zgp002->set_cod_status( o_zgp012 ). EXIT. ENDIF. ENDLOOP. COMMIT WORK. MESSAGE s000.

PROGRAMA VALIDAO RAGE CONSTANTS: c_persg TYPE string VALUE 'IEQ1;IEQ3;IEQ4;IEQ5;IEQJ;IEQN;IE QW'. SPLIT c_persg AT ';' INTO TABLE r_persg1.

_____________________________________________________________________________
EXEMPLO SUBMIT PARA VISUALIZAR TELA DE OUTRO PROGRAMA: SUBMIT z4g3011 WITH xnrsol EQ t_zhr039_aux-lancamento_z4ga AND RETURN. ______________________________________________________________________ EXEMPLO BATCH INPUT: 1 Fazer mapeamento pelo shdb. 2 PERFORM bdc_dynpro

PERFORM bdc_field PERFORM bdc_field

USING 'SAPLMGMM' '0060'. USING 'BDC_OKCODE' '/00'. USING 'RMMG1-MATNR' t_entrada-codigo.

PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field

USING 'SAPLMGMM' '0070'. USING 'BDC_OKCODE' '=ENTR'. USING 'MSICHTAUSW-KZSEL(01)'

'X'. PERFORM bdc_dynpro PERFORM bdc_field PERFORM bdc_field USING 'SAPLMGMM' '4004'. USING 'BDC_OKCODE' '=SP02'. USING 'MARA-BISMT' t_entrada-codigo_antigo.

Segundo exemplo de batch input Usando Macro.


DATA: x_bdcdata LIKE STANDARD TABLE OF bdcdata WITH HEADER LINE, wa_ctu_params TYPE ctu_params. DEFINE bdcdynp. clear x_bdcdata. x_bdcdata-program = &1. x_bdcdata-dynpro = &2. x_bdcdata-dynbegin = 'X'. append x_bdcdata. END-OF-DEFINITION. DEFINE bdcdata. clear x_bdcdata. x_bdcdata-fnam = &1. x_bdcdata-fval = &2. append x_bdcdata. END-OF-DEFINITION. REFRESH x_bdcdata. bdcdynp: 'SAPMH5A0' '1000'. bdcdata: 'PPHDR-PLVAR' lt_7404-plvar, 'PPHDR-OTYPE' lt_7404-otype, 'PM0D1-SEARK' lt_7404-objid, 'PPHDR-INFTY' '7404', 'PPHDR-ISTAT' lt_7404-istat, 'PPHDR-BEGDA' lt_7404-begda, 'PPHDR-ENDDA' lt_7404-endda. bdcdynp: 'MP740400' '2000'. bdcdata: 'P7404-BEGDA' lt_7404-begda, 'P7404-ENDDA' lt_7404-endda, 'P7404-EDUCATION_TYPE' lt_7404-education_type, 'P7404-EDUCATION_FIELD' lt_7404-education_field, 'P7404-INSTITUTE' lt_7404-institute, 'P7404-COUNTRY' lt_7404-country. * PPHDX-ENTRY_IDX' * record-ENTRY_IDX_015. CLEAR: wa_ctu_params. wa_ctu_params-dismode = 'A'. wa_ctu_params-updmode = 'A'. * Cria um novo IT0008 na data do acordo coletivo CALL TRANSACTION 'PA30' USING x_bdcdata OPTIONS FROM wa_ctu_params.

EXEMPLO PARA RETIRAR CAMPOS DE UMA PNP (banco de dados lgicos HR).
AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. CASE screen-name. WHEN 'PNPTIMR1' OR 'PNPTIMR2' OR 'PNPTIMR3' OR 'PNPTIMR4' OR 'PNPTIMR5' OR '%FDPS110_1000' OR '%FBIS113_1000' OR 'PNPBEGPS' OR 'PNPENDPS'. screen-input = '0'.

screen-invisible = 1. MODIFY SCREEN. ENDCASE. ENDLOOP. EXEMPLO PARA DEIXAR CAMPO NO EDITAVEL, S EXIBIO. LOOP AT SCREEN. IF screen-name = 'P_NOM'. screen-input = 0. MODIFY SCREEN. ENDIF. ENDLOOP. IF p_tranp IS INITIAL. CLEAR p_nom. ENDIF. *Fim Desabilitar campos dependendo do radiobutton selecionado. ( o radiobutton precisa ter um user-command para programa report. P_xxx radiobutton xxx user-command teste. )( programa de exemplo ZPY0251) AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF screen-name = 'P_ARQ_S'. IF p_crdbrf = 'X'. screen-input = '0'. ELSE. screen-input = '1'. ENDIF. MODIFY SCREEN. ENDIF. ENDLOOP. Focar somente no campo que seja obrigatrio desabilitando momentaneamente os outros campos. ( programa de exemplo ZPY0251) AT SELECTION-SCREEN ON p_per. IF p_per IS INITIAL AND sy-ucomm <> 'XLOCAL' . MESSAGE e999 WITH text-035. ENDIF. AT SELECTION-SCREEN ON p_arq_e. IF p_arq_e IS INITIAL AND sy-ucomm <> 'XLOCAL'. MESSAGE e999 WITH text-036. ENDIF. ---------------------------------------------------------------------EXEMPLO VISO NO REPORT(QUANDO COLOCAR UM CODIGO NO CAMPO ASSIM QUE PRECIOSADO ENTER TRAZ O NOME E APRESENTA NA TELA.):

AT SELECTION-SCREEN ON VALUE-REQUEST FOR CAMPO.

HABILITAR E DESABILITAR CAMPOS NA TELA DE SELEO DEPENDENDO DE QUAL CHECKBOX FOR MARCADO (REPORT). Programa: Z582071D AT SELECTION SCREEN
IF cb_mono = ' '. LOOP AT SCREEN. CASE screen-name. WHEN 'P_GUIA' OR 'P_TRANP'. screen-input = '0'. screen-active = 1. MODIFY SCREEN.

ENDCASE. ENDLOOP. ELSE. LOOP AT SCREEN. CASE screen-name. WHEN 'P_WERKS'. screen-input = '0'. MODIFY SCREEN. WHEN 'P_DATA'. screen-input = '0'. MODIFY SCREEN. WHEN 'P_TKNUM'. screen-input = '0'. MODIFY SCREEN. WHEN 'P_MBLNR'. screen-input = '0'. MODIFY SCREEN. WHEN 'P_IMPR'. screen-input = '0'. MODIFY SCREEN. ENDCASE. ENDLOOP. ENDIF. ---------------------------------------------------------------------FUNO PARA INCLUIR OU EXCLUIR REGISTROS DA TEVEN. CALL FUNCTION 'HR_TMW_DB_UPDATE_TEVENT' TABLES del_teven = t_teven_u ins_teven = t_teven_i del_teven_more = t_teven_m ins_teven_more = t_teven_m EXCEPTIONS insert_failed = 1 update_failed = 2 OTHERS = 3. FUNO GERAR MARCH CODE PARA BUSCA DO Diretrio de arquivo (LOCAL OU SERVIDOR): F4_DXFILENAME_TOPRECURSION obs: O CAMPO ONDE IR RECEBER O DIRETRIO DEVE SER DECLARADO DA SEGUINTE FORMA p_filename LIKE dxfields-longpath DATA: v_onde TYPE c. IF p_server IS INITIAL. v_onde = 'P'. " arquivo local ELSE. v_onde = 'A'. " arquivo no servidor ENDIF. * Parmetros da funo F4_DXFILENAME_TOPRECURSION: * i_location_flag * space --> exibe popup perguntando se o arquivo local ou no servidor

* 'P' --> arquivo local * 'A' --> arquivo no servidor * i_server (s relevante se o arquivo for no servidor) * space --> usa o servidor default * '?' --> exibe popup perguntando o nome do servidor a ser utilizado * fileoperation (s relevante se i_location_flag = space) * 'R' --> exibe popup perguntando "Onde ler o arquivo?" * 'W' --> exibe popup perguntando 'Onde gravar o arquivo?" * o_path --> retorna o caminho a ser usado: * 1) pela GUI_DOWNLOAD se for arquivo local ou * 2) pelo OPEN DATASET se for arquivo no servidor

CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION' EXPORTING i_location_flag = v_onde i_server = space fileoperation = 'W' IMPORTING o_path = p_arq EXCEPTIONS rfc_error = 1 error_with_gui = 2 OTHERS = 3. IF sy-subrc NE 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. USANDO PROGRAMAO DINAMICA / Programa ZPY0253 FIELD-SYMBOLS: <fs_pernr> TYPE e_detalhe_cred-pernr, <fs_rubrica> TYPE e_detalhe_cred-nrrub, <fs_detalhe_cred> LIKE LINE OF t_detalhe_cred, <fs_cdret> TYPE e_detalhe_cred-cdret. LOOP AT t_detalhe_cred ASSIGNING <fs_detalhe_cred>. CLEAR: vl_mes, vl_ano, vl_contrato, vl_pernr, vl_rubrica, vl_cdret.

vl_pernr = 'PERNR'. vl_rubrica = 'NRRUB'. vl_cdret = 'CDRET'. * Ms e Ano. vl_mes = <fs_detalhe_cred>-anomes+4(2). vl_ano = <fs_detalhe_cred>-anomes+0(4). * Numero do contrato CONCATENATE <fs_detalhe_cred>-numemp <fs_detalhe_cred>-seqemp INTO vl_contrato. * Verificando Titular ou Avalista - Invlido ou desligado. DO 6 TIMES. vl_index = sy-index. ASSIGN COMPONENT vl_pernr OF STRUCTURE <fs_detalhe_cred> TO <fs_ pernr>. IF sy-subrc = 0 AND <fs_pernr> IS NOT INITIAL. CLEAR wa_saida. wa_saida-cdbanco wa_saida-cdpernr wa_saida-cdcontrato wa_saida-dtano wa_saida-dtmes = = = = = 'CREDIBRF'. <fs_pernr>. vl_contrato. vl_ano. vl_mes.

ASSIGN COMPONENT vl_rubrica OF STRUCTURE <fs_detalhe_cred> TO <fs_rubrica>. IF sy-subrc = 0. wa_saida-cdlgart ENDIF.

= <fs_rubrica>.

wa_saida-vlnumparc = <fs_detalhe_cred>-parcob. wa_saida-qtparcela = <fs_detalhe_cred>-numpar. vl_campo = <fs_detalhe_cred>-vlrfun. WRITE vl_campo TO <fs_detalhe_cred>vlrfun CURRENCY 'BRL' DECIMALS 2. CONDENSE <fs_detalhe_cred>-vlrfun NO-GAPS. REPLACE ALL OCCURRENCES OF '.' IN <fs_detalhe_cred>vlrfun WITH ''. REPLACE ALL OCCURRENCES OF ',' IN <fs_detalhe_cred>vlrfun WITH '.'. wa_saida-vlparcela = <fs_detalhe_cred>-vlrfun. wa_saida-vlsaldodvd = '0'. READ TABLE lt_0003 INTO wa_0003 WITH KEY pernr = <fs_pernr>. IF sy-subrc = 0 AND vl_pernr = 'PERNR'. wa_saida-desitemp = 'Funcionrio no encontrado'. wa_saida-cdmotivst = '04'. MODIFY zhr137 FROM wa_saida. ELSEIF sy-subrc = 0 AND vl_pernr <> 'PERNR'. wa_saida-desitemp wa_saida-cdmotivst = 'Avalista no encontrado'. = '04'.

MODIFY zhr137 FROM wa_saida. ELSE. READ TABLE lt_0000 INTO wa_0000 WITH KEY pernr = <fs_detalhe _cred>-pernr. IF sy-subrc = 0 AND vl_pernr = 'PERNR'. wa_saida-desitemp = 'Funcionrio demitido'. wa_saida-cdmotivst = '05'. MODIFY zhr137 FROM wa_saida. ELSEIF sy-subrc = 0 AND vl_pernr <> 'PERNR'. wa_saida-desitemp = 'Avalista demitido'. wa_saida-cdmotivst = '05'. MODIFY zhr137 FROM wa_saida. ELSE. ASSIGN COMPONENT vl_cdret OF STRUCTURE <fs_detalhe_cred> T O <fs_cdret>. IF sy-subrc = 0. <fs_cdret> = '01'. ENDIF. ENDIF. ENDIF. ENDIF. vl_pernr+5(1) = vl_index. vl_rubrica+5(1) = vl_index. vl_cdret+5(1) = vl_index. ENDDO. LER ARQUIVO EXCEL:
* Funoes para gerar arquivo excel

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT' EXPORTING i_filename = p_dwload TABLES i_tab_sap_data = tab_excel EXCEPTIONS conversion_failed = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT' EXPORTING file_name = p_dwload data_sheet_name = sheet_name TABLES data_tab = tab_excel EXCEPTIONS file_not_exist = 1 filename_expected = 2 communication_error = 3 ole_object_method_error = 4 ole_object_property_error = 5 invalid_filename = 6 invalid_pivot_fields = 7 download_problem = 8 OTHERS = 9.

*Funo para ler planilha excel * Carregar a planilha do excel Func com Escalas Turmas CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING i_line_header = 'X' i_tab_raw_data = it_raw i_filename = p_uploa1 TABLES i_tab_converted_data = t_func_esc EXCEPTIONS conversion_failed = 1 OTHERS = 2. * L 2 arquivo CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = p_uploa2 i_begin_col = 1 i_begin_row = 1 i_end_col = 14 i_end_row = 999999 TABLES intern = t_excel EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3.

Quando o campo for numrico o excel ignora os zeros a esquerda e direita tem q concatenar uma aspas simples para o excel considerar como caracter o campo CONCATENATE '''' wa_arquivo-inter INTO wa_ine_excel-f2.

Para todo tipo de datos: EQ =, NE <> ><, LT <, LE <=, GT >, GE >=. Para tipos alfanumricos y numricos: Se usan para comparaciones, aparte de los anteriores. CO (contiene slo ...), CN (no contiene slo ...), CA (contiene algn ...), NA (no contiene algn ...) , CS (contiene el string ...), NS (no contiene el string ...), CP (contiene el pattern ...), NP (no contiene el pattern ...). Para bits: O (los bits son "1"), Z (los bits son "0"), M (los bits son "0" y "1"). Operaciones lgicas especiales: Rango: operando1 BETWEEN operando2 ANDoperando3. Los valores lmite del rango[ operando1, operando2 ] son inclusive. Esta operacin lgica devuelve cierto s y slo s operando2 <= operando1 <= operando3.

Tratando exceo TRY . l_num = s_linhas+l_posit(4). IF NOT s_linhas+l_posit(4) IN s_cat. RAISE EXCEPTION cx_sy_conversion_no_number. ENDIF. CATCH cx_sy_conversion_no_number. l_tabix = sy-tabix. DELETE t_linhas INDEX l_tabix. CONTINUE. ENDTRY. --------------------------------------------------------------** Separar por ; tabela alimentao. * * IF t_saida_ali IS NOT INITIAL. MOVE t_saida_ali TO t_export_ali.

* * * ** *

CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT' EXPORTING i_field_seperator I_LINE_HEADER i_filename Append = = vl_file_ali_aux = 'X' = ' ' = vl_ponto

** * * *

I_APPL_KEEP TABLES i_tab_sap_data ENDIF.

= t_export_ali.

** Separar por ; tabela refeio. * * * * * ** * ** * * * * * * * ENDIF. ENDIF. IF t_saida_ref IS NOT INITIAL. MOVE t_saida_ref TO t_export_ref. CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT' EXPORTING i_field_seperator I_LINE_HEADER i_filename I_APPL_KEEP TABLES i_tab_sap_data IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. = t_export_ref. = = vl_file_ref_aux = ' ' = vl_ponto

*Macro que INFOTYPE OPERATION DEFINE mc_hr_infotype_operation. data wa_return_aux type bapireturn1 . call function 'BAPI_EMPLOYEE_ENQUEUE' exporting number = &2 importing return = wa_return_aux. if wa_return_aux-type eq 'E'. message e593(zhr) with &2 . endif. call function 'HR_INFOTYPE_OPERATION' exporting

infty = &1 number = &2 subtype = &3 validityend = &4 validitybegin = &5 record = &6 operation = &7 recordnumber = &8 importing return = wa_return_aux. call function 'BAPI_EMPLOYEE_DEQUEUE' exporting number = &2. commit work. if wa_return_aux-type eq 'E' or wa_return_aux-type eq 'A'. message s256(zhr) with wa_return_aux-message &1 display like 'E'. else. message s429(zhr). endif. END-OF-DEFINITION. CHAMADA DA MACRO = mc_hr_infotype_operation c_0007 wa_func-pernr space l_p0007-endda l_p0007-begda l_p0007 c_ins 0.

Lgica p/ ler RGDIR no perodo selecionado. (RGDIR = verificao se o funcionrio tem cluster para ler no perid.selecionado, isso evita ler cluster sem necessidade. CONSTANTS: c_actual_record LIKE pc261-srtza VALUE 'A'. * Define RGDIR auxiliar tables. DEFINE def_rgdir. data: begin of &1 occurs 50. include structure pc261. data: end of &1. END-OF-DEFINITION. * Define AUX_RT table DATA aux_rt LIKE rt OCCURS 150 WITH HEADER LINE. * Define the RGDIR tables result of the functions def_rgdir rgdir_selected_dates. p_cls_retu = 0. * Function CU_READ_RGDIR CALL FUNCTION 'CU_READ_RGDIR' EXPORTING persnr = p_pernr_pernr TABLES in_rgdir = rgdir EXCEPTIONS no_record_found = 1 OTHERS = 2. IF sy-subrc NE 0. p_cls_retu = pbr99_error. ENDIF. * Cd_select_void function IF p_cls_retu = 0. CALL FUNCTION 'CD_READ_DATE_RANGE_ACTUAL_NV' EXPORTING begda = p_d_from endda = p_d_until

TABLES rgdir_in = rgdir rgdir_out = rgdir_selected_dates. ENDIF. * cd_select_srtza IF p_cls_retu = 0. CALL FUNCTION 'CD_SELECT_SRTZA' EXPORTING record_type = c_actual_record TABLES in_rgdir = rgdir_selected_dates out_rgdir = new_rgdir EXCEPTIONS OTHERS = 1. IF sy-subrc NE 0. p_cls_retu = 4. ENDIF. ENDIF. Macro para ALV. DEFINE cria_field_cat. fieldcatalog-fieldname = &1. fieldcatalog-seltext_m = &2. fieldcatalog-col_pos = &3. fieldcatalog-outputlen = &4. fieldcatalog-emphasize = &5. fieldcatalog-edit = &6. append fieldcatalog to fieldcatalog. clear fieldcatalog. END-OF-DEFINITION. DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE, gd_layout TYPE slis_layout_alv. cria_field_cat cria_field_cat cria_field_cat cria_field_cat cria_field_cat cria_field_cat cria_field_cat 'OBJECT_ID' 'DESCRIPTION' 'DATE1' 'DATE2' 'STATUS' 'RESPONSAVEL' 'DESCRICAO' 'Obj_Id' 'Descrio' 'Data1' 'Data2' 'Status' 'Responsavel' 'Descrio' 1 2 3 4 5 6 7 10 20 10 10 15 10 10 'X' 'X' 'X' 'X' 'X' 'X' 'X' 'X'. 'X'. 'X'. 'X'. 'X'. 'X'. 'X'.

gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. gd_layout-header_text = 'Tarefas'. Obter campo "condio de pagamento" da tela. FIELD-SYMBOLS <FS_ZTERM> TYPE ANY. FIELD-SYMBOLS <FS_BLDAT> TYPE ANY. * Obter campo "condio de pagamento" da tela. ASSIGN ('(SAPLFDCB)INVFO-ZTERM') TO <FS_ZTERM>. * Obter campo "data da fatura" da tela.

ASSIGN ('(SAPLFDCB)INVFO-BLDAT') TO <FS_BLDAT>. * Obter campo "empresa" da tela. GET PARAMETER ID 'BUK' FIELD v_bukrs. Funo para pegar campos da tela. Exemplo. MOVE input TO v_mktl. v_campo = 'RM06E-EPSTP'. v_prog v_tela = sy-cprog. = sy-dynnr.

v_num = STRLEN( v_mktl ).

CALL FUNCTION 'GET_DYNP_VALUE' EXPORTING i_field = v_campo i_repid = v_prog i_dynnr = v_tela CHANGING o_value = v_campo1. Programa ZSUFIR_ZMRE3 de modelo: Opo de Layout de ALV na tela de seleo. DATA: wa_variant TYPE disvariant.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout. PERFORM f_layout_alv. FORM f_layout_alv. wa_variant-report = sy-repid. CALL FUNCTION 'REUSE_ALV_VARIANT_F4' EXPORTING is_variant = wa_variant i_save = 'A' IMPORTING es_variant = wa_variant EXCEPTIONS AT SELECTION-SCREEN. wa_variant-variant = p_layout.

Preencher com zeros a esquerda.


SHIFT vteste RIGHT DELETING TRAILING SPACE. OVERLAY vteste WITH '0000'.

Select dinmico.

DATA: vl_line(72) TYPE c, vl_list LIKE TABLE OF line. * Obter ms para buscar valores correspondentes. CONCATENATE vg_fix p_perid+1(2) INTO vg_mes. * Monta campos dinmicos para seleo. vl_line = 'OBJNR'. vl_line+6 = vg_mes. APPEND vl_line TO vl_list. * Selecionar Oobjeto CO: totais de custos - lanamentos externos SELECT (vl_list) FROM cosp INTO TABLE t_cosp WHERE ( objnr LIKE 'KS%' OR objnr LIKE 'OR%' ) AND ( gjahr = p_exerc AND wrttp = p_wrttp AND versn = p_versao ). POSICIONAR CAMPOS LATERAIS NA TELA DE SELEO. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 01. PARAMETERS rb_alv RADIOBUTTON GROUP a2. SELECTION-SCREEN COMMENT 03(10) FOR FIELD rb_alv. SELECTION-SCREEN COMMENT 25(07) FOR FIELD p_layout. PARAMETERS p_layout TYPE disvariant-variant. "Layout exibir ALV. SELECTION-SCREEN END OF LINE.

PASSANDO ESTRUTURA PS PARA ESTRUTURA DE UM INFOTIPO. FIELD-SYMBOLS <fs_p9167> TYPE p9167. ASSIGN ('PS') TO <fs_p9167> CASTING.

Criar boto na tela sem usar status_gui. Exemplo: SELECTION-SCREEN: FUNCTION KEY 1. "Declarao do Boto INITIALIZATION. * Estrutura para descrever o boto DATA: wa_button TYPE smp_dyntxt. * Nome do Boto wa_button-text cone do Boto wa_button-icon_id

= text-029.

= icon_calculation .

Texto que aparecer ao lado do cone (pode ser vazio) wa_button-icon_text = text-029. Quickinfo (aparece quando o user passar o mouse sobre o botao) wa_button-quickinfo = text-029. Associa essas propriedades com a funo 1

sscrfields-functxt_01 = wa_button. CLEAR wa_button.