Archive for the 'BASIS' Category

03
Set
09

alterar descrições de campos no SAP

— Removido a pedido do autor de onde retirei a informação —

— Removed by author request —

se for necessário alterar descrições de campos no SAP seguir as instruções:

http://www.renet-web.net/2005/09/01/changing-standard-sap-field-descriptions/

03
Set
09

Alterar o conteúdo de tabelas no SAP

Quem já trabalha com o SAP há algum tempo, de certeza que consegue alterar os conteúdos de uma tabela do SAP (entrando em debug e alterado o código da função para EDIT)….

Mas o que eu vos mostro, é mais poderoso e consequentemente, mais perigoso.

Este método, permite alterar o conteúdo das tabelas directamente na listagem principal. Para isso basta efectuar os seguintes passos:

Transacção: SE16N
– Escrever o nome da tabela
– No local onde se executam os comandos/transacções, escrever: &SAP_EDIT
– ENTER
– F8 ou executar

Reparem que o conteúdo de está todo editável…

07
Ago
09

informações de cabeçalho em lista ALV

Nos mapas em que se representam os dados com ALVs (quer em Listas quer em Grids), é bom colocar o nome do mapa e os vários critérios de selecção no topo da lista, especialmente quando são impressos.

Para uniformizar e centralizar este processo, inventei (possivelmente a roda, mas como não conheço nada do SAP para utilizar) uma rotina que lê os parametros de selecção e cria uma tabela preparadinha para se passar no evento de TOP_OF_PAGE, através da função REUSE_ALV_COMMENTARY_WRITE:

*&———————————————————————*
*&      Form  F_PREP_SELECTION_SCREEN
*&———————————————————————*
* Lê tela de selecção de determinado relatório e retorna uma tabela
* preparada para ser adicionada no head da ALV
*———————————————————————-*
*  –>  p_repname
*  –>  p_reptext
*  –>  p_company
*  <–  pt_listheader
*———————————————————————-*
FORM f_prep_selection_screen USING p_repname TYPE trdir-name
p_reptext
p_company
CHANGING pt_listheader TYPE slis_t_listheader.

DATA: lt_param TYPE STANDARD TABLE OF swu_repsc.

CALL FUNCTION ‘SWF_GET_REPORT_PARAMETERS’
EXPORTING
reportname              = p_repname
TABLES
parameter = lt_param
*     CONTAINER               =
EXCEPTIONS
report_not_found        = 1
report_not_type_1       = 2
OTHERS3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

DATA: l_param LIKE LINE OF lt_param,
l_list  LIKE LINE OF pt_listheader.

*  typ(1) TYPE C,   ” H = Header, S = Selection, A = Action
*  KEY(20) TYPE C,
*  info TYPE slis_entry,

* Empresa:
l_list-typ = ‘H’.
l_list-info = p_company.
APPEND l_list TO pt_listheader.

* nome do layout:
l_list-typ = ‘H’.
l_list-info = p_reptext.
APPEND l_list TO pt_listheader.

FIELD-SYMBOLS: <param>   TYPE ANY,
<t_param> TYPE ANY TABLE,
<sign>    TYPE ANY,
<op>      TYPE ANY,
<low>     TYPE ANY,
<high>    TYPE ANY,
<wa>      TYPE ANY.
DATA: l_sel(8),
l_tmp(60).

l_list-typ = ‘S’.
LOOP AT lt_param INTO l_param.
CLEAR: l_list-info, l_tmp.

IF l_param-text(2) = ‘D ‘.
l_param-text(1) = ‘ ‘.
CONDENSE l_param-text.
ENDIF.
MOVE l_param-text TO l_list-key.    “nome do parametro

IF l_param-kind = ‘P’.              “parameters
ASSIGN (l_param-selname) TO <param>.
IF <param> IS NOT INITIAL.
WRITE <param> TO l_tmp.
CONDENSE l_tmp.
MOVE l_tmp TO l_list-info.
APPEND l_list TO pt_listheader.
ENDIF.
ELSEIF l_param-kind = ‘S’.          “Select options
CLEAR l_tmp.
CONCATENATE l_param-selname ‘[]’ INTO l_tmp.
ASSIGN (l_tmp) TO <t_param>.
IF <t_param>[] IS NOT INITIAL.
LOOP AT <t_param> ASSIGNING <wa>.
ASSIGN COMPONENT ‘SIGN’ OF STRUCTURE <wa> TO <sign>.
ASSIGN COMPONENT ‘OPTION’ OF STRUCTURE <wa> TO <op>.
ASSIGN COMPONENT ‘LOW’ OF STRUCTURE <wa> TO <low>.
ASSIGN COMPONENT ‘HIGH’ OF STRUCTURE <wa> TO <high>.
IF <sign> = ‘E’.
MOVE ‘(exclui)’ TO l_list-info.
ENDIF.

