O Conhecimento

O conhecimento é inútil a menos que você o compartilhe.

terça-feira, 23 de dezembro de 2014

Objeto de Bloqueio

Coisinha bobinha mas que toma um tempo quando não funciona direito......

Objeto de Bloqueio com parâmetro errado pode causar uma dor de cabeça se não estiver feito a chamada de acordo com a sua necessidade....segue....

Atentar parâmetro _scope

CALL FUNCTION 'ENQUEUE_EZTBCO0029'
    
EXPORTING
      repid          
sy-repid
      _scope         
'1'
    
EXCEPTIONS
      foreign_lock   
1
      system_failure 
2
      
OTHERS         3.
  
IF sy-subrc <> 0.
* Implement suitable error handling here
    
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  
ENDIF.

segue a fonte: http://scn.sap.com/thread/1974118 / http://scn.sap.com/thread/346975

If you have _SCOPE = 1 you can have a COMMIT WORK after each update (or one COMMIT after both updates) and have to DEQUEUE it afterwards; if _SCOPE is 2 or 3 a COMMIT WORK automatically dequeues the lock and in this case you need no DEQUEUE fm before COMMIT WORK.

-----------------------------------------------------------------------------------------------------------------------------------------------------------
Mais uma opção.....

fiunção: ENQUEUE_EGMSPPROGRAM

* Chama função de bloqueio de programa
  call function 'ENQUEUE_EGMSPPROGRAM'
    exporting
*     MODE_GMSPPROGRAM       = 'E'
*     CLIENT                 = SY-MANDT
      sponsored_prog         pi_program
*     X_SPONSORED_PROG       = ' '
*     _SCOPE                 = '2'
*     _WAIT                  = ' '
*     _COLLECT               = ' '
    exceptions
      foreign_lock           1
      system_failure         2
      others                 3.

quarta-feira, 22 de outubro de 2014

Solution Manager

Segue uma rotina simples que busca todos os chamados relacionados e recuperar o chamado origem do chamado em questão......

DATA:          et_doc_links          TYPE  crmt_doc_flow_db_wrkt,
        et_doc_flow_plnk_attr 
TYPE  crmt_doc_flow_plnk_wrk_dbt,
        et_doc_flow_pnt_attr  
TYPE  crmt_doc_flow_pnt_wrk_dbt,
        et_doc_flow_iplk_attr 
TYPE  crmt_doc_flow_iplk_wrk_dbt.

  
DATAiv_header_guid TYPE  crmt_object_guid.

  
DATAwa_links    LIKE LINE OF  et_doc_links.
  
DATAoutput      TYPE STANDARD TABLE OF crmt_doc_flow_db_wrk.
  
DATAwa_output   LIKE LINE OF output.
  
DATAl_guid      TYPE crmt_object_guid.
  
DATAit_guid     TYPE  crmt_object_guid_tab.
  
DATAwa_guid     LIKE LINE OF it_guid.


  
SELECT guid
          
UP TO ROWS
          
FROM crmd_orderadm_h
          
INTO l_guid
          
WHERE object_id wa_zessm0001-zdempre
          
AND process_type LIK'Z%'.
  
ENDSELECT.

  iv_header_guid 
l_guid.


quarta-feira, 3 de setembro de 2014

Como debugar um JOB em ABAP?



"como fazer para o programa rodar exatamente como se tivesse sido iniciado por um JOB?"

Resumindo bem, se o programa funciona bem em dialog, mas no job apresenta um comportamento diferente ou mesmo com erro, então temos que "DEBUGAR" o job .

Como FAZER então????

Simples, ir na transação SM37 e localize o JOB que apresenta erro selecione o JOB na lista e digite JDBG na caixa de comando.

Dai é dado o oinicio do processo de job, com o debug acoplado, e booooaaaaa!!!!!


fonte:
Muito boa a dica que veio do link : http://lucattelli.com/sap/2012/07/como-debugar-um-job-em-abap/ 

sexta-feira, 8 de agosto de 2014

Como capturar filtro aplicado no ALV GRID em tempo de execução

BLZ.........

Essa foi show......

função irá recuperar as linhas afetadas pelo critério aplicação em tempo de execução.....

vamos as funções.....

Para  list display : REUSE_ALV_LIST_DISPLAY
REUSE_ALV_LIST_LAYOUT_INFO_GET

Para  grid display :
REUSE_ALV_GRID_DISPLAY
REUSE_ALV_GRID_LAYOUT_INFO_GET

exemplo:

* VARIAVEIS PARA RECUPERAR FILTROS REALIZADOS NO ALV
data  is_filter type slis_t_filter_alv.
data  es_filtered_entries type slis_t_filtered_entries.
data  wa_filter type LINE OF slis_t_filter_alv.
data  wa_filtered_entries type LINE OF slis_t_filtered_entries.

*FILTROS REALIZADOS NO ALV 
  
refreshis_filter,es_filtered_entries.

  
call function 'REUSE_ALV_GRID_LAYOUT_INFO_GET'
    
importing
      et_filter           
