diff --git a/src/zbos_initi_vtin_f01.prog.abap b/src/zbos_initi_vtin_f01.prog.abap
index e7b010e..bf24628 100644
--- a/src/zbos_initi_vtin_f01.prog.abap
+++ b/src/zbos_initi_vtin_f01.prog.abap
@@ -1,3 +1,9 @@
*&---------------------------------------------------------------------*
*& Include ZBOS_INITI_VTIN_F01
*&---------------------------------------------------------------------*
+
+
+*STR8 - Editing Requests (Interactively) Grupo
+
+
+*TR_INSERT_REQUEST_WITH_TASKS - Create a job with tasks (without Dialogue) Modulo
diff --git a/src/zbos_teste.tabl.xml b/src/zbos_teste.tabl.xml
index 76ac907..8618f72 100644
--- a/src/zbos_teste.tabl.xml
+++ b/src/zbos_teste.tabl.xml
@@ -8,6 +8,7 @@
TRANSP
X
teste
+ X
C
1
diff --git a/src/zbos_update_tab.prog.abap b/src/zbos_update_tab.prog.abap
new file mode 100644
index 0000000..7a88711
--- /dev/null
+++ b/src/zbos_update_tab.prog.abap
@@ -0,0 +1,26 @@
+*&---------------------------------------------------------------------*
+*& Report ZBOS_UPDATE_TAB
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZBOS_UPDATE_TAB.
+
+*----------------------------------------------------------------------
+* Declarações Globais
+*----------------------------------------------------------------------
+INCLUDE ZBOS_UPDATE_TAB_i01.
+
+*----------------------------------------------------------------------
+* Selection Screen
+*----------------------------------------------------------------------
+INCLUDE ZBOS_UPDATE_TAB_i02.
+
+*----------------------------------------------------------------------
+* Start of Selection
+*----------------------------------------------------------------------
+INCLUDE ZBOS_UPDATE_TAB_i03.
+
+*----------------------------------------------------------------------
+* Includes
+*----------------------------------------------------------------------
+INCLUDE ZBOS_UPDATE_TAB_f01.
diff --git a/src/zbos_update_tab.prog.xml b/src/zbos_update_tab.prog.xml
new file mode 100644
index 0000000..28b8eff
--- /dev/null
+++ b/src/zbos_update_tab.prog.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ ZBOS_UPDATE_TAB
+ 1
+ E
+ X
+ X
+
+
+ -
+ R
+ Update em tabela
+ 16
+
+
+
+
+
diff --git a/src/zbos_update_tab_f01.prog.abap b/src/zbos_update_tab_f01.prog.abap
new file mode 100644
index 0000000..064b5c7
--- /dev/null
+++ b/src/zbos_update_tab_f01.prog.abap
@@ -0,0 +1,357 @@
+*&---------------------------------------------------------------------*
+*& Include ZBOS_UPDATE_TAB_F01
+*&---------------------------------------------------------------------*
+
+FORM f_processo_principal .
+
+ PERFORM upload_arquivo.
+
+ PERFORM transf_arquivo.
+
+ PERFORM carrega_dados.
+
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form Upload_arquivo
+*&---------------------------------------------------------------------*
+
+FORM upload_arquivo .
+
+ IF p_tab1 EQ abap_true.
+
+ REFRESH: t_excel_file.
+
+ v_percentual = 50.
+ v_texto = 'Upload arquivo...'.
+
+* PERFORM f_reloginho USING v_percentual
+* v_texto.
+
+ CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
+ EXPORTING
+ filename = p_up
+ i_begin_col = c_ecol
+ i_begin_row = c_erow
+ i_end_col = c_col_1
+ i_end_row = c_lin
+ TABLES
+ intern = t_excel_file
+ EXCEPTIONS
+ inconsistent_parameters = 1
+ upload_ole = 2
+ OTHERS = 3.
+
+
+
+
+ IF sy-subrc <> 0.
+ MESSAGE 'Não foi possível fazer a carga' TYPE 'E'.
+ ENDIF.
+
+ IF NOT t_excel_file[] IS INITIAL.
+* PERFORM f_update_tables_mat.
+ ENDIF.
+
+ ELSE.
+
+ REFRESH: t_excel_file.
+
+ v_percentual = 50.
+ v_texto = 'Upload arquivo...'.
+
+ CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
+ EXPORTING
+ percentage = v_percentual
+ text = v_texto
+ EXCEPTIONS
+ OTHERS = 1.
+
+ CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
+ EXPORTING
+ filename = p_up
+ i_begin_col = c_ecol
+ i_begin_row = c_erow
+ i_end_col = c_col_2
+ i_end_row = c_lin
+ TABLES
+ intern = t_excel_file
+ EXCEPTIONS
+ inconsistent_parameters = 1
+ upload_ole = 2
+ OTHERS = 3.
+
+
+ IF sy-subrc <> 0.
+ MESSAGE 'Não foi possível fazer a carga' TYPE 'E'.
+ ENDIF.
+
+ IF NOT t_excel_file[] IS INITIAL.
+* PERFORM f_update_tables_um.
+ ENDIF.
+
+ ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form transf_arquivo
+*&---------------------------------------------------------------------*
+
+FORM transf_arquivo .
+
+ DATA: ls_excel_file TYPE alsmex_tabline,
+ lt_cab TYPE TABLE OF alsmex_tabline,
+ ls_cab TYPE alsmex_tabline,
+ lv_lin_tab TYPE kcd_ex_row_n VALUE '0001',
+ lv_lin_cab TYPE kcd_ex_row_n VALUE '0002',
+ lv_lin_dados TYPE kcd_ex_row_n VALUE '0003',
+ lv_campo TYPE name_feld,
+ lt_campo TYPE TABLE OF name_feld,
+ ls_tadir TYPE tadir.
+
+ "" Preenche tabela
+
+ READ TABLE t_excel_file INTO ls_excel_file INDEX 1.
+ IF sy-subrc IS INITIAL.
+
+ gv_tabela = ls_excel_file-value.
+
+ SELECT SINGLE *
+ FROM tadir
+ INTO ls_tadir
+ WHERE pgmid = 'R3TR'
+ AND object = 'TABL'
+ AND obj_name = gv_tabela .
+
+ IF sy-subrc IS INITIAL.
+ DELETE t_excel_file WHERE row = lv_lin_tab.
+ ELSE.
+ "" ERRO MENSAGEM .
+ LEAVE SCREEN .
+ ENDIF.
+ ELSE.
+ LEAVE SCREEN .
+ ENDIF.
+
+
+
+ ""Monta tabela de campos
+
+ DATA: lo_descr TYPE REF TO cl_abap_typedescr,
+ lo_struct TYPE REF TO cl_abap_structdescr,
+ lv_tabname TYPE abap_abstypename,
+
+ lo_linha TYPE REF TO data,
+ lo_tabela TYPE REF TO data.
+
+ FIELD-SYMBOLS: TYPE any,
+ TYPE STANDARD TABLE,
+ TYPE any.
+
+
+ lo_descr = cl_abap_typedescr=>describe_by_name( gv_tabela ).
+ lo_struct ?= lo_descr.
+
+ lv_tabname = lo_struct->absolute_name.
+
+ CREATE DATA lo_tabela TYPE STANDARD TABLE OF (lv_tabname).
+ CREATE DATA lo_linha TYPE HANDLE lo_struct.
+
+
+
+ DATA(lv_comp) = lines( lo_struct->components ).
+
+
+* DATA(lv_comp) = lines(lt_cab).
+
+* DESCRIBE TABLE lo_struct->components LINES DATA(lv_comp).
+
+
+
+ ASSIGN lo_tabela->* TO .
+ ASSIGN lo_linha->* TO .
+
+ ""Preenche linhas de cabecalho
+
+
+
+ lt_cab[] = t_excel_file[].
+ DELETE lt_cab WHERE row <> lv_lin_cab.
+
+* IF lines( lt_cab ) = ( lines( lo_struct->components ) - 1 ).
+* ENDIF.
+
+* LOOP AT lt_cab INTO DATA(ls_cab).
+** CONCATENATE '-' ls_cab-value INTO lv_campo.
+**
+** ASSIGN (lv_campo) TO .
+* CLEAR lv_campo.
+*
+* lv_campo = ls_cab-value.
+* APPEND lv_campo TO lt_campo.
+*
+* ENDLOOP.
+
+ DATA(lr_campo) = VALUE ace_generic_range_t( FOR s_campo IN lt_cab ( sign = 'I'
+ option = 'EQ'
+ low = to_upper( s_campo-value ) ) ).
+
+* DATA lt_tabela TYPE TABLE OF dd03l.
+ DATA(lv_totcol) = lines( lt_cab ).
+ DATA(lv_index) = sy-tabix.
+
+ SELECT *
+ INTO TABLE gt_tabela
+ FROM dd03l
+ WHERE tabname = gv_tabela
+ AND fieldname IN lr_campo .
+
+
+
+* FREE: lo_tabela, lo_linha.
+
+ "" preencher dados
+* READ TABLE t_excel_file WITH KEY row = lv_lin_dados TRANSPORTING NO FIELDS.
+
+
+ DELETE t_excel_file WHERE row < lv_lin_dados.
+* LOOP AT t_excel_file INTO ls_excel_file FROM lv_index.
+ LOOP AT t_excel_file INTO ls_excel_file.
+
+
+ READ TABLE lt_cab INTO ls_cab WITH KEY col = ls_excel_file-col.
+
+ IF sy-subrc IS INITIAL.
+
+ CONCATENATE '-' ls_cab-value INTO lv_campo.
+ ASSIGN (lv_campo) TO .
+
+ IF IS ASSIGNED.
+ = ls_excel_file-value.
+ ENDIF.
+ CLEAR lv_campo.
+
+ UNASSIGN .
+ ENDIF.
+
+ IF ls_excel_file-col = lv_totcol.
+
+ APPEND TO .
+
+ ENDIF.
+
+ ENDLOOP.
+
+ ASSIGN TO .
+
+
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form carrega_dados
+*&---------------------------------------------------------------------*
+
+FORM carrega_dados .
+
+ DATA: lv_set TYPE string,
+ lv_where TYPE string,
+ lv_campo TYPE name_feld,
+ lt_camp_chave TYPE TABLE OF dd03l,
+ ls_camp_chave TYPE dd03l,
+ lt_camp_normal TYPE TABLE OF dd03l,
+ ls_camp_normal TYPE dd03l.
+
+ FIELD-SYMBOLS: TYPE any,
+ TYPE any.
+
+ BREAK-POINT.
+
+ lt_camp_chave = lt_camp_normal = gt_tabela.
+
+ DELETE lt_camp_chave WHERE keyflag = ''.
+ DELETE lt_camp_normal WHERE keyflag = 'X'.
+* DELETE INDEX 1.
+
+
+
+ LOOP AT ASSIGNING .
+
+ ""campo chaves
+
+ LOOP AT lt_camp_chave INTO ls_camp_chave.
+
+ CONCATENATE '-' ls_camp_chave-fieldname INTO lv_campo.
+ ASSIGN (lv_campo) TO .
+
+ IF lv_where IS INITIAL.
+ lv_where = |{ ls_camp_chave-fieldname } = { }|.
+ ELSE.
+ lv_where = |{ lv_where } AND { ls_camp_chave-fieldname } = { }|.
+ ENDIF.
+
+ ENDLOOP.
+
+ ""campo nao chaves
+
+ LOOP AT lt_camp_normal INTO ls_camp_normal.
+
+ CONCATENATE '-' ls_camp_normal-fieldname INTO lv_campo.
+ ASSIGN (lv_campo) TO .
+
+ IF lv_set IS INITIAL.
+ lv_set = |{ ls_camp_normal-fieldname } = { }|.
+ ELSE.
+ lv_set = |{ lv_set }, { ls_camp_normal-fieldname } = { }|.
+ ENDIF.
+
+ ENDLOOP.
+
+ BREAK-POINT.
+ BREAK-POINT.
+ BREAK-POINT.
+
+ UPDATE (gv_tabela) SET (lv_set) WHERE (lv_where).
+
+ CLEAR: lv_set, lv_where.
+
+ ENDLOOP.
+
+ COMMIT WORK AND WAIT.
+
+
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form select_request
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM select_request USING p_type TYPE C
+ CHANGING p_request TYPE e071k-trkorr.
+ .
+
+ TYPE-POOLS: trwbo.
+
+ DATA: ls_request TYPE trwbo_request_header.
+
+ CALL FUNCTION 'TR_REQUEST_CHOICE'
+ EXPORTING
+ iv_request_types = p_type
+ IMPORTING
+ es_request = ls_request
+ EXCEPTIONS
+ invalid_request = 1
+ invalid_request_type = 2
+ user_not_owner = 3
+ no_objects_appended = 4
+ enqueue_error = 5
+ cancelled_by_user = 6
+ recursive_call = 7
+ OTHERS = 8.
+
+ p_request = ls_request-trkorr.
+
+ENDFORM.
diff --git a/src/zbos_update_tab_f01.prog.xml b/src/zbos_update_tab_f01.prog.xml
new file mode 100644
index 0000000..1dddf60
--- /dev/null
+++ b/src/zbos_update_tab_f01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZBOS_UPDATE_TAB_F01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZBOS_UPDATE_TAB_F01
+ 27
+
+
+
+
+
diff --git a/src/zbos_update_tab_i01.prog.abap b/src/zbos_update_tab_i01.prog.abap
new file mode 100644
index 0000000..8781806
--- /dev/null
+++ b/src/zbos_update_tab_i01.prog.abap
@@ -0,0 +1,56 @@
+*&---------------------------------------------------------------------*
+*& Include ZBOS_UPDATE_TAB_I01
+*&---------------------------------------------------------------------*
+
+
+TYPE-POOLS: abap.
+
+*----------------------------------------------------------------------*
+* Tabelas Interna
+*----------------------------------------------------------------------*
+
+DATA: gt_cab TYPE TABLE OF alsmex_tabline,
+ gt_tabela TYPE TABLE OF dd03l,
+ t_excel_file TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
+* t_arquivo_excel_01 TYPE TABLE OF /vtin/_mat_forne,
+* t_arquivo_excel_02 TYPE TABLE OF /vtin/_conv_un.
+
+*----------------------------------------------------------------------*
+*Estruturas
+*----------------------------------------------------------------------*
+
+DATA: gs_cab TYPE alsmex_tabline.
+
+*----------------------------------------------------------------------*
+* Field Symbols
+*----------------------------------------------------------------------*
+
+FIELD-SYMBOLS: TYPE STANDARD TABLE,
+ TYPE any.
+
+*----------------------------------------------------------------------*
+* Variaveis
+*----------------------------------------------------------------------*
+
+DATA: gv_tabela TYPE se16n_tab,
+ gv_lin_tab TYPE kcd_ex_row_n VALUE '0001',
+ gv_lin_cab TYPE kcd_ex_row_n VALUE '0002',
+ gv_lin_dados TYPE kcd_ex_row_n VALUE '0003',
+
+ v_arqui TYPE string,
+ v_coluna(18) TYPE c,
+ v_percentual TYPE f,
+ v_texto(50) TYPE c.
+
+*----------------------------------------------------------------------*
+* Constants
+*----------------------------------------------------------------------*
+
+CONSTANTS: c_col_1 TYPE i VALUE 17, "Num de Colunas do xls TABELA 1
+ c_col_2 TYPE i VALUE 20, "Num de Colunas do xls TABELA 2
+ c_lin TYPE i VALUE 11000, "Num de Linhas do xls
+ c_path(3) TYPE c VALUE 'C:\',
+ c_mask(11) TYPE c VALUE ',*.xls,*.*.',
+ c_o TYPE c VALUE 'O',
+ c_ecol TYPE i VALUE 1,
+ c_erow TYPE i VALUE 1.
diff --git a/src/zbos_update_tab_i01.prog.xml b/src/zbos_update_tab_i01.prog.xml
new file mode 100644
index 0000000..3657d83
--- /dev/null
+++ b/src/zbos_update_tab_i01.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZBOS_UPDATE_TAB_I01
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZBOS_UPDATE_TAB_I01
+ 27
+
+
+
+
+
diff --git a/src/zbos_update_tab_i02.prog.abap b/src/zbos_update_tab_i02.prog.abap
new file mode 100644
index 0000000..96c3b95
--- /dev/null
+++ b/src/zbos_update_tab_i02.prog.abap
@@ -0,0 +1,47 @@
+*&---------------------------------------------------------------------*
+*& Include ZBOS_UPDATE_TAB_I02
+*&---------------------------------------------------------------------*
+
+
+SELECTION-SCREEN: BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-001.
+
+ PARAMETERS: p_tab1 RADIOBUTTON GROUP g1, " Prenche Material
+ p_tab2 RADIOBUTTON GROUP g1. " Preenche unidade de medida
+ PARAMETERS: p_up TYPE rlgrap-filename OBLIGATORY.
+
+SELECTION-SCREEN: END OF BLOCK block1.
+
+
+SELECTION-SCREEN: BEGIN OF BLOCK block2 WITH FRAME TITLE TEXT-002.
+
+ PARAMETERS: p_cust TYPE e071k-trkorr,
+ p_work TYPE e071k-trkorr.
+
+SELECTION-SCREEN: END OF BLOCK block2.
+
+AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_up.
+
+
+*IF p_tab1 = .
+*
+*ENDIF.
+
+ CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
+ CHANGING
+ file_name = p_up
+ 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.
+
+AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_cust.
+ PERFORM select_request USING 'C'
+ CHANGING p_cust.
+
+ AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_work.
+ PERFORM select_request USING 'W'
+ CHANGING p_work.
diff --git a/src/zbos_update_tab_i02.prog.xml b/src/zbos_update_tab_i02.prog.xml
new file mode 100644
index 0000000..25f349d
--- /dev/null
+++ b/src/zbos_update_tab_i02.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZBOS_UPDATE_TAB_I02
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZBOS_UPDATE_TAB_I02
+ 27
+
+
+
+
+
diff --git a/src/zbos_update_tab_i03.prog.abap b/src/zbos_update_tab_i03.prog.abap
new file mode 100644
index 0000000..23aca4e
--- /dev/null
+++ b/src/zbos_update_tab_i03.prog.abap
@@ -0,0 +1,9 @@
+*&---------------------------------------------------------------------*
+*& Include ZBOS_UPDATE_TAB_I03
+*&---------------------------------------------------------------------*
+
+
+START-OF-SELECTION.
+
+* // Programa principal.
+ PERFORM f_processo_principal.
diff --git a/src/zbos_update_tab_i03.prog.xml b/src/zbos_update_tab_i03.prog.xml
new file mode 100644
index 0000000..4c78cf1
--- /dev/null
+++ b/src/zbos_update_tab_i03.prog.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ ZBOS_UPDATE_TAB_I03
+ I
+ E
+ X
+
+
+ -
+ R
+ Include ZBOS_UPDATE_TAB_I03
+ 27
+
+
+
+
+