commit 6ee4654c1aa9573a7abe2c8bc4e51f6a8be9f2da
Author: Alexander Sabino <32822107+asabino2@users.noreply.github.com>
Date: Tue Aug 29 14:18:23 2023 -0300
Commit inicial
diff --git a/src/package.devc.xml b/src/package.devc.xml
new file mode 100644
index 0000000..aa364e7
--- /dev/null
+++ b/src/package.devc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Pacote para programa de exportação/importação de dados de ta
+
+
+
+
diff --git a/src/zbc_export_import_da.msag.xml b/src/zbc_export_import_da.msag.xml
new file mode 100644
index 0000000..cf1921a
--- /dev/null
+++ b/src/zbc_export_import_da.msag.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ ZBC_EXPORT_IMPORT_DA
+ P
+ Classe de mensagem para importação/exportação de dados de ta
+
+
+
+ P
+ ZBC_EXPORT_IMPORT_DA
+ 000
+ & & & &
+
+
+ P
+ ZBC_EXPORT_IMPORT_DA
+ 004
+ importação efetuada, &1 linhas da tabela &2 foram impactados no processo
+
+
+ P
+ ZBC_EXPORT_IMPORT_DA
+ 005
+ Exportação efetuada
+
+
+
+
+
diff --git a/src/zpbcr_export_import_table_data.prog.abap b/src/zpbcr_export_import_table_data.prog.abap
new file mode 100644
index 0000000..6aedb07
--- /dev/null
+++ b/src/zpbcr_export_import_table_data.prog.abap
@@ -0,0 +1,369 @@
+*&---------------------------------------------------------------------*
+*& Report ZPBCR_EXPORT_IMPORT_TABLE_DATA
+*&---------------------------------------------------------------------*
+*&
+*&---------------------------------------------------------------------*
+REPORT ZPBCR_EXPORT_IMPORT_TABLE_DATA MESSAGE-ID ZBC_EXPORT_IMPORT_DA.
+
+TYPES: BEGIN OF Y_EXPORT_TABLE,
+ LENG TYPE I,
+ DATA(255) TYPE X,
+ END OF Y_EXPORT_TABLE.
+
+TYPES: BEGIN OF Y_FILEBIN_DATA,
+ FILEDATA(255) TYPE X,
+ END OF Y_FILEBIN_DATA.
+
+SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
+PARAMETERS: P_TABLE TYPE DD02L-TABNAME.
+PARAMETERS: P_WHERE TYPE STRING.
+PARAMETERS: P_CREG TYPE I.
+SELECTION-SCREEN END OF BLOCK BL1.
+
+SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-002.
+PARAMETERS: P_EXPORT RADIOBUTTON GROUP R1 DEFAULT 'X' USER-COMMAND TEST,
+ P_IMPORT RADIOBUTTON GROUP R1.
+PARAMETERS: P_DELTB AS CHECKBOX.
+SELECTION-SCREEN END OF BLOCK BL2.
+SELECTION-SCREEN BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-003.
+PARAMETERS: P_FILEN TYPE STRING.
+PARAMETERS: P_LOCL RADIOBUTTON GROUP R2 DEFAULT 'X',
+ P_SERV RADIOBUTTON GROUP R2.
+SELECTION-SCREEN END OF BLOCK BL3.
+.
+
+INITIALIZATION.
+ PERFORM zf_change_screen.
+
+AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILEN.
+ PERFORM ZF_FILE_F4.
+
+AT SELECTION-SCREEN OUTPUT.
+ PERFORM zf_change_screen.
+
+AT SELECTION-SCREEN.
+ IF SY-UCOMM = 'ONLI'.
+ PERFORM zf_exec.
+ ENDIF.
+*&---------------------------------------------------------------------*
+*& Form zf_exec
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM zf_exec .
+
+
+DATA: WF_REF TYPE REF TO data.
+DATA: LX_DATA_BUFFER TYPE XSTRING.
+DATA: LC_TABLE TYPE DD02L-TABNAME.
+DATA: LI_BINSIZE TYPE I.
+DATA: LT_FILEBIN_DATA TYPE TABLE OF Y_FILEBIN_DATA.
+FIELD-SYMBOLS: TYPE STANDARD TABLE.
+
+IF P_EXPORT = 'X'.
+LC_TABLE = P_TABLE.
+CREATE DATA WF_REF TYPE TABLE OF (LC_TABLE).
+ASSIGN wf_ref->* to .
+
+IF P_CREG IS INITIAL.
+SELECT *
+ FROM (LC_TABLE)
+ INTO TABLE
+ WHERE (P_WHERE).
+ELSE.
+SELECT *
+ FROM (LC_TABLE)
+ INTO TABLE
+ UP TO P_CREG ROWS
+ WHERE (P_WHERE).
+ENDIF.
+
+EXPORT LC_TABLE TO DATA BUFFER LX_DATA_BUFFER COMPRESSION ON.
+
+IF P_LOCL = 'X'.
+CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
+ EXPORTING
+ BUFFER = LX_DATA_BUFFER
+* APPEND_TO_TABLE = ' '
+ IMPORTING
+ OUTPUT_LENGTH = LI_BINSIZE
+ TABLES
+ BINARY_TAB = LT_FILEBIN_DATA
+ .
+
+
+CALL FUNCTION 'GUI_DOWNLOAD'
+ EXPORTING
+ BIN_FILESIZE = LI_BINSIZE
+ FILENAME = P_FILEN
+ FILETYPE = 'BIN'
+* APPEND = ' '
+* WRITE_FIELD_SEPARATOR = ' '
+* HEADER = '00'
+* TRUNC_TRAILING_BLANKS = ' '
+* WRITE_LF = 'X'
+* COL_SELECT = ' '
+* COL_SELECT_MASK = ' '
+* DAT_MODE = ' '
+* CONFIRM_OVERWRITE = ' '
+* NO_AUTH_CHECK = ' '
+* CODEPAGE = ' '
+* IGNORE_CERR = ABAP_TRUE
+* REPLACEMENT = '#'
+* WRITE_BOM = ' '
+* TRUNC_TRAILING_BLANKS_EOL = 'X'
+* WK1_N_FORMAT = ' '
+* WK1_N_SIZE = ' '
+* WK1_T_FORMAT = ' '
+* WK1_T_SIZE = ' '
+* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
+* SHOW_TRANSFER_STATUS = ABAP_TRUE
+* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
+* IMPORTING
+* FILELENGTH =
+ TABLES
+ DATA_TAB = LT_FILEBIN_DATA
+* FIELDNAMES =
+ 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.
+* Implement suitable error handling here
+ENDIF.
+ELSE.
+ OPEN DATASET P_FILEN FOR OUTPUT IN BINARY MODE.
+ TRANSFER LX_DATA_BUFFER TO P_FILEN.
+ CLOSE DATASET P_FILEN.
+ message s005.
+ENDIF.
+
+
+ELSE.
+
+IF P_LOCL = 'X'.
+CALL FUNCTION 'GUI_UPLOAD'
+ EXPORTING
+ FILENAME = P_FILEN
+ FILETYPE = 'BIN'
+* HAS_FIELD_SEPARATOR = ' '
+* HEADER_LENGTH = 0
+* READ_BY_LINE = 'X'
+* DAT_MODE = ' '
+* CODEPAGE = ' '
+* IGNORE_CERR = ABAP_TRUE
+* REPLACEMENT = '#'
+* CHECK_BOM = ' '
+* VIRUS_SCAN_PROFILE =
+* NO_AUTH_CHECK = ' '
+ IMPORTING
+ FILELENGTH = LI_BINSIZE
+* HEADER =
+ TABLES
+ DATA_TAB = LT_FILEBIN_DATA
+* CHANGING
+* ISSCANPERFORMED = ' '
+* EXCEPTIONS
+* FILE_OPEN_ERROR = 1
+* FILE_READ_ERROR = 2
+* NO_BATCH = 3
+* GUI_REFUSE_FILETRANSFER = 4
+* INVALID_TYPE = 5
+* NO_AUTHORITY = 6
+* UNKNOWN_ERROR = 7
+* BAD_DATA_FORMAT = 8
+* HEADER_NOT_ALLOWED = 9
+* SEPARATOR_NOT_ALLOWED = 10
+* HEADER_TOO_LONG = 11
+* UNKNOWN_DP_ERROR = 12
+* ACCESS_DENIED = 13
+* DP_OUT_OF_MEMORY = 14
+* DISK_FULL = 15
+* DP_TIMEOUT = 16
+* OTHERS = 17
+ .
+IF SY-SUBRC <> 0.
+* Implement suitable error handling here
+ENDIF.
+
+CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
+ EXPORTING
+ INPUT_LENGTH = LI_BINSIZE
+* FIRST_LINE = 0
+* LAST_LINE = 0
+ IMPORTING
+ BUFFER = LX_DATA_BUFFER
+ TABLES
+ BINARY_TAB = LT_FILEBIN_DATA
+* EXCEPTIONS
+* FAILED = 1
+* OTHERS = 2
+ .
+IF SY-SUBRC <> 0.
+* Implement suitable error handling here
+ENDIF.
+ELSE.
+ OPEN DATASET P_FILEN FOR INPUT IN BINARY MODE.
+ READ DATASET P_FILEN INTO LX_DATA_BUFFER.
+ CLOSE DATASET P_FILEN.
+ENDIF.
+
+
+IMPORT LC_TABLE FROM DATA BUFFER LX_DATA_BUFFER.
+CREATE DATA WF_REF TYPE TABLE OF (LC_TABLE).
+ASSIGN wf_ref->* to .
+IMPORT FROM DATA BUFFER LX_DATA_BUFFER.
+IF P_DELTB = 'X'.
+ DELETE FROM (LC_TABLE) CLIENT SPECIFIED WHERE MANDT = SY-MANDT.
+ COMMIT WORK.
+ENDIF.
+MODIFY (LC_TABLE) FROM TABLE .
+message s004(ZBC_EXPORT_IMPORT_DA) WITH SY-DBCNT LC_TABLE.
+COMMIT WORK.
+
+
+
+ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form zf_change_screen
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM zf_change_screen .
+ IF P_IMPORT = 'X'.
+ LOOP AT SCREEN.
+ CHECK SCREEN-NAME CS 'P_TABLE' OR SCREEN-NAME CS 'P_WHERE' OR SCREEN-NAME CS 'P_CREG'.
+ SCREEN-INPUT = 0.
+ SCREEN-INVISIBLE = 1.
+ MODIFY SCREEN.
+ ENDLOOP.
+ ELSE.
+ LOOP AT SCREEN.
+ CHECK SCREEN-NAME CS 'P_DELTB'.
+ SCREEN-INPUT = 0.
+ SCREEN-INVISIBLE = 1.
+ MODIFY SCREEN.
+ ENDLOOP.
+ ENDIF.
+ENDFORM.
+
+
+FORM ZF_FILE_F4 .
+DATA: LT_FILETABLE TYPE FILETABLE,
+ LS_FILETABLE LIKE LINE OF LT_FILETABLE.
+DATA: LC_FILTER TYPE STRING.
+DATA: LI_RC TYPE I.
+DATA: LC_FILENAME TYPE STRING,
+ LC_PATH TYPE STRING.
+
+
+
+IF P_LOCL = 'X'.
+IF P_EXPORT = 'X'.
+ CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
+* EXPORTING
+* WINDOW_TITLE =
+* DEFAULT_EXTENSION =
+* DEFAULT_FILE_NAME =
+* WITH_ENCODING =
+* FILE_FILTER =
+* INITIAL_DIRECTORY =
+* PROMPT_ON_OVERWRITE = 'X'
+ CHANGING
+ FILENAME = LC_FILENAME
+ PATH = LC_PATH
+ FULLPATH = P_FILEN
+* USER_ACTION =
+* FILE_ENCODING =
+* EXCEPTIONS
+* CNTL_ERROR = 1
+* ERROR_NO_GUI = 2
+* NOT_SUPPORTED_BY_GUI = 3
+* INVALID_DEFAULT_FILE_NAME = 4
+* others = 5
+ .
+ IF SY-SUBRC <> 0.
+* Implement suitable error handling here
+ ENDIF.
+ELSE.
+CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
+ EXPORTING
+* WINDOW_TITLE =
+* DEFAULT_EXTENSION =
+* DEFAULT_FILENAME =
+ FILE_FILTER = LC_FILTER
+* WITH_ENCODING =
+* INITIAL_DIRECTORY =
+* MULTISELECTION =
+ CHANGING
+ FILE_TABLE = LT_FILETABLE
+ RC = LI_RC
+* USER_ACTION =
+* FILE_ENCODING =
+ EXCEPTIONS
+ FILE_OPEN_DIALOG_FAILED = 1
+ CNTL_ERROR = 2
+ ERROR_NO_GUI = 3
+ NOT_SUPPORTED_BY_GUI = 4
+ others = 5
+ .
+IF SY-SUBRC <> 0.
+* Implement suitable error handling here
+ENDIF.
+
+READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1.
+P_FILEN = LS_FILETABLE-FILENAME.
+
+
+ENDIF.
+
+
+ELSE.
+ CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
+ EXPORTING
+* DIRECTORY = ' '
+ FILEMASK = '*.*'
+ IMPORTING
+ SERVERFILE = P_FILEN
+ EXCEPTIONS
+ CANCELED_BY_USER = 1
+ OTHERS = 2
+ .
+ IF SY-SUBRC <> 0.
+* Implement suitable error handling here
+ ENDIF.
+
+ENDIF.
+
+
+
+
+ENDFORM.
diff --git a/src/zpbcr_export_import_table_data.prog.xml b/src/zpbcr_export_import_table_data.prog.xml
new file mode 100644
index 0000000..cfcedfa
--- /dev/null
+++ b/src/zpbcr_export_import_table_data.prog.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+ ZPBCR_EXPORT_IMPORT_TABLE_DATA
+ 1
+ P
+ X
+ X
+
+
+ -
+ I
+ 001
+ Dados da tabela e seleção
+ 50
+
+ -
+ I
+ 002
+ Exportação/Importação
+ 42
+
+ -
+ I
+ 003
+ Seleção de arquivos
+ 29
+
+ -
+ R
+ Export/Import Table Data
+ 24
+
+ -
+ S
+ P_CREG
+ Qtd registros a exportar (0=td
+ 38
+
+ -
+ S
+ P_DELTB
+ Elimina dados antes
+ 27
+
+ -
+ S
+ P_EXPORT
+ Exportar dados
+ 22
+
+ -
+ S
+ P_FILEN
+ Nome do File
+ 20
+
+ -
+ S
+ P_IMPORT
+ Importar dados
+ 22
+
+ -
+ S
+ P_LOCL
+ Local
+ 13
+
+ -
+ S
+ P_SERV
+ Servidor
+ 16
+
+ -
+ S
+ P_TABLE
+ .
+ 9
+ D
+
+ -
+ S
+ P_WHERE
+ Clausula where (opcional)
+ 33
+
+
+
+
+