" Sapscript, continuação do link abaixo:
" http://abapjuniores.blogspot.com/2012/02/sapscript-passo-passo-1.html
" Primeiramente iremos colocar códigos dentro das janelas da pagina
" principal que são a 'MAIN' e a 'WINDOW1', clicando no botão em destaque
" na imagem abaixo, agora o bixo vai pega. rsrs to brincando rs.
" vamos para o editor da Sapscript que a cara é horrivel, tendo que trabalhar
" linha por linha do código, nas versões mais novas aparece um editor um
" pouco menos agressivo mas tão ruim quanto, bem como a gente quer aprender
" mesmo, então vamos trabalhar no modo antigo, na verdade porque o novo
" parece Word do Office e não fica paracendo código.
" Olhe na segunda imagem abaixo e se não for a cara do seu editor então vá
" no menu 'GOTO / CHANGE EDITOR' e pronto.
" Agora coloquem o código abaixo no editor das janela 'MAIN' e 'WINDOW1' na
" ordem.
" Eu sei, e muito chato escrever nesse editor por causa dos 'enters' que damos
" normalmente nos códigos, mas daqui a pouco você se acostumam, outra coisa que" gostaria de comentar e provavelmente vocês já perceberam que esse passo-a-passo
" está da forma mais simples para que possam entender e depois vocês façam do
" melhor jeito que encontrarem, estarei mais tarde postando complementos sobre
" o que foi passado aqui.
" Abaixo agora existe o código que vai chama a seu formulário, é só criar na SE38
" mesmo um programa normal com o código abaixo, e por favor vamos pensar no
" meio ambiente não fiquem imprimindo igual uns doidos a cada alteração que fizerem
" no Sapscript, na hora de imprimir coloquem no modo de visualização.
REPORT z_sapscript_code.
" Declarações...
DATA :
st_sflight TYPE sflight,
it_sflight TYPE TABLE OF sflight
.
" Tela de seleção...
" carrid : AA / Connid : 0017 pra teste caso seja minisap.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_carrid TYPE spfli-carrid,
p_connid TYPE spfli-connid
.
SELECTION-SCREEN END OF BLOCK b1.
" Início...
START-OF-SELECTION.
" Select condicionado pelos parameters da tela de seleção..
SELECT *
FROM sflight
INTO TABLE it_sflight
WHERE carrid = p_carrid
AND connid = p_connid.
" Se achou algum registro.
IF sy-subrc IS INITIAL.
" O nome das funções são um pouco auto-explicativas.
PERFORM :
f_start,
f_open,
f_write_1 .
" Percebam que dei loop Somente com o perform que contem os dados da janela
" 'MAIN' pois ela e a única que dá loop de informação, se eu colocasse o
" perform f_write_1 que contem o Header do arquivo ('WINDOW1') dentro do
" loop também não iria aparecer todos as informações e sim o ultimo registro.
LOOP AT it_sflight INTO st_sflight.
PERFORM :f_write_2.
ENDLOOP.
PERFORM :
f_close,
f_end.
else.
MESSAGE 'Dados não encontrados' TYPE 'I'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form f_start
*&---------------------------------------------------------------------*
FORM f_start .
CALL FUNCTION 'START_FORM'
EXPORTING
* ARCHIVE_INDEX =
form = 'ZTESTE' " Nome do Sapscript
language = sy-langu " Idioma Logado
* STARTPAGE = ' '
program = sy-repid " Programa Executado
* MAIL_APPL_OBJECT =
* IMPORTING
* LANGUAGE =
EXCEPTIONS
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
spool_error = 6
codepage = 7
OTHERS = 8
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_start
*&---------------------------------------------------------------------*
*& Form f_open
*&---------------------------------------------------------------------*
FORM f_open .
CALL FUNCTION 'OPEN_FORM'
EXPORTING
* APPLICATION = 'TX'
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
* DEVICE = 'PRINTER'
* DIALOG = 'X'
form = 'ZTESTE' " Sapscript
language = sy-langu " Idioma logado
* OPTIONS =
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = '*'
* SPONUMIV =
* IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
* RESULT =
EXCEPTIONS
canceled = 1
device = 2
form = 3
OPTIONS = 4
unclosed = 5
mail_options = 6
archive_error = 7
invalid_fax_number = 8
more_params_needed_in_batch = 9
spool_error = 10
codepage = 11
OTHERS = 12
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_open
*&---------------------------------------------------------------------*
*& Form f_write
*&---------------------------------------------------------------------*
FORM f_write_1 .
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'E1' " Elemento da janela
* FUNCTION = 'SET'
* TYPE = 'BODY'
window = 'WINDOW1'" janela do Sapscript
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
bad_pageformat_for_print = 7
spool_error = 8
codepage = 9
OTHERS = 10
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_write
*&---------------------------------------------------------------------*
*& Form f_close
*&---------------------------------------------------------------------*
FORM f_close .
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
spool_error = 4
codepage = 5
OTHERS = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_close
*&---------------------------------------------------------------------*
*& Form f_end
*&---------------------------------------------------------------------*
FORM f_end .
CALL FUNCTION 'END_FORM'
* IMPORTING
* RESULT =
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
spool_error = 3
codepage = 4
OTHERS = 5
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_end
*&---------------------------------------------------------------------*
*& Form f_write_2
*&---------------------------------------------------------------------*
FORM f_write_2 .
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'E2' " Elemento da janela
* FUNCTION = 'SET'
* TYPE = 'BODY'
window = 'MAIN' " janela do Sapscript
* IMPORTING
* PENDING_LINES =
EXCEPTIONS
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
bad_pageformat_for_print = 7
spool_error = 8
codepage = 9
OTHERS = 10
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " f_write_2
Ai Maurão, to esperando a parte 3 mais aprofundada.
ResponderExcluir