CLUSTER: São todas as tabelas que geram os encargos (cálculos) da folha de pagamento. RUBRICA: São os encargos propriamente ditos (férias, planos, INSS, etc..) na folha de pagamento.
PROGRAMA: ZCM0204 – Programa que o relatório ALV usa cor como destaque.exemplps
FUNÇÃO 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 máximo 255 de comprimento.
NUMC= Aceita somente números de no máximo 255 posições.
INT4 = Aceita números inteiros de 4bytes Maximo de 10 posições.
DEC = Campo de calculo ou montante com virgula para casas decimais, comprimento Maximo de 31 posições.
String – Sem limite de espaço não é possível usar em chave de tabela.
Exemplo Elementos de dados
WERKS = é um char4 “CENTRO” ou “PLANTA.UNAME = é um char12 “USUÁRIO”.LAND1 = Pai.MANDT = n. do mandante.BUKRS = Código Empresa.
FUNÇÕES
HR_GB_DISPLAY_MASTER_DATA : Retornar a tela anterior (Exibindo). Usando o submit em um infotipo você consegue retornar (back) para o próprio infotipo depois da visualização do submit. HR_MASTERDATA_DIALOG : Retornar a tela anterior (Editando). Usando o submit em um infotipo você consegue retornar (back) para o próprio infotipo depois da visualização do submit1DK_CALC_YEARS_BETWEEN_DATES: Função para calcular idade.DATE_CHECK_PLAUSIBILITY: função para validar se data está dentro do padrão.TIME_CHECK_PLAUSIBILITY: função para validar se horas está dentro do padrão.CONVERT_DATE_TO_INTERNAL: Função para converter data para modelo americano (1999/10/30DAY_ATTRIBUTES_GET: Ver dias de feriados. SAP_CONVERT_TO_CSV_FORMAT = Gera arquivo de saída com ponto e virgula no formato csv.CATS_GET_TARGET_HOURS = Trás o calendário de horário de trabalho do funcionário.
CONVERSION_EXIT_ALPHA_INPUT: preenche espaços com zeros.
RS_HDSYS_CALL_TC_VARIANT'POPUP_WITH_TABLE_DISPLAY_OK' = exibir popup de ok para log.RH_READ_OBJECT = trás descrição da unidade organizacional e outras.SO_DOCUMENT_SEND_API1 = enviar email para SAP OFFICE.TH_POPUP = mensagem para usuário.RP_CALC_DATE_IN_INTERVAL = Calcula data com formulas.CALCULATE_DATE = Calcula datasPOPUP_TO_DISPLAY_TEXT = popup com botão continuar.POPUP_TO_CONFIRM = popup com botões de confirmações.
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* Período selecionado na tela principal.rp_set_data_interval 'ALL' pn-begda pn-endda.
Classes / métodosCL_GUI_FRONTEND_SERVICES / método DIRECTORY_BROWSER : informar somente diretório de saída.
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 se16nSHIFT wa_otimo-matri LEFT DELETING LEADING '0'. : Retirar zeros a esquerda.
(EQ, =, NE, <>, ><, GE, >=, LE, <=, GT, >, LT, <).
PROGRAMA MODULO POOL: ZPY02155 - Z215011(MM) - ZPCBURZBR0PEFE(Função %PEFE – Leitura de Cluster)
TRANSAÇÕES
SE93 = Criação de transação.SE11 = Criação de Tabelas, domínios, ajuda de pesquisa, visão de atualização etc.SE16 = Criação de dados.SM30 = Atualização de visão de tabelaSE14 = ABAP dicionário: Utilitário BD, atualização de tabelas.SM04 = Lista de usuário (Desconectar).SM12 = Selecionar entradas de bloqueio.SE71 = SAPSCRIPT.SE91 = Classe de mensagens.SE37 = Modulo de Função.ZD30 = Cadastrar constantes.ZD31 = Cadastrar valores das contantes. (usar request customing)SE09 = Alteração de Request.SE24 = Classe Tipo de Objeto. (Criar, exibir e modificar)SM50 = Processar Visualização.PE04 = Atualização Funções e Operações (Usada para funções HR)PC_payresult = Exibição de folha de pagamento.PC00_M37_CALC = Programa de calculo de folha de pagamento. (Tela de seleção)ST22 = Ver erro de execução (DUMP). SU01 = Atualização senha do usuário SAP.RZ10 = Processar Pefil. (Webdympro)SU21 = Criar objeto de autorização.SE30 = Ver performance de programa.STMS_QA = transação para liberar request para produção.
MODULO DE FUNÇÃO PARA ABRIR TRANSAÇÃO = RS_HDSYS_CALL_TC_VARIANT
Passo para alteração de senha no SAPspro ->IMG ref. -> adm.pessoal -> amd.organizacional -> conf.globais -> adm.autorização -> reg.meste do usiario.
CONDIÇÕES
CA = Contem algum dos caracteres no conteúdo 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 conteúdo. . (exp. CO “, ” ou “.” o comando verifica se
encontra um só desses caracteres, ele pode encontrar somente um )CN= V1 pode conter caracteres que não estão em v2
*TERMO: FieldCat = catalogo de campo, usado para exibir relatório.
TIPO DE CLASSE
I = InformaçãoS = SucessoE = ErroW = Aviso = warning
Exemplo Programa de ALV TRI: ZPY141
Exemplo Programa de com MACRO, ALV zebrada: ZCM0204
Logo tipo ALV:
* Para criar um logotipo, deve-se entrar na transação 0FPM002 e* preencher:* - Classe = PICTURES* - Objeto = OT* - Item = Nome do ID da figura
Exemplo apresentação de Soma e SubSoma automática na ALV.
FORM z_tm_display_alv_report.
gd_repid = sy-repid.
t_sortalv-fieldname = 'PERNR'. t_sortalv-tabname = 't_output'. t_sortalv-group = 'X'. t_sortalv-subtot = 'X'. APPEND t_sortalv.
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.
*Marcação 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 zfunc-cod_cargo, 071 v_cargo, 091 zfunc-salario.endselect.
if sy-subrc <> 0. message w999 with 'Registro não encontrado.'(001). endif.
*Cabeçalho.top-of-page. write: / 'Codigo', 'Funcionario', 049'Data Admis.', 061'Cod.', 071'Cargo', 091'Salario'. uline.
_____________________________________________________________________________Programa de orientação 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.
*Marcação 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_001-cod_cargo, 071 v_cargo, 091 wa_001-salario.
endloop.
if sy-subrc <> 0. message w999 with 'Registro não encontrado.'(001). endif.
*Cabeçalho.top-of-page. write: / 'Codigo', 'Funcionario', 049'Data Admis.', 061'Cod.', 071'Cargo', 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 TYPE zgp002-logradouro, p_numem TYPE zgp002-numero, p_compl TYPE zgp002-complemento, p_bairro TYPE zgp002-bairro, p_cidade TYPE zgp002-cidade, p_estado TYPE zgp002-estado, p_cep TYPE zgp002-cep, p_pais TYPE zgp002-pais.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
PARAMETERS: p_email TYPE zgp002-email, p_email2 TYPE zgp002-email2, p_telef TYPE zgp002-telefone, p_telef2 TYPE 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 zgp012-nome 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 TYPE REF TO if_os_query_manager, o_query TYPE REF TO if_os_query, o_ca_zgp012 TYPE REF TO if_os_ca_persistency, o_zgp012 TYPE REF TO zcl_gp_os_zgp012, t_vrm_vl TYPE vrm_values.
FIELD-SYMBOLS: <fs_status_usua> LIKE LINE OF t_status_usua, <fs_vrm_vl> LIKE LINE OF t_vrm_vl.
* Obtém o gerenciador de queries o_query_man = cl_os_query_manager=>get_query_manager( ).
* Cria uma query para buscar todos os status de usuários (query sem filtros) o_query = o_query_man->create_query( ).
* Obtém o agente da classe de status de usuários o_ca_zgp012 = zca_gp_os_zgp012=>agent.
* Obtém todos os status de usuários t_status_usua = o_ca_zgp012->get_persistent_by_query( o_query ).
* Preenche uma tabela com todos os nomes dos status de usuários 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 usuário é o DEFAULT, inicializa a variável 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 usuários 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 TYPE REF TO zcl_gp_os_zgp002, o_agente TYPE REF TO zca_gp_os_zgp002, wa_zgp002 TYPE zgp002, o_zgp012 TYPE 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 usuário 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 VALIDAÇÂO RAGE
CONSTANTS: c_persg TYPE string VALUE 'IEQ1;IEQ3;IEQ4;IEQ5;IEQJ;IEQN;IEQW'. 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 USING 'SAPLMGMM' '0060'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'RMMG1-MATNR' t_entrada-codigo.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'. PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'. PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)' 'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'. PERFORM bdc_field USING 'BDC_OKCODE' '=SP02'. PERFORM bdc_field 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 lógicos 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 NÃO EDITAVEL, SÓ EXIBIÇÃO. LOOP AT SCREEN. IF screen-name = 'P_NOM'. screen-input = 0. MODIFY SCREEN. ENDIF. ENDLOOP. IF p_tranp IS INITIAL. CLEAR p_nom. ENDIF.*FimDesabilitar 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 obrigatório 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 VISÃO 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 SELEÇÃO 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.----------------------------------------------------------------------
FUNÇÃO 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.
FUNÇÃO GERAR MARCH CODE PARA BUSCA DO Diretório de arquivo (LOCAL OU SERVIDOR): F4_DXFILENAME_TOPRECURSION
obs: O CAMPO ONDE IRÁ RECEBER O DIRETÓRIO 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.
* Parâmetros da função 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 PROGRAMAÇÃO 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'.
* Mês 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 - Inválido 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 = 'CREDIBRF'. wa_saida-cdpernr = <fs_pernr>. wa_saida-cdcontrato = vl_contrato. wa_saida-dtano = vl_ano. wa_saida-dtmes = vl_mes.
ASSIGN COMPONENT vl_rubrica OF STRUCTURE <fs_detalhe_cred> TO <fs_rubrica>.
IF sy-subrc = 0. wa_saida-cdlgart = <fs_rubrica>. ENDIF.
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 = 'Funcionário não encontrado'. wa_saida-cdmotivst = '04'. MODIFY zhr137 FROM wa_saida.
ELSEIF sy-subrc = 0 AND vl_pernr <> 'PERNR'.
wa_saida-desitemp = 'Avalista não encontrado'. wa_saida-cdmotivst = '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 = 'Funcionário 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> TO <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: * Funçoes para gerar arquivo excel
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'EXPORTINGi_filename = p_dwloadTABLESi_tab_sap_data = tab_excelEXCEPTIONSconversion_failed = 1OTHERS = 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'EXPORTINGfile_name = p_dwloaddata_sheet_name = sheet_nameTABLESdata_tab = tab_excelEXCEPTIONSfile_not_exist = 1filename_expected = 2communication_error = 3ole_object_method_error = 4ole_object_property_error = 5
invalid_filename = 6invalid_pivot_fields = 7download_problem = 8OTHERS = 9.
*Função para ler planilha excel* Carregar a planilha do excel Func com Escalas TurmasCALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'EXPORTINGi_line_header = 'X'i_tab_raw_data = it_rawi_filename = p_uploa1TABLESi_tab_converted_data = t_func_escEXCEPTIONSconversion_failed = 1OTHERS = 2.
* Lê 2 arquivoCALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGfilename = p_uploa2i_begin_col = 1i_begin_row = 1i_end_col = 14i_end_row = 999999TABLESintern = t_excelEXCEPTIONSinconsistent_parameters = 1upload_ole = 2OTHERS = 3.
Quando o campo for numérico o excel ignora os zeros a esquerda e direita tem q concatenar uma aspas simples para o excel considerar como caracter o campoCONCATENATE '''' wa_arquivo-inter INTO wa_ine_excel-f2.
Para todo tipo de datos:EQ ó =, NE ó <> ó ><, LT ó <, LE ó <=, GT ó >, GE ó >=.
Para tipos alfanuméricos y numéricos:Se usan para comparaciones, aparte de los anteriores. CO (contiene sólo ...), CN (no contiene sólo ...), CA (contiene algún ...), NA (no contiene algún ...) , 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 lógicas especiales: Rango: operando1 BETWEEN operando2 ANDoperando3. Los valores límite del rango[ operando1, operando2 ] son inclusive. Esta operación lógica devuelve cierto sí y sólo sí operando2 <= operando1 <= operando3.
Tratando exceção 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 alimentação.
* 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 = vl_ponto
** I_LINE_HEADER =
* i_filename = vl_file_ali_aux
Append = 'X'
** I_APPL_KEEP = ' '
* TABLES
* i_tab_sap_data = t_export_ali.
* ENDIF.
** Separar por ; tabela refeição.
* 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 = vl_ponto
** I_LINE_HEADER =
* i_filename = vl_file_ref_aux
** I_APPL_KEEP = ' '
* TABLES
* i_tab_sap_data = t_export_ref.
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
* ENDIF.
*Macro que INFOTYPE OPERATION
DEFINE mc_hr_infotype_operation.
data wa_return_aux type bapireturn1 .
call function 'BAPI_EMPLOYEE_ENQUEUE'exportingnumber = &2importingreturn = wa_return_aux.
if wa_return_aux-type eq 'E'.
message e593(zhr) with &2 .
endif.
call function 'HR_INFOTYPE_OPERATION'exportinginfty = &1number = &2subtype = &3validityend = &4validitybegin = &5record = &6operation = &7recordnumber = &8importingreturn = wa_return_aux.
call function 'BAPI_EMPLOYEE_DEQUEUE'exportingnumber = &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-begdal_p0007 c_ins 0.
Lógica p/ ler RGDIR no período selecionado. (RGDIR = verificação se o funcionário 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 'OBJECT_ID' 'Obj_Id' 1 10 'X' 'X'. cria_field_cat 'DESCRIPTION' 'Descrição' 2 20 'X' 'X'. cria_field_cat 'DATE1' 'Data1' 3 10 'X' 'X'. cria_field_cat 'DATE2' 'Data2' 4 10 'X' 'X'. cria_field_cat 'STATUS' 'Status' 5 15 'X' 'X'. cria_field_cat 'RESPONSAVEL' 'Responsavel' 6 10 'X' 'X'. cria_field_cat 'DESCRICAO' 'Descrição' 7 10 'X' 'X'.
gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. gd_layout-header_text = 'Tarefas'.
Obter campo "condição de pagamento" da tela.
FIELD-SYMBOLS <FS_ZTERM> TYPE ANY.
FIELD-SYMBOLS <FS_BLDAT> TYPE ANY.
* Obter campo "condição 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.
Função para pegar campos da tela.
Exemplo.
MOVE input TO v_mktl.
v_campo = 'RM06E-EPSTP'.
v_prog = sy-cprog.
v_tela = 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: Opção de Layout de ALV na tela de seleção.
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 dinâmico.
DATA: vl_line(72) TYPE c, vl_list LIKE TABLE OF line.
* Obter mês para buscar valores correspondentes. CONCATENATE vg_fix p_perid+1(2) INTO vg_mes.
* Monta campos dinâmicos para seleção. vl_line = 'OBJNR'. vl_line+6 = vg_mes. APPEND vl_line TO vl_list.
* Selecionar Oobjeto CO: totais de custos - lançamentos 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 SELEÇÃO.
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 botão na tela sem usar status_gui.Exemplo:
SELECTION-SCREEN: FUNCTION KEY 1. "Declaração do Botão
INITIALIZATION.* Estrutura para descrever o botão DATA: wa_button TYPE smp_dyntxt.
* Nome do Botão wa_button-text = text-029.
* Ícone do Botão wa_button-icon_id = 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 função 1
sscrfields-functxt_01 = wa_button.
CLEAR wa_button.
Top Related