Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

add entry to current line in table control

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

29 REPLIES 29

Former Member
0 Kudos

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.

0 Kudos

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

Former Member
0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

Please paste only relevant code.

0 Kudos

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

0 Kudos

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

0 Kudos

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

ipravir
Active Contributor
0 Kudos

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.

Former Member
0 Kudos

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

ipravir
Active Contributor
0 Kudos

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.

Former Member
0 Kudos

Do search SCN for further assistance.

Don't expect to be spoon fed.

Former Member
0 Kudos

HI ALL,

THANK U

S.KAVITHA

jay_dalwadi
Participant
0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

HI MARIMUTHU ,

I WILL CHECK IT SIR.

S.KAVITHA

0 Kudos

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.




0 Kudos

HI MARIMUTHU SIR,

WHAT IS THAT ANS ?

IN ABOVE U PASTED CODE.

REGARDS,

S.KAVITHA

0 Kudos

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

0 Kudos

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.

0 Kudos

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.

0 Kudos

hi sir,

i got solution thank u so much to all.

regards,

S.Kavitha

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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'.