01-06-2015 6:33 PM
hi all,
i am working on module pool program. how to add entry to current line of table control to ztable.
e.g:, i have ztable with 10 field, in that 5 fields already have value. And i created one screen with table contro wizard.
screen will display all fields with fields which have value in output only mode, remaining fields are in changable mode, now if i give value in remaining field and press save .
data as to store in ztable on the current line itself, like this in ztable.
3961 2014 01 1006 2 6000 000 100 20 20 10 6000
but for me it is storing like new line. like this in ztable,
1006 2 6000 000 6000
3961 2014 01 1006 2 6000 000 100 20 20 10 6000
how to slove this.
regards,
S.Kavitha
01-07-2015 2:34 AM
Hi S.Kavitha,
What`s your key fields of this ztable? Be care of this point.
Others, do as @Chinmay said, check the PAI, modify command.
regards,
Archer
01-07-2015 12:14 AM
Check the "Loop at itab" part in PAI for table control.
There would be a module in it. Check if it is appending or modifying the table.
If there is a modify command, then put a watchpoint on the table to see where the rows are being added.
01-07-2015 2:44 AM
hi chinmay ,
in the above screen shot,
if i give value to only HFM_GL_AMT_LC field its adding that entry on same line , but if igive company code , fiscal year means it is adding that as a new line as i gave in the above.
i will check what u told ,
regards,
S.kavitha
01-07-2015 2:34 AM
Hi S.Kavitha,
What`s your key fields of this ztable? Be care of this point.
Others, do as @Chinmay said, check the PAI, modify command.
regards,
Archer
01-07-2015 2:52 AM
hi sir,
in my ztable i have
BUKRS
GJAHR
MONAT
HFM_ENT_DAT_PER
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
HFM_GL_AMT_LC
HFM_GL_AMT_LC_10
HFM_GL_AMT_LC_11
HFM_GL_AMT_LC_14
HFM_GL_AMT_LC_15
HFM_GL_AMT_LC_16
HFM_GL_AMT_LC_25
HFM_GL_AMT_LC_30
HFM_GL_AMT_LC_35
HFM_GL_AMT_LC_36
HFM_GL_AMT_LC_40
HFM_GL_AMT_LC_41
HFM_GL_AMT_LC_42
HFM_GL_AMT_LC_47
HFM_GL_AMT_LC_48 fields, in that upto hfm_gl_account is a key field.
in that initally screen have for only
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
HFM_GL_AMT_LC
HFM_GL_AMT_LC_11
HFM_GL_AMT_LC_25 , if give value to bukrs , gjahr and all means it adding that value as a new line not on the same line.
here i will post my code,
*&---------------------------------------------------------------------*
*& Module Pool ZTABLE17
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZTABLE17.
TABLES: ZACINFIT017HFM.
TYPES: BEGIN OF TY_HFM15,
HFM_GL_AMT_LC TYPE ZACINFIT015HFM-HFM_GL_AMT_LC,
HFM_GL_ACC_TYPE TYPE ZACINFIT015HFM-HFM_GL_ACC_TYPE,
HFM_VALUE_TYPE TYPE ZACINFIT015HFM-HFM_VALUE_TYPE,
HFM_GL_ACCOUNT TYPE ZACINFIT015HFM-HFM_GL_ACCOUNT,
END OF TY_HFM15.
* BEGIN OF TY_HFM17,
* HFM_VALUE_TYPE TYPE ZACINFIT017HFM-HFM_VALUE_TYPE,
* HFM_GL_AMT_LC_10 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_10,
* HFM_GL_AMT_LC_11 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_11,
* HFM_GL_AMT_LC_25 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_25,
* HFM_GL_AMT_LC_99 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_99,
* END OF TY_HFM17.
DATA: GI_TABLE17 LIKE STANDARD TABLE OF ZACINFIT017HFM WITH HEADER LINE,
GI_TABLE TYPE TABLE OF TY_HFM15,
GS_TABLE TYPE TY_HFM15,
GS_TABLE17 LIKE LINE OF GI_TABLE17,
gi_table_17 LIKE STANDARD TABLE OF zacinfit017hfm WITH HEADER LINE,
gs_table_17 like LINE OF gi_table_17.
DATA: GI_OUTPUT LIKE STANDARD TABLE OF ZACINFIT017HFM,
GS_OUTPUT LIKE LINE OF GI_OUTPUT.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TABLE_17' ITSELF
CONTROLS: TABLE_17 TYPE TABLEVIEW USING SCREEN 1701.
*&SPWIZARD: LINES OF TABLECONTROL 'TABLE_17'
DATA: G_TABLE_17_LINES LIKE SY-LOOPC.
DATA: OK_CODE LIKE SY-UCOMM.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TABLE_17'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TABLE_17_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE GI_TABLE17 LINES TABLE_17-lines.
ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TABLE_17'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TABLE_17_GET_LINES OUTPUT.
G_TABLE_17_LINES = SY-LOOPC.
ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'TABLE_17'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE TABLE_17_MODIFY INPUT.
MODIFY GI_TABLE17
FROM GS_TABLE17
INDEX TABLE_17-CURRENT_LINE.
ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'TABLE_17'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TABLE_17_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TABLE_17'
'GI_TABLE17'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE.
*----------------------------------------------------------------------*
* INCLUDE TABLECONTROL_FORMS *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form USER_OK_TC *
*&---------------------------------------------------------------------*
FORM USER_OK_TC USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME
CHANGING P_OK LIKE SY-UCOMM.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA: L_OK TYPE SY-UCOMM,
L_OFFSET TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations *
*&SPWIZARD: evaluate TC name and operations *
SEARCH P_OK FOR P_TC_NAME.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
L_OFFSET = STRLEN( P_TC_NAME ) + 1.
L_OK = P_OK+L_OFFSET.
*&SPWIZARD: execute general and TC specific operations *
CASE L_OK.
WHEN 'INSR'. "insert row
PERFORM FCODE_INSERT_ROW USING P_TC_NAME
P_TABLE_NAME.
CLEAR P_OK.
WHEN 'DELE'. "delete row
PERFORM FCODE_DELETE_ROW USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
CLEAR P_OK.
WHEN 'P--' OR "top of list
'P-' OR "previous page
'P+' OR "next page
'P++'. "bottom of list
PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
L_OK.
CLEAR P_OK.
* WHEN 'L--'. "total left
* PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
* WHEN 'L-'. "column left
* PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
* WHEN 'R+'. "column right
* PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
* WHEN 'R++'. "total right
* PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
WHEN 'MARK'. "mark all filled lines
PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
CLEAR P_OK.
WHEN 'DMRK'. "demark all filled lines
PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
CLEAR P_OK.
* WHEN 'SASCEND' OR
* 'SDESCEND'. "sort column
* PERFORM FCODE_SORT_TC USING P_TC_NAME
* l_ok.
ENDCASE.
ENDFORM. " USER_OK_TC
*&---------------------------------------------------------------------*
*& Form FCODE_INSERT_ROW *
*&---------------------------------------------------------------------*
FORM fcode_insert_row
USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_LINES_NAME LIKE FELD-NAME.
DATA L_SELLINE LIKE SY-STEPL.
DATA L_LASTLINE TYPE I.
DATA L_LINE TYPE I.
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME.
ASSIGN (L_LINES_NAME) TO <LINES>.
*&SPWIZARD: get current line *
GET CURSOR LINE L_SELLINE.
IF SY-SUBRC <> 0. " append line to table
L_SELLINE = <TC>-LINES + 1.
*&SPWIZARD: set top line *
IF L_SELLINE > <LINES>.
<TC>-TOP_LINE = L_SELLINE - <LINES> + 1 .
ELSE.
<TC>-TOP_LINE = 1.
ENDIF.
ELSE. " insert line into table
L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1.
L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1.
ENDIF.
*&SPWIZARD: set new cursor line *
L_LINE = L_SELLINE - <TC>-TOP_LINE + 1.
*&SPWIZARD: insert initial line *
INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE.
<TC>-LINES = <TC>-LINES + 1.
*&SPWIZARD: set cursor *
SET CURSOR LINE L_LINE.
ENDFORM. " FCODE_INSERT_ROW
*&---------------------------------------------------------------------*
*& Form FCODE_DELETE_ROW *
*&---------------------------------------------------------------------*
FORM fcode_delete_row
USING P_TC_NAME TYPE DYNFNAM
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: delete marked lines *
DESCRIBE TABLE <TABLE> LINES <TC>-LINES.
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
IF <MARK_FIELD> = 'X'.
DELETE <TABLE> INDEX SYST-TABIX.
IF SY-SUBRC = 0.
<TC>-LINES = <TC>-LINES - 1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " FCODE_DELETE_ROW
*&---------------------------------------------------------------------*
*& Form COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
* -->P_OK ok code
*----------------------------------------------------------------------*
FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME
P_OK.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TC_NEW_TOP_LINE TYPE I.
DATA L_TC_NAME LIKE FELD-NAME.
DATA L_TC_LINES_NAME LIKE FELD-NAME.
DATA L_TC_FIELD_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <LINES> TYPE I.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get looplines of TableControl *
CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
ASSIGN (L_TC_LINES_NAME) TO <LINES>.
*&SPWIZARD: is no line filled? *
IF <TC>-LINES = 0.
*&SPWIZARD: yes, ... *
L_TC_NEW_TOP_LINE = 1.
ELSE.
*&SPWIZARD: no, ... *
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT = <TC>-TOP_LINE
ENTRY_FROM = 1
ENTRY_TO = <TC>-LINES
LAST_PAGE_FULL = 'X'
LOOPS = <LINES>
OK_CODE = P_OK
OVERLAPPING = 'X'
IMPORTING
ENTRY_NEW = L_TC_NEW_TOP_LINE
EXCEPTIONS
* NO_ENTRY_OR_PAGE_ACT = 01
* NO_ENTRY_TO = 02
* NO_OK_CODE_OR_PAGE_GO = 03
OTHERS = 0.
ENDIF.
*&SPWIZARD: get actual tc and column *
GET CURSOR FIELD L_TC_FIELD_NAME
AREA L_TC_NAME.
IF SYST-SUBRC = 0.
IF L_TC_NAME = P_TC_NAME.
*&SPWIZARD: et actual column *
SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
ENDIF.
ENDIF.
*&SPWIZARD: set the new top line *
<TC>-TOP_LINE = L_TC_NEW_TOP_LINE.
ENDFORM. " COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
*& Form FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
* marks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME.
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: mark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
<MARK_FIELD> = 'X'.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Form FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
* demarks all TableControl lines
*----------------------------------------------------------------------*
* -->P_TC_NAME name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME
P_TABLE_NAME
P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS <TC> TYPE cxtab_control.
FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE.
FIELD-SYMBOLS <WA>.
FIELD-SYMBOLS <MARK_FIELD>.
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO <TC>.
*&SPWIZARD: get the table, which belongs to the tc *
CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body
ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline
*&SPWIZARD: demark all filled lines *
LOOP AT <TABLE> ASSIGNING <WA>.
*&SPWIZARD: access to the component 'FLAG' of the table header *
ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>.
<MARK_FIELD> = SPACE.
ENDLOOP.
ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*& Module STATUS_1701 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1701 OUTPUT.
SET PF-STATUS 'STATUS17'.
SET TITLEBAR 'TITLE17'.
ENDMODULE. " STATUS_1701 OUTPUT
*&---------------------------------------------------------------------*
*& Module SELECT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SELECT OUTPUT.
SELECT HFM_GL_AMT_LC
HFM_GL_ACC_TYPE
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
FROM ZACINFIT015HFM
INTO TABLE GI_TABLE
WHERE HFM_GL_ACC_TYPE = 'BS'
AND ( HFM_VALUE_TYPE = 02 OR HFM_VALUE_TYPE = 01 ).
* IF GI_TABLE-HFM_VALUE_TYPE = 02.
* IF SY-SUBRC EQ 0.
* SORT GI_TABLE BY HFM_VALUE_TYPE.
* SELECT HFM_VALUE_TYPE
* HFM_GL_AMT_LC_10
* HFM_GL_AMT_LC_11
* HFM_GL_AMT_LC_25
* HFM_GL_AMT_LC_99
* FROM ZACINFIT017HFM
* INTO TABLE GI_TABLE17
* FOR ALL ENTRIES IN GI_TABLE
* WHERE HFM_VALUE_TYPE = GI_TABLE-HFM_VALUE_TYPE.
* ENDIF.
LOOP AT GI_TABLE INTO GS_TABLE.
IF GS_TABLE-HFM_VALUE_TYPE = 02 AND GS_TABLE-HFM_VALUE_TYPE ne 01 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE_17-HFM_GL_AMT_LC_10 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE_17-HFM_GL_AMT_LC_99.
MOVE-CORRESPONDING GS_TABLE TO GS_OUTPUT.
ELSEIF GS_TABLE-HFM_VALUE_TYPE = 01 AND GS_TABLE-HFM_VALUE_TYPE ne 02 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE_17-HFM_GL_AMT_LC_99 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE_17-HFM_GL_AMT_LC_10.
MOVE-CORRESPONDING GS_TABLE_17 TO GS_OUTPUT.
ENDIF.
GS_TABLE_17-HFM_GL_AMT_LC_25 = ( GS_TABLE_17-HFM_GL_AMT_LC_99 - GS_TABLE_17-HFM_GL_AMT_LC_10 ).
MOVE-CORRESPONDING GS_TABLE_17 TO GS_OUTPUT.
* ENDIF.
MOVE-CORRESPONDING GS_TABLE TO GS_OUTPUT.
MODIFY ZACINFIT017HFM FROM GS_OUTPUT.
MOVE-CORRESPONDING gs_output to gs_table17.
* APPEND GS_OUTPUT TO GI_OUTPUT.
* INSERT INTO ZACINFIT017HFM VALUES Gs_OUTPUT.
CLEAR GS_OUTPUT.
ENDLOOP.
ENDMODULE. " SELECT OUTPUT
*&---------------------------------------------------------------------*
*& Module SELECT_TABLE17 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SELECT_TABLE17 OUTPUT.
* if sy-subrc eq 0.
* sort gi_table17 by hfm_value_type.
SELECT MANDT
BUKRS
GJAHR
MONAT
HFM_ENT_DAT_PER
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
HFM_GL_AMT_LC
HFM_GL_AMT_LC_10
HFM_GL_AMT_LC_11
HFM_GL_AMT_LC_14
HFM_GL_AMT_LC_15
HFM_GL_AMT_LC_16
HFM_GL_AMT_LC_25
HFM_GL_AMT_LC_30
HFM_GL_AMT_LC_35
HFM_GL_AMT_LC_36
HFM_GL_AMT_LC_40
HFM_GL_AMT_LC_41
HFM_GL_AMT_LC_42
HFM_GL_AMT_LC_47
HFM_GL_AMT_LC_48
HFM_GL_AMT_LC_49
HFM_GL_AMT_LC_61
HFM_GL_AMT_LC_62
HFM_GL_AMT_LC_70
HFM_GL_AMT_LC_81
HFM_GL_AMT_LC_83
HFM_GL_AMT_LC_90
HFM_GL_AMT_LC_92
HFM_GL_AMT_LC_93
HFM_GL_AMT_LC_98
HFM_GL_AMT_LC_99
HFM_GL_AMT_LC_U1
HFM_GL_AMT_LC_U2
HFM_GL_AMT_LC_U3
HFM_GL_AMT_LC_U4
HFM_GL_AMT_LC_U5
FROM ZACINFIT017HFM
INTO CORRESPONDING FIELDS OF TABLE GI_TABLE17
* WHERE BUKRS = ''.
WHERE hfm_value_type = gs_table-hfm_value_type.
ENDMODULE. " SELECT_TABLE17 OUTPUT
*&---------------------------------------------------------------------*
*& Module INSERT_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INSERT_DATA INPUT.
MODIFY GI_TABLE17 INDEX TABLE_17-CURRENT_LINE.
*MODIFY GI_TABLE17 FROM GS_TABLE17 INDEX TABLE_17-CURRENT_LINE.
*IF SY-SUBRC <> 0 AND GS_TABLE17 IS NOT INITIAL.
** APPEND GS_TABLE17 TO GI_TABLE17.
** ENDIF.
* MOVE GS_TABLE17 TO GS_TABLE17.
** APPEND GS_TABLE17 TO GI_TABLE17.
MODIFY ZACINFIT017HFM FROM GS_TABLE17.
* ENDIF.
IF SY-SUBRC EQ 0.
MESSAGE 'UPDATED SUCCESSFULLY' TYPE 'S'.
ELSE.
MESSAGE 'UPDATE FAILED' TYPE 'E'.
ENDIF.
ENDMODULE. " INSERT_DATA INPUT
*&---------------------------------------------------------------------*
*& Module UPDATE INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE UPDATE INPUT.
LOOP AT GI_TABLE17 INTO GS_TABLE17.
IF GS_TABLE17-HFM_GL_AMT_LC_25 = '' and GS_TABLE17-BUKRS = ''.
GS_TABLE17-HFM_GL_AMT_LC_25 = GS_TABLE17-HFM_GL_AMT_LC_25.
MOVE-CORRESPONDING gs_table17 to gs_table17.
ELSEIF GS_TABLE17-HFM_GL_AMT_LC_25 NE '' AND GS_TABLE17-BUKRS = ''.
MOVE-CORRESPONDING gs_table17 to gs_table17.
GS_TABLE17-HFM_GL_AMT_LC_25 = ( GS_TABLE17-HFM_GL_AMT_LC_25 - GS_TABLE17-HFM_GL_AMT_LC_11 - GS_TABLE17-HFM_GL_AMT_LC_14
- GS_TABLE17-HFM_GL_AMT_LC_15 - GS_TABLE17-HFM_GL_AMT_LC_16 - GS_TABLE17-HFM_GL_AMT_LC_30 - GS_TABLE17-HFM_GL_AMT_LC_35
- GS_TABLE17-HFM_GL_AMT_LC_36 - GS_TABLE17-HFM_GL_AMT_LC_40 - GS_TABLE17-HFM_GL_AMT_LC_41 - GS_TABLE17-HFM_GL_AMT_LC_42
- GS_TABLE17-HFM_GL_AMT_LC_47 - GS_TABLE17-HFM_GL_AMT_LC_48 - GS_TABLE17-HFM_GL_AMT_LC_49 - GS_TABLE17-HFM_GL_AMT_LC_61
- GS_TABLE17-HFM_GL_AMT_LC_62 - GS_TABLE17-HFM_GL_AMT_LC_70 - GS_TABLE17-HFM_GL_AMT_LC_81 - GS_TABLE17-HFM_GL_AMT_LC_83
- GS_TABLE17-HFM_GL_AMT_LC_90 - GS_TABLE17-HFM_GL_AMT_LC_92 - GS_TABLE17-HFM_GL_AMT_LC_93 - GS_TABLE17-HFM_GL_AMT_LC_98
- GS_TABLE17-HFM_GL_AMT_LC_U1 - GS_TABLE17-HFM_GL_AMT_LC_U2 - GS_TABLE17-HFM_GL_AMT_LC_U3 - GS_TABLE17-HFM_GL_AMT_LC_U4
- GS_TABLE17-HFM_GL_AMT_LC_U5 ).
* MOVE GS_TABLE17-HFM_GL_AMT_LC_25 TO GS_TABLE17-HFM_GL_AMT_LC_25.
* APPEND GS_TABLE17 TO GI_TABLE17.
MODIFY ZACINFIT017HFM FROM GS_TABLE17.
ENDIF.
ENDLOOP.
ENDMODULE. " UPDATE INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1701 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1701 INPUT.
CASE OK_CODE.
WHEN 'SAVE'.
loop at gi_table17 WHERE bukrs ne ''.
modify zacinfit017hfm from gi_table17.
ENDLOOP.
commit work.
ENDCASE.
ENDMODULE. " USER_COMMAND_1701 INPUT
*&---------------------------------------------------------------------*
*& Module BACK INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE BACK INPUT.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " BACK INPUT
*&---------------------------------------------------------------------*
*& Module MODIFYTABLE17 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MODIFYTABLE17 OUTPUT.
TABLE_17-LINES = 1.
ENDMODULE. " MODIFYTABLE17 OUTPUT
regards,
S.Kavitha
01-07-2015 3:08 AM
hi all,
how to debug and put watch point in module pool program.
i put /h and executed but it not working.
regards,
S.kavitha
01-07-2015 3:37 AM
hi all,
in PAI , MODULE TABLE_17_MODIFY ON CHAIN-REQUEST.
MODIFY GI_TABLE17
FROM GS_TABLE17
INDEX TABLE_17-CURRENT_LINE.
is their , i debugged in gi_table17 is in 0 value only ,not modifing the data.
s.kavitha
01-07-2015 3:40 AM
01-07-2015 4:09 AM
hi sir,
i have 2 ztable, from 1st to 2nd table i am passing data, that code is,
SELECT HFM_GL_AMT_LC
HFM_GL_ACC_TYPE
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
FROM ZACINFIT015HFM
INTO TABLE GI_TABLE
WHERE HFM_GL_ACC_TYPE = 'BS'
AND ( HFM_VALUE_TYPE = 02 OR HFM_VALUE_TYPE = 01 ).
* IF GI_TABLE-HFM_VALUE_TYPE = 02.
* IF SY-SUBRC EQ 0.
* SORT GI_TABLE BY HFM_VALUE_TYPE.
* SELECT HFM_VALUE_TYPE
* HFM_GL_AMT_LC_10
* HFM_GL_AMT_LC_11
* HFM_GL_AMT_LC_25
* HFM_GL_AMT_LC_99
* FROM ZACINFIT017HFM
* INTO TABLE GI_TABLE17
* FOR ALL ENTRIES IN GI_TABLE
* WHERE HFM_VALUE_TYPE = GI_TABLE-HFM_VALUE_TYPE.
* ENDIF.
LOOP AT GI_TABLE INTO GS_TABLE.
IF GS_TABLE-HFM_VALUE_TYPE = 02 AND GS_TABLE-HFM_VALUE_TYPE ne 01 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE17-HFM_GL_AMT_LC_10 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE17-HFM_GL_AMT_LC_99.
MOVE-CORRESPONDING GS_TABLE TO GS_OUTPUT.
ELSEIF GS_TABLE-HFM_VALUE_TYPE = 01 AND GS_TABLE-HFM_VALUE_TYPE ne 02 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE17-HFM_GL_AMT_LC_99 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE17-HFM_GL_AMT_LC_10.
MOVE-CORRESPONDING GS_TABLE17 TO GS_OUTPUT.
ENDIF.
GS_TABLE17-HFM_GL_AMT_LC_25 = ( GS_TABLE17-HFM_GL_AMT_LC_99 - GS_TABLE17-HFM_GL_AMT_LC_10 ).
MOVE-CORRESPONDING GS_TABLE17 TO GS_OUTPUT.
* ENDIF.
MOVE-CORRESPONDING GS_TABLE TO GS_OUTPUT.
* MODIFY ZACINFIT017HFM FROM GS_OUTPUT.
* MOVE-CORRESPONDING gs_output to gs_table17.
APPEND GS_OUTPUT TO GI_OUTPUT.
INSERT INTO ZACINFIT017HFM VALUES Gs_OUTPUT.
* MOVE-CORRESPONDING gs_output to gs_table17.
CLEAR GS_OUTPUT.
ENDLOOP.
after adding i am created screen in module pool table control with wizard
for that i did select query statement that is,
SELECT MANDT
BUKRS
GJAHR
MONAT
HFM_ENT_DAT_PER
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
HFM_GL_AMT_LC
HFM_GL_AMT_LC_10
HFM_GL_AMT_LC_11
HFM_GL_AMT_LC_14
HFM_GL_AMT_LC_15
HFM_GL_AMT_LC_16
HFM_GL_AMT_LC_25
HFM_GL_AMT_LC_30
HFM_GL_AMT_LC_35
HFM_GL_AMT_LC_36
HFM_GL_AMT_LC_40
HFM_GL_AMT_LC_41
HFM_GL_AMT_LC_42
HFM_GL_AMT_LC_47
HFM_GL_AMT_LC_48
HFM_GL_AMT_LC_49
HFM_GL_AMT_LC_61
HFM_GL_AMT_LC_62
HFM_GL_AMT_LC_70
HFM_GL_AMT_LC_81
HFM_GL_AMT_LC_83
HFM_GL_AMT_LC_90
HFM_GL_AMT_LC_92
HFM_GL_AMT_LC_93
HFM_GL_AMT_LC_98
HFM_GL_AMT_LC_99
HFM_GL_AMT_LC_U1
HFM_GL_AMT_LC_U2
HFM_GL_AMT_LC_U3
HFM_GL_AMT_LC_U4
HFM_GL_AMT_LC_U5
FROM ZACINFIT017HFM
INTO CORRESPONDING FIELDS OF TABLE GI_TABLE17
* WHERE BUKRS = ''.
WHERE hfm_value_type = gs_table-hfm_value_type.
in pai i gave module to insert data to ztable.
MODIFY GI_TABLE17 FROM GS_TABLE17 INDEX TABLE_17-CURRENT_LINE.
IF SY-SUBRC <> 0 AND GS_TABLE17 IS NOT INITIAL.
APPEND GS_TABLE17 TO GI_TABLE17.
ENDIF.
* MOVE GS_TABLE17 TO GS_TABLE17.
** APPEND GS_TABLE17 TO GI_TABLE17.
MODIFY ZACINFIT017HFM FROM GS_TABLE17.
* ENDIF.
IF SY-SUBRC EQ 0.
MESSAGE 'UPDATED SUCCESSFULLY' TYPE 'S'.
ELSE.
MESSAGE 'UPDATE FAILED' TYPE 'E'.
ENDIF.
s.kavitha
01-07-2015 5:18 AM
HI
before updating ztable how many records do you have in internal table?
do updation on internal table fist, after that modify ztable.
regards
laxman
01-07-2015 5:56 AM
Hi Kavitha,
before update ztable please check the key field values in GS_TABLE17.
check the values of GS_TABLE17 through debugging whether it has the
same values as old one or any key field value is blank.
While inserting new record itself you need to update the key fields.
when modifiying that record the modification data in work area must have
same value in key fields.
Thanks,
Marimuthu.K
01-07-2015 5:38 AM
Hi Kavitha,
Module pool with table control basic logic is
in PBO
Loop at internal_table into work_area with control Tab_control.
pass the information to Table control as below code
move corresponding work_area to Tab_control Structure.
endloop.
In PAI.
Loop at Internal table.
pass the changes information to internal table.
move corresponding Tab_control Strucuture to Work_area.
Here You write your logic to data update for other fields in Table Control.
modify Internal Table from Work Area Index Tab_control-Current_line.
endloop.
After that your Save Command in USE_COMMAND moduel
In save command you have to write your save logic.
Regards.
Praveer.
01-07-2015 10:46 AM
hi all,
once i give value to all fields, and if press enter button data saving to ztable.
but i need if i press enter button, pop-up box as to appear, for whether save the data or not .
how to do this,
regards,
S.Kavitha
01-07-2015 11:17 AM
Hi Kavitha,
Write the Data update logic inside the Table_Control Loop,
But write the Data Saving Logic Inside the USER_COMMAND module
based on the SY-UCOMM value.
Or you can do the same inside the Table_control Loop, just pass the SY-UCOMM value condition as data save.
regards.
Praveer.
01-07-2015 3:53 PM
Do search SCN for further assistance.
Don't expect to be spoon fed.
01-08-2015 3:27 AM
01-08-2015 4:55 AM
Very Simply Insert New module in PAI.
write your logic in this module and modify internal table.
you can Ref Sample Code.
loop at temp_otentry.
chain.
field wa_tempotentry-emp_code.
field wa_tempotentry-emp_name.
field wa_tempotentry-start_dt.
field wa_tempotentry-end_dt.
field wa_tempotentry-start_time.
field wa_tempotentry-end_time.
field wa_tempotentry-ot_hour.
field wa_tempotentry-zshift.
field wa_tempotentry-zreliver.
field wa_tempotentry-zreliver_emp.
field wa_tempotentry-zreason.
module overtime_modify on chain-request.
endchain.
endloop.
MODULE overtime_modify INPUT.
*please write your logic
*if you want to insert new line then use append
*else modify current line of work area
*after modify internal table
MODIFY temp_otentry
FROM wa_tempotentry
INDEX overtime-current_line.
ENDMODULE. "overtime_modify input
01-08-2015 7:02 AM
HI SIR,
I DID POPUP BOX TRIGGER WHEN PRESS ENTER.
IN THAT ONCE I GIVE ENTRY AND PRESS ENTER POPUP WILL COME WITH YOU WANT TO SAVE OR NOT
IF I GIVE YES ITS SAVE ENTRY TO ZTABLE, AND IF I GIVE NO ALSO ITS SAVING ENTRY TO ZTABLE I DONT WANT LIKE THIS.
IF PRESS NO IT SHOULD NOT SAVE ENTRY
S.KAVITHA
01-08-2015 7:55 AM
Hi Kavitha,
Which FM you are using for POPUP.
IF YOU USED FM "'POPUP_TO_CONFIRM_WITH_MESSAGE'
YOU can do as below.
CALL
FUNCTION
'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION =
'Y'
DIAGNOSETEXT1 =
'This is Testing'
DIAGNOSETEXT2 =
' '
DIAGNOSETEXT3 =
' '
TEXTLINE1 =
'Do You want to Exit'
TEXTLINE2 =
' '
TITEL =
'POPUP_TO_CONFIRM_WITH_MESSAGE'
START_COLUMN = 25
START_ROW = 6
*
----for the display of cancel button do like this.
CANCEL_DISPLAY =
' '
IMPORTING
ANSWER = ANS
.
IF
ANS =
'J'
.
*
---put code on selecting yes
ELSE
.
*
---put code on selecting no
ENDIF
.
Thanks,
Marimuthu.K
01-08-2015 9:01 AM
01-08-2015 9:13 AM
I did not understand your problem exactly but as per my opinion please remove pop-up when each time you press enter button. write your code to use POPUP_TO_CONFIRM_WITH_MESSAGE for pop trigger when you press save button.
01-08-2015 10:31 AM
HI MARIMUTHU SIR,
WHAT IS THAT ANS ?
IN ABOVE U PASTED CODE.
REGARDS,
S.KAVITHA
01-08-2015 10:40 AM
Hi Kavitha,
That is output parameter of that FM.
You can declare that by DATA : ANS(1) TYPE C.
The Function you performed in the popup.
You execute the FM and check yourself.
Thanks,
Marimuthu.K
01-08-2015 10:55 AM
hi marimuthu sir,
i did like that only , but it is not working, i will post my code.
DATA:WA_ANSWER TYPE C.
CASE OK_CODE.
WHEN SAVE.
WHEN OTHERS.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION = 'Y'
DIAGNOSETEXT1 = 'THIS IS TEST'
DIAGNOSETEXT2 = ' '
DIAGNOSETEXT3 = ' '
TEXTLINE1 = 'DO YOU WANT TO SAVE'
TEXTLINE2 = ' '
TITEL = 'POPUP MESSAGE'
START_COLUMN = 25
START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = WA_ANSWER
.
IF WA_ANSWER = 'Y'.
MOVE ZACINFIT006HFM TO GS_TABLE6.
APPEND GS_TABLE6 TO GI_TABLE6.
* ENDIF.
* modify zacinfit_01 FROM TABLE it.
MODIFY ZACINFIT006HFM FROM GS_TABLE6.
IF SY-SUBRC = 0.
MESSAGE 'Database updated successfully' type 'S'.
ELSE.
MESSAGE 'Update Failed' type 'S'.
ENDIF.
ELSE.
LEAVE PROGRAM.
ENDIF.
ENDCASE.
01-08-2015 11:03 AM
Hi Kavitha,
Try to Debug and sort out the issue.
IF you click yes the answer will be 'j'.
PUT BREAK-POINT HERE. AND check whether it is go to else part or not.
IF WA_ANSWER = 'J'.
MOVE ZACINFIT006HFM TO GS_TABLE6.
APPEND GS_TABLE6 TO GI_TABLE6.
* ENDIF.
* modify zacinfit_01 FROM TABLE it.
MODIFY ZACINFIT006HFM FROM GS_TABLE6.
IF SY-SUBRC = 0.
MESSAGE 'Database updated successfully' type 'S'.
ELSE.
MESSAGE 'Update Failed' type 'E'.
ENDIF.
ELSE.
LEAVE PROGRAM.
ENDIF.
01-08-2015 11:58 AM
01-08-2015 12:05 PM
HI MARIMUTHU SIR,
SORRY I AM AGAIN HAVE DOUBT.
IF I GIVE NO , IT IS NOT SAVING THE DATA BUT IT IS REMOVING THE DATA FROM CURREN T SCREEN.
I WANT , I PRESS NO THEN DATA ON THE SCREEN WILL SHOW AS IT IS.
REGARDS,
S.KAVITHA
01-08-2015 2:06 PM
Hi Kavitha,
What code you have written in ELSE condition.( for NO button).
have u cleared the value anywhere? check through debugging.
Thanks,
Marimuthu.K
01-08-2015 5:57 PM
hi sir ,
i have written if wa_answer = 'no'.
message 'entry is not saved' type 'i'.
endif.
like this i gave, so i press no it is showing info message , then clearing the entry.
s.kavitha
01-08-2015 6:14 PM
Hi,
just debug the code you are clearing somewhere the screen fields after this action.
wa_answer is char1 data type so it should be wa_answer = 'N'.