Baixe Comando e Funções em ABAP/4 - Apostilas - Informática Part2 e outras Notas de estudo em PDF para Informática, somente na Docsity!
____________________________________________________________________________________
- <-- p2 text ---------------------------------------------------------------------- FORM F_CABECA.
DATA novo(60) TYPE C.
WRITE 5 sy-datum. WRITE 50 'CHEMYUNION QUIMICA LTDA'. WRITE 120 sy-pagno. WRITE AT /40 text-002. WRITE AT /5 'Material'. WRITE 18 'Descrição'. WRITE 60 'Centro'. WRITE 80 'Descrição'. WRITE 120 'DEPOSTIO'. WRITE 140 'ANO '. WRITE 150 'MES '. WRITE 180 'QTD '. ULINE. ENDFORM. " F_CABECA &--------------------------------------------------------------------- *& Form F_BUSCAR_MATERIAL &---------------------------------------------------------------------
- text ----------------------------------------------------------------------
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM F_BUSCAR_MATERIAL.
SELECT * FROM marc UP TO 1 ROWS WHERE matnr IN s_materi. ENDSELECT.
IF SY-SUBRC <> 0. MESSAGE W001. ENDIF.
SELECT * FROM t001L UP TO 1 ROWS WHERE lgort IN s_deposi. ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE W002.
ENDIF.
ENDFORM. " F_BUSCAR_MATERIAL
____________________________________________________________________________________
Programa 6
*& Report ZC00109 * *& * &--------------------------------------------------------------------- *& PROGRAMA PARA LER ARQUIVO EXTERNO E IMPORTAR PARA TABELA * *& * &---------------------------------------------------------------------
REPORT ZC.
* TABELA QUE IRA CONTER OS DADOS IMPORTADOS
TABLES : ZTAB1_01.
* TABELA INTERNA PARA MANIPULAR OS DADOS
DATA : BEGIN OF t_tabela OCCURS 0, texto01(100) TYPE C, END OF t_tabela.
* COMO CRIAR UMA TABELA INTERNA COPIANDO A ESTRUTURA DA TABELA INTERNA.
DATA : BEGIN OF t_tempo OCCURS 0. INCLUDE STRUCTURE ztab1_01. DATA : END OF t_tempo.
- CRIA UMA CONSTANTE caractere com o valor ';' CONSTANTS c_tipo TYPE C VALUE ';'.
SELECTION-SCREEN BEGIN OF BLOCK b_janela WITH FRAME TITLE text-001.
- nome do parametro para importar o arquivo -> RLGRAP-FILENAME PARAMETERS P_ARQ LIKE RLGRAP-FILENAME. SELECTION-SCREEN END OF BLOCK b_janela.
START-OF-SELECTION.
PERFORM F_CARREGAR_DADOS.
PERFORM F_DADOS_P_TAB_INTERNA.
PERFORM F_ATUALIZAR_DADOS.
*& Form F_CARREGAR_DADOS &---------------------------------------------------------------------
text ----------------------------------------------------------------------
--> p1 text
<-- p2 text ---------------------------------------------------------------------- FORM F_CARREGAR_DADOS.
limpar a tabela de entrada e o read line da tabela REFRESH t_tabela. CLEAR t_tabela.
* FUNÇÃO PARA IMPORTAR ARQUIVO
- chamar a função usar o botão MODELO CALL FUNCTION 'WS_UPLOAD' EXPORTING
- CODEPAGE = ' ' FILENAME = P_ARQ " COLOCAR O NOME DA VARIAVEL " IRA CONTER O NOME DO ARQUIVO FILETYPE = 'ASC' " TIPO DE ARQUIVO
- HEADLEN = ' '
- LINE_EXIT = ' '
- TRUNCLEN = ' '
- USER_FORM = ' '
____________________________________________________________________________________
- --> p1 text
- <-- p2 text ---------------------------------------------------------------------- FORM F_ATUALIZAR_DADOS.
LOOP AT t_tempo.
move o conteúdo de uma tabela para outra tabela
apenas os campos com o mesmo nome ( variáveis ) MOVE-CORRESPONDING t_tempo TO ztab1_01.
INSERE O CONTEUDO DA VARIAVEL PARA A TABELA ( GRAVAR ) INSERT ztab1_01.
UPDATE tabela interna
DELETE tabela interna
ENDLOOP.
* EFETIVA AS ALTERAÇÕES NO BANCO
COMMIT WORK.
ENDFORM. " F_ATUALIZAR_DADOS
____________________________________________________________________________________
Programa 7
*& Report ZC00110 * &--------------------------------------------------------------------- *& PROGRAMA PARA BATCH IMPUT * &---------------------------------------------------------------------
REPORT ZC00110.
- Tabela interna para receber dados importados DATA : BEGIN OF t_tabela OCCURS 0, texto01(1000) TYPE C, END OF t_tabela.
DATA: BEGIN OF T_TEMPO OCCURS 0,
BUKRS TYPE RF02K-BUKRS,
EKORG TYPE RF02K-EKORG,
KTOKK TYPE RF02K-KTOKK,
NAME1 TYPE LFA1-NAME1,
SORTL TYPE LFA1-SORTL,
ORT01 TYPE LFA1-ORT01,
PSTLZ TYPE LFA1-PSTLZ,
LAND1 TYPE LFA1-LAND1,
REGIO TYPE LFA1-REGIO,
SPRAS TYPE LFA1-SPRAS,
STCD1 TYPE LFA1-STCD1,
TXJCD TYPE LFA1-TXJCD,
BANKS TYPE LFBK-BANKS,
BANKL TYPE LFBK-BANKL,
BANKN TYPE LFBK-BANKN,
KOINH TYPE LFBK-KOINH,
AKONT TYPE LFB1-AKONT,
FDGRV TYPE LFB1-FDGRV,
REPRF TYPE LFB1-REPRF,
ZWELS TYPE LFB1-ZWELS,
WAERS TYPE LFM1-WAERS,
ZTERM TYPE LFM1-ZTERM,
WEBRE TYPE LFM1-WEBRE,
END OF T_TEMPO.
* COMO CRIAR UMA TABELA INTERNA COPIANDO A ESTRUTURA DA TABELA INTERNA.
para BATCH IMPUT devemos usar a tabela BDCDATA DATA : BEGIN OF t_bdc OCCURS 0. INCLUDE STRUCTURE bdcdata. DATA : END OF t_bdc.
para BATCH IMPUT devemos usar a tabela BDCMSGCOLL para
guardar as mensagens de erro DATA : BEGIN OF t_msg OCCURS 0. INCLUDE STRUCTURE BDCMSGCOLL. DATA : END OF t_msg.
delimitador do arquivo txt CONSTANTS c_tipo TYPE C VALUE ';'. . SELECTION-SCREEN BEGIN OF BLOCK b_janela WITH FRAME TITLE text-001.
nome do parametro para importar o arquivo -> RLGRAP-FILENAME PARAMETERS P_ARQ LIKE RLGRAP-FILENAME. SELECTION-SCREEN END OF BLOCK b_janela.
START-OF-SELECTION.
PERFORM F_IMPORTAR_DADOS.
PERFORM F_CARREGAR_DADOS.
PERFORM F_BATCH_IMPUT.
____________________________________________________________________________________
limpar o header line da tabela CLEAR t_tempo.
SPLIT tabela_interna AT delimitador_do_arquivo INTO
campos que irão receber os dados na seqüência do
arquivo SPLIT t_tabela-texto01 AT c_tipo INTO T_TEMPO-BUKRS T_TEMPO-EKORG T_TEMPO-KTOKK T_TEMPO-NAME T_TEMPO-SORTL T_TEMPO-ORT T_TEMPO-PSTLZ T_TEMPO-LAND T_TEMPO-REGIO T_TEMPO-SPRAS T_TEMPO-STCD T_TEMPO-TXJCD T_TEMPO-BANKS T_TEMPO-BANKL T_TEMPO-BANKN T_TEMPO-KOINH T_TEMPO-AKONT T_TEMPO-FDGRV T_TEMPO-REPRF T_TEMPO-ZWELS T_TEMPO-WAERS T_TEMPO-ZTERM T_TEMPO-WEBRE.
APPEND nome da tabela que ira guardar os dados importados gravar na tabela
APPEND t_tempo.
ENDLOOP.
ENDFORM. " F_CARREGAR_DADOS
*& Form F_BATCH_IMPUT &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_BATCH_IMPUT.
LOOP AT t_tempo.
- PERFORM PARA PREENCHER A tabela BDC
- PERFORM F_BDC_TELA USING programa tela.
- PERFORM F_BDC_CAMPO USING campo valor.
- devemos passar os parâmetros obtidos na transação SHDB
PERFORM F_BDC_TELA USING 'SAPMF02K' '100'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'RF02K-REF_LIFNR'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'RF02K-BUKRS' T_TEMPO-BUKRS.
PERFORM F_BDC_CAMPO USING 'RF02K-EKORG' T_TEMPO-EKORG.
PERFORM F_BDC_CAMPO USING 'RF02K-KTOKK' T_TEMPO-KTOKK.
PERFORM F_BDC_TELA USING 'SAPMF02K' '110'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFA1-TELX1'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFA1-NAME1' T_TEMPO-NAME1.
PERFORM F_BDC_CAMPO USING 'LFA1-SORTL' T_TEMPO-SORTL.
PERFORM F_BDC_CAMPO USING 'LFA1-ORT01' T_TEMPO-ORT01.
PERFORM F_BDC_CAMPO USING 'LFA1-PSTLZ' T_TEMPO-PSTLZ.
PERFORM F_BDC_CAMPO USING 'LFA1-LAND1' T_TEMPO-LAND1.
PERFORM F_BDC_CAMPO USING 'LFA1-REGIO' T_TEMPO-REGIO.
____________________________________________________________________________________
PERFORM F_BDC_CAMPO USING 'LFA1-SPRAS' T_TEMPO-SPRAS.
PERFORM F_BDC_TELA USING 'SAPMF02K' '120'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFA1-STCD3'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFA1-STCD1' T_TEMPO-STCD1.
PERFORM F_BDC_CAMPO USING 'LFA1-TXJCD' T_TEMPO-TXJCD.
PERFORM F_BDC_TELA USING 'SAPMF02K' '130'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFBK-KOINH(01)'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFBK-BANKS(01)' T_TEMPO-BANKS.
PERFORM F_BDC_CAMPO USING 'LFBK-BANKL(01)' T_TEMPO-BANKL.
PERFORM F_BDC_CAMPO USING 'LFBK-BANKN(01)' T_TEMPO-BANKN.
PERFORM F_BDC_CAMPO USING 'LFBK-KOINH(01)' T_TEMPO-KOINH.
PERFORM F_BDC_TELA USING 'SAPMF02K' '130'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFBK-BANKS(01)'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '=ENTR'.
PERFORM F_BDC_TELA USING 'SAPMF02K' '210'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFB1-FDGRV'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFB1-AKONT' T_TEMPO-AKONT.
PERFORM F_BDC_CAMPO USING 'LFB1-FDGRV' T_TEMPO-FDGRV.
PERFORM F_BDC_TELA USING 'SAPMF02K' '215'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFB1-REPRF'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFB1-REPRF' T_TEMPO-REPRF.
PERFORM F_BDC_CAMPO USING 'LFB1-ZWELS' T_TEMPO-ZWELS.
PERFORM F_BDC_TELA USING 'SAPMF02K' '220'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFB5-LFRMA'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_TELA USING 'SAPMF02K' '610'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'RF02K-LIFNR'.
PERFORM F_BDC_TELA USING 'SAPMF02K' '310'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'LFM1-WEBRE'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '/00'.
PERFORM F_BDC_CAMPO USING 'LFM1-WAERS' T_TEMPO-WAERS.
PERFORM F_BDC_CAMPO USING 'LFM1-ZTERM' T_TEMPO-ZTERM.
PERFORM F_BDC_CAMPO USING 'LFM1-WEBRE' T_TEMPO-WEBRE.
PERFORM F_BDC_TELA USING 'SAPMF02K' '320'.
PERFORM F_BDC_CAMPO USING 'BDC_CURSOR' 'RF02K-LIFNR'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '=ENTR'.
PERFORM F_BDC_TELA USING 'SAPLSP01' '300'.
PERFORM F_BDC_CAMPO USING 'BDC_OKCODE' '=YES'.
ENDLOOP.
* EFETIVA AS ALTERAÇÕES NO BANCO
COMMIT WORK.
ENDFORM. " F_BATCH_IMPUT
*& Form F_BDC_TELA &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_BDC_TELA USING P_PROGRAMA P_TELA.
____________________________________________________________________________________
Programa 8
*& Report ZC00111 * *& * &--------------------------------------------------------------------- *& programa para fazer download de tabelas para arquivo txt * *& * &---------------------------------------------------------------------
REPORT ZC00111 LINE-SIZE 200 LINE-COUNT 65 NO STANDARD PAGE HEADING MESSAGE-ID Z01.
TABLES : MARD, MAKT, T001W, T001L.
DATA : BEGIN OF T_MARD OCCURS 0,
MATNR LIKE MARD-MATNR,
WERKS LIKE MARD-WERKS,
NAME1 LIKE T001W-NAME1,
MAKTX LIKE MAKT-MAKTX,
LGORT LIKE MARD-LGORT,
LGOBE LIKE T001L-LGOBE,
LABST LIKE MARD-LABST,
SPEME LIKE MARD-SPEME,
END OF T_MARD.
DATA : BEGIN OF T_001 OCCURS 0,
WERKS LIKE T001W-WERKS,
END OF T_001.
* PARA COLOCARMOS UM DELIMITAR TIPO (;) DEVEMOS CRIAR UMA TABELA INTERNA
* COM OS CAMPOS QUE IREMOS EXPORTAR ( TODOS TXT ) E MOVER O CONTEUDO DA
* TABELA INTERNA PARA A TABELA DE EXPORTAÇÃO
- VARIAVEL PARA CONVERTER O PARAMETRO p_arq EM string
- para passarmos na função gui_download. DATA v_arquivo TYPE STRING.
REFRESH : T_MARD, T_001.
CLEAR : T_MARD, T_001.
SELECTION-SCREEN BEGIN OF BLOCK b_janela WITH FRAME TITLE text-001. SELECT-OPTIONS S_MATERI FOR T_MARD-MATNR. SELECT-OPTIONS S_CENTRO FOR T_MARD-WERKS. SELECT-OPTIONS S_DEPOSI FOR T_MARD-LGORT. SELECTION-SCREEN END OF BLOCK b_janela.
* PARA CRIAR BOTÕES DE SELEÇÃO
SELECTION-SCREEN BEGIN OF BLOCK b_janela3 WITH FRAME TITLE text-003. PARAMETERS P_BOT1 RADIOBUTTON GROUP b1. PARAMETERS P_BOT2 RADIOBUTTON GROUP b1. SELECTION-SCREEN END OF BLOCK b_janela3.
SELECTION-SCREEN BEGIN OF BLOCK b_janela2 WITH FRAME TITLE text-002.
- OBLIGATORY faz com que o parametro seja obRigatório PARAMETERS P_ARQ LIKE RLGRAP-FILENAME. " OBLIGATORY. SELECTION-SCREEN END OF BLOCK b_janela2.
INITIALIZATION.
PERFORM F_SELECIONAR.
AT SELECTION-SCREEN ON s_materi.
AT SELECTION-SCREEN ON s_deposi.
____________________________________________________________________________________
PERFORM F_BUSCAR_MATERIAL.
TOP-OF-PAGE.
PERFORM F_CABECA.
END-OF-PAGE.
START-OF-SELECTION.
PERFORM F_BUSCAR_DADOS.
END-OF-SELECTION.
* VERIFICA SE A VRIAVEL P_ARQ ESTA LIMPA, SE SIM MOSTRA NA TELA SE NÃO GERA ARQUIVO
IF P_ARQ IS NOT INITIAL.
v_arquivo = p_arq.
IF p_bot1 = 'X'.
PERFORM F_DOWNLOAD_ARQ. ELSE.
- somente para UNIX NÃO FUNCIONA EM WINDOWS PERFORM F_DOWN_UNIX. ENDIF. ELSE.
PERFORM F_MOSTRAR_DADOS.
ENDIF.
- o comando AT LINE-SELECTION é um evento que serve para
- quando clicarmos em uma linha de relatório abrir uma outra
- janela e mostrarmos outros dados AT LINE-SELECTION.
- IF NOT var IS INITIAL -> verifica se o header liner esta vazio
- se não for vazio imprime a tela de detalhes IF NOT T_MARD IS INITIAL.
- SET TITLEBAR 'var' mostra o titulo da nova tela SET TITLEBAR 'DET'.
- SY-ULINE -> imprime linha com comprimento fixo WRITE SY-ULINE(83).
- SY-VLINE -> serve para fazer fechamento de bordas WRITE / SY-VLINE. WRITE :'Material : '. WRITE : T_MARD-MATNR,' - ', t_marc-maktx,' '. WRITE 83 SY-VLINE. WRITE / SY-VLINE. WRITE :'Centro : '. WRITE : t_marc-werks, ' - ', t_mard-name1,' '. WRITE 83 SY-VLINE. WRITE /:SY-VLINE. WRITE :'Deposito : '. WRITE : T_MARD-lgort. WRITE 83 SY-VLINE. WRITE /:SY-VLINE. WRITE :'Disponível : '. WRITE : T_MARD-labst. WRITE 83 SY-VLINE. WRITE /:SY-VLINE. WRITE : 'Bloqueado : '. WRITE : T_MARD-SPEME. WRITE 83 SY-VLINE. WRITE / SY-ULINE(83). ENDIF.
- depois de listar a nova informação devemos limpar o header liner da tabela CLEAR T_MARD.
____________________________________________________________________________________
- centro ( no caso werks ) o programa entre e execute as instruções
- contidas dentro dele. AT END OF werks.
- o comando SUM totaliza os campos numéricos SUM. WRITE : / 'TOTAL DO MATERIAL '. WRITE '........................................................:'. WRITE 105 T_MARD-LABST. WRITE 122 T_MARD-SPEME. ENDAT.
ENDLOOP.
ENDFORM. " F_MOSTRAR_DADOS
*& Form F_CABECA &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_CABECA.
DATA novo(60) TYPE C. WRITE 5 sy-datum. WRITE 50 'CHEMYUNION QUIMICA LTDA'. WRITE 120 sy-pagno. WRITE AT / 'Material'. WRITE 13 'Descrição'. WRITE 55 'Centro'. WRITE 65 'Descrição'. WRITE 89 'DEPOSITO.'. WRITE 115 'Estoque'. WRITE 130 'Bloqueado'. ULINE. ENDFORM. " F_CABECA &--------------------------------------------------------------------- *& Form F_BUSCAR_MATERIAL &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_BUSCAR_MATERIAL.
SELECT * FROM mard UP TO 1 ROWS WHERE matnr IN s_materi. ENDSELECT. IF SY-SUBRC <> 0. MESSAGE W001. ENDIF. SELECT * FROM t001L UP TO 1 ROWS WHERE lgort IN s_deposi. ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE W002.
ENDIF.
ENDFORM. " F_BUSCAR_MATERIAL
*& Form F_DOWNLOAD_ARQ &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_DOWNLOAD_ARQ.
- FUNÇAO USADO PARA EXPORTAR ARQUIVOS CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING
- BIN_FILESIZE = FILENAME = V_ARQUIVO FILETYPE = 'ASC'
____________________________________________________________________________________
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = T_MARD
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
- MESSAGE xxx WITH yyy
- xxx numero da mensagem
- yyy parametro que será mostrado na mensagem
- na criação da mensagem devemos colocar o símbolo & para
- indicar que será passado um parametro.
- EXEMPLO : Arquivo & criado com sucesso. MESSAGE S003 WITH P_ARQ. ENDIF.
ENDFORM. " F_DOWNLOAD_ARQ
*& Form F_DOWN_UNIX &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_DOWN_UNIX.
- abre o arquivo para gravar em txt
- OPEN DATASET parametro FOR OUTPUT IN TEXT MODE.
- ou INPUT para ler o arquivo ( importar ) OPEN DATASET p_arq FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc = 0. MESSAGE S004. ELSE. MESSAGE W005.
____________________________________________________________________________________
Programa 9
*& Report ZC00114 * &--------------------------------------------------------------------- *& PROGRAMA PARA EXECUTAR COMANDOS EXTERNOS * *& EXECUTA O COMANDO NO SERVIDOR * &--------------------------------------------------------------------- REPORT ZC.
- DEFINIR TABELA INTERNA COM A STRUCTURA DA TABELA BTCXPM DATA : BEGIN OF t_btc OCCURS 0. INCLUDE STRUCTURE BTCXPM. DATA : END OF t_btc.
- DECLARAR UMA VARIAVEL COM O TIPO SXPGCOLIST-NAME DATA wvar LIKE SXPGCOLIST-NAME.
- IGUALAR ESTA VARIAVEL AO COMANDO CRIADO NA SM69 PASSAR COMO PARAMETRO wvar = 'ZCOMPLEX'. INITIALIZATION. START-OF-SELECTION. PERFORM F_COMANDO_EXTERNO. PERFORM F_MOSTRAR_TABELA. END-OF-SELECTION. &--------------------------------------------------------------------- *& Form F_COMANDO_EXTERNO &--------------------------------------------------------------------- FORM F_COMANDO_EXTERNO.
- FUNÇÃO QUE IRA EXECUTAR O PARAMETRO CALL FUNCTION 'SXPG_CALL_SYSTEM' EXPORTING COMMANDNAME = wvar
- ADDITIONAL_PARAMETERS = ' '
- IMPORTING
- STATUS =
- EXITCODE = TABLES EXEC_PROTOCOL = t_btc EXCEPTIONS NO_PERMISSION = 1 COMMAND_NOT_FOUND = 2 PARAMETERS_TOO_LONG = 3 SECURITY_RISK = 4 WRONG_CHECK_CALL_INTERFACE = 5 PROGRAM_START_ERROR = 6 PROGRAM_TERMINATION_ERROR = 7 X_ERROR = 8 PARAMETER_EXPECTED = 9 TOO_MANY_PARAMETERS = 10 ILLEGAL_COMMAND = 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_COMANDO_EXTERNO &--------------------------------------------------------------------- *& Form F_MOSTRAR_TABELA &--------------------------------------------------------------------- FORM F_MOSTRAR_TABELA. CLEAR T_BTC. LOOP AT T_BTC. WRITE / T_BTC. ENDLOOP. ENDFORM. " F_MOSTRAR_TABELA
____________________________________________________________________________________
Programa 10
*& Include ZC00115 * &---------------------------------------------------------------------
REPORT ZC00115.
DATA : BEGIN OF T_tabela OCCURS 0, campo(20) TYPE C, END OF T_tabela. DATA : BEGIN OF T_vendedor OCCURS 0, nome(10) TYPE C, tv TYPE I, vídeo TYPE I, radio TYPE I, dvd TYPE I, END OF T_vendedor.
INItialization.
PERFORM F_CARREGA_DADOS.
START-OF-SELECTION.
PERFORM F_GRAFICO.
END-OF-SELECTION.
*& Form F_CARREGA_DADOS &---------------------------------------------------------------------
- text ---------------------------------------------------------------------- FORM F_CARREGA_DADOS. REFRESH t_tabela. CLEAR t_tabela.
t_tabela-campo = 'FIFRST=3D'. APPEND t_tabela. t_tabela-campo = 'P3TYPE=TO'. APPEND t_tabela. t_tabela-campo = 'P3CTYP=RO'. APPEND t_tabela. t_tabela-campo = 'TISIZE=2'. APPEND t_tabela. t_tabela-campo = 'CLBACK=X'. APPEND t_tabela. COMMIT WORK.
REFRESH t_vendedor. CLEAR t_vendedor.
t_vendedor-nome = 'ZE'. t_vendedor-tv = 98. t_vendedor-VIDEO = 83. t_vendedor-radio = 45. t_vendedor-dvd = 65. APPEND t_vendedor. t_vendedor-nome = 'MANE'. t_vendedor-tv = 52. t_vendedor-VIDEO = 38. t_vendedor-radio = 23. t_vendedor-dvd = 5. APPEND t_vendedor. t_vendedor-nome = 'JOAO'. t_vendedor-tv = 73. t_vendedor-VIDEO = 54. t_vendedor-radio = 35.
____________________________________________________________________________________
Programa 11
*& Report ZC00116 * *& * &---------------------------------------------------------------------
REPORT ZC00116 LINE-SIZE 80 LINE-COUNT 65 NO STANDARD PAGE HEADING.
TABLES T001L.
DATA: BEGIN OF T_001L OCCURS 0,
WERKS TYPE T001L-WERKS,
LGORT TYPE T001L-LGORT,
LGOBE TYPE T001L-LGOBE,
END OF T_001L.
REFRESH t_001l. CLEAR t_001l.
SELECT werks lgort lgobe INTO TABLE t_001l FROM T001L.
* COMANDO PARA CRIAR BOTAO NO RELATORIO
- SET PF-STATUS 'nome_botao'
- DAR DUPLO CLICK NO nome_do_botão PARA CRIAR O OBJETO
SET PF-STATUS 'BOTAO'.
INITIALIZATION.
TOP-OF-PAGE.
PERFORM F_CABECALHO.
END-OF-PAGE.
START-OF-SELECTION.
PERFORM f_imprimir_dados.
END-OF-SELECTION.
* EVENTO PARA O BOTAO
AT USER-COMMAND.
- variável de sistema. retorna o nome do botão (DOWNLOAD) IF sy-ucomm = 'DOWNLOAD'. PERFORM F_DOW_NOVO.
ENDIF.
*& Form F_CABECALHO &--------------------------------------------------------------------- FORM F_CABECALHO. WRITE 5 sy-datum. WRITE 30 'CHEMYUNION QUIMICA LTDA'. WRITE 75 sy-pagno. WRITE /2 'Centro'. WRITE 10 'Deposito'. WRITE 20 'Descrição'.
ULINE.
ENDFORM. " F_CABECALHO
*& Form f_imprimir_dados &--------------------------------------------------------------------- FORM f_imprimir_dados.
- O FORM QUE VAI SER CHAMADO POR OUTRO PROGRAMA deve ter todas as infor
- mações para gerar o form ( ou seja neste caso montar a tabela )
____________________________________________________________________________________
LOOP AT t_001l. WRITE /2 t_001l-werks. WRITE 10 t_001l-lgort. WRITE 20 t_001l-lgobe. ENDLOOP. ENDFORM. " f_imprimir_dados &--------------------------------------------------------------------- *& Form F_DOW_NOVO &---------------------------------------------------------------------
--> p1 text
<-- p2 text ---------------------------------------------------------------------- FORM F_DOW_NOVO.
tambem temos a função UPLOAD
ESTA FUNÇÃO VEM COM TELA DE ESCOLHAR ( MENU ABRIR )
podemos escolher o formato de arquivo. CALL FUNCTION 'DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = ' '
FILETYPE = ' '
ITEM = ' '
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
SILENT = 'S'
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
ACT_FILENAME =
ACT_FILETYPE =
FILESIZE =
CANCEL = TABLES DATA_TAB = T_001L
FIELDNAMES = EXCEPTIONS INVALID_FILESIZE = 1 INVALID_TABLE_WIDTH = 2 INVALID_TYPE = 3 NO_BATCH = 4 UNKNOWN_ERROR = 5 GUI_REFUSE_FILETRANSFER = 6 OTHERS = 7 . 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_DOW_NOVO