Dear ABAP experts,
I have a database table: ZLT_aztnew with fields M1, M2, K1, K2, A1, A2, P1, P2, S2, D1, D2, STD, BES. All these fields are of type 'Character'. except D2 which is of type DATS. The field D1 is date and is in format DD.MM.YYYY.
I want to convert this field D1 to type DATS so that I can use a date range through 'selection option' to select other data of other fields (M1, M2, K1, K2, A1, A2, P1, P2, S2, D1, STD, BES.) related to field D1 from the database table Zlt_aztnew.
How should I introduce this change (CONVERSION OF D1 CHAR to DATS in the .AZT file upload code itself.
Problem: If I define D1 as Type DATS in database table ZLT_AZTNEW then the UPLOAD fails.
The AZT file upload code is:
Data it_string type stringtab.
Data lv_string type string.
DATA: itab TYPE STANDARD TABLE OF zlt_aztnew.
DATA: wa_tab TYPE zlt_aztnew.
DATA: file_str1 type string.
Data: it_tab TYPE STANDARD TABLE OF file_table,
lw_file LIKE LINE OF it_tab,
gd_subrc TYPE i.
SELECTION-SCREEN begin of block blk with frame title text-100.
SELECTION-SCREEN SKIP 2.
parameters : p_file like rlgrap-filename .
SELECTION-SCREEN end of block blk.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select only Text File'
default_filename = '.azt'
multiselection = 'X'
CHANGING
file_table = it_tab
rc = gd_subrc.
READ TABLE it_tab INTO lw_file INDEX 1.
p_file = lw_file-FILENAME.
Start-of-Selection.
file_str1 = P_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file_str1
* filename = '\\10.10.1.92\Volume_1\_projekte\Zeiterfassung-SAP\test.azt'
tables
data_tab = it_string
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT it_string INTO lv_string.
clear wa_tab.
SPLIT lv_string AT ';' INTO wa_tab-M2 wa_tab-k2 wa_tab-A2 wa_tab-P2 wa_tab-S2 wa_tab-D1 wa_tab-STD wa_tab-BES.
Append wa_tab to itab.
Write: sy-uline(120),
/ sy-vline,
2 wa_tab-M2,
11 sy-vline,
13 wa_tab-k2,
25 sy-vline,
27 wa_tab-A2,
32 sy-vline,
34 wa_tab-P2,
39 sy-vline,
41 wa_tab-S2,
46 sy-vline,
48 wa_tab-D1,
60 sy-vline,
62 wa_tab-STD,
72 sy-vline,
74 wa_tab-BES,
120 sy-vline.
ENDLOOP.
DATA: Answer.
UPDATE zlt_aztnew From Table itab.
* INSERT ZLT_aztnew From Table itab accepting duplicate keys.
If sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'TITLE '
* DIAGNOSE_OBJECT = ' '
text_question = 'Wollen Sie die vorhandenen Inhalte ändern'
TEXT_BUTTON_1 = 'Ja'(001)
* ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'Nein'(002)
* ICON_BUTTON_2 = ' '
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
answer = answer
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 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.
*
IF Answer = '1'.
WRITE: / 'Die vorhandenen Inhalte war geändernt'.
MODIFY zlt_aztnew From Table itab.
ENDIF.
ENDIF.
****************************************************************************************************************************
TO introduce a date range and pull data from the database table Zlt_AZTNEW--> I wrote the BELOW code SEPARATELY,
but after execution, the error I am getting is: Enter a valid Date (for example, 31.03.2014).
*******************************************************************************************************************************
TABLES: ZLT_aztnew.
TYPES: Begin OF ty_AZTN,
M2 TYPE Zlt_AZTNEW-M2,
K2 TYPE Zlt_AZTNEW-K2,
A2 TYPE Zlt_AZTNEW-A2,
P2 TYPE Zlt_AZTNEW-P2,
S2 TYPE Zlt_AZTNEW-S2,
D1 TYPE Zlt_AZTNEW-D1,
STD TYPE Zlt_AZTNEW-STD,
BES TYPE Zlt_AZTNEW-BES,
END OF ty_AZTN.
DATA: gv_datum TYPE d.
DATA: it_aztn TYPE STANDARD TABLE OF ty_aztn with header line.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = zlt_aztnew-D1
* ACCEPT_INITIAL_DATE =
IMPORTING
DATE_INTERNAL = gv_datum
* EXCEPTIONS
* DATE_EXTERNAL_IS_INVALID = 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.
SELECT-OPTIONS: s_datum FOR gv_datum.
INITIALIZATION.
s_datum-low = sy-datum.
s_datum-high = sy-datum.
APPEND s_datum.
********** After this further code follows with "SELECT" wherein I want to use the gv_datum as Where condition.
SELECT M2
K2
A2
P2
S2
D1
STD
BES
FROM ZLt_AZTNEW
INTO TABLE it_AZTN
Where D1 = gv_datum.
Please provide me your valuable suggestion to correct any flaw in my code above.
Looking forward for your reply.
Best regards
Chandan Kumar