Sie sind auf Seite 1von 5

*&---------------------------------------------------------------------*

*& Report ZRBC_EXERCICIO_07_01


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrbc_exercicio_07_01 NO STANDARD PAGE HEADING.
*{ Declara estrutura STRUCTURE
TYPES: BEGIN OF st_doc,
texto(200),
END OF st_doc.
TYPES: BEGIN OF st_item,
texto(200),
END OF st_item.
TYPES: BEGIN OF st_dados,
texto(200),
END OF st_dados.
DATA: contnped TYPE ebeln,
contitem TYPE ebelp.
*&---------------------------------------------------------------------*
*& Tabelas Internas
*&---------------------------------------------------------------------*
DATA: ti_doc TYPE st_doc OCCURS 0 WITH HEADER LINE,
ti_item TYPE st_item OCCURS 0 WITH HEADER LINE,
ti_dados TYPE st_dados OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF int_bdc OCCURS 100.
INCLUDE STRUCTURE bdcdata.
DATA END OF int_bdc.
*&---------------------------------------------------------------------*
*& Parametros de Selecao
*&---------------------------------------------------------------------*
*PARAMETERS PC_CARRI LIKE SPFLI-CARRID OBLIGATORY.
PARAMETERS p_path LIKE rlgrap-filename.
TOP-OF-PAGE.
WRITE text-010.
* Abre janela para busca de arquivo de entrada Bancos
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
PERFORM value_req_file_in CHANGING p_path.
*&---------------------------------------------------------------------*
*& Form VALUE_REQ_FILE_IN
*&---------------------------------------------------------------------*
FORM value_req_file_in CHANGING filename TYPE c.
DATA: up_file LIKE rlgrap-filename.
" PC-Upload
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = ' '
def_path = 'C:\'
mask = ',Texto,*.txt,Todos,*.*.'
mode = 'O'
title = 'Seleo de Arquivos'
IMPORTING
filename = up_file
EXCEPTIONS
OTHERS.
IF sy-subrc EQ 0. "Only if name has been changed,
filename = up_file. "copy the new name
ENDIF.
ENDFORM. " VALUE_REQ_FILE_IN
*&---------------------------------------------------------------------*
*& START-OF-SELECTION Inicio do Processamento
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA lc_texto(100).
DATA: lc_msg_id LIKE t100-arbgb,
lc_msg_no LIKE t100-msgnr,
lc_msg_var1 LIKE balm-msgv1,
lc_msg_var2 LIKE balm-msgv2,
lc_msg_var3 LIKE balm-msgv3,
lc_msg_var4 LIKE balm-msgv4.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_path
TABLES
data_tab = ti_dados
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* break instrutor.
LOOP AT ti_dados.
IF ti_dados(1) = 'P'.
CLEAR contitem.
CLEAR int_bdc.
REFRESH int_bdc.
contnped = 90.
PERFORM bdc_telas USING 'SAPLY01PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01PED-NUM_PED(01)',
'BDC_OKCODE' '=NEWL'.
PERFORM bdc_telas USING 'SAPLY01PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01PED-HORA(01)',
'BDC_OKCODE' '=SAVE',
'YS01PED-NUM_PED(01)' contnped,
'YS01PED-TIPO_PED(01)' ti_dados+1(2),
'YS01PED-TEXTO(01)' ti_dados+3(30),
'YS01PED-DATA(01)' sy-datum,
'YS01PED-USUARIO(01)' sy-uname,
'YS01PED-HORA(01)' sy-uzeit.
PERFORM bdc_telas USING 'SAPLY01PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01PED-NUM_PED(02)',
'BDC_OKCODE' '=BACK'.
PERFORM bdc_telas USING 'SAPLY01PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01PED-NUM_PED(02)',
'BDC_OKCODE' '=BACK'.
CALL TRANSACTION 'Y01PED' USING int_bdc MODE 'N' .
lc_msg_id = sy-msgid.
lc_msg_no = sy-msgno.
lc_msg_var1 = sy-msgv1.
lc_msg_var2 = sy-msgv2.
lc_msg_var3 = sy-msgv3.
lc_msg_var4 = sy-msgv4.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
* LANGUAGE = ' '
msg_id = lc_msg_id
msg_no = lc_msg_no
msg_var1 = lc_msg_var1
msg_var2 = lc_msg_var2
msg_var3 = lc_msg_var3
msg_var4 = lc_msg_var4
IMPORTING
msg_text = lc_texto
EXCEPTIONS
function_not_completed = 1
message_not_found = 2
OTHERS = 3
.
WRITE / lc_texto.
ENDIF.
IF ti_dados(1) = 'I'.
contitem = contitem + 1.
CLEAR int_bdc.
REFRESH int_bdc.
PERFORM bdc_telas USING 'SAPLY01ITEM_PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01ITEM_PED-NUM_PED(01)',
'BDC_OKCODE' '=NEWL'.
PERFORM bdc_telas USING 'SAPLY01ITEM_PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01ITEM_PED-PRECO(01)',
'BDC_OKCODE' '/00',
'YS01ITEM_PED-NUM_PED(01)' contnped,
'YS01ITEM_PED-ITEM_PED(01)' contitem,
'YS01ITEM_PED-COD_MAT(01)' ti_dados+1(18),
'YS01ITEM_PED-QUANTIDADE(01)' ti_dados+19(10),
'YS01ITEM_PED-PRECO(01)' ti_dados+29(10).
PERFORM bdc_telas USING 'SAPLY01ITEM_PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01ITEM_PED-NUM_PED(02)',
'BDC_OKCODE' '=SAVE'.
PERFORM bdc_telas USING 'SAPLY01ITEM_PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01ITEM_PED-NUM_PED(02)',
'BDC_OKCODE' '=BACK'.
PERFORM bdc_telas USING 'SAPLY01ITEM_PED' '0100'.
PERFORM bdc_campos USING:
'BDC_CURSOR' 'YS01ITEM_PED-NUM_PED(02)',
'BDC_OKCODE' '=BACK'.
CALL TRANSACTION 'Y01ITEM_PED' USING int_bdc MODE 'N' .
lc_msg_id = sy-msgid.
lc_msg_no = sy-msgno.
lc_msg_var1 = sy-msgv1.
lc_msg_var2 = sy-msgv2.
lc_msg_var3 = sy-msgv3.
lc_msg_var4 = sy-msgv4.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
* LANGUAGE = ' '
msg_id = lc_msg_id
msg_no = lc_msg_no
msg_var1 = lc_msg_var1
msg_var2 = lc_msg_var2
msg_var3 = lc_msg_var3
msg_var4 = lc_msg_var4
IMPORTING
msg_text = lc_texto
EXCEPTIONS
function_not_completed = 1
message_not_found = 2
OTHERS = 3
.
WRITE / lc_texto.
ENDIF.
ENDLOOP.
*---------------------------------------------------------------------*
* Form BDC_TELA
*---------------------------------------------------------------------*
* Pega parmetros e entra cada tela na tabela interna BDC *
*---------------------------------------------------------------------*
FORM bdc_telas USING p_program p_screen.
CLEAR int_bdc. "Limpa tabela interna
int_bdc-program = p_program.
int_bdc-dynpro = p_screen.
int_bdc-dynbegin = 'X'.
APPEND int_bdc.
CLEAR int_bdc.
ENDFORM. "BDC_SCREEN
*---------------------------------------------------------------------*
* Form BDC_CAMPOS
*---------------------------------------------------------------------*
* Pega parmetros e entra os campos da tela na tabela interna BDC *
* table specified for a new field. *
*---------------------------------------------------------------------*
FORM bdc_campos USING p_name p_value.
CASE p_value.
WHEN ' '. "Se valor estiver em branco, no move
WHEN OTHERS. "Move valor
MOVE p_name TO int_bdc-fnam.
MOVE p_value TO int_bdc-fval.
APPEND int_bdc.
ENDCASE.
CLEAR int_bdc.
ENDFORM. "BDC_FIELD

Das könnte Ihnen auch gefallen