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 + + + + +