/* POPUP INI */
/* POPUP FIM */

Conteúdo

Copiar/Transportar conteúdo de tabelas entre mandantes

Sem muita explicação, vamos copiar alguns dados da tabela MARA, do ambiente DEV para QAS.

Para isto, precisaremos criar uma request de Workbench:




Feito isto, dê duplo clique na request e inclua, conforme imagem: R3TR TABU MARA, pressione <ENTER>:


Clique na chave amarela ao lado da imagem acima. E aparecerá as condições de seleção:


Dê duplo clique na linha amarela, para utilizar parâmetros de seleção. Neste caso vamos copiar apenas o material 200000390:


Caso queira copiar TODO o conteúdo, deixe * no material:



Após isto, clique no ícone de tabela, para entrar com a condição que preferir. Neste caso iremos copiar os dados de acordo com a condição (parâmetros) informados anteriormente (com material):


Clique em ok para visualizar os dados:


Clique em gravar e pronto!

Sua request tem conteúdo de tabela:


Agradecimentos Melari/Denis.

Mensagem de rodapé que exibe percentual

Todo mundo sabe fazer a forma simples, mas aqui no SAPeiros nós mostramos o percentual de processamento!

REPORT ZSAPeiros.

DATA:
  t_mara    TYPE TABLE OF mara,
  w_mara    TYPE          mara,
  v_msg     TYPE          char255,
  v_linhas  TYPE          p DECIMALS 2,
  v_linhasx TYPE          sy-tabix,
  v_percen  TYPE          char3,
  v_percenx TYPE          sy-tabix,
  v_lines   TYPE          sy-tabix.

PARAMETERS p_linhas TYPE sy-uline.
PARAMETERS p_percen TYPE sy-tabix.

SELECT * FROM mara INTO TABLE t_mara UP TO p_linhas ROWS.

DESCRIBE TABLE t_mara LINES v_lines.

v_percen  = p_percen.
v_percenx = v_percen.
v_linhas  = v_lines * ( v_percenx / 100 ).
v_linhasx = v_linhas.

LOOP AT t_mara INTO w_mara.

  IF sy-tabix GT v_linhas.
    v_linhas = v_linhas + v_linhasx.
    v_percen = v_percen + v_percenx.
  ENDIF.

  CONDENSE v_percen NO-GAPS.
  CLEAR v_msg.
  CONCATENATE 'Processamento em' v_percen '%' INTO v_msg SEPARATED BY space.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = v_percen
      text       = v_msg.

  WRITE:/ w_mara-matnr,sy-tabix,v_percen.

ENDLOOP.

Procurar/Localizar por conteúdo


Google?  kkkkkkkkkkkkkkkkkkkkkk  #SQN

A questão é simples: Como encontrar um conteúdo/texto específico dentro de programas SAP?

A transação mágica é a EWK1 ou o programa RS_ABAP_SOURCE_SCAN, ambos intuitivos e não requerem explicações.

Editar programas em QAS ou PRD


Antes de mais nada, você precisa de coragem! SIM, Coragem! Pois você pode ser demitido por justa causa pelo simples fato de editar objetos que não tem permissão!

Bom, tomada coragem, agora falta seu usuário com acesso a replace ( edição de variáveis quando der um /h ).

Tendo coragem e replace, agora é só seguir estes 5 passos:

1) Exiba o objeto LSTRDU34 na SE38 e coloque um ponto de parada na linha 166:
lv_subrc = sy-subrc;

2) Exiba o objeto LSTRDU44 na SE38 e coloque um ponto de parada na linha 165:
CASE sy-subrc;

3) Exiba seu objeto na SE38 e clique em editar;

4) Agora toda vez que parar nos pontos que você definiu acima, altere o sy-subrc para 0;

5) O mesmo acontecerá quando você ativar o objeto.

Boa sorte, você vai precisar!!!

Tradução de programas para português estruturado ou outro idioma

Uma forma simples para auxiliar na tradução de programas quando existir a necessidade de gerar alguma documentação em português ou qualquer outro idioma.

Primeiramente é necessário criar uma tabela conforme print abaixo:


Existe uma outra maneira onde se importa a tradução de um arquivo excel ou txt, porém, deixar em uma tabela Z os parceiros podem alimentar a mesma e a tradução fica cada vez melhor.

REPORT ZSAPeiros.


* ----------------------------------------------------------------------
* DEFINIÇÃO DE TIPOS PARA TABELAS / ESTRUTURAS
* ----------------------------------------------------------------------
TYPES:
  BEGIN OF ty_linhas,
    linha(100) TYPE c,
  END OF ty_linhas.


* ----------------------------------------------------------------------
* TABELAS E ESTRUTURAS INTERNAS
* ----------------------------------------------------------------------
DATA:
  t_de_para   TYPE TABLE OF ztraducao WITH HEADER LINE,
  t_progr1    TYPE TABLE OF string    WITH HEADER LINE,
  t_progr     TYPE TABLE OF ty_linhas WITH HEADER LINE.


* ----------------------------------------------------------------------
* VARIÁVEIS GLOBAIS
* ----------------------------------------------------------------------
DATA:
  gv_size_para(10)  TYPE c,
  gv_tabix        TYPE sy-tabix,
  gv_posi(3)      TYPE c,
  gv_length(3)    TYPE n.


