Skip to Content

Custom tocde for ztable with selection screen

Hi all

I have already checked as i didnt get proper solution for my query. hence i am updating this.

I have created a ztcode for ztable and successfully i have created it. It is showing the screen where we can enter or change data in ztable. But my problem is before this screen, i want my selection screen to come where user can select data and den can display and change..

Unable to get the selection screen .

Thanks

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

7 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Mar 01, 2013 at 12:49 PM

    Hi,

    For this particular requirement, you will have to first create a new program with the selection screen for the Z-table as such . Within the program, you will have to call the table maintainance using FM:

    'VIEW_MAINTENANCE_CALL' . I hope this solves your problem.

    Please check the following peace of code:

    FORM frm_get_data .
    CALL FUNCTION 'VIEW_GET_DDIC_INFO'
    EXPORTING
    viewname = 'ZOMD_SUPERSEDE'(001)
    TABLES
    x_header = gt_header
    x_namtab = gt_namtab
    sellist = gt_rangetab
    EXCEPTIONS
    no_tvdir_entry = 1
    table_not_found = 2.
    IF sy-subrc <> 0.
    MESSAGE 'Error in ZOMD_SUPERSEDE Table'(003) TYPE 'E'.
    ENDIF.
    CLEAR: ls_rangetab,
    gt_rangetab.
    LOOP AT gt_namtab INTO ls_namtab.
    CASE ls_namtab-viewfield.
    WHEN gc_matnr.
    CLEAR ls_rangetab.
    ls_rangetab-viewfield = gc_matnr.
    ls_rangetab-tabix = sy-tabix.
    ls_rangetab-ddic = ls_namtab-readonly.
    LOOP AT s_matnr.
    CASE s_matnr-option.
    WHEN gc_eq.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    IF l_lines > 1.
    ls_rangetab-and_or = gc_or.
    ELSE.
    ls_rangetab-and_or = gc_and.
    ENDIF.
    ls_rangetab-operator = gc_eq.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN gc_bt.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ge.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_le.
    ls_rangetab-value = s_matnr-high.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN gc_nb.
    CLEAR: r_matnr,
    r_matnr[].
    r_matnr-sign = s_matnr-sign.
    r_matnr-option = gc_bt.
    r_matnr-low = s_matnr-low.
    r_matnr-high = s_matnr-high.
    APPEND r_matnr.
    SELECT matnr
    INTO CORRESPONDING FIELDS OF TABLE gt_matnr
    FROM zomd_supersede
    WHERE matnr IN r_matnr.
    DELETE ADJACENT DUPLICATES FROM gt_matnr COMPARING matnr
    .
    LOOP AT gt_matnr INTO ls_matnr.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ne.
    ls_rangetab-value = ls_matnr-matnr.
    APPEND ls_rangetab TO gt_rangetab.
    ENDLOOP.
    WHEN gc_ne.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ne.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN OTHERS.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = s_matnr-option.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    ENDCASE.
    ENDLOOP.
    ENDCASE.

    ENDLOOP.

    CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
    action = gc_u
    * SHOW_SELECTION_POPUP = 'X'
    view_name = 'ZOMD_SUPERSEDE'(001)
    TABLES
    dba_sellist = gt_rangetab
    EXCEPTIONS
    client_reference = 1
    foreign_lock = 2
    invalid_action = 3
    no_clientindependent_auth = 4
    no_database_function = 5
    no_editor_function = 6
    no_show_auth = 7
    no_tvdir_entry = 8
    no_upd_auth = 9
    only_show_allowed = 10
    system_failure = 11
    unknown_field_in_dba_sellist = 12
    view_not_found = 13
    maintenance_prohibited = 14
    OTHERS = 15.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    Thanks,

    Nitin


    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Mar 01, 2013 at 02:42 PM

    Look at answers at display filtered data in SM30. (and use seach tools too)

    Regards,

    Raymond

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Mar 01, 2013 at 12:02 PM

    Hi,

    Not sure if I have understood your requirement, but have you created a one-step Maintenance Type or two-step Maintenance type ? If its one-step, please create a Table Maintenance Generator with 2-step Maintenance type. To do this, you will have to delete the TMG and create it again.

    Hope this is what your requirment is! Try it out and let us know.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Mar 01, 2013 at 12:14 PM

    hi,

    create a TMG with two step, i mean two screens..

    so that your first screen ll be your selection and second ll be your data manipulation.

    thanks,

    Mathan R.

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member KSRCM SRCM

      Hi,

      I think you have cretaed TMG for your ZTZBLE ( 2 screen) ,,,,,while assigning Ztransaction to ZTABLE in se93 do like this,,,,,,,

      transaction :SM30.

      ****bottom,,default values option will be there******

      ***write like as below*********************************

      VIEWNAME : ZTABLE(your table)

      UPDATE : 'X'

      regards.

      lingaraj.

  • author's profile photo Former Member
    Former Member
    Posted on Mar 04, 2013 at 06:23 AM

    Hi,

    As has been already told before, in this case you do not have to create t-code for Z-table but , rather, you have to create a custom report program where you have to add the required selection screen and then yoiu have to call the Table maintainance using the FM:'VIEW_MAINTENANCE_CALL' and you have to pass all the selection screen parameters to the table maintainance .Please check the complete code here for your reference:-

    REPORT ztable_maintainance.

    *--Types declaration for selection to be passed as parameter into
    *--VIEW_MAINTENANCE_CALL FM
    TYPES: BEGIN OF tp_rangetab.
    INCLUDE STRUCTURE vimsellist.
    TYPES: END OF tp_rangetab.
    *----------------------------------------------------------------------*
    * D A T A D E C L A R A T I O N S
    *----------------------------------------------------------------------*
    DATA: g_matnr TYPE matnr. " Material Number

    *----------------------------------------------------------------------*
    * I N T E R N A L T A B L E D E C L A R A T I O N S
    *----------------------------------------------------------------------*
    * Internal table to subroutine code
    *Internal table used as selection for VIEW_MAINTENANCE_CALL FM
    DATA: gt_rangetab TYPE STANDARD TABLE OF tp_rangetab,
    ls_rangetab TYPE vimsellist.
    *--Internal table used for getting the tablefields
    TYPES: BEGIN OF ty_header.
    INCLUDE STRUCTURE vimdesc.
    TYPES: END OF ty_header.
    *--Name Tabel
    TYPES: BEGIN OF ty_namtab.
    INCLUDE STRUCTURE vimnamtab.
    TYPES: END OF ty_namtab.
    *--Used for handling 'BT' option
    TYPES: BEGIN OF ty_matnr,
    matnr TYPE matnr,
    END OF ty_matnr.

    DATA: gt_namtab TYPE STANDARD TABLE OF ty_namtab,
    gt_matnr TYPE STANDARD TABLE OF ty_matnr,
    gt_header TYPE STANDARD TABLE OF ty_header,
    ls_namtab TYPE ty_namtab,
    ls_matnr TYPE ty_matnr,
    l_lines TYPE i.
    *--Used for handling 'BT' option

    CONSTANTS: gc_matnr TYPE char5 VALUE 'MATNR',
    gc_and TYPE char5 VALUE 'AND',
    gc_eq TYPE char2 VALUE 'EQ',
    gc_le TYPE char2 VALUE 'LE',
    gc_ge TYPE char2 VALUE 'GE',
    gc_bt TYPE char2 VALUE 'BT',
    gc_u TYPE char1 VALUE 'U',
    gc_i TYPE char1 VALUE 'I',
    gc_or TYPE char2 VALUE 'OR',
    gc_nb TYPE char2 VALUE 'NB',
    gc_ne TYPE char2 VALUE 'NE',
    gc_e TYPE char1 VALUE 'E',
    gc_not TYPE char3 VALUE 'NOT'.

    *----------------------------------------------------------------------*
    * I N P U T S C R E E N
    *----------------------------------------------------------------------*

    RANGES: r_matnr FOR g_matnr.
    SELECTION-SCREEN BEGIN OF BLOCK selscr WITH FRAME TITLE text-002.
    * Select Options
    SELECT-OPTIONS: s_matnr FOR g_matnr. " Material
    SELECTION-SCREEN END OF BLOCK selscr.

    *----------------------------------------------------------------------*
    * A T S E L E C T I O N S C R E E N
    *----------------------------------------------------------------------*
    AT SELECTION-SCREEN.
    *----------------------------------------------------------------------*
    * S T A R T O F S E L E C T I O N
    *----------------------------------------------------------------------*
    START-OF-SELECTION.

    DESCRIBE TABLE s_matnr LINES l_lines.
    * Fetch Data from Data Base
    PERFORM frm_get_data.
    *----------------------------------------------------------------------*
    * S U B R O U T I N E S
    *----------------------------------------------------------------------*
    *&---------------------------------------------------------------------*
    *& Form frm_get_data
    *&---------------------------------------------------------------------*
    * Call the function module VIEW_MAINTENNACE_CALL to get data
    * based on selection criteria
    *----------------------------------------------------------------------*
    FORM frm_get_data .
    CALL FUNCTION 'VIEW_GET_DDIC_INFO'
    EXPORTING
    viewname = 'ZOMD_SUPERSEDE'(001)
    TABLES
    x_header = gt_header
    x_namtab = gt_namtab
    sellist = gt_rangetab
    EXCEPTIONS
    no_tvdir_entry = 1
    table_not_found = 2.
    IF sy-subrc <> 0.
    MESSAGE 'Error in ZOMD_SUPERSEDE Table'(003) TYPE 'E'.
    ENDIF.
    CLEAR: ls_rangetab,
    gt_rangetab.
    LOOP AT gt_namtab INTO ls_namtab.
    CASE ls_namtab-viewfield.
    WHEN gc_matnr.
    CLEAR ls_rangetab.
    ls_rangetab-viewfield = gc_matnr.
    ls_rangetab-tabix = sy-tabix.
    ls_rangetab-ddic = ls_namtab-readonly.
    LOOP AT s_matnr.
    CASE s_matnr-option.
    WHEN gc_eq.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    IF l_lines > 1.
    ls_rangetab-and_or = gc_or.
    ELSE.
    ls_rangetab-and_or = gc_and.
    ENDIF.
    ls_rangetab-operator = gc_eq.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN gc_bt.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ge.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_le.
    ls_rangetab-value = s_matnr-high.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN gc_nb.
    CLEAR: r_matnr,
    r_matnr[].
    r_matnr-sign = s_matnr-sign.
    r_matnr-option = gc_bt.
    r_matnr-low = s_matnr-low.
    r_matnr-high = s_matnr-high.
    APPEND r_matnr.
    SELECT matnr
    INTO CORRESPONDING FIELDS OF TABLE gt_matnr
    FROM zomd_supersede
    WHERE matnr IN r_matnr.
    DELETE ADJACENT DUPLICATES FROM gt_matnr COMPARING matnr
    .
    LOOP AT gt_matnr INTO ls_matnr.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ne.
    ls_rangetab-value = ls_matnr-matnr.
    APPEND ls_rangetab TO gt_rangetab.
    ENDLOOP.
    WHEN gc_ne.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = gc_ne.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    WHEN OTHERS.
    IF s_matnr-sign = gc_e.
    ls_rangetab-negation = gc_not.
    ENDIF.
    ls_rangetab-and_or = gc_and.
    ls_rangetab-operator = s_matnr-option.
    ls_rangetab-value = s_matnr-low.
    APPEND ls_rangetab TO gt_rangetab.
    ENDCASE.
    ENDLOOP.
    ENDCASE.

    ENDLOOP.

    CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
    action = gc_u
    * SHOW_SELECTION_POPUP = 'X'
    view_name = 'ZOMD_SUPERSEDE'(001)
    TABLES
    dba_sellist = gt_rangetab
    EXCEPTIONS
    client_reference = 1
    foreign_lock = 2
    invalid_action = 3
    no_clientindependent_auth = 4
    no_database_function = 5
    no_editor_function = 6
    no_show_auth = 7
    no_tvdir_entry = 8
    no_upd_auth = 9
    only_show_allowed = 10
    system_failure = 11
    unknown_field_in_dba_sellist = 12
    view_not_found = 13
    maintenance_prohibited = 14
    OTHERS = 15.
    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. " frm_get_data

    I hope this will help you.

    Thanks,

    Nitin

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Mar 04, 2013 at 06:41 AM

    hi ,

    after searching for ur post , i got few droughts to ask u ..

    have u created maintenance view?

    https://scn.sap.com/thread/544877

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Mar 04, 2013 at 10:03 AM

    HI,

    first u display the selection-screen then when user executes(F8) it, in start-of-selection event

    call ur transaction code by using call transaction 'zXXXX' statement so from selection-screen ur tcode will be called where u can change or display etc .

    Regards,

    Vineesh.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.