is_filter[]
      et_filtered_entries 
es_filtered_entries[]
    
exceptions
      no_infos            
1
      program_error       
2
      
others              3.


 loop at it_alv into wa_alv where check c_1.
*        *FILTROS REALIZADOS NO ALV 
        
clearwa_filtered_entries.
        
read table es_filtered_entries into wa_filtered_entries with key table_line sy-tabix.
        
if sy-subrc 4.
          
append wa_alv to it_process.
        
endif.
      
endloop.



fonte: http://scn.sap.com/thread/3228907

quinta-feira, 31 de julho de 2014

Como restringir número de usuários executando um Report?

Acho que não é possível fazer esse tipo de restrição/limite de quantos usuários podem executar simultaneamente um report, mas podemos dar um LOCK na execução do report.....funciona que é uma beleza.

Para isso usamos para bloquear:

call function 'ENQUEUE_ESFUNCTION'
    
exporting
      mode_tfdir     
'E'
      funcname       
'ZCOR00010'
      x_funcname     
' '
      _scope         
'2'
      _wait          
' '
      _collect       
' '
    
exceptions
      foreign_lock   
1
      system_failure 
2
      
others         3.
  
if sy-subrc <> 0.
* Implement suitable error handling here
    
message e000(suwith 'Programa já em execução.' .
    
stop.
  
endif.

 Para isso usamos para desbloquear:

call function 'DEQUEUE_ESFUNCTION'
    
exporting
      mode_tfdir 
'E'
      funcname   
'ZCOR00010'
      x_funcname 
' '
      _scope     
'3'
      _synchron  
' '
      _collect   
' '.

font:http://scn.sap.com/thread/1909186

----------------------------------------------------------------------------------------------------

mais uma opção

função: ENQUEUE_EGMSPPROGRAM

* Chama função de bloqueio de programa
  call function 'ENQUEUE_EGMSPPROGRAM'
    exporting
*     MODE_GMSPPROGRAM       = 'E'
*     CLIENT                 = SY-MANDT
      sponsored_prog         pi_program
*     X_SPONSORED_PROG       = ' '
*     _SCOPE                 = '2'
*     _WAIT                  = ' '
*     _COLLECT               = ' '
    exceptions
      foreign_lock           1
      system_failure         2
      others                 3.

terça-feira, 29 de julho de 2014

LIST_FROM_MEMORY

Sofrer pra que......

Quando quiser dar um print em uma lista (qualquer) nada melhor que exportar para a memória e depois exibir.....
 Na t-code RERAPP (módulo RE - Real State Management, gerenciamento da carteira de imóveis de uma empresa) SAP_RE mais um módulo do infinito mundo SAP.

A coisa é bruta....kkkkkk

vamos ao código:

*&---------------------------------------------------------------------*
*&      Form  SUBMIT_RERAPP
*&---------------------------------------------------------------------*
form submit_rerapp .
  
refresh s_venc.
  
clearwa_venc.


  wa_venc
-option c_le.
  wa_venc
-sign c_i.
  wa_venc
-low last_day_of_month.
  
append wa_venc to s_venc.

  
submit rfrerapp exporting list to memory
    
with s_bukrs     in s_empr
    
with s_recnnr    in s_contr
    
with p_usesid    eq space
    
with p_month     eq mes
    
with p_year      eq ano
    
with s_duedt     in s_venc
    
with p_hdtxt     eq hdtxt "lv_header_txt
    
with p_pdate     eq p_ldate
    
with p_ddate     eq p_ddate
    
with p_period    eq mes "p_data+4(2)
    
with p_pmode     eq pmode
    
and return.
* Recupera o Log do processamento da RERAPP
  
call function 'LIST_FROM_MEMORY'
    
tables
      listobject 
ls_abaplist
    
exceptions
      not_found  
1
      
others     2.
  
if sy-subrc <> 0.
    
message w208(00with text-014.
  
endif.
* Exibe na tela o Log do processamento da RERAPP
  
call function 'WRITE_LIST'
    
exporting
      write_only 
'X'
    
tables
      listobject 
ls_abaplist
    
exceptions
      empty_list 
1
      
others     2.
  
if sy-subrc <> 0.
    
message w208(00with text-014.
  
endif.
endform.                    SUBMIT_RERAPP




sexta-feira, 25 de abril de 2014

REPORT RS_ABAP_SOURCE_SCAN

Report de procura string em objetos z e y no abap....... RS_ABAP_SOURCE_SCAN estilo EWK1 ...fica a dica.....abs.

E mais uma opção de busca a transação CODE_SCANNER

imagem EWK1 e CODE_SCANNER







quinta-feira, 3 de abril de 2014

SAP IS-U/CCS (Customer Care and Services) and SAP Utilities (SAP IS-U)

Olá, hoje vamos falar um pouco de SAP IS-U CCS, SAP IS-U/CCS (Customer Care and Services) SAP Utilities (SAP IS-U), um outro pedaço (pra não dizer mundo) do SAP de vida propria que se integra ao ECC. Por não dizer que é um facinio trabalhar com ECC, com CCS o facinio é o mesmo por não dizer igual ou maior, dificil de decidir.
vai uns links:
http://en.wikipedia.org/wiki/SAP_IS-U
http://global.sap.com/campaigns/benchmark/appbm_isu.epx
http://global.sap.com/campaigns/benchmark/appbm_ccs.epx
Bom resumindo bem o sistema consiste em apuração de consumo de serviço como energia eletrica, gás, oleo, dentro outros.

Palavras da SAP:
"O IS-U/CCS é a ferramenta de utilities dentro do SAP Customer Care and Services (CCS) que realiza os processos comerciais de uma empresa de serviços públicos em dois processos centrais de ne- gócios: gestão do consumo e arrecadação de receitas.
O rendimento do ISU / CCS é medido em clientes
referência de Utilities (URC) por hora. URC é a representação específica de um cliente típico de uma empresa concessionária de serviço no modelo de dados. Uma URC consiste em um cliente com uma conta e dois contratos. O sistema permite de forma flexível a criação de pedido de leitura de contadores, produção de ordem de leitura de contadores, faturamento, entre outras ações.
"

E como sempre, para guardar, e ajudar em possiveis demandas futuras, vai uma listinha básica de funções que ajudam no dia a dia.
O nome das funções pode até sugestivo, mas a tradução foi via google do alemão para o portugues, dai já viu no que deu, use a imaginação.......abs.
Funções:
ISU_DB_ERDK_SELECT_DOC ---->>INTERNO: Leitura ERDK (por OPBEL)
ISU_BUILD_ERDZ_FROM_DBERDL  ---->> Recupera documento de impressão com as linhas de impostos
ISU_DB_TE422_SINGLE ---->> Recupera Dados mestre de datas para a unidade de leitura INTERNO: Lê um registro da tabela TE422
BUA_ADDRESS_READ_ALL/BUA_BUT020_SELECT_SINGLE ---->> recupra o endereço  / O módulo de função para ler os dados de endereço
RTP_US_DB_DFKKBPTAXNUM_READ ---->> Lê os taxnumbers de um parceiro de negócios
BAPI_BUPA_ADDRESS_GETDETAIL ---->> SAP BP, BAPI: Read Address
ISU_DB_ERCHC_SELECT_BILL ---->> INTERNO: Leitura ERCHC (após BELNR)
ISU_DB_ERCH_SINGLE ---->> INTERNO: Leitura ERCH (após BELNR) fatura
ISU_DB_ERCHC_MULTIPLE_SELECT ---->> INTERNO: Leitura ERCHC (após ERCH / ERCHC), por numerosos documentos
ISU_DB_ERCHC_SELECT_OPBEL ---->> INTERNO: Leitura ERCHC (após OPBEL)
ISU_DB_ERCHZ_NEW_MULTIP_SELECT ---->> INTERNO: Leitura DBERCHZ (após ERCH / DBERCHZ), por numerosos documentos
ISU_DB_EABL_SELECT_INSTALL ---->> INTERNO: Leia leitura de medidores e leitura do medidor de investimento
ISU_DB_EABL_SELECT_INSTALL_ENT ---->> INTERNO: Leia a leitura do medidor de investimento
ISU_TOB_GET_EQUNR_FOR_DEVICE ---->> Determina o número (s) equipamento para o tipo de dispositivo / dispositivo
ISU_DB_EANL_MAININST_SELECT ---->> Leia instalações auxiliares para o sistema host
ISU_DB_ERCH_SELECT_RANGE ---->> INTERNO: Array com Faixa Select ERCH BELNR contrato, Begabrpe, Endabrpe
ISU_DB_ERCH_SELECT_MAINDOCNO ---->> Belege der Anlagengruppe zum Beleg der Hauptanlage
ISU_DB_ERCHZ_NEW_MULTIP_SELECT ---->> INTERNO: Leitura DBERCHZ (após ERCH / DBERCHZ), por numerosos documentos
ISU_DB_ERDL_SINGLE ---->> INTERNO: Leia DBERDL pelo número do bilhete
ISU_DB_EVER_SINGLE ---->> INTERNO: Leitura SEMPRE (acesso directo)
ISU_DB_ERDL_SELECT_DOC ---->> INTERNO: Leitura DBERDL (PrintDocLines) (de acordo com DOC (voucher não))
ISU_CONTRACT_FOR_INSTALL_GET ---->> INTERNO: determinar sistema Tratado a data
ISU_DB_EABL_SINGLE ---->> INTERNO: Leitura contador com uma chave totalmente qualificado
ISU_DB_ERCHV_MULTIPLE_SELECT ---->> INTERNO: Leitura ERCHV (após ERCH / ERCHV), por numerosos documentos
ISU_DB_ERCHV_SELECT ---->> INTERNO: Leitura ERCHV após BELNR
ISU_DB_TE221T_SINGLE ---->> INTERNO ler o longo texto de TE221T o operando
ISU_DB_ETTIFN_SELECT ---->> As taxas de leitura INTERNO ETTIFN (número de acessor)

 
Blogger Templates