‎2008 Jun 19 2:32 PM
Hi All,
I am using the ALV program. In the output list i am making one field as editable. After editing the particular value i want to save that value to the concerned DB table. I am able to edit the particular field on the output list but after that i am not getting how to save the edited entry in the DB table. So will you please help me out how to clear out this issue. If anyone sends the desired code for the same it will be more helpfull.
Points will be rewarded for the valuable answers.
Regards,
Santosh
‎2008 Jun 19 2:36 PM
‎2008 Jun 19 2:36 PM
Hi,
Below is the sample code
report ztest_alv_check message-id zz .
type-pools: slis.
data: x_fieldcat type slis_fieldcat_alv,
it_fieldcat type slis_t_fieldcat_alv,
l_layout type slis_layout_alv,
x_events type slis_alv_event,
it_events type slis_t_event.
data: begin of itab occurs 0,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
end of itab.
select vbeln
posnr
from vbap
up to 20 rows
into table itab.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-seltext_l = 'VBELN'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X' ( edit).
x_fieldcat-col_pos = 1.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-seltext_l = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'( edit).
x_fieldcat-col_pos = 2.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_layout-zebra = 'X'.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = sy-repid
is_layout = l_layout
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = it_fieldcat
tables
t_outtab = itab
exceptions
program_error = 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.
"using the PF-status enable the SAVE button
"give some OKCODE to SAVE button and handle it
"using user_command form
form status using p_extab type slis_t_extab.
*
o Pf status
set pf-status 'STATUS'.
endform. " STATUS
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when 'BACK' or 'CANC' or 'EXIT'.
leave to screen 0.
when 'SAVE'.
"here you have to find the changed records,and modify the DB.
endcase.
endform. "USER_COMMANDThanks
Vikranth
Edited by: Khimavath Vikranth on Jun 19, 2008 3:36 PM
‎2008 Jun 19 2:36 PM
Hi,
Please refer the link below:
http://www.saptechnical.com/Tutorials/ALV/Edit/demo.htm
Thanks,
Sriram Ponna.
‎2008 Jun 19 2:37 PM
&----
*& Report ZTS_REP_ONLINEDISPLAY
*&
&----
*&
*&
&----
REPORT ZTS_REP_ONLINEDISPLAY no standard page heading line-size 328
.
TABLES :zts_tab_category,zts_tab_manufac,zts_tab_product, ZTS_TAB_SAHEAD, ZTS_TAB_SALINE, ZTS_TAB_SASCHEDU.
DATA : BEGIN OF lt_cate OCCURS 0,
cano TYPE zcano,
cades TYPE zcades,
umes TYPE zumes,
END OF lt_cate.
DATA : BEGIN OF lt_manu OCCURS 0,
mgfid TYPE zmgfid,
cano TYPE zcano ,
prono TYPE zprono,
mgfna TYPE zmgfna,
mgfeid TYPE zmgfeid,
mgfwb TYPE zmgfwb,
END OF lt_manu.
DATA : BEGIN OF lt_prod OCCURS 0,
prono TYPE zprono,
prodes TYPE zprodes,
cano TYPE zcano,
mgfid TYPE zmgfid,
proda TYPE zproda,
valdat TYPE zvaldat,
mrprte TYPE zmrprte,
curr TYPE waers,
wardat TYPE zwardat,
END OF lt_prod.
DATA : BEGIN OF lt_final OCCURS 0,
COUNT TYPE I,
chbox TYPE c,
cano TYPE zcano,
cades TYPE zcades,
umes TYPE zumes,
mgfid TYPE zmgfid,
prono TYPE zprono,
mgfna TYPE zmgfna,
mgfeid TYPE zmgfeid,
mgfwb TYPE zmgfwb,
prodes TYPE zprodes,
proda TYPE zproda,
valdat TYPE zvaldat,
mrprte TYPE zmrprte,
curr TYPE waers,
wardat TYPE zwardat,
orderquamtity(3) TYPE n,
END OF lt_final.
START-OF-SELECTION.
SET PF-STATUS 'ONLINE'.
SELECT cano cades umes FROM zts_tab_category INTO TABLE lt_cate.
SELECT mgfid cano prono mgfna mgfeid mgfwb FROM zts_tab_manufac INTO TABLE lt_manu.
SELECT prono prodes cano mgfid proda valdat mrprte curr wardat FROM zts_tab_product INTO TABLE lt_prod.
DATA : LV_COUNT_X TYPE I.
LOOP AT lt_cate.
lt_final-cano = lt_cate-cano.
lt_final-cades = lt_cate-cades.
lt_final-umes = lt_cate-umes.
LOOP AT lt_manu WHERE cano = lt_cate-cano.
lt_final-mgfid = lt_manu-mgfid.
lt_final-cano = lt_manu-cano.
lt_final-prono = lt_manu-prono.
lt_final-mgfna = lt_manu-mgfna.
lt_final-mgfeid = lt_manu-mgfeid.
lt_final-mgfwb = lt_manu-mgfwb.
LOOP AT lt_prod WHERE cano = lt_cate-cano AND prono = lt_manu-prono .
lt_final-prono = lt_prod-prono.
lt_final-prodes = lt_prod-prodes.
lt_final-cano = lt_prod-cano.
lt_final-mgfid = lt_prod-mgfid.
lt_final-proda = lt_prod-proda.
lt_final-valdat = lt_prod-valdat.
lt_final-mrprte = lt_prod-mrprte.
lt_final-curr = lt_prod-curr.
LV_COUNT_X = LV_COUNT_X + 1.
lt_final-COUNT = LV_COUNT_X .
APPEND lt_final.
ENDLOOP.
ENDLOOP.
ENDLOOP.
WRITE : SY-ULINE,
/ SY-VLINE,
(4) 'S.No',
sy-vline,
(7) Sel.Odr',
sy-vline,
(7) 'Catg.No'.
sy-vline,
(23)'Cat.Description',
*----
*----
uline.
LOOP AT lt_final.
WRITE : / SY-VLINE,
(4) lt_final-COUNT,
sy-vline,
(7) lt_final-chbox AS CHECKBOX,
sy-vline,
lt_final-cano,
lt_final-cades,
lt_final-umes,
lt_final-mgfid,
lt_final-cano,
lt_final-prono,
lt_final-mgfna,
lt_final-mgfeid,
lt_final-mgfwb,
lt_final-prono,
lt_final-prodes,
lt_final-cano,
lt_final-mgfid,
lt_final-proda,
lt_final-valdat,
lt_final-mrprte,
lt_final-curr,
LT_FINAL-ORDERQUAMTITY INPUT.
ENDLOOP.
data : lv_count_final type i.
data : lv_order_qty(3) type n.
vl_count_x = vl_count_x + 5.
CASE SY-UCOMM.
WHEN 'ADD UP'.
DO lv_count_x TIMES.
READ LINE sy-index FIELD VALUE lt_final-chbox lt_final-COUNT
INTO lv_count_final.
READ LINE sy-index FIELD VALUE lt_final-chbox LT_FINAL-ORDERQUAMTITY
INTO lv_order_qty.
IF lt_final-chbox = 'X'.
if lv_order_qty is NOT initial.
lt_final-chbox = 'X'.
LT_FINAL-ORDERQUAMTITY = lv_order_qty.
modify lt_final transporting chbox ORDERQUAMTITY where COUNT = lv_count_finaL.
ELSE.
MESSAGE 'Enter the Order Qty for Selected Record' type 'E'.
ENDIF.
ENDIF.
CLEAR lv_order_qty.
CLEAR lv_count_final.
ENDDO.
DATA : LV_SDQUTY TYPE MENGE_D,
LV_SDAMT TYPE DMBTR.
LOOP AT LT_FINAL WHERE CHBOX = 'X'.
LT_FINAL-MRPRTE = LT_FINAL-MRPRTE * LT_FINAL-ORDERQUAMTITY.
LV_SDAMT = LT_FINAL-MRPRTE + LV_SDAMT.
LV_SDQUTY = LV_SDQUTY + LT_FINAL-ORDERQUAMTITY.
ENDLOOP.
DATA : LV_SDNO TYPE VBELN,
LV_UNAME TYPE ZUNAME.
SELECT SINGLE MAX( SDNO ) FROM ZTS_TAB_SAHEAD INTO LV_SDNO.
SELECT SINGLE MAX( UNAME ) FROM ZTS_TAB_USER INTO LV_UNAME WHERE CHECK1 = 'X'.
LV_SDNO = LV_SDNO + 1.
ZTS_TAB_SAHEAD-SDNO = LV_SDNO.
ZTS_TAB_SAHEAD-SDDA = SY-DATUM.
ZTS_TAB_SAHEAD-UNAME = LV_UNAME.
ZTS_TAB_SAHEAD-SDQUTY = LV_SDQUTY.
ZTS_TAB_SAHEAD-SDAMT = LV_SDAMT.
INSERT ZTS_TAB_SAHEAD.
if sy-subrc = 0.
message 'sales duicument is successfully created' lv_sdno type 'S'.
else.
message 'no sales ducument created' lv_sdno type 'E'.
endif.
CLEAR : LV_SDQUTY,LV_SDAMT.
DATA : BEGIN OF LT_FLINE OCCURS 0,
CANO TYPE ZCANO,
END OF LT_FLINE.
LOOP AT LT_FINAL WHERE CHBOX = 'X'.
LT_FLINE-CANO = LT_FINAL-CANO.
APPEND LT_FLINE.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM LT_FLINE COMPARING CANO.
LOOP AT LT_FLINE.
LOOP AT LT_FINAL WHERE CANO = LT_FLINE-CANO AND CHBOX = 'X'.
LT_FINAL-MRPRTE = LT_FINAL-MRPRTE * LT_FINAL-ORDERQUAMTITY.
LV_SDAMT = LT_FINAL-MRPRTE + LV_SDAMT.
LV_SDQUTY = LV_SDQUTY + LT_FINAL-ORDERQUAMTITY.
ENDLOOP.
DATA LV_LINENO TYPE I VALUE 9.
LV_LINENO = LV_LINENO + 1.
ZTS_TAB_SALINE-SDNO = LV_SDNO.
ZTS_TAB_SALINE-SDINO = LV_LINENO.
ZTS_TAB_SALINE-CANO = LT_FINAL-CANO.
ZTS_TAB_SALINE-SDINO = LV_SDQUTY.
ZTS_TAB_SALINE-SDNO = LV_SDAMT.
INSERT ZTS_TAB_SALINE.
CLEAR : LV_SDQUTY,LV_SDAMT.
ENDLOOP.
CLEAR : LV_LINENO.
LV_LINENO = 9.
LOOP AT LT_FLINE.
LV_LINENO = LV_LINENO + 1.
LOOP AT LT_FINAL WHERE CANO = LT_FLINE-CANO AND CHBOX = 'X'.
DATA : LV_SHLINENO TYPE I.
LV_SHLINENO = LV_SHLINENO + 1.
ZTS_TAB_SASCHEDU-SDNO = LV_SDNO.
ZTS_TAB_SASCHEDU-SDINO = LV_LINENO.
ZTS_TAB_SASCHEDU-SDSHNO = LV_SHLINENO.
ZTS_TAB_SASCHEDU-PRONO = LT_FINAL-PRONO.
ZTS_TAB_SASCHEDU-SDQUTY = LT_FINAL-ORDERQUAMTITY.
ZTS_TAB_SASCHEDU-NTPRC = LT_FINAL-MRPRTE .
ZTS_TAB_SASCHEDU-TOPRC = LT_FINAL-ORDERQUAMTITY * LT_FINAL-MRPRTE.
INSERT ZTS_TAB_SASCHEDU.
ENDLOOP.
ENDLOOP.
when 'BACK'.
SET SCREEN 0.
LEAVE PROGRAM.
ENDCASE.
the same report in classical
this will help u.............
Reward IF......
Regards
Anbu
‎2008 Jun 19 2:37 PM
if u r using ALV GRID control....then use CHECK_CHANGED_DATA method.
‎2008 Jun 19 2:38 PM
Hi,
I have the sample code where fields are editable and user press save button and if user selects that record he can generate a smartform using that record.
I think you can check the code and put your logic of saving the data from internal table to databse instead of selection logic and call smartform.
*********************************************************************
REPORT ZMSTR0022.
CONSTANTS: C_FORM_NAME TYPE TDSFNAME VALUE 'ZMST_PER_APPL'.
TABLES :ZMST_PERMIT.
TYPE-POOLS: SLIS.
TYPE-POOLS :VRM. "Value Request Manager
TYPES:BEGIN OF STRU_ZMST_PERMIT,
CHECKBOX(1) TYPE C, " Checkbox
ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM, " Permit ID No.
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZENQUAN TYPE ZMST_PERMIT-ZENQUAN, " Qty in English
ZARQUAN TYPE ZMST_PERMIT-ZARQUAN, " Qty in Arabic
ZENUOM TYPE ZMST_PERMIT-ZENUOM, " UoM
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZARRPRT TYPE ZMST_PERMIT-ZARRPRT, " Port code
ZPRT_NAME(60) TYPE C, " Port name in Arabic
ZPERNUM TYPE ZMST_PERMIT-ZPERNUM, " Reference No
ZEFFDT TYPE ZMST_PERMIT-ZEFFDT, " Valid from
ZEXPDT TYPE ZMST_PERMIT-ZEXPDT, " Valid to
ZARB_DT(15) TYPE C, " Arabic Date of letter
ZNAME_AUTH(50) TYPE C, " Name of Authority
ZPERM_MIN(50) TYPE C, " Permit Ministry
END OF STRU_ZMST_PERMIT.
TYPES:BEGIN OF STRU_PERMIT,
ZPIDNUM TYPE ZMST_PERMIT-ZPIDNUM, " Permit ID No.
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZPERNUM TYPE ZMST_PERMIT-ZPERNUM, " Reference No
ZARRPRT TYPE ZMST_PERMIT-ZARRPRT, " Port code
ZEFFDT TYPE ZMST_PERMIT-ZEFFDT, " Valid from
ZEXPDT TYPE ZMST_PERMIT-ZEXPDT, " Valid to
END OF STRU_PERMIT.
TYPES: BEGIN OF STRU_FORM_PERMIT,
ZARBDSC TYPE ZMST_PERMIT-ZARBDSC, " Arabic description
ZENGDSC TYPE ZMST_PERMIT-ZENGDSC, " English description
ZENQUAN TYPE ZMST_PERMIT-ZENQUAN, " Qty in English
ZARQUAN TYPE ZMST_PERMIT-ZARQUAN, " Qty in Arabic
ZENUOM TYPE ZMST_PERMIT-ZENUOM, " UoM
ZTARIFF TYPE ZMST_PERMIT-ZTARIFF, " Tariff No
ZPRT_NAME(60) TYPE C, " Port name in Arabic
END OF STRU_FORM_PERMIT.
DATA: IT_PERMIT TYPE TABLE OF STRU_PERMIT.
DATA: IT_ZMST_PERMIT TYPE TABLE OF STRU_ZMST_PERMIT,
WA_ZMST_PERMIT LIKE LINE OF IT_ZMST_PERMIT,
IT_FORM_PERMIT TYPE TABLE OF STRU_FORM_PERMIT,
WA_FORM_PERMIT LIKE LINE OF IT_FORM_PERMIT.
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV.
DATA: W_FORM TYPE RS38L_FNAM.
DATA: W_NAME_AUTH(50),
W_ZARBDT(15),
W_ZENGDT(10),
W_ZPRT_NAME(70).
DATA: W_PARAM TYPE SSFCTRLOP.
DATA:W_NAME1 TYPE DFIES-FIELDNAME,
W_NAME2 TYPE HELP_INFO-DYNPROFLD .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-023.
SELECT-OPTIONS:S_PIDNUM FOR ZMST_PERMIT-ZPIDNUM ,
S_ENGDSC FOR ZMST_PERMIT-ZENGDSC NO INTERVALS LOWER CASE,
S_ARBDSC FOR ZMST_PERMIT-ZARBDSC NO INTERVALS LOWER CASE,
S_TARIFF FOR ZMST_PERMIT-ZTARIFF NO INTERVALS,
S_PERNUM FOR ZMST_PERMIT-ZPERNUM NO INTERVALS,
S_ARRPRT FOR ZMST_PERMIT-ZARRPRT NO INTERVALS MATCHCODE OBJECT ZMST_PORTS.
PARAMETER:P_PERTYP(2) TYPE C AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-LOW.
W_NAME2 = 'S_PIDNUM-LOW'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PIDNUM-HIGH.
W_NAME2 = 'S_PIDNUM-HIGH'.
W_NAME1 = 'ZPIDNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ENGDSC-LOW.
W_NAME2 = 'S_ENGDSC'.
W_NAME1 = 'ZENGDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ARBDSC-LOW.
W_NAME2 = 'S_ARBDSC'.
W_NAME1 = 'ZARBDSC'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_TARIFF-LOW.
W_NAME2 = 'S_TARIFF'.
W_NAME1 = 'ZTARIFF'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PERNUM-LOW.
W_NAME2 = 'S_PERNUM'.
W_NAME1 = 'ZPERNUM'.
PERFORM F4_HELP USING W_NAME1 W_NAME2 . "calling subroutine to provide desired F4 help
AT SELECTION-SCREEN.
IF SY-UCOMM = 'ONLI'.
PERFORM CHECK_INPUT. "calling subroutine to check inputs on selection screen
ENDIF.
INITIALIZATION.
PERFORM VAL_PERTYP.
START-OF-SELECTION.
PERFORM FILL_FIELDCAT. "calling subroutine for filling fieldcatalog
If Permit ministry is blank then fetch data from ZMST_PERMIT otherwise from ZMST_PERMITHI--
IF P_PERTYP IS INITIAL.
PERFORM FETCH_PERMIT. "calling subroutine to fetch data from ZMST_PERMIT
ELSE.
PERFORM FETCH_PERMITHI. "calling subroutine to fetch data from ZMST_PERMITHI
ENDIF.
END-OF-SELECTION.
&----
*& Form fill_fieldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_FIELDCAT .
-passing the parameters of layout--
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
WA_LAYOUT-BOX_TABNAME = 'IT_ZMST_PERMIT'.
-Passing the parameters of fieldcatalog--
WA_FIELDCAT-FIELDNAME = 'ZPIDNUM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-001.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARBDSC'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-002.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-OUTPUTLEN = 120.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENGDSC'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-003.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-OUTPUTLEN = 120.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENQUAN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-004.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARQUAN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-005.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZENUOM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-006.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZTARIFF'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-007.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 15.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARB_DT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_L = TEXT-013.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZNAME_AUTH'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-014.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPRT_NAME'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-009.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-OUTPUTLEN = 60.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZARRPRT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-008.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPERNUM'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-010.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZEFFDT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-011.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZEXPDT'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-012.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ZPERM_MIN'.
WA_FIELDCAT-TABNAME = 'IT_ZMST_PERMIT'.
WA_FIELDCAT-SELTEXT_M = TEXT-019.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " fill_fieldcat
&----
*& Form alv_disp
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_DISP .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'ZMSTR0022'
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_GRID_TITLE = TEXT-015
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
I_SAVE = 'A'
TABLES
T_OUTTAB = IT_ZMST_PERMIT
EXCEPTIONS
PROGRAM_ERROR = 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.
ENDFORM. " alv_disp
&----
*& Form PF_STATUS
&----
text
----
This subroutine sets the GUI status
----
FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZSTANDARD_FULLSCREEN'.
ENDFORM. "PF_STATUS
&----
*& Form USER_COMMAND
&----
FORM USER_COMMAND USING R_UCOMM TYPE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
*For Printing Smartform
IF R_UCOMM = 'PRT'.
CLEAR WA_FORM_PERMIT.
REFRESH IT_FORM_PERMIT.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT WHERE CHECKBOX = 'X'.
MOVE-CORRESPONDING WA_ZMST_PERMIT TO WA_FORM_PERMIT.
APPEND WA_FORM_PERMIT TO IT_FORM_PERMIT .
*Check for First occurence of Name of authority
IF WA_ZMST_PERMIT-ZNAME_AUTH NE SPACE.
IF W_NAME_AUTH = ' '.
W_NAME_AUTH = WA_ZMST_PERMIT-ZNAME_AUTH.
ENDIF.
ENDIF.
*Check for First occurence of Arabic date
IF WA_ZMST_PERMIT-ZARB_DT NE SPACE.
IF W_ZARBDT = ' '.
W_ZARBDT = WA_ZMST_PERMIT-ZARB_DT.
ENDIF.
ENDIF.
IF WA_ZMST_PERMIT-ZPRT_NAME NE SPACE.
IF W_ZPRT_NAME = ' '.
MOVE WA_ZMST_PERMIT-ZPRT_NAME TO W_ZPRT_NAME.
CONDENSE W_ZPRT_NAME.
ENDIF.
ENDIF.
CLEAR : WA_FORM_PERMIT, WA_ZMST_PERMIT.
ENDLOOP.
CONCATENATE SY-DATUM0(4) '/' SY-DATUM4(2) '/' SY-DATUM+6(2) INTO W_ZENGDT.
*Printing Subroutine
IF NOT IT_FORM_PERMIT[] IS INITIAL.
PERFORM PRINT_FORM.
ELSE.
MESSAGE TEXT-018 TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. "user_command
&----
*& Form F4_HELP
&----
text
----
--> p1 text
<-- p2 text
----
FORM F4_HELP USING: W_VAR TYPE DFIES-FIELDNAME
W_VAR1 TYPE HELP_INFO-DYNPROFLD .
Fetching data from zmst_permit for F4 help on PERMIT ID No.--
IF IT_PERMIT[] IS INITIAL.
SELECT ZPIDNUM
ZENGDSC
ZARBDSC
ZTARIFF
ZPERNUM
ZARRPRT
ZEFFDT
ZEXPDT
FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_PERMIT.
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = W_NAME1 " 'ZPIDNUM'
DYNPPROG = 'ZMSTR0022'
DYNPNR = SY-DYNNR
DYNPROFIELD = W_NAME2 "'S_PIDNUM'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_PERMIT
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.
ENDIF.
ENDFORM. " F4_HELP
&----
*& Form check_input
&----
text
----
--> p1 text
<-- p2 text
----
FORM CHECK_INPUT .
IF S_PIDNUM[] IS INITIAL AND
S_ENGDSC[] IS INITIAL AND
S_ARBDSC[] IS INITIAL AND
S_TARIFF[] IS INITIAL AND
S_PERNUM[] IS INITIAL AND
S_ARRPRT[] IS INITIAL .
MESSAGE TEXT-016 TYPE 'E'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ENDIF.
ENDFORM. " check_input
&----
*& Form print_form
&----
text
----
--> p1 text
<-- p2 text
----
FORM PRINT_FORM .
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = C_FORM_NAME
IMPORTING
FM_NAME = W_FORM
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 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.
ENDIF.
W_PARAM-LANGU ='AR'.
CALL FUNCTION W_FORM
EXPORTING
CONTROL_PARAMETERS = W_PARAM
W_NAME_AUTH = W_NAME_AUTH
W_ZARBDT = W_ZARBDT
W_ZENGDT = W_ZENGDT
W_ZPRT_NAME = W_ZPRT_NAME
TABLES
IT_FORM_PERMIT = IT_FORM_PERMIT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " print_form
&----
*& Form fetch_Permit
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_PERMIT .
-Fetching data from zmst_permit based on the inputs on selection screen--
SELECT
ZPIDNUM
ZARBDSC
ZENGDSC
ZENQUAN
ZARQUAN
ZENUOM
ZTARIFF
ZARRPRT
ZPERNUM
ZEFFDT
ZEXPDT
FROM ZMST_PERMIT INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
WHERE ZPIDNUM IN S_PIDNUM
AND ZENGDSC IN S_ENGDSC
AND ZARBDSC IN S_ARBDSC
AND ZTARIFF IN S_TARIFF
AND ZPERNUM IN S_PERNUM
AND ZARRPRT IN S_ARRPRT.
IF SY-SUBRC <> 0.
MESSAGE TEXT-017 TYPE 'I'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ELSE.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-020.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
ENDLOOP.
PERFORM ALV_DISP. " calling subroutine for ALV display
ENDIF.
ENDFORM. " fetch_Permit
&----
*& Form fetch_permithi
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_PERMITHI .
-Fetching data from zmst_permit based on the inputs on selection screen--
SELECT
ZPIDNUM
ZARBDSC
ZENGDSC
ZENQUAN
ZARQUAN
ZENUOM
ZTARIFF
ZARRPRT
ZPERNUM
ZEFFDT
ZEXPDT
FROM ZMST_PERMITHI INTO CORRESPONDING FIELDS OF TABLE IT_ZMST_PERMIT
WHERE ZPIDNUM IN S_PIDNUM
AND ZENGDSC IN S_ENGDSC
AND ZARBDSC IN S_ARBDSC
AND ZTARIFF IN S_TARIFF
AND ZPERNUM IN S_PERNUM
AND ZARRPRT IN S_ARRPRT
AND ZPERTYP = P_PERTYP.
IF SY-SUBRC <> 0.
MESSAGE TEXT-017 TYPE 'I'.
LEAVE TO TRANSACTION 'ZMSTR022'.
ELSE.
LOOP AT IT_ZMST_PERMIT INTO WA_ZMST_PERMIT.
CASE P_PERTYP.
WHEN 'I'.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-021.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
WHEN 'H'.
WA_ZMST_PERMIT-ZPERM_MIN = TEXT-022.
MODIFY IT_ZMST_PERMIT INDEX SY-TABIX FROM WA_ZMST_PERMIT TRANSPORTING ZPERM_MIN .
ENDCASE.
ENDLOOP.
PERFORM ALV_DISP. " calling subroutine for ALV display
ENDIF.
ENDFORM. " fetch_permithi
&----
*& Form val_PERTYP
&----
text
----
--> p1 text
<-- p2 text
----
FORM VAL_PERTYP .
DATA: W_NAME TYPE VRM_ID,
IT_LIST TYPE VRM_VALUES,
WA_VALUE LIKE LINE OF IT_LIST.
WA_VALUE-KEY = ' '.
WA_VALUE-TEXT = TEXT-020.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
WA_VALUE-KEY = 'I'.
WA_VALUE-TEXT = TEXT-021.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
WA_VALUE-KEY = 'H'.
WA_VALUE-TEXT = TEXT-022.
APPEND WA_VALUE TO IT_LIST.
CLEAR WA_VALUE.
W_NAME = 'P_PERTYP'.
P_PERTYP = ' '.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = W_NAME
VALUES = IT_LIST
EXCEPTIONS
ID_ILLEGAL_NAME = 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.
ENDFORM. " val_PERTYP
*************************************************
Help children of U.N World Food Program by rewarding points and encourage others to answer your queries
‎2008 Jun 19 2:38 PM
Dear Santosh,
in alv program.
put that editable data into the work area,
and then insert that value into desired data base.
u can do like this
IF itab-frtno = 'workarea value'.
MESSAGE 'do u realy want to enter the changed data' TYPE 'I'.
ELSE.
SELECT frtno FROM zfrt1 INTO s WHERE frtno = itab-frtno.
ENDSELECT.
IF sy-subrc IS NOT INITIAL.
APPEND itab.
INSERT zfrt1 FROM itab.
MESSAGE 'Data saved' TYPE 'S'.
hope now u get an idea.
if help full rewards
are helpfull.
and expected.
vivek