CASE <op>.
WHEN ‘EQ’.
move <low> TO l_list-info.
WHEN ‘GT’.
CONCATENATE l_list-info ‘maiores que’ <low>
INTO l_list-info SEPARATED BY space.
WHEN ‘LT’.
CONCATENATE l_list-info ‘menores que’ <low>
INTO l_list-info SEPARATED BY space.
WHEN ‘LE’.
CONCATENATE l_list-info ‘menores ou iguais a’ <low>
INTO l_list-info SEPARATED BY space.
WHEN ‘GE’.
CONCATENATE l_list-info ‘maiores ou iguais a’ <low>
INTO l_list-info SEPARATED BY space.
WHEN ‘NE’.
CONCATENATE l_list-info ‘diferentes de’ <low>
INTO l_list-info SEPARATED BY space.
WHEN ‘BT’.
CONCATENATE l_list-info <low> ‘a’ <high>
INTO l_list-info SEPARATED BY space.
ENDCASE.

APPEND l_list TO pt_listheader.
CLEAR l_list-info.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.

ENDFORM.                    ” F_PREP_SELECTION_SCREEN

07
Jul
09

ler dados inseridos numa ALV GRID (não OO)

Sempre que for necessário ler dados que foram inseridos numa GRID ALV, que não seja Object Oriented, na rotina de callback do user command, deve colar-se o seguinte código:

DATA: ref_grid TYPE REF TO cl_gui_alv_grid.

IF ref_grid IS INITIAL.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.

Desta forma, a tabela interna que contem os dados a serem representados é actualizado com o que foi inserido/editado na ALV.

17
Jun
09

Vendedor

Se alguma vez for necessário pesquisar uma ordem de venda por vendedor (ou responsável de vendas), cuja informação é um parceiro de HR (um funcionário) e se por ventura for necessário criar um report cujo critério de pesquisa é o vendedor, a coisa faz-se muito fácil:

SELECT-OPTIONS: s_vendr FOR vbpa-kunnr MATCHCODE OBJECT prem.

Aqui só é necessário o matchode certo, caso contrário usa o por omição do tipo VBPA-KUNNR (clientes).

03
Jun
09

Excel inplace

bem… este assunto é todo muito novo para mim, mas vai ficar aqui só umas pequenas dicas (notas para o futuro)

esta tecnologia permite ver no SAP – numa lista ALV – os dados do relatório no próprio Excel.

Para isso tem que se usar um template baseado nos std do SAP

A reter:

  • Actualizar/apagar templates: OAOR
  • Carregar templates: report BCALV_BDS_UPLOAD
25
Maio
09

24km

em dois dias…

foi um fim de semana na bike um bocado fraca… estes 24Km foram feitos em dois dias!!!

no sábado, com a “maria” e com o mano, fomos dar uma voltinha pelo quintal lá de casa, e no final da manhã somámos 12 Km.

a “maria” portou-se lindamente, tendo apenas que desmontar numa subida um pouco mais longa. passámos por um mega trilho de cerca de 1km quase sempre a descer, com espaço apenas para uma bike. fizemos uma primeira passagem para apalpar o terreno, e depois voltamos a subir para refazer o single, é um single espetacular!!!

no Domingo, aventurei-me a seguir o meu irmão e ir ter com uma malta que habitualmente vai visitar a Serra D’Aire.

Mas neste dia, o tempo não ajudava e eram poucos, e os poucos que estavam presentes, são “hiper-mega-pro-masters” no que toca ao btt, e aparentemente com bikes mais caras que o meu carro (bem, talvez o total das bikes superasse o valor do meu carro – 4 bikes) mas o que aconteceu até me envergonha….

o dito single que fiz a descer no dia anterior, foi feito a subir… a uma velocidade muito elevada. o que fez com que eu rebentasse muito cedo – não (só) fisicamente, mas anímicamente, pois estava-me a custar ser uma “ancora” para os mega-hiper-ri-pro-masters do btt… decidi que eu não estava ali para sofrer, e rumei a casa. 12km.

eu não presto pra nada… e já não posso dar a desculpa da bike.

04
Maio
09

field-exit

nunca usei.

mas pode ser útil. no entanto, a SAP deixou de dar suporte a esta tecnologia…

isso agora não interessa nada, o que interessa é saber como o fazer caso seja mesmo necessário em versões superiores à 4.6C.

Existe um report que se pode correr para criar os tais field-exits: RSMODPRF

e pronts, tenho dito.

28
Nov
08

querem saber os textos dos documentos SAP?

Eu sei como! se consultarmos as tabelas:

  • TTXIT – Textos para ID texto
  • TTXID – Ids.texto permitidas
  • TTXOB – Objetos de texto admitidos

Com estas tabelas conseguimos inferir quais os parametros a passar à FM READ_TEXT

07
Out
08

ALV Grid com Input

Quando as ALV Grid que têm input fields não estão a retornar correctamente os valores preenchidos, é uma seca…

Pode ser que isto só acontece para ALV Grids criados com as funções REUSE*, mas como estas até são práticas…

Para não se apanhar barretes:

data: ref_grid TYPE REF TO cl_gui_alv_grid.

IF ref_grid IS INITIAL.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.

Wow… ou não… é tão básico que faz impressão…




Toca a comentar!!!!!

Maio 2024
S T Q Q S S D
 12345
6789101112
13141516171819
20212223242526
2728293031  

Blog Stats

  • 5.798 hits

RSS My Experiments with ABAP

  • Ocorreu um erro; é provável que o feed esteja indisponível. Tente novamente mais tarde.