Vous êtes sur la page 1sur 10

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

*& Include ZVI_CUST_INFO_CLASSICAL_F01


*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init .

CLEAR : gs_kna1.
REFRESH gt_kna1.

***assign default values to account group


s_ktokd-sign = 'I'.
s_ktokd-option = 'EQ'.
s_ktokd-low = '0001'.
APPEND s_ktokd.

s_ktokd-sign = 'I'.
s_ktokd-option = 'EQ'.
s_ktokd-low = '0002'.
APPEND s_ktokd.

ENDFORM. " INIT


*&---------------------------------------------------------------------*
*& Form VALIDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validate .

SELECT SINGLE kunnr FROM kna1


INTO gv_kunnr
WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
MESSAGE 'Data does not exist in Master table' TYPE 'E'.
ENDIF.

ENDFORM. " VALIDATE


*&---------------------------------------------------------------------*
*& Form GET_KUNNR_F4_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_kunnr_f4_help .

***fetch data to provide in F4 help


SELECT kunnr
name1
telf1
ktokd
adrnr FROM kna1 UP TO 5000 ROWS
INTO TABLE gt_f4_kunnr.

***attach internal table to select options


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'KUNNR'
* PVALKEY = ' '
dynpprog = sy-cprog
dynpnr = '1000'
dynprofield = 'S_KUNNR'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = gt_f4_kunnr
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM. " GET_KUNNR_F4_HELP


*&---------------------------------------------------------------------*
*& Form GET_KUNNR_F1_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_kunnr_f1_help .

CALL FUNCTION 'DSYS_SHOW_FOR_F1HELP'


EXPORTING
* APPLICATION = 'SO70'
dokclass = 'TX'
doklangu = sy-langu
dokname = 'ZKUNNR_F1'
* DOKTITLE = ' '
* HOMETEXT = ' '
* OUTLINE = ' '
* VIEWNAME = 'STANDARD'
* Z_ORIGINAL_OUTLINE = ' '
* CALLED_FROM_SO70 = ' '
* SHORT_TEXT = ' '
* APPENDIX = ' '
* IMPORTING
* APPL =
* PF03 =
* PF15 =
* PF12 =
EXCEPTIONS
class_unknown = 1
object_not_found = 2
OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

ENDFORM. " GET_KUNNR_F1_HELP


*&---------------------------------------------------------------------*
*& Form GET_CUST_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_cust_info .

SELECT kunnr
name1
telf1
ort01
regio
land1
spras
ktokd FROM kna1
INTO CORRESPONDING FIELDS OF TABLE gt_kna1
WHERE kunnr IN s_kunnr
AND ktokd IN s_ktokd.

***check no. of records


DESCRIBE TABLE gt_kna1 LINES gv_kna1_rec.

ENDFORM. " GET_CUST_INFO


*&---------------------------------------------------------------------*
*& Form HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM header .
WRITE :10 'VENIXO TECHNOLOGIES PRIVATE LIMITED' COLOR 4,
/10 'SUITE#207, CYBERABAD, HYDERABAD - 500 032' COLOR 4.
SKIP.
ULINE.
SKIP.

ENDFORM. " HEADER


*&---------------------------------------------------------------------*
*& Form FOOTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM footer .

SKIP.
ULINE.
WRITE :20 'This is computer generated file' COLOR 6,100 sy-pagno COLOR 7.
SKIP.

ENDFORM. " FOOTER


*&---------------------------------------------------------------------*
*& Form DISPLAY_CUST_INFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_cust_info .

LOOP AT gt_kna1 INTO gs_kna1.


WRITE :/ gs_kna1-check AS CHECKBOX,
gs_kna1-kunnr,
gs_kna1-name1,
gs_kna1-telf1,
gs_kna1-ort01,
gs_kna1-regio,
gs_kna1-land1,
gs_kna1-spras,
gs_kna1-ktokd.
CLEAR gs_kna1.
ENDLOOP.
SKIP 1.
WRITE :/ 'Number of records are:' COLOR 3, gv_kna1_rec COLOR 3.

