Você está na página 1de 4

Exerccio 1 Criar um programa que leia os seguintes campos da tabela SBOOK: Companhia area, N de conexo, Data do vo, N de marcao,

N cliente, Nome passageiro. O Programa deve ter como parmetros de entrada: Companhia area, N de conexo, Data do vo. Com o resultado da busca gerar um arquivo texto sequncial (Utilize o comando OPEN DATASET). *&---------------------------------------------------------------------* *& Report ZPRARQ00 *&---------------------------------------------------------------------* REPORT ZPRARQ00.

TYPES: BEGIN OF result, carrid TYPE sbook-carrid, connid TYPE sbook-connid, fldate TYPE sbook-fldate, bookid TYPE sbook-bookid, customid TYPE sbook-customid, passname TYPE sbook-passname, END OF result. TABLES sbook. DATA: filename TYPE string VALUE 'C:\usr\sap\put\flights.dat', file TYPE localfile. SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001. SELECT-OPTIONS: carrid FOR sbook-carrid, connid FOR sbook-connid, fldate FOR sbook-fldate. SELECTION-SCREEN END OF BLOCK 1. START-OF-SELECTION. DATA t_result TYPE TABLE OF result WITH HEADER LINE. REFRESH t_result. SELECT carrid connid fldate bookid customid passname FROM sbook INTO TABLE t_result WHERE carrid IN carrid AND connid IN connid AND fldate IN fldate. CHECK t_result[] IS NOT INITIAL. file = filename. OPEN DATASET file FOR OUTPUT IN LEGACY TEXT MODE. CHECK sy-subrc IS INITIAL. LOOP AT t_result. TRANSFER t_result TO file. ENDLOOP. CLOSE DATASET file. MESSAGE 'Arquivo criado com sucesso.' TYPE 'S'.

Exerccio 2 Criar um programa que leia o arquivo criado no exerccio anterior e gere um relatrio formatado com cabealho (Utilize o comando OPEN DATASET). *&---------------------------------------------------------------------* *& Report ZPRARQ01 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPRARQ01 NO STANDARD PAGE HEADING LINE-COUNT 50(2).

TYPES: BEGIN OF result, carrid TYPE sbook-carrid, connid TYPE sbook-connid, fldate TYPE sbook-fldate, bookid TYPE sbook-bookid, customid TYPE sbook-customid, passname TYPE sbook-passname, END OF result. DATA: w_reg TYPE result. DATA: file TYPE localfile VALUE 'C:\usr\sap\put\flights.dat'. START-OF-SELECTION. OPEN DATASET file FOR INPUT IN LEGACY TEXT MODE. READ DATASET file INTO w_reg. DO. IF sy-subrc IS NOT INITIAL. EXIT. ENDIF. WRITE: / w_reg-carrid, 18 w_reg-connid, 26 w_reg-fldate, 39 w_reg-bookid, 55 w_reg-customid, 68 w_reg-passname. CLEAR w_reg. READ DATASET file INTO w_reg. ENDDO. CLOSE DATASET file. TOP-OF-PAGE. FORMAT COLOR COL_HEADING. WRITE: / 'Companhia area', 18 'N vo', 26 'Data vo', 39 'N da marcao', 55 'N cliente', 68 'Nome passageiro', 100 ' '. ULINE. END-OF-PAGE. ULINE. WRITE: /68 'Pgina ', sy-pagno.

Exerccio 3 Criar um programa para ler o arquivo texto criado no primeiro exerccio com a funo 'GUI_UPLOAD'. Inserir os registros lidos em uma tabela transparente com a mesma estrutura do arquivo (Criar tabela). *&---------------------------------------------------------------------* *& Report ZPRARQ02 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZPRARQ02.

TYPES: BEGIN OF result, carrid TYPE sbook-carrid, connid TYPE sbook-connid, fldate TYPE sbook-fldate, bookid TYPE sbook-bookid, customid TYPE sbook-customid, passname TYPE sbook-passname, END OF result. DATA: w_reg TYPE result, w_tab TYPE ztb_arq, t_reg TYPE TABLE OF ztb_arq. DATA: g_file TYPE string, t_file TYPE STANDARD TABLE OF string. PARAMETER: fl_path LIKE rlgrap-filename. AT SELECTION-SCREEN ON VALUE-REQUEST FOR fl_path. PERFORM select_file CHANGING fl_path. START-OF-SELECTION. REFRESH t_file. CLEAR g_file. IF fl_path IS NOT INITIAL. g_file = fl_path. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = g_file filetype = 'ASC' codepage = '4110' TABLES data_tab = t_file EXCEPTIONS OTHERS = 17. CHECK t_file[] IS NOT INITIAL. REFRESH t_reg. LOOP AT t_file INTO w_reg. CLEAR w_tab. MOVE-CORRESPONDING w_reg TO w_tab. APPEND w_tab TO t_reg. ENDLOOP.

"'UTF-8'

MODIFY ztb_arq FROM TABLE t_reg. COMMIT WORK AND WAIT. ENDIF. *&---------------------------------------------------------------------* *& Form SELECT_FILE *&---------------------------------------------------------------------* FORM select_file CHANGING path. "Funo para obter o caminho do arquivo CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING static = 'X' mask = ',All Files,*.*' CHANGING file_name = path EXCEPTIONS mask_too_long = 1 OTHERS = 2. 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. " caminho_arquivo

Você também pode gostar