Application Development and Automation Blog Posts
Learn and share on deeper, cross technology development topics such as integration and connectivity, automation, cloud extensibility, developing at scale, and security.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Likes
4,061

This video explains how to create Tablecontrols in ABAP and Work with the lock objects .

The Output of the Above Program will look like this :

After Pressing the edit Button , the output will look like as follows . Notice that the employee no. column is uneditable and the designation is MNGR then the cell of the tablecontrol is not ready for input . These attributes have been set on runtime .

Now to create the table control in the layout section Press the tablecontrol Botton.

The Following Screen will appear . Press the dictionary/programs fields button (f6)

Enter the name of the structure or the work area which you want to include in the table control . then select the structure , press ok and then drag the structure to the table control area .

This way we can create the tablecontrol .

FLOW LOGIC :


SOURCE CODE :

PROGRAM  ysuv_tabctrl_001.

TABLES : ysuv_employee1 .

TYPES : BEGIN OF ty_empno ,

        empno TYPE zdeempno ,

        name  TYPE zdeempname ,

        END OF ty_empno .

TYPES : BEGIN OF ty_empname ,

        empname TYPE zdeempname ,

        END OF ty_empname .

DATA : it_emp1 TYPE STANDARD TABLE OF ysuv_employee1 ,

       wa_emp1 TYPE ysuv_employee1 ,

       it_empno TYPE STANDARD TABLE OF ty_empno ,

       wa_empno TYPE ty_empno ,

       it_empname TYPE STANDARD TABLE OF ty_empname ,

       wa_empname TYPE ty_empname ,

       it_dynpread TYPE STANDARD TABLE OF dynpread ,

       wa_dynpread TYPE dynpread .

DATA : wa_stepl TYPE sy-stepl .

CONTROLS : tabctrl1 TYPE TABLEVIEW USING SCREEN 0001 .

DATA : mark1 TYPE c ,

       get_cursor TYPE sy-tabix VALUE 1 ,

       wa_lines TYPE i .

DATA: wa_cols TYPE cxtab_column ,

      tabix_emp TYPE sy-tabix .

DATA : counter TYPE i VALUE 1 ,

       p TYPE i VALUE 1 ,

       n TYPE i .

*&---------------------------------------------------------------------*

*&      Module  STATUS_0001  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE status_0001 OUTPUT.

  SET CURSOR FIELD 'WA_EMP1-EMPADD' LINE 4 . " To set the Cursor on field Empadd at line 4 .

  SET PF-STATUS 'STATUS001'.

*  SET TITLEBAR 'xxx'.

ENDMODULE.                 " STATUS_0001  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0001  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE user_command_0001 INPUT.

  CASE sy-ucomm .

    WHEN 'BACK' .

      LEAVE PROGRAM .

    WHEN 'SAVE' .

      IF mark1 = 'X' .

        UPDATE ysuv_employee1 FROM wa_emp1 .

      ENDIF.

    WHEN 'DELETE' .

      IF mark1 = 'X' .

        DELETE ysuv_employee1 FROM wa_emp1 .

      ENDIF.

    WHEN 'EDIT'.

      CALL FUNCTION 'ENQUEUE_EYSUV_EMPLOYEE1'

        EXPORTING

          mode_ysuv_employee1 = 'E'

          mandt               = sy-mandt

          empno               = wa_emp1-empno

          x_empno             = ' '

          _scope              = '2'

          _wait               = ' '

          _collect            = ' '

        EXCEPTIONS

          foreign_lock        = 1

          system_failure      = 2

          OTHERS              = 3.

      IF sy-subrc <> 0.

        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

      ENDIF.

    WHEN 'DISPLAY' OR 'REFRESH' .

      CALL FUNCTION 'DEQUEUE_EYSUV_EMPLOYEE1'

        EXPORTING

          mode_ysuv_employee1 = 'E'

          mandt               = sy-mandt

          empno               = wa_emp1-empno

          x_empno             = ' '

          _scope              = '3'

          _synchron           = ' '

          _collect            = ' '.

  ENDCASE.

ENDMODULE.                 " user_command_0001  INPUT

*&---------------------------------------------------------------------*

*&      Module  value_check  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE value_check INPUT.

  SELECT empno

         empname

    FROM ysuv_employee1

    INTO TABLE it_empno .

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      retfield        = 'EMPNO'

      dynpprog        = sy-repid

      dynpnr          = sy-dynnr

      dynprofield     = 'Employee Number'

      value_org       = 'S'

    TABLES

      value_tab       = it_empno

    EXCEPTIONS

      parameter_error = 1

      no_values_found = 2

      OTHERS          = 3.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

