Objective : Create a editable alv report , to stored the transportation information against the VF01 invoice number.
Invoice Number will be the primary key, this stored data further to be use in other link report.
Steps 1 : Create Z table with the required fields
Step 2 : Create Alv report
select data from billing table VBRK
select data from z table
display data on alv editable mode
give a confirmation pop up before saving
while saving data along with data update created by, created n and time.
Table : ZSD_TRANSPORT
abap code
____________________________________
*&---------------------------------------------------------------------*
*& Report ZSD_TRANSPORTATION_DETAILS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSD_TRANSPORTATION_DETAILS.
"for output display table
types : begin of tp_list.
INCLUDE STRUCTURE zsd_transport. "this structure is of data base to stored the data
types : sel,
end of tp_list.
data : gt_list type STANDARD TABLE OF tp_list,
gs_list type tp_list,
gt_list1 type STANDARD TABLE OF tp_list,
gs_list1 type tp_list,
gs_transport type zsd_transport.
"ALV fieldcatalog
DATA: GT_FCAT TYPE LVC_T_FCAT, "slis_t_fieldcat_alv,
GS_FCAT LIKE LINE OF GT_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO, "slis_layout_alv,
GS_VARIANT TYPE DISVARIANT, "For Save Variant
GS_GRID TYPE LVC_S_GLAY,
gv_cnt type i.
data : gv_ans,
gv_flag type flag.
data : gv_vbeln type vbrk-vbeln,
gv_fkart type vbrk-fkart,
gv_fkdat type vbrk-fkdat,
gv_kunag type vbrk-kunag.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
select-OPTIONS : s_vbeln for gv_vbeln,
s_fkart for gv_fkart,
s_fkdat for gv_fkdat,
s_kunag for gv_kunag.
SELECTION-SCREEN end of BLOCK b1.
START-OF-SELECTION.
perform get_data.
perform display_data.
end-of-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_data.
"select billing header data
select a~vbeln, a~fkart, a~fkdat, a~kunag, b~name1
from vbrk as a INNER JOIN kna1 as b
on a~kunag = b~kunnr WHERE a~vbeln in @s_vbeln
and a~fkart in @s_fkart
and a~kunag in @s_kunag
and a~fkdat in @s_fkdat
INTO TABLE @data(gt_vbrk).
if gt_vbrk[] is NOT INITIAL.
"read existing saved trasnport details
select * from zsd_transport into TABLE @data(gt_transport)
FOR ALL ENTRIES IN @gt_vbrk WHERE vbeln = @gt_vbrk-vbeln.
endif.
clear : gt_list[], gs_list.
sort gt_vbrk by vbeln.
sort gt_transport by vbeln.
loop at gt_vbrk into data(gs_vbrk).
clear : gs_list.
MOVE-CORRESPONDING gs_vbrk to gs_list.
read TABLE gt_transport into data(gs_transport) with key vbeln = gs_vbrk BINARY SEARCH.
if sy-subrc = 0. "parallel cursor method
loop at gt_transport into gs_transport from sy-tabix.
if gs_transport-vbeln ne gs_vbrk-vbeln.
exit.
endif.
MOVE-CORRESPONDING gs_transport to gs_list.
clear : gs_transport.
endloop.
endif.
append gs_list to gt_list.
clear : gs_vbrk.
endloop.
gt_list1[] = gt_list[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_data.
CLEAR : GV_CNT, GT_FCAT[], GS_FCAT.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-BOX_FNAME = 'SEL'.
GS_VARIANT-REPORT = SY-REPID.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VBELN'.
GS_FCAT-HOTSPOT = 'X'.
GS_FCAT-EMPHASIZE = 'C5'.
GS_FCAT-no_zero = 'X'.
GS_FCAT-COLTEXT = 'Invoice No.'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'FKART'.
GS_FCAT-COLTEXT = 'Invoice Type'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'FKDAT'.
GS_FCAT-COLTEXT = 'Invoice Date'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'KUNAG'.
GS_FCAT-no_zero = 'X'.
GS_FCAT-COLTEXT = 'Payer'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'NAME1'.
GS_FCAT-COLTEXT = 'Sold To party'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSACTIONTYPE'.
GS_FCAT-COLTEXT = 'Transactiontype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSACTIONTYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'SUBSUPPLYTYPE'.
GS_FCAT-COLTEXT = 'Subsupplytype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'SUBSUPPLYTYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'OTHERSUPPLYTYPEDES'.
GS_FCAT-COLTEXT = 'Othersupplytypedes'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'OTHERSUPPLYTYPEDES'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTERID'.
GS_FCAT-COLTEXT = 'Transporterid'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTERID'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTERNAME'.
GS_FCAT-COLTEXT = 'Transportername'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTERNAME'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTMODE'.
GS_FCAT-COLTEXT = 'Transportmode'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTMODE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTDOCNO'.
GS_FCAT-COLTEXT = 'Transportdocno'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTDOCNO'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTDOCDATE'.
GS_FCAT-COLTEXT = 'Transportdocdate'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTDOCDATE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'DISTANCE'.
GS_FCAT-COLTEXT = 'Distance'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'DISTANCE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VEHICLENO'.
GS_FCAT-COLTEXT = 'Vehicleno'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'VEHICLENO'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VEHICLETYPE'.
GS_FCAT-COLTEXT = 'Vehicletype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'VEHICLETYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'RETURNPERIOD'.
GS_FCAT-COLTEXT = 'RETURNPERIOD'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'RETURNPERIOD'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
* I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE'
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = gt_fcat[]
* I_GRID_SETTINGS = gs_grid
* IT_EVENTS = lt_evts[]
* IT_EVENTS = I_EVENTS
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = GS_VARIANT
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_LIST[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
* SET PF-STATUS 'ZPF1'.
* SET PF-STATUS 'ZSTANDARD'.
ENDFORM.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA : G_GRID_I TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_REFRESH TYPE FLAG.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
E_GRID = G_GRID_I
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
if G_GRID_I is NOT INITIAL.
LV_REFRESH = 'X'.
CALL METHOD G_GRID_I->CHECK_CHANGED_DATA
CHANGING
C_REFRESH = LV_REFRESH.
endif.
CASE R_UCOMM.
WHEN '&DATA_SAVE' or 'SAVE'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'Do you want to SAVE'
IMPORTING
answer = gv_ans.
IF sy-subrc <> 0.
ENDIF.
IF gv_ans = '2' OR gv_ans = 'A'.
ELSE.
PERFORM save.
ENDIF.
when '&IC1'.
clear : gs_list.
read TABLE gt_list into gs_list INDEX rs_selfield-tabindex.
if gs_list-vbeln is NOT INITIAL.
set PARAMETER ID 'VF' FIELD gs_list-vbeln.
call TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
endif.
ENDCASE.
rs_selfield-refresh = 'X'.
rs_selfield-row_stable = 'X'.
rs_selfield-col_stable = 'X'.
CLEAR : SY-UCOMM.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAVE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM save.
"clear flag, if any chnage record found update and set flag = 'X' and give success msg
loop at gt_list into gs_list.
try.
clear : gs_list1.
gs_list1 = gt_list1[ vbeln = gs_list-vbeln ]. "read table to compare if data change
CATCH cx_root.
ENDTRY.
if gs_list1 ne gs_list. "if old and new record not macth then update data els.e go to next record
clear : gs_transport.
MOVE-CORRESPONDING gs_list to gs_transport.
"add the date and time of creation
gs_transport-CREATEDBY = sy-uname.
gs_transport-CREATEDON = sy-datum.
gs_transport-TIME = sy-uzeit.
modify zsd_transport from gs_transport.
gv_flag = 'X'.
endif.
clear : gs_list.
endloop.
if gv_flag = 'X'.
message 'Data saved successfully' TYPE 'I'.
gt_list1[] = gt_list[]. "pass new record to old record
else.
message 'No record change' TYPE 'I'.
endif.
ENDFORM.
********
selection screen
Output :
On save data get stored in data base table zsd_transport
Invoice Number will be the primary key, this stored data further to be use in other link report.
Steps 1 : Create Z table with the required fields
Step 2 : Create Alv report
select data from billing table VBRK
select data from z table
display data on alv editable mode
give a confirmation pop up before saving
while saving data along with data update created by, created n and time.
Table : ZSD_TRANSPORT
abap code
____________________________________
*&---------------------------------------------------------------------*
*& Report ZSD_TRANSPORTATION_DETAILS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZSD_TRANSPORTATION_DETAILS.
"for output display table
types : begin of tp_list.
INCLUDE STRUCTURE zsd_transport. "this structure is of data base to stored the data
types : sel,
end of tp_list.
data : gt_list type STANDARD TABLE OF tp_list,
gs_list type tp_list,
gt_list1 type STANDARD TABLE OF tp_list,
gs_list1 type tp_list,
gs_transport type zsd_transport.
"ALV fieldcatalog
DATA: GT_FCAT TYPE LVC_T_FCAT, "slis_t_fieldcat_alv,
GS_FCAT LIKE LINE OF GT_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO, "slis_layout_alv,
GS_VARIANT TYPE DISVARIANT, "For Save Variant
GS_GRID TYPE LVC_S_GLAY,
gv_cnt type i.
data : gv_ans,
gv_flag type flag.
data : gv_vbeln type vbrk-vbeln,
gv_fkart type vbrk-fkart,
gv_fkdat type vbrk-fkdat,
gv_kunag type vbrk-kunag.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
select-OPTIONS : s_vbeln for gv_vbeln,
s_fkart for gv_fkart,
s_fkdat for gv_fkdat,
s_kunag for gv_kunag.
SELECTION-SCREEN end of BLOCK b1.
START-OF-SELECTION.
perform get_data.
perform display_data.
end-of-SELECTION.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM get_data.
"select billing header data
select a~vbeln, a~fkart, a~fkdat, a~kunag, b~name1
from vbrk as a INNER JOIN kna1 as b
on a~kunag = b~kunnr WHERE a~vbeln in @s_vbeln
and a~fkart in @s_fkart
and a~kunag in @s_kunag
and a~fkdat in @s_fkdat
INTO TABLE @data(gt_vbrk).
if gt_vbrk[] is NOT INITIAL.
"read existing saved trasnport details
select * from zsd_transport into TABLE @data(gt_transport)
FOR ALL ENTRIES IN @gt_vbrk WHERE vbeln = @gt_vbrk-vbeln.
endif.
clear : gt_list[], gs_list.
sort gt_vbrk by vbeln.
sort gt_transport by vbeln.
loop at gt_vbrk into data(gs_vbrk).
clear : gs_list.
MOVE-CORRESPONDING gs_vbrk to gs_list.
read TABLE gt_transport into data(gs_transport) with key vbeln = gs_vbrk BINARY SEARCH.
if sy-subrc = 0. "parallel cursor method
loop at gt_transport into gs_transport from sy-tabix.
if gs_transport-vbeln ne gs_vbrk-vbeln.
exit.
endif.
MOVE-CORRESPONDING gs_transport to gs_list.
clear : gs_transport.
endloop.
endif.
append gs_list to gt_list.
clear : gs_vbrk.
endloop.
gt_list1[] = gt_list[].
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM display_data.
CLEAR : GV_CNT, GT_FCAT[], GS_FCAT.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-BOX_FNAME = 'SEL'.
GS_VARIANT-REPORT = SY-REPID.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VBELN'.
GS_FCAT-HOTSPOT = 'X'.
GS_FCAT-EMPHASIZE = 'C5'.
GS_FCAT-no_zero = 'X'.
GS_FCAT-COLTEXT = 'Invoice No.'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'FKART'.
GS_FCAT-COLTEXT = 'Invoice Type'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'FKDAT'.
GS_FCAT-COLTEXT = 'Invoice Date'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'KUNAG'.
GS_FCAT-no_zero = 'X'.
GS_FCAT-COLTEXT = 'Payer'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'NAME1'.
GS_FCAT-COLTEXT = 'Sold To party'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSACTIONTYPE'.
GS_FCAT-COLTEXT = 'Transactiontype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSACTIONTYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'SUBSUPPLYTYPE'.
GS_FCAT-COLTEXT = 'Subsupplytype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'SUBSUPPLYTYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'OTHERSUPPLYTYPEDES'.
GS_FCAT-COLTEXT = 'Othersupplytypedes'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'OTHERSUPPLYTYPEDES'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTERID'.
GS_FCAT-COLTEXT = 'Transporterid'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTERID'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTERNAME'.
GS_FCAT-COLTEXT = 'Transportername'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTERNAME'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTMODE'.
GS_FCAT-COLTEXT = 'Transportmode'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTMODE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTDOCNO'.
GS_FCAT-COLTEXT = 'Transportdocno'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTDOCNO'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'TRANSPORTDOCDATE'.
GS_FCAT-COLTEXT = 'Transportdocdate'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'TRANSPORTDOCDATE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'DISTANCE'.
GS_FCAT-COLTEXT = 'Distance'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'DISTANCE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VEHICLENO'.
GS_FCAT-COLTEXT = 'Vehicleno'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'VEHICLENO'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'VEHICLETYPE'.
GS_FCAT-COLTEXT = 'Vehicletype'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'VEHICLETYPE'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GV_CNT = GV_CNT + 1.
GS_FCAT-COL_POS = GV_CNT .
GS_FCAT-FIELDNAME = 'RETURNPERIOD'.
GS_FCAT-COLTEXT = 'RETURNPERIOD'.
gs_fcat-edit = 'X'.
GS_FCAT-ref_table = 'ZSD_TRANSPORT'.
GS_FCAT-ref_field = 'RETURNPERIOD'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
* I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
* I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE'
IS_LAYOUT_LVC = GS_LAYOUT
IT_FIELDCAT_LVC = gt_fcat[]
* I_GRID_SETTINGS = gs_grid
* IT_EVENTS = lt_evts[]
* IT_EVENTS = I_EVENTS
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = GS_VARIANT
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = GT_LIST[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
* SET PF-STATUS 'ZPF1'.
* SET PF-STATUS 'ZSTANDARD'.
ENDFORM.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA : G_GRID_I TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_REFRESH TYPE FLAG.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
E_GRID = G_GRID_I
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
if G_GRID_I is NOT INITIAL.
LV_REFRESH = 'X'.
CALL METHOD G_GRID_I->CHECK_CHANGED_DATA
CHANGING
C_REFRESH = LV_REFRESH.
endif.
CASE R_UCOMM.
WHEN '&DATA_SAVE' or 'SAVE'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'Do you want to SAVE'
IMPORTING
answer = gv_ans.
IF sy-subrc <> 0.
ENDIF.
IF gv_ans = '2' OR gv_ans = 'A'.
ELSE.
PERFORM save.
ENDIF.
when '&IC1'.
clear : gs_list.
read TABLE gt_list into gs_list INDEX rs_selfield-tabindex.
if gs_list-vbeln is NOT INITIAL.
set PARAMETER ID 'VF' FIELD gs_list-vbeln.
call TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
endif.
ENDCASE.
rs_selfield-refresh = 'X'.
rs_selfield-row_stable = 'X'.
rs_selfield-col_stable = 'X'.
CLEAR : SY-UCOMM.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SAVE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM save.
"clear flag, if any chnage record found update and set flag = 'X' and give success msg
loop at gt_list into gs_list.
try.
clear : gs_list1.
gs_list1 = gt_list1[ vbeln = gs_list-vbeln ]. "read table to compare if data change
CATCH cx_root.
ENDTRY.
if gs_list1 ne gs_list. "if old and new record not macth then update data els.e go to next record
clear : gs_transport.
MOVE-CORRESPONDING gs_list to gs_transport.
"add the date and time of creation
gs_transport-CREATEDBY = sy-uname.
gs_transport-CREATEDON = sy-datum.
gs_transport-TIME = sy-uzeit.
modify zsd_transport from gs_transport.
gv_flag = 'X'.
endif.
clear : gs_list.
endloop.
if gv_flag = 'X'.
message 'Data saved successfully' TYPE 'I'.
gt_list1[] = gt_list[]. "pass new record to old record
else.
message 'No record change' TYPE 'I'.
endif.
ENDFORM.
********
selection screen
Output :
On save data get stored in data base table zsd_transport
0 Comments