Zanytable Update
Zanytable Update
REPORT zanytable_update.
TYPE-POOLS: slis.
DATA: subrc TYPE sy-subrc,
it_flds TYPE lvc_t_fcat,
wa_flds LIKE LINE OF it_flds,
is_lvc_cat TYPE lvc_s_fcat,
new_table TYPE REF TO data,
new_line TYPE REF TO data,
f_name TYPE string,
v_uname TYPE sy-uname,
ico TYPE string,
it_lvc_cat TYPE lvc_t_fcat,
ques TYPE string,
butxt TYPE string,
ans,
v_name TYPE string,
v_path TYPE string,
v_fullpath TYPE string,
v_filter TYPE string,
v_uact TYPE i,
v_guiobj TYPE REF TO cl_gui_frontend_services,
v_filename TYPE string,
it_fcat TYPE lvc_t_fcat,
wa_fcat LIKE LINE OF it_fcat,
nm(40),
wa_retab LIKE zzretab,
retab TYPE ddshretval OCCURS 1 WITH HEADER LINE,
valtab TYPE zzupdinfty OCCURS 0 WITH HEADER LINE,
BEGIN OF fcat1 OCCURS 1,
fldnm(60),
END OF fcat1,
BEGIN OF fcat OCCURS 1,
fldnm(60),
dty(4),
len(6),
END OF fcat,
rpbenerr TYPE rpbenerr OCCURS 0,
BEGIN OF sum_tab OCCURS 1,
srno(9),
subrc TYPE sy-subrc,
stat(10),
END OF sum_tab,
srno(9) TYPE c,
gd_layout TYPE slis_layout_alv,
fldcat TYPE slis_t_fieldcat_alv,
fc TYPE slis_t_fieldcat_alv WITH HEADER LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON /1(60) name2 USER-COMMAND cust
VISIBLE LENGTH 21.
SELECTION-SCREEN PUSHBUTTON 25(55) name USER-COMMAND fif
VISIBLE LENGTH 12.
SELECTION-SCREEN END OF BLOCK rad1.
AT SELECTION-SCREEN OUTPUT.
IF sy-subrc <> 1.
MESSAGE e172(00) WITH 'ZTABLEUPD'.
ENDIF.
"END : Addition of authorization object as per SAP recommendations
"End:Addition of Auth. Object as part of BDO changes by abm3708.
IF retab[] IS INITIAL.
ico = 'ICON_ENTER_MORE'.
ELSE.
ico = 'ICON_DISPLAY_MORE'.
ENDIF.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = ico
text = 'Custom Field selection'
* INFO = TEXT-004
add_stdinf = 'X'
IMPORTING
result = name2
EXCEPTIONS
icon_not_found = 0
outputfield_too_short = 0
OTHERS = 0.
PERFORM f4_help.
CLEAR subrc.
CALL FUNCTION 'DB_EXISTS_TABLE'
EXPORTING
tabname = tab_name
IMPORTING
subrc = subrc.
IF subrc NE 0.
MESSAGE 'The table doesnt exist in the SAP database' TYPE 'S'.
STOP.
ENDIF.
AT SELECTION-SCREEN.
CALL FUNCTION 'HR_BEN_GET_TEXT_TABLE_NAME'
EXPORTING
tabname = tab_name
reaction = 'X'
IMPORTING
text = chk
* SUBRC =
TABLES
error_table = rpbenerr.
* if sy-subrc NE 0.
* MESSAGE 'You are not Authorized to run this program' type 'E'.
* else.
IF tab_name <> 'PA0008'." AND TAB_NAME <> 'PA0014'. "AND TAB_NAME <> 'PA0015' .
* IF sy-uname = 'SFJ_ABAP2' or sy-uname = 'C20050673' or sy-uname = v_uname.
CASE sy-ucomm.
WHEN 'ONLI'.
IF file IS NOT INITIAL.
IF opr EQ 'INS' OR opr EQ 'DEL' OR opr EQ 'MOD'.
PERFORM tab.
PERFORM ltable.
CLEAR: <pannnn_wa>,<itab>.
REFRESH <itab>.
IF opr EQ 'INS'.
INSERT (tab_name) FROM <pannnn_wa1>.
ELSEIF opr EQ 'DEL'.
DELETE (tab_name) FROM <pannnn_wa1>.
ELSEIF opr EQ 'MOD'.
UPDATE (tab_name) FROM <pannnn_wa1>.
ENDIF.
sum_tab-subrc = sy-subrc.
IF sy-subrc EQ 0.
sum_tab-stat = 'Sucsess'.
ELSE.
sum_tab-stat = 'Failed'.
ENDIF.
APPEND sum_tab.
CLEAR: <pannnn_wa1>, sum_tab.
ENDLOOP.
IF sy-subrc EQ 0.
MESSAGE 'Requested action executed' TYPE 'S'.
PERFORM alv_display.
ENDIF.
ELSE.
MESSAGE 'Please specify fields' TYPE 'S'.
ENDIF.
ELSE.
MESSAGE 'Please select valid operation' TYPE 'S'.
STOP.
ENDIF.
ELSE.
MESSAGE 'Please specify file' TYPE 'S'.
STOP.
ENDIF.
WHEN 'CUST'.
PERFORM fldlist.
WHEN 'FIF'.
IF v_uact = v_guiobj->action_cancel.
EXIT.
ENDIF.
* CONCATENATE 'P' IFT INTO tb_name.
PERFORM file_format.
PERFORM tab.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = v_fullpath
filetype = 'ASC'
* 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
* IMPORTING
* FILELENGTH =
TABLES
data_tab = <fcat>
fieldnames = fcat1
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
STOP.
ENDIF.
CLEAR fcat1.
REFRESH: <fcat>,fcat1.
ENDIF.
ENDCASE.
* ELSE.
* MESSAGE 'You are not Authorized to run this program' type 'E'.
* ENDIF.
ELSE.
MESSAGE 'You are not Authorized to Change' TYPE 'E'.
ENDIF.
* endif.
*&---------------------------------------------------------------------*
*& Form TAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM tab.
*&---------------------------------------------------------------------*
*& Form FLDLIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fldlist.
CLEAR: it_flds,retab.
REFRESH: it_flds,retab,valtab.
*CONCATENATE CHK 'Infotype Field list' INTO NM SEPARATED BY SPACE.
valtab-fldnm = wa_flds-fieldname.
valtab-fldtxt = wa_flds-scrtext_l.
APPEND valtab.
CLEAR: wa_flds,valtab.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
ddic_structure = 'ZZUPDINFTY'
retfield = 'FLDNM'
* PVALKEY = ' '
* DYNPPROG = ' '
* DYNPNR =
* DYNPROFIELD =
* STEPL =
window_title = nm
* VALUE = ' '
value_org = 'S'
multiple_choice = 'X'
* DISPLAY = ' '
callback_program = sy-repid
* CALLBACK_FORM =
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = valtab
* FIELD_TAB =
return_tab = retab
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
STOP.
ENDIF.
ENDFORM. "FLDLIST
*&---------------------------------------------------------------------*
*& Form LTABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ltable.
LOOP AT retab.
is_lvc_cat-fieldname = retab-fieldval.
is_lvc_cat-ref_field = retab-fieldval.
is_lvc_cat-ref_table = tab_name.
APPEND is_lvc_cat TO it_lvc_cat.
ENDLOOP.
ENDIF.
ENDFORM. "LTABLE
*&---------------------------------------------------------------------*
*& Form f4_help
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_help .
ENDFORM. "f4_help
*&---------------------------------------------------------------------*
*& Form FILE_FORMAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM file_format.
CLEAR: fcat,it_fcat,wa_fcat,fcat1.
REFRESH: fcat,it_fcat,fcat1.
* CONCATENATE 'P' IFT INTO table_name.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = tab_name
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
OTHERS = 1.
IF ans EQ '2'.
LOOP AT retab.
READ TABLE it_fcat INTO wa_fcat WITH KEY fieldname =
retab-fieldval.
IF sy-subrc EQ 0.
fcat1-fldnm = wa_fcat-scrtext_m.
fcat1-fldnm = wa_fcat-scrtext_l.
APPEND fcat1.
CLEAR fcat1.
CLEAR wa_fcat.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT it_fcat INTO wa_fcat.
ENDFORM. "FILE_FORMAT
*&---------------------------------------------------------------------*
*& Form ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_display.
fc-col_pos = 1.
fc-fieldname = 'SRNO'.
fc-seltext_l = 'Record No'.
fc-tabname = 'SUM_TAB'.
APPEND fc TO fldcat.
CLEAR fc.
fc-col_pos = 2.
fc-fieldname = 'STAT'.
fc-seltext_l = 'Status'.
fc-tabname = 'SUM_TAB'.
APPEND fc TO fldcat.
CLEAR fc.
fc-col_pos = 3.
fc-fieldname = 'SUBRC'.
fc-seltext_l = 'SY-SUBRC'.
fc-tabname = 'SUM_TAB'.
APPEND fc TO fldcat.
CLEAR fc.
ELSE.
MESSAGE 'File is empty' TYPE 'S'.
ENDIF.
CLEAR: sum_tab,fldcat.
REFRESH: sum_tab,fldcat.
ENDFORM. "ALV_DISPLAY