ENDFORM. " DISPLAY_CUST_INFO


*&---------------------------------------------------------------------*
*& Form USER_ACTIONS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM user_actions .
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'SALL' OR 'SEL'.
PERFORM select_all_records.
WHEN 'DALL' OR 'DES'.
PERFORM deselect_all_records.
WHEN 'REC' OR 'CHK'.
PERFORM check_records.
WHEN 'DOWN' OR 'DWLD'.
PERFORM download_to_pc.
WHEN 'UPLD' OR 'UP'.
PERFORM upload_to_al.
WHEN 'DEL' OR 'REM'.
PERFORM delete_sel_rec.
ENDCASE.

ENDFORM. " USER_ACTIONS


*&---------------------------------------------------------------------*
*& Form SELECT_ALL_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_all_records .

DO. " gv_kna1_rec TIMES.


READ LINE sy-index.
IF sy-subrc <> 0.
EXIT.
ENDIF.
MODIFY LINE sy-index FIELD VALUE gs_kna1-check FROM 'X'.
ENDDO.

ENDFORM. " SELECT_ALL_RECORDS


*&---------------------------------------------------------------------*
*& Form DESELECT_ALL_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM deselect_all_records .

DO. " gv_kna1_rec TIMES.


READ LINE sy-index.
IF sy-subrc <> 0.
EXIT.
ENDIF.
MODIFY LINE sy-index FIELD VALUE gs_kna1-check FROM ' '.
ENDDO.

ENDFORM. " DESELECT_ALL_RECORDS


*&---------------------------------------------------------------------*
*& Form CHECK_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_records .

DESCRIBE TABLE gt_kna1 LINES gv_rec_inf.


gv_tmp = gv_rec_inf.
PERFORM remove_lead_zero USING : s_kunnr-low,
s_kunnr-high.

CONCATENATE 'No. of records in between'


s_kunnr-low
'and'
s_kunnr-high
'are'
gv_tmp INTO gv_rec_str SEPARATED BY ' '.
MESSAGE gv_rec_str TYPE 'I'.

ENDFORM. " CHECK_RECORDS


*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TO_PC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_to_pc .

DO.
READ LINE sy-index FIELD VALUE gs_kna1-check INTO gs_dwld-check
gs_kna1-kunnr INTO gs_dwld-kunnr
gs_kna1-name1 INTO gs_dwld-name1
gs_kna1-telf1 INTO gs_dwld-telf1
gs_kna1-ort01 INTO gs_dwld-ort01
gs_kna1-regio INTO gs_dwld-regio
gs_kna1-land1 INTO gs_dwld-land1
gs_kna1-spras INTO gs_dwld-spras
gs_kna1-ktokd INTO gs_dwld-ktokd.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF gs_dwld-check IS NOT INITIAL.
APPEND gs_dwld TO gt_dwld.
CLEAR : gs_dwld, gs_kna1.
ENDIF.
ENDDO.

***fill column heading


gs_col-heading = 'CHK'.
APPEND gs_col TO gt_col.

gs_col-heading = 'KUNNR'.
APPEND gs_col TO gt_col.

gs_col-heading = 'NAME1'.
APPEND gs_col TO gt_col.
gs_col-heading = 'TELF1'.
APPEND gs_col TO gt_col.

gs_col-heading = 'ORT01'.
APPEND gs_col TO gt_col.

gs_col-heading = 'REGIO'.
APPEND gs_col TO gt_col.

gs_col-heading = 'LAND1'.
APPEND gs_col TO gt_col.

gs_col-heading = 'SPRAS'.
APPEND gs_col TO gt_col.

gs_col-heading = 'KTOKD'.
APPEND gs_col TO gt_col.

***download the selected records