* ----------------------------------------------------------------------
* PARÂMETROS
* ----------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS:
  p_repid     TYPE sy-repid,
  p_dest      TYPE rlgrap-filename DEFAULT 'c:\ZSAPeiros.txt'.
SELECTION-SCREEN END OF BLOCK b1.


* ----------------------------------------------------------------------
* INITIALIZATION
* ----------------------------------------------------------------------
INITIALIZATION.
  %_p_repid_%_app_%-text  = 'Programa a ser traduzido'.
  %_p_dest_%_app_%-text   = 'Arquivo de destino'.


* ----------------------------------------------------------------------
* Destino da tradução
* ----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dest.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_path = 'C:\'
      mode     = 'S'
    IMPORTING
      filename = p_dest
    EXCEPTIONS
      OTHERS   = 1.


* ----------------------------------------------------------------------
* START-OF-SELECTION
* ----------------------------------------------------------------------
START-OF-SELECTION.
  SELECT *
    FROM ztraducao
    INTO TABLE t_de_para.

  IF sy-subrc IS INITIAL.
    SORT t_de_para BY de.
    DELETE t_de_para WHERE de IS INITIAL.
  ENDIF.

  IF t_de_para[] IS INITIAL.
    MESSAGE 'Dados de tradução inexistentes' TYPE 'I'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  READ REPORT p_repid INTO t_progr1.
  t_progr[] = t_progr1[].

  LOOP AT t_de_para.

    gv_size_para = STRLEN( t_de_para-para ).

    LOOP AT t_progr.

      gv_tabix = sy-tabix.

      TRANSLATE t_progr-linha USING '''"'.

      CLEAR: gv_posi, gv_length.

      FIND t_de_para-de IN t_progr-linha MATCH OFFSET gv_posi
                                         MATCH LENGTH gv_length
                                         IGNORING CASE.

      IF sy-subrc IS INITIAL.

        gv_posi = gv_posi - 1.

        IF gv_posi = -1 OR t_progr-linha+gv_posi(1) = ' '.

          gv_posi = gv_posi + 1.

          REPLACE t_progr-linha+gv_posi(gv_length) WITH t_de_para-para(gv_size_para) INTO t_progr-linha.

        ENDIF.

      ENDIF.

      MODIFY t_progr INDEX gv_tabix.

    ENDLOOP.

  ENDLOOP.


  LOOP AT t_progr.
    WRITE: / t_progr-linha.
  ENDLOOP.

Debugar Popup

Dar /h é fácil né... Quero ver fazer isto num Popup!
Simples, salve o arquivo e basta arrastar o arquivo TXT para sua janela Popup.


Ou se preferir, copie e cole o conteúdo abaixo em um arquivo TXT e arraste-o para seu Popup.

[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

Faça o SAP falar com você

Parece bobeira, mas imagine que na empresa existem pessoas com deficiência visual! Pois é, isto ajudaria à interação ao SAP. Claro que para este fim, o deficiente visual precisa de todos os recursos básicos. E na minha opinião, na complexidade total do SAP, acho que não seria possível, mas para acessar programas simples.... Quem sabe! Bom, o idioma é inglês, mas... funciona!
REPORT ZSAPeiros.

INCLUDE ole2incl.                                                "Obj Ole

DATA:
  obj_ole   TYPE ole2_object,                                    "Obj Ole
  obj_voice TYPE ole2_object,                                    "Obj Voz
  gt_mara   TYPE TABLE OF mara,                                  "Tab Mara
  lv_text1  TYPE string VALUE 'Congratulations! Found records.', "Texto 1
  lv_text2  TYPE string VALUE 'Attention! Records not found.'.   "Texto 2

TABLES mara.

SELECT-OPTIONS s_matnr FOR mara-matnr OBLIGATORY.

INITIALIZATION.
  %_s_matnr_%_app_%-text = 'Material'.

END-OF-SELECTION.
  CREATE OBJECT obj_voice 'SAPI.SpVoice'.

  SELECT * FROM mara
     INTO TABLE gt_mara
          WHERE matnr IN s_matnr.

  IF sy-subrc IS INITIAL.
    WRITE: / lv_text1.
    CALL METHOD OF obj_voice 'Speak' = obj_ole
      EXPORTING #1 = lv_text1.
  ELSE.
    WRITE: / lv_text2.
    CALL METHOD OF obj_voice 'Speak' = obj_ole
      EXPORTING #1 = lv_text2.
  ENDIF.

Executar aplicativo do PC

Abrir a calculadora do windows na hora certa pode lhe dar créditos com o cliente.
REPORT ZSAPeiros.


CALL METHOD cl_gui_frontend_services=>execute
   EXPORTING
*    document               =
     application            = 'CALC.EXE'
*    parameter              =
*    default_directory      =
     maximized              = 'X'
*    minimized              =
*    synchronous            =
     operation              = 'OPEN'
  EXCEPTIONS
    cntl_error             = 1
    error_no_gui           = 2
    bad_parameter          = 3
    file_not_found         = 4
    path_not_found         = 5
    file_extension_unknown = 6
    error_execute_failed   = 7
    synchronous_failed     = 8
    not_supported_by_gui   = 9
    OTHERS                 = 10.
/* POPUP INI */ /* POPUP FIM */