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: 

Disable 'Account Assignment' tab in a PO (only for ME22N transaction) for a specific Account Assignment Category

Former Member
0 Kudos

Hello All,


I have a requirement where-in I need to dis-able the Account Assignment tab (i.e make it Display only) for a specific Account Assignment Category (A/K/F) only during the transaction ME22N

I have achieved the functionality of disabling the fields using Implicit Enhancement.

Class:   CL_MODEL_VIEW_MM
Method:  MODIFY_SCREEN


The problem I am facing now is when viewing the same using the table control button under the Account Assignment tab (left-hand top most). I have written the logic in the PBO of the screen 1000, but the logic does not seem to work.

Program: SAPLMEACCTVI
Screen: 1000

Below is the snippet of the code:

  l_tc = '(SAPLMEACCTVI)DYN_1000TC-COLS'.
  ASSIGN (l_tc) TO <fs_tcdata>.


     LOOP AT <fs_tcdata> ASSIGNING <fs_wa>.
      l_tabix = sy-tabix.
      ASSIGN COMPONENT 'INVISIBLE' OF STRUCTURE <fs_wa> TO <fs_lwa>.
      ASSIGN COMPONENT 'SCREEN-NAME' OF STRUCTURE <fs_wa> TO <fs_screen>.
      ASSIGN COMPONENT 'SCREEN-INPUT' OF STRUCTURE <fs_wa> TO <fs_input>.
      ASSIGN COMPONENT 'SCREEN-ACTIVE' OF STRUCTURE <fs_wa> TO <fs_active>.
      ASSIGN COMPONENT 'SCREEN-OUTPUT' OF STRUCTURE <fs_wa> TO <fs_output>.
      IF <fs_lwa> = space.
        CASE <fs_screen>.
          WHEN 'MEACCT1000-MENGE'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-VPROZ'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-KOSTL'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-SAKTO'.
            <fs_input>     = '0'.
            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-AUFNR'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-PSP_PNR'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-ABLAD'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-WEMPF'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
          WHEN 'MEACCT1000-LOEKZ'.
            <fs_input>     = '0'.
*            <fs_active>    = '0'.
            <fs_output>     = '1'.
        ENDCASE.
      ENDIF.
    ENDLOOP.

Here: 'screen-input'(<fs_input>) is not helping to dis-able the table control fields. I need to use <fs_active> = 0 to disable the field.
But, the issue is that when I use <fs_active> = 0, the value in the table control gets cleared and becomes non-editable.
My requirement is to retain the value in display mode.

Please share your thoughts,

Thanks,

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi All,

Closing the thread : fixed it myself. Used implicit Enhancements.

1)

Class:   CL_MODEL_VIEW_MM

Method:  MODIFY_SCREEN

2)
Include: LKACBF01
3)
Class:   CL_TABLE_VIEW_MM_2
Method:  PBO_TC_LINE

Cheers,

1 REPLY 1

Former Member
0 Kudos

Hi All,

Closing the thread : fixed it myself. Used implicit Enhancements.

1)

Class:   CL_MODEL_VIEW_MM

Method:  MODIFY_SCREEN

2)
Include: LKACBF01
3)
Class:   CL_TABLE_VIEW_MM_2
Method:  PBO_TC_LINE

Cheers,