Manual Jr[Conflito]

24
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 submit 1DK_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/30 DAY_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.

Transcript of Manual Jr[Conflito]

Page 1: Manual Jr[Conflito]

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.

Page 2: Manual Jr[Conflito]

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

Page 3: Manual Jr[Conflito]

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,

Page 4: Manual Jr[Conflito]

                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.

Page 5: Manual Jr[Conflito]

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.

Page 6: Manual Jr[Conflito]

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>.

Page 7: Manual Jr[Conflito]

    <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 ).

Page 8: Manual Jr[Conflito]

  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'

Page 9: Manual Jr[Conflito]

'=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

Page 10: Manual Jr[Conflito]

           '%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'.

Page 11: Manual Jr[Conflito]

            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

Page 12: Manual Jr[Conflito]

* 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,

Page 13: Manual Jr[Conflito]

           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'.

Page 14: Manual Jr[Conflito]

          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

Page 15: Manual Jr[Conflito]

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.

Page 16: Manual Jr[Conflito]

* 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 .

Page 17: Manual Jr[Conflito]

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'

Page 18: Manual Jr[Conflito]

         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>.

Page 19: Manual Jr[Conflito]

* 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.

Page 20: Manual Jr[Conflito]

  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

Page 21: Manual Jr[Conflito]

  sscrfields-functxt_01 = wa_button.

  CLEAR wa_button.