i am passing like that only sir,
here i will post my coding.
first screen:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0014.
PROCESS AFTER INPUT.
CHAIN.
FIELD:zacinfit014hfm-bukrs,
zacinfit014hfm-RYEAR,zacinfit014hfm-RPMAX,zacinfit014hfm-BUDAT.
MODULE DUPLICATE_ENTRY1 ON CHAIN-INPUT.
ENDCHAIN.
MODULE USER_COMMAND_0014.
second screen:
PROCESS BEFORE OUTPUT.
*MODULE SELECT.
MODULE STATUS_1014.
LOOP AT GI_TABLE14 INTO GS_TABLE14 WITH CONTROL SUB
CURSOR SUB-current_line.
MODULE MODIFYTABLE.
MODULE CREATION_NAME_DATE.
MODULE SELECT.
ENDLOOP.
MODULE USERNAME.
*
PROCESS AFTER INPUT.
LOOP AT GI_TABLE14.
CHAIN.
FIELD:GS_TABLE14-HFM_DOC_NO,
GS_TABLE14-RYEAR,GS_TABLE14-RPMAX,GS_TABLE14-BUDAT,
GS_TABLE14-HKONT,GS_TABLE14-HFM_BPU_CATEGORY,
GS_TABLE14-HFM_GL_ACC_TYPE,GS_TABLE14-HFM_VALUE_TYPE.
*MODULE VALIDATE.
MODULE DUPLICATE_ENTRY ON CHAIN-INPUT.
ENDCHAIN.
ENDLOOP.
MODULE back AT EXIT-COMMAND.
MODULE USER_COMMAND_1014.
full coding:
*&---------------------------------------------------------------------*
*& Module Pool ZTABLE14
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZTABLE14 NO STANDARD PAGE HEADING
MESSAGE-ID ZACINFI001 LINE-SIZE 1023.
TABLES:zacinfit014hfm.
DATA: GI_TABLE14 LIKE STANDARD TABLE OF ZACINFIT014HFM,
GS_TABLE14 LIKE LINE OF GI_TABLE14,
GI_TAB14 LIKE STANDARD TABLE OF ZACINFIT014HFM,
GS_TAB14 LIKE LINE OF GI_TAB14,
OK_CODE TYPE SY-UCOMM,
MARK TYPE C.
DATA: l_user_data TYPE soudatai1,
l_user TYPE soudnamei1,
l_fullname type SO_ADRNAM.
DATA: number TYPE i,
line_count TYPE i.
START-OF-SELECTION.
CALL SCREEN 014.
*&---------------------------------------------------------------------*
*& Module STATUS_0014 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0014 OUTPUT.
SET PF-STATUS 'ST14'.
SET TITLEBAR 'T14'.
ENDMODULE. " STATUS_0014 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0014 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0014 INPUT.
CASE OK_CODE.
WHEN 'DISPLAY'.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '1'
OBJECT = 'ZHFM'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = number
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gs_table14-hfm_doc_no = number.
MOVE ZACINFIT014HFM-BUKRS TO GS_TABLE14-BUKRS.
MOVE ZACINFIT014HFM-RYEAR TO GS_TABLE14-RYEAR.
MOVE ZACINFIT014HFM-RPMAX TO GS_TABLE14-RPMAX.
MOVE ZACINFIT014HFM-BUDAT TO GS_TABLE14-BUDAT.
* APPEND GS_TABLE14 TO Gi_TABLE14.
*MODIFY ZACINFIT014HFM FROM GS_TABLE14.
INSERT into zacinfit014hfm VALUES gs_table14.
CALL SCREEN 1014.
WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0014 INPUT
CONTROLS: SUB TYPE TABLEVIEW USING SCREEN '1014'.
*&---------------------------------------------------------------------*
*& Module STATUS_1014 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1014 OUTPUT.
SET PF-STATUS 'S14'.
SET TITLEBAR 'T14_1'.
ENDMODULE. " STATUS_1014 OUTPUT
*&---------------------------------------------------------------------*
*& Module SELECT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SELECT OUTPUT.
SELECT MANDT
BUKRS
HFM_DOC_NO
BUZEI
RYEAR
RPMAX
BUDAT
HKONT
HFM_BPU_CATEGORY
HFM_GL_ACC_TYPE
HFM_VALUE_TYPE
SHKZG
DMBTR
ERDAT
USNAM
HFM_APPROVER_ID
HFM_APP_DATE
HFM_APPROVED_IND
HFM_UPDATED_IND
* UP TO 10 ROWS
FROM ZACINFIT014HFM
INTO TABLE GI_TABLE14
* where hfm_doc_no = ''.
WHERE BUKRS = gs_table14-BUKRS.
ENDMODULE. " SELECT OUTPUT
*&---------------------------------------------------------------------*
*& Module CREATION_NAME_DATE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CREATION_NAME_DATE OUTPUT.
line_count = line_count + 1.
gs_table14-buzei = line_count.
GS_TABLE14-BUKRS = gs_table14-BUKRS.
GS_TABLE14-ERDAT = SY-DATUM.
GS_TABLE14-USNAM = SY-UNAME.
ENDMODULE. " CREATION_NAME_DATE OUTPUT
*&---------------------------------------------------------------------*
*& Module USERNAME OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USERNAME OUTPUT.
* give the logged on user id
l_user-sapname = sy-uname.
* get the user data
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
user = l_user
IMPORTING
user_data = l_user_data.
* get the user full name
l_fullname = l_user_data-fullname.
ENDMODULE. " USERNAME OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1014 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1014 INPUT.
DATA: WA_ANSWER(1) TYPE C.
CASE ok_code.
WHEN 'SAVE'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
* TITLEBAR = ' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = 'DO YOU WANT TO SAVE THE ENTRY'
TEXT_BUTTON_1 = 'YES'(001)
* ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'NO'(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 = WA_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 WA_ANSWER = '1'.
*if gs_table14-shkzg ne ''.
MODIFY GI_TABLE14 FROM GS_TABLE14 INDEX SUB-CURRENT_LINE.
* IF SY-SUBRC <> 0 AND GS_TABLE14 IS NOT INITIAL.
** MOVE ZACINFIT_01 TO WA_HFM.
* APPEND GS_TABLE14 TO GI_TABLE14.
* ENDIF.
* modify zacinfit_01 FROM TABLE it.
MODIFY ZACINFIT014HFM from GS_TABLE14.
IF SY-SUBRC = 0.
MESSAGE 'Database updated successfully' type 'S'.
ELSE.
MESSAGE 'Update Failed' type 'S'.
ENDIF.
*ELSE."WA_ANSWER = 'NO'.
*LEAVE PROGRAM.
* ENDLOOP.
ELSEIF WA_ANSWER = '2'.
MESSAGE 'ENTRY NOT SAVED' TYPE 'I'.
* LEAVE PROGRAM.
ENDIF.
WHEN 'ENTER'."OTHERS.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
* TITLEBAR = ' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = 'DO YOU WANT TO SAVE THE ENTRY'
TEXT_BUTTON_1 = 'YES'(001)
* ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = 'NO'(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 = WA_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 WA_ANSWER = '1'.
* MOVE gs_table14 TO GS_TABLE14.
MODIFY GI_TABLE14 FROM GS_TABLE14 INDEX SUB-CURRENT_LINE.
* IF SY-SUBRC <> 0 AND GS_TABLE14 IS NOT INITIAL.
** MOVE ZACINFIT_01 TO WA_HFM.
* APPEND GS_TABLE14 TO GI_TABLE14.
* ENDIF.
* modify zacinfit_01 FROM TABLE it.
MODIFY ZACINFIT014HFM from GS_TABLE14.
IF SY-SUBRC = 0.
MESSAGE 'Database updated successfully' type 'S'.
ELSE.
MESSAGE 'Update Failed' type 'S'.
ENDIF.
*ELSE."WA_ANSWER = 'NO'.
*LEAVE PROGRAM.
ELSEIF WA_ANSWER = '2'.
MESSAGE 'ENTRY NOT SAVED' TYPE 'I'.
ENDIF.
ENDCASE.
ENDMODULE. " USER_COMMAND_1014 INPUT
*&---------------------------------------------------------------------*
*& Module BACK INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE BACK INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " BACK INPUT
*&---------------------------------------------------------------------*
*& Module DUPLICATE_ENTRY INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*MODULE DUPLICATE_ENTRY INPUT.
*SORT GI_TABLE14 BY HFM_DOC_NO.
*DELETE ADJACENT DUPLICATES FROM GI_TABLE14 COMPARING ALL FIELDS.
*select BUKRS
* HFM_DOC_NO
* RYEAR
* RPMAX
* BUDAT
* HKONT
* HFM_BPU_CATEGORY
* HFM_GL_ACC_TYPE
* HFM_VALUE_TYPE
* SHKZG
* DMBTR
* ERDAT
* USNAM
* from zacinfit014hfm INTO CORRESPONDING FIELDS OF TABLE gi_table14.
*READ TABLE GI_TABLE14 INTO GS_TABLE14 WITH KEY HFM_DOC_NO = gs_table14-HFM_DOC_NO." TRANSPORTING NO FIELDS.
*IF sy-subrc EQ 0.
* SET CURSOR FIELD 'GS_TABLE14-HFM_DOC_NO'.
* MESSAGE E001 WITH 'value is already available cannot be saved'(006).
*ENDIF.
*ENDMODULE. " DUPLICATE_ENTRY INPUT
regards,
S.kavitha