IF gt_dwld IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename =
'C:\Users\Administrator\Desktop\KNA1_DATA.XLS'
filetype = 'DAT'
* APPEND = ' '
write_field_separator = 'X'
* 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
* IMPORTING
* FILELENGTH =
TABLES
data_tab = gt_dwld
fieldnames = gt_col
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.
MESSAGE 'Please select at least 1 record to download' TYPE 'E'.
ENDIF.

ENDFORM. " DOWNLOAD_TO_PC


*&---------------------------------------------------------------------*
*& Form UPLOAD_TO_AL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_to_al .

DO.
READ LINE sy-index FIELD VALUE gs_kna1-check INTO gv_check
gs_kna1-kunnr INTO gs_kna1_appl-kunnr
gs_kna1-name1 INTO gs_kna1_appl-name1
gs_kna1-telf1 INTO gs_kna1_appl-telf1
gs_kna1-ort01 INTO gs_kna1_appl-ort01
gs_kna1-regio INTO gs_kna1_appl-regio
gs_kna1-land1 INTO gs_kna1_appl-land1
gs_kna1-spras INTO gs_kna1_appl-spras
gs_kna1-ktokd INTO gs_kna1_appl-ktokd.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF gv_check IS NOT INITIAL.
IF gs_kna1_appl-kunnr <> space.
APPEND gs_kna1_appl TO gt_kna1_appl.
CLEAR : gs_kna1_appl, gs_kna1, gv_check.
ENDIF.
ENDIF.
ENDDO.
***transfer data to application server
IF gt_kna1_appl IS NOT INITIAL.
***1st initiate data transfer process to application server
OPEN DATASET 'D:\usr\sap\EH5\DVEBMGS09\data\kna1_info.txt'
FOR OUTPUT
IN TEXT MODE
ENCODING DEFAULT.

***transfer data from internal table to directory path


LOOP AT gt_kna1_appl INTO gs_kna1_appl.
TRANSFER gs_kna1_appl TO 'D:\usr\sap\EH5\DVEBMGS09\data\kna1_info.txt'.
CLEAR gs_kna1_appl.
ENDLOOP.

***complete transfer process at application server


CLOSE DATASET 'D:\usr\sap\EH5\DVEBMGS09\data\kna1_info.txt'.

ELSE.
MESSAGE 'No records to transfer' TYPE 'W'.
ENDIF.

ENDFORM. " UPLOAD_TO_AL


*&---------------------------------------------------------------------*
*& Form DELETE_SEL_REC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM delete_sel_rec .

DO.
READ LINE sy-index FIELD VALUE gs_kna1-check INTO gv_check
gs_kna1-kunnr INTO gv_del_kunnr.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF gv_check = 'X'.
gv_del_rec = gv_del_rec + 1.
PERFORM provide_lead_zero USING : gv_del_kunnr.
DELETE FROM kna1 WHERE kunnr = gv_del_kunnr.
ENDIF.
ENDDO.

***Message to specify deleted recorded info


IF gv_del_rec IS NOT INITIAL.
gv_del_tmp = gv_del_rec.
CONCATENATE 'Number of records deleted from DB table are:' gv_del_tmp
INTO gv_del_str
SEPARATED BY ' '.
MESSAGE gv_del_str TYPE 'I'.
ELSE.
MESSAGE 'Select at least 1 record to delete' TYPE 'W'.
ENDIF.

ENDFORM. " DELETE_SEL_REC


*&---------------------------------------------------------------------*
*& Form REMOVE_LEAD_ZERO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_S_KUNNR_LOW text
*----------------------------------------------------------------------*
FORM remove_lead_zero USING var.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
input = var
IMPORTING
output = var.

ENDFORM. " REMOVE_LEAD_ZERO


*&---------------------------------------------------------------------*
*& Form PROVIDE_LEAD_ZERO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GV_DEL_KUNNR text
*----------------------------------------------------------------------*
FORM provide_lead_zero USING p_var.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'


EXPORTING
input = p_var
IMPORTING
output = p_var.

ENDFORM. " PROVIDE_LEAD_ZERO

Vous aimerez peut-être aussi