Upadate table program

This commit is contained in:
2026-05-18 20:22:06 +00:00
parent f228a1f901
commit bae21a203b
12 changed files with 603 additions and 0 deletions

View File

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

View File

@@ -8,6 +8,7 @@
<TABCLASS>TRANSP</TABCLASS>
<CLIDEP>X</CLIDEP>
<DDTEXT>teste</DDTEXT>
<MAINFLAG>X</MAINFLAG>
<CONTFLAG>C</CONTFLAG>
<EXCLASS>1</EXCLASS>
</DD02V>

View File

@@ -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.

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZBOS_UPDATE_TAB</NAME>
<SUBC>1</SUBC>
<RLOAD>E</RLOAD>
<FIXPT>X</FIXPT>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Update em tabela</ENTRY>
<LENGTH>16</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@@ -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: <fs_campo> TYPE any,
<fs_tabela> TYPE STANDARD TABLE,
<fs_linha> 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 <fs_tabela>.
ASSIGN lo_linha->* TO <fs_linha>.
""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 '<fs_linha>-' ls_cab-value INTO lv_campo.
**
** ASSIGN (lv_campo) TO <fs_campo>.
* 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 '<fs_linha>-' ls_cab-value INTO lv_campo.
ASSIGN (lv_campo) TO <fs_campo>.
IF <fs_campo> IS ASSIGNED.
<fs_campo> = ls_excel_file-value.
ENDIF.
CLEAR lv_campo.
UNASSIGN <fs_campo>.
ENDIF.
IF ls_excel_file-col = lv_totcol.
APPEND <fs_linha> TO <fs_tabela>.
ENDIF.
ENDLOOP.
ASSIGN <fs_tabela> TO <fs_g_tabela>.
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: <fs_campo> TYPE any,
<fs_linha> 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 <fs_g_tabela> INDEX 1.
LOOP AT <fs_g_tabela> ASSIGNING <fs_linha>.
""campo chaves
LOOP AT lt_camp_chave INTO ls_camp_chave.
CONCATENATE '<fs_linha>-' ls_camp_chave-fieldname INTO lv_campo.
ASSIGN (lv_campo) TO <fs_campo>.
IF lv_where IS INITIAL.
lv_where = |{ ls_camp_chave-fieldname } = { <fs_campo> }|.
ELSE.
lv_where = |{ lv_where } AND { ls_camp_chave-fieldname } = { <fs_campo> }|.
ENDIF.
ENDLOOP.
""campo nao chaves
LOOP AT lt_camp_normal INTO ls_camp_normal.
CONCATENATE '<fs_linha>-' ls_camp_normal-fieldname INTO lv_campo.
ASSIGN (lv_campo) TO <fs_campo>.
IF lv_set IS INITIAL.
lv_set = |{ ls_camp_normal-fieldname } = { <fs_campo> }|.
ELSE.
lv_set = |{ lv_set }, { ls_camp_normal-fieldname } = { <fs_campo> }|.
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.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZBOS_UPDATE_TAB_F01</NAME>
<SUBC>I</SUBC>
<RLOAD>E</RLOAD>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Include ZBOS_UPDATE_TAB_F01</ENTRY>
<LENGTH>27</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@@ -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: <fs_g_tabela> TYPE STANDARD TABLE,
<fs_g_linha> 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.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZBOS_UPDATE_TAB_I01</NAME>
<SUBC>I</SUBC>
<RLOAD>E</RLOAD>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Include ZBOS_UPDATE_TAB_I01</ENTRY>
<LENGTH>27</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@@ -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.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZBOS_UPDATE_TAB_I02</NAME>
<SUBC>I</SUBC>
<RLOAD>E</RLOAD>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Include ZBOS_UPDATE_TAB_I02</ENTRY>
<LENGTH>27</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@@ -0,0 +1,9 @@
*&---------------------------------------------------------------------*
*& Include ZBOS_UPDATE_TAB_I03
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* // Programa principal.
PERFORM f_processo_principal.

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZBOS_UPDATE_TAB_I03</NAME>
<SUBC>I</SUBC>
<RLOAD>E</RLOAD>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Include ZBOS_UPDATE_TAB_I03</ENTRY>
<LENGTH>27</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>