ENDMODULE.                 " value_check  INPUT

*&---------------------------------------------------------------------*

*&      Module  value_check_empname  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE value_check_empname INPUT.

*  DATA : wa_stepl TYPE systepl .

  CALL FUNCTION 'DYNP_GET_STEPL'

    IMPORTING

      povstepl        = wa_stepl

    EXCEPTIONS

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

  wa_dynpread-fieldname = 'WA_EMP1-EMPNO' .

  wa_dynpread-stepl     = wa_stepl .

  APPEND wa_dynpread TO it_dynpread .

  wa_dynpread-fieldname = 'WA_EMP1-EMPNAME' .

  wa_dynpread-stepl     = wa_stepl .

  APPEND wa_dynpread TO it_dynpread .

  CALL FUNCTION 'DYNP_VALUES_READ'

    EXPORTING

      dyname               = sy-repid

      dynumb               = sy-dynnr

    TABLES

      dynpfields           = it_dynpread

    EXCEPTIONS

      invalid_abapworkarea = 1

      invalid_dynprofield  = 2

      invalid_dynproname   = 3

      invalid_dynpronummer = 4

      invalid_request      = 5

      no_fielddescription  = 6

      invalid_parameter    = 7

      undefind_error       = 8

      double_conversion    = 9

      stepl_not_found      = 10

      OTHERS               = 11.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  READ TABLE it_dynpread INTO wa_dynpread INDEX 1 ."WITH  KEY fieldname = wa_emp1-empno .

  SELECT SINGLE empname

    FROM ysuv_employee1

    INTO  wa_empname

    WHERE empno = wa_dynpread-fieldvalue .

  APPEND wa_empname TO it_empname .

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

      retfield        = 'EMPNAME'

      dynpprog        = sy-repid

      dynpnr          = sy-dynnr

      dynprofield     = 'Employee Name'

      value_org       = 'S'

    TABLES

      value_tab       = it_empname

    EXCEPTIONS

      parameter_error = 1

      no_values_found = 2

      OTHERS          = 3.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  CLEAR it_empname .

  CLEAR it_dynpread .

ENDMODULE.                 " value_check_empname  INPUT

*&---------------------------------------------------------------------*

*&      Module  fill_table_control  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE fill_table_control OUTPUT.

  " To Get the vertical scroll bar the no. of lines of table control is

  " set to 100 + the no. of lines in internal table.

  DESCRIBE TABLE it_emp1 LINES wa_lines .

  tabctrl1-lines = wa_lines + 100 .

  IF it_emp1 IS NOT INITIAL .

    " Read the value of the internal table into table control one by one.

    READ TABLE it_emp1 INTO wa_emp1 INDEX tabctrl1-current_line .

    " Modifying the attributes of the Table-control .

    IF sy-ucomm NE 'EDIT' .

      LOOP AT SCREEN .

        IF screen-name NE 'MARK1' .

          screen-input = 0 .

          MODIFY SCREEN.

        ENDIF.

      ENDLOOP.

    ENDIF.

    CASE sy-ucomm .

      WHEN 'EDIT' .

        LOOP AT SCREEN .

          IF screen-name = 'WA_EMP1-EMPNAME' .

            IF screen-input = 0 ."1

              LOOP AT SCREEN.

                screen-input = 1 .

                MODIFY SCREEN.

              ENDLOOP.

            ENDIF."1

          ENDIF.

        ENDLOOP.

        IF sy-ucomm = 'EDIT' .

          LOOP AT SCREEN .

            IF screen-name = 'WA_EMP1-EMPDESIG' .

              IF wa_emp1-empdesig = 'MNGR' .

                screen-input = 0 .

                screen-intensified = 1 . " This will change the colour of the Text.

                MODIFY SCREEN.

              ENDIF.

            ENDIF.

            IF screen-name = 'WA_EMP1-EMPNO' .

              IF wa_emp1-empno IS NOT INITIAL .

                screen-input = 0.

                MODIFY SCREEN .

              ENDIF.

            ENDIF.

          ENDLOOP.

        ENDIF.

    ENDCASE.

  ENDIF.

ENDMODULE.                 " fill_table_control  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  get_data  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE get_data OUTPUT.

  SELECT * FROM ysuv_employee1 INTO TABLE it_emp1.

ENDMODULE.                 " get_data  OUTPUT