REPORT ZSAPeiros.
* Local Declarations
DATA:
lv_logical_filename TYPE filename-fileintern VALUE 'ZSAPEIROS',
lv_filename TYPE rlgrap-filename VALUE 'ARQUIVO.TXT',
lv_file TYPE string,
lt_file TYPE TABLE OF char255.
* Physical File Name Using a Logical File Name
CLEAR lv_file.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = lv_logical_filename
parameter_1 = lv_filename
including_dir = 'X'
IMPORTING
file_name = lv_file
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
* Physical File Name Based on a Logical Lile Name
CALL FUNCTION 'FILE_VALIDATE_NAME'
EXPORTING
logical_filename = lv_logical_filename
parameter_1 = lv_filename
CHANGING
physical_filename = lv_file
EXCEPTIONS
logical_filename_not_found = 1
validation_failed = 2
OTHERS = 3.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
* File content
CLEAR lt_file[].
APPEND INITIAL LINE TO lt_file ASSIGNING FIELD-SYMBOL(<fs_file>).
<fs_file> = 'Linha 1'.
APPEND INITIAL LINE TO lt_file ASSIGNING <fs_file>.
<fs_file> = 'Linha 2'.
* Generate file in server
OPEN DATASET lv_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc IS INITIAL.
LOOP AT lt_file INTO DATA(ls_file).
TRANSFER ls_file TO lv_file.
ENDLOOP.
CLOSE DATASET lv_file.
ENDIF.
Ajude-nos a manter o blog atualizado. Basta apenas desativar seu bloqueador de anúncios e clicar em um dos anúncios.
Help us keep the blog updated. Just disable your ad blocker and click on one of the ads.
Ayúdanos a mantener el blog actualizado. Simplemente desactiva tu bloqueador de anuncios y haz clic en uno de los anuncios.
Conteúdo
Caminho Lógico / Logical Path
Antes de dar seu OPEN DATASET, é interessante, inclusive por questões de segurança, que você utilize um Caminho Lógico.
Para criar, acesse a transação FILE.
Clique 1 vez em Logical File Path Definition, e crie uma nova entrada:
Agora marque o item que acaba de criar, e duplo clique em Assignment of Physycal Paths to Logical Path, então crie uma nova entrada:
<SYSID> no caso é seu ambiente, então seja DEV, QAS ou PRD, ele vai entender. Lembre-se de pedir para BASIS configurar este caminho nos 3 ambientes, afim de serem visualizados pela AL11 no caso.
Feito isso, agora é só utilizar o seguinte código:
Abrir arquivo PDF em tela em vez de salvar
Antes da aplicação da nota 2525392, paa abrir um arquivo PDF por exemplo, bastava chamar a função CALL_BROWSER, porém agora não mais.
Segue um exemplo de como manter a chamada, pois pode vir por variável, e ainda sim fazer funcionar caso falhe na chamada da CALL_BROWSER:
REPORT SAPeiros.
DATA:
lv_url TYPE char255 VALUE 'C:\TEMP\Arquivo.PDF',
lv_file TYPE string.
CALL FUNCTION 'CALL_BROWSER'
EXPORTING
url = lv_url
EXCEPTIONS
frontend_not_supported = 1
frontend_error = 2
prog_not_found = 3
no_batch = 4
unspecified_error = 5
OTHERS = 6.
IF sy-subrc IS NOT INITIAL.
lv_file = lv_url.
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = lv_file
EXCEPTIONS
OTHERS = 1.
ENDIF.
openSAP Sumiu 😲 Caaaaalma, só migraram
Desde julho de 2024 a plataforma openSAP foi descontinuada.
Os cursos gratuitos continuarão disponíveis no site de aprendizado.
Alguns dos cursos que estavam na openSAP foram migrados para plataforma.
Mais detalhes sobre a migração aqui:
https://learning.sap.com/opensap-course-migration
Cursos aqui:
https://learning.sap.com/courses
Certificados:
Meu amigo, ainda não sei, mas até o momento não consegui encontrá-los.
Então quem souber como recuperar os certificados anteriormente realizados na open.SAP me avise para atualizar o blog e ajudar aos demais.
Que tal uma tela de parâmetros diferentona?
Não tive muitas idéias de ícones ou utilidade disso na tela de parâmetros, mas aposto que você terá!
REPORT ZSAPeiros.
DATA l_field TYPE string.
FIELD-SYMBOLS <fs_tab> TYPE ANY.
SELECTION-SCREEN BEGIN OF TABBED BLOCK t1 FOR 10 LINES.
SELECTION-SCREEN TAB (50) tab1 USER-COMMAND tab1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (50) tab2 USER-COMMAND tab2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (50) tab3 USER-COMMAND tab3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK t1.
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-t01.
PARAMETERS p_bukrs TYPE bukrs.
SELECTION-SCREEN END OF BLOCK 1.
SELECTION-SCREEN END OF SCREEN 101.
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-t02.
PARAMETERS p_werks TYPE werks_d.
SELECTION-SCREEN END OF BLOCK 2.
SELECTION-SCREEN END OF SCREEN 102.
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE text-t03.
PARAMETERS p_kunnr TYPE kunnr.
SELECTION-SCREEN END OF BLOCK 3.
SELECTION-SCREEN END OF SCREEN 103.
INITIALIZATION.
l_field = '(ZSAPEIROS)TAB1'.
ASSIGN (l_field) TO <fs_tab>.
CONCATENATE '@0Y@' 'Novo' INTO <fs_tab> RESPECTING BLANKS.
l_field = '(ZSAPEIROS)TAB2'.
ASSIGN (l_field) TO <fs_tab>.
CONCATENATE '@0Z@' 'Alterar' INTO <fs_tab> RESPECTING BLANKS.
l_field = '(ZSAPEIROS)TAB3'.
ASSIGN (l_field) TO <fs_tab>.
CONCATENATE '@0W@' 'Excluir' INTO <fs_tab> RESPECTING BLANKS.
Mudar de idioma sem precisar sair ou logar novamente
Precisa testar aquela tradução que está fazendo mas está com preguiça de sair e logar novamente?
Digite ZEN para mudar para o idioma Inglês, ou ZES para Espanhol, ZPT para Português, etc.
Crie as transações ZEN, ZPT, ZES direcionando para o mesmo programa.
REPORT ZSAPeiros.
CASE sy-tcode.
WHEN 'ZEN'.
SET LOCALE LANGUAGE 'E'.
WHEN 'ZPT'.
SET LOCALE LANGUAGE 'P'.
WHEN 'ZES'.
SET LOCALE LANGUAGE 'S'.
WHEN OTHERS.
RETURN.
ENDCASE.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'LANGUAGE'
EXPORTING
tcode = 'SESSION_MANAGER'.
Campo obrigatório de mentirinha - Screen-Required
Precisa que um parâmetro de tela apareça o simbolo de obrigatório, mas que não seja obrigatório?
Isso não é tão estranho... é?
REPORT ZSAPeiros.
PARAMETERS p_werks TYPE t001w-werks. "CADÊ O OBLIGATORY?
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
FIND 'P_WERKS' IN screen-name.
IF sy-subrc IS INITIAL.
screen-required = '2'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.Pra validar valor ou obrigatório ( estranho já que não queria como obrigatório ), pode usar assim:AT SELECTION-SCREEN.
IF p_werks IS INITIAL.
MESSAGE e032(ms) WITH 'Centro'.
ENDIF.Exibir opção de Gravar Layout em seu AlvOO
DATA wa_variant TYPE disvariant.
wa_variant-report = sy-repid. "Sim, só por causa disso!
CALL METHOD go_grid_0100->set_table_for_first_display
EXPORTING
i_save = 'A' "E disso
is_layout = wa_layout
is_variant = wa_variant
...
Conteúdo da SO10 ( textos sapscript ) em Request
Digamos que vc criou isso:
Primeiro mude o tipo da TASK da sua request de workbench para Reparação:
Execute o programa RSTXTRAN no ambiente que criou o texto, e informe os dados solicitados e F8:
<Enter> <Aceit> <Sim>
Download de imagem da SE78 ( Smartforms/ Sapscript )
REPORT ZSAPeiros.
* Definição de tipos
TYPES:
BEGIN OF ty_graphic_table,
line(255) TYPE x,
END OF ty_graphic_table.
* Variáveis
DATA:
lv_graphic_size TYPE i,
lv_bytecount TYPE i,
lv_tdbtype LIKE stxbitmaps-tdbtype,
lv_call_mask(50) TYPE c,
lv_name_exp LIKE ibipparms-path,
lv_filename TYPE rlgrap-filename,
lt_content TYPE TABLE OF bapiconten,
lt_graphic_table TYPE TABLE OF ty_graphic_table.
* Parâmetros de tela
PARAMETERS:
p_name TYPE stxbitmaps-tdname DEFAULT 'ZSAPEIROS',
p_btype TYPE stxbitmaps-tdbtype DEFAULT 'BCOL'.
* Atribuir valor aos parâmetros
INITIALIZATION.
%_p_name_%_app_%-text = 'Logo (SE78)'.
%_p_btype_%_app_%-text = 'Cores ou P&B'.
* Executar
END-OF-SELECTION.
* Conteúdo da imagem
CALL FUNCTION 'SAPSCRIPT_GET_GRAPHIC_BDS'
EXPORTING
i_object = 'GRAPHICS'
i_name = p_name
i_id = 'BMAP'
i_btype = p_btype
IMPORTING
e_bytecount = lv_bytecount
TABLES
content = lt_content
EXCEPTIONS
not_found = 1
bds_get_failed = 2
bds_no_content = 3
OTHERS = 4.
* Conversão da imagem
CALL FUNCTION 'SAPSCRIPT_CONVERT_BITMAP'
EXPORTING
old_format = 'BDS'
new_format = 'BMP'
bitmap_file_bytecount_in = lv_bytecount
IMPORTING
bitmap_file_bytecount = lv_graphic_size
TABLES
bds_bitmap_file = lt_content
bitmap_file = lt_graphic_table
EXCEPTIONS
OTHERS = 1.
* Extenção do arquivo de saída
lv_call_mask = ',Bitmap (*.bmp),*.BMP'.
* Nome do arquivo original
lv_filename = p_name && '.bmp'.
* Popup para informar o local onde será gravado o arquivo
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = lv_filename
def_path = lv_name_exp
mask = lv_call_mask
mode = 'S'
IMPORTING
filename = lv_name_exp
EXCEPTIONS
inv_winsys = 04
no_batch = 08
selection_cancel = 12
selection_error = 16.
CHECK sy-subrc IS INITIAL.
* Nome do arquivo com o caminho informado
lv_filename = lv_name_exp.
* Download do arquivo
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
bin_filesize = lv_graphic_size
filename = lv_filename
filetype = 'BIN'
TABLES
data_tab = lt_graphic_table
EXCEPTIONS
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6.
IF sy-subrc IS INITIAL.
MESSAGE 'Download realizado com sucesso!' TYPE 'S'.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Assinar:
Comentários (Atom)