SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Demo: Network Control with Callback Processing



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Dialog Programming -> Graphics
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Mon Nov 05, 2007 3:08 pm    Post subject: Demo: Network Control with Callback Processing Reply with quote

Code:
PROGRAM netzocx2 MESSAGE-ID cg.

INCLUDE lcnetdat.                      "allg. Datendeklarationen
INCLUDE lcnetcon.                      "Konstanten
INCLUDE sgrccnst.                      "allg. Konstanten Grafik

* Objekttabellen zum Halten der Grafikdaten im ABAP (Verprobung)
DATA: all_clusters_tab LIKE cng_clustr OCCURS 0 WITH HEADER LINE,
      all_cvals_tab    LIKE net_cvals  OCCURS 0 WITH HEADER LINE,
      all_nodes_tab    LIKE cng_inodes OCCURS 0 WITH HEADER LINE,
      all_nvals_tab    LIKE net_nvals  OCCURS 0 WITH HEADER LINE,
      all_lines_tab    LIKE cng_lines  OCCURS 0 WITH HEADER LINE,
      all_lvals_tab    LIKE net_lvals  OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF field_tab OCCURS 0,     "Modifizieren graf. Objekt
         id    LIKE cng_inodes-id,
         fl    LIKE net_nvals-fl,
         val   LIKE net_nvals-val,
         color LIKE thlt-bg_col,
      END OF field_tab.

DATA: BEGIN OF node_line,              "Modifizieren graf. Objekt
        id   LIKE cng_inodes-id,
        type LIKE cng_inodes-type,
      END OF node_line.

DATA: BEGIN OF scroll_tab OCCURS 0,    "BlЇttern in Sel. u. Pos.
        flag(1) TYPE c,
      END OF scroll_tab.

DATA: anz              TYPE i,
      anz_c            TYPE i,
      anz_l            TYPE i,
      anz_n            TYPE i,
      def_headertext   LIKE net_nvals-val,
      entry_act        TYPE i,
      entry_to         TYPE i,
      entry_new        TYPE i,
      g_repid          LIKE sy-repid,
      headertext       LIKE net_nvals-val,
      line_count       TYPE i               VALUE 4,
      line_count_1     TYPE i               VALUE 10,
      ok-code(4)       TYPE c,
      save_ok-code     LIKE ok-code,
      time_egg_text    LIKE net_nvals-val.

* USAGE allowed in SAP internal test reports, only
INCLUDE applg_auto_test_init.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETER: prf_grup  LIKE tcngt-prf_gruppe  DEFAULT 'DEMO',
           prf_name  LIKE tcngt-prf_name    DEFAULT '000000000001',
           prf_indx  LIKE tcngt-prf_index   DEFAULT '1'.
SELECTION-SCREEN END OF BLOCK b1.

g_repid = sy-repid.

*----------------------------f_r Umstellung auf OCX -------------------*
INCLUDE <ctldef>.

DATA: netz_ocx TYPE cntl_handle.

CALL FUNCTION 'NETWORK_CREATE'
  EXPORTING
    owner_repid  = sgrc_const-main_repid
    dynnr        = sgrc_const-main_dynnr
  CHANGING
    handle       = netz_ocx
  EXCEPTIONS
    create_error = 1
    OTHERS       = 2.

IF NOT sy-subrc IS INITIAL.  "Falls sich Control nicht erzeugen lЇяt
* Setzen CUA-Status und Fenstertitel, wie bisher
  PERFORM set_cua_status.
ENDIF.
*----------------------------f_r Umstellung auf OCX -------------------*

* Daten f_r Grafik zusammenstellen
PERFORM collect_data.

* Callback-Routine f_r PBO
CALL FUNCTION 'SGRC_ADD_CALLBACK'
  EXPORTING
    call_back_form = 'PBO_CALLBACK'
    call_back_prog = g_repid
    pbo            = 'X'
    winid          = net_const-def_id
    control_handle = netz_ocx.

* Callback-Routine f_r PAI
CALL FUNCTION 'SGRC_ADD_CALLBACK'
  EXPORTING
    call_back_form = 'ACTION_CALLBACK'
    call_back_prog = g_repid
    pai            = 'X'
    pai_interest   = 'I'         "Benutzerkommando
    winid          = net_const-def_id
    control_handle = netz_ocx.

* Callback-Routine f_r Schlieяen der Grafik
CALL FUNCTION 'SGRC_ADD_CALLBACK'
  EXPORTING
    call_back_form = 'EXIT_CALLBACK'
    call_back_prog = g_repid
    pai            = 'X'
    pai_interest   = 'D'         "Grafik geschloяen
    winid          = net_const-def_id
    control_handle = netz_ocx.

* Schleifenverarbeitung starten
CALL FUNCTION 'SGRC_MAIN_LOOP'
  EXPORTING
    control_handle = netz_ocx.

* USAGE allowed in SAP internal test reports, only
INCLUDE applg_auto_test_form.


*---------------------------------------------------------------------*
*       FORM PBO_CALLBACK                                             *
*---------------------------------------------------------------------*
*       PBO-Verarbeitung                                              *
*---------------------------------------------------------------------*
FORM pbo_callback.

  SET TITLEBAR '006'.
  SET PF-STATUS 'GRAFIK'.

* USAGE allowed in SAP internal test reports, only
  PERFORM auto_test_pbo USING 'EXIT'.

ENDFORM.                               "PBO_CALLBACK


*---------------------------------------------------------------------*
*       FORM ACTION_CALLBACK                                          *
*---------------------------------------------------------------------*
*       Verarbeitung der Aktionen in der Grafik                       *
*---------------------------------------------------------------------*
FORM action_callback.

* PAI-Verarbeitung, Auswertung der Daten von der Grafik
  CALL FUNCTION 'CNET_GRAPHIC_PAI'
    EXPORTING
      control_handle = netz_ocx  "f_r OCX-Umstellung
    IMPORTING
      gr_mes         = gr_mes
      gr_mode        = mode
      gr_sel_field   = sel_field
    TABLES
      boxes          = boxes_tab
      bvals          = bvals_tab
      clusters       = clusters_tab
      cvals          = cvals_tab
      deletions      = delete_tab
      frames         = frames_tab
      fvals          = fvals_tab
      lines          = lines_tab
      lvals          = lvals_tab
      nodes          = net_nodes_tab
      nvals          = nvals_tab
      positions      = positions_tab
    EXCEPTIONS
      inv_winid      = 01.

  CLEAR: abap_cmd,
         status_text.

  stat = net_const-stat_4.             "wait for input

  CASE gr_mes.
*----------------------------------------------------------------------*
    WHEN net_const-ask_for_insert.
      lg_mes   = gr_mes.
      abap_cmd = gr_mes.
      status_text = text-001.          "Knoten eingef_gt

*----------------------------------------------------------------------*
    WHEN net_const-ask_for_duplicate.
      lg_mes   = gr_mes.
      abap_cmd = gr_mes.
      status_text = text-002.          "Knoten dupliziert

*----------------------------------------------------------------------*
    WHEN net_const-ask_for_delete.
      lg_mes   = gr_mes.
      abap_cmd = gr_mes.
      status_text = text-003.          "Knoten / Kante gel_scht

*----------------------------------------------------------------------*
    WHEN net_const-ask_for_connect.
      lg_mes   = gr_mes.
      abap_cmd = gr_mes.
      status_text = text-004.          "Kante eingef_gt

*----------------------------------------------------------------------*
    WHEN net_const-ask_for_modify.
      lg_mes   = gr_mes.
      abap_cmd = gr_mes.

      CLEAR object_type.
      IF mode = net_const-text_mode.

*       Ermitteln des Objekttyps
        DESCRIBE TABLE nvals_tab LINES anz.
        IF anz <> 0.
          object_type = net_const-node_object.
        ELSE.
          DESCRIBE TABLE lvals_tab LINES anz.
          IF anz <> 0.
            object_type = net_const-line_object.
          ELSE.
            DESCRIBE TABLE cvals_tab LINES anz.
            IF anz <> 0.
              object_type = net_const-cluster_object.
            ENDIF.
          ENDIF.
        ENDIF.

        CASE object_type.
*         Knoten
          WHEN net_const-node_object.
*           Feldnamen in Textindizes umwandeln
            PERFORM field_to_textindex_nvals TABLES nvals_tab
                                                  all_nodes_tab.
            PERFORM init_0100 TABLES nvals_tab all_nodes_tab.
            entry_act = 1.
            CALL SCREEN 100 STARTING AT 10 10 ENDING AT 71 21.
*           Bei FarbЇnderung Textindex in Feldnamen umwandeln
            PERFORM field_to_textindex_nvals TABLES nvals_tab
                                                  all_nodes_tab.
            status_text = text-005.    "Knoten geЇndert

*         Kante
          WHEN net_const-line_object.
*           Feldnamen in Textindizes umwandeln
            PERFORM field_to_textindex_lvals TABLES lvals_tab
                                                  all_lines_tab.
            PERFORM init_0101 TABLES lvals_tab all_lines_tab.
            entry_act = 1.
            CALL SCREEN 101 STARTING AT 10 10 ENDING AT 58 21.
            status_text = text-006.    "Kante  geЇndert

*         Cluster
          WHEN net_const-cluster_object.
*           Feldnamen in Textindizes umwandeln
            PERFORM field_to_textindex_cvals TABLES cvals_tab
                                               all_clusters_tab.
            PERFORM init_0104 TABLES cvals_tab all_clusters_tab.
            entry_act = 1.
            CALL SCREEN 104 STARTING AT 10 10 ENDING AT 58 21.
            status_text = text-056.    "Rahmen geЇndert
            CLEAR   cvals_tab.
            REFRESH cvals_tab.
        ENDCASE.
      ENDIF.

*----------------------------------------------------------------------*
    WHEN net_const-doubleclicked.
      lg_mes   = net_const-ask_for_modify.
      abap_cmd = net_const-ask_for_modify.

      CLEAR object_type.

*     Ermitteln des Objekttyps
      DESCRIBE TABLE net_nodes_tab LINES anz.
      IF anz <> 0.
        object_type = net_const-node_object.
      ELSE.
        DESCRIBE TABLE lines_tab LINES anz.
        IF anz <> 0.
          object_type = net_const-line_object.
        ELSE.
          DESCRIBE TABLE clusters_tab LINES anz.
          IF anz <0> anz.
        anz = anz_l.
      ENDIF.
      IF anz_c > anz.
        anz = anz_c.
      ENDIF.
      IF anz = 0.
        status_text = text-022.        "kein Objekt selektiert

      ELSE.
        CLEAR   scroll_tab.
        REFRESH scroll_tab.
        DO anz TIMES.
          APPEND scroll_tab.
        ENDDO.

        SORT net_nodes_tab BY id.
        SORT lines_tab     BY id.
        SORT clusters_tab  BY id.

        entry_act = 1.
        CALL SCREEN 102 STARTING AT 10 10 ENDING AT 50 23.

        REFRESH: net_nodes_tab,
                 lines_tab,
                 clusters_tab.
      ENDIF.                                                "if ANZ = 0

*----------------------------------------------------------------------*
    WHEN net_const-get_positions.      "Positionen
      SORT positions_tab BY obj_type id.
      entry_act = 1.
      CALL SCREEN 103 STARTING AT 10 10 ENDING AT 38 22.
      abap_cmd = net_const-ask_for_modify.

*----------------------------------------------------------------------*
    WHEN 'XBO1'.                       "Get selected nodes and lines
      lg_mes   = net_const-do_nothing.
      abap_cmd = net_const-get_selection.
      status_text = text-007.          "Selektionen ermittelt

*----------------------------------------------------------------------*
    WHEN 'XBO2'.                       "Get positions
      lg_mes   = net_const-do_nothing.
      abap_cmd = net_const-get_positions.
      status_text = text-008.          "Get positions

*----------------------------------------------------------------------*
    WHEN 'XBO3'.                       "Get relativ positions
      lg_mes   = net_const-do_nothing.
      abap_cmd = net_const-get_rel_pos.
      status_text = text-008.          "Get positions

*----------------------------------------------------------------------*
    WHEN 'XBO4'.                       "Change Titel
      lg_mes   = net_const-do_nothing.
      abap_cmd = net_const-ask_for_modify.

*     Neuen Text erfragen
      CALL FUNCTION 'SGRC_POPUP_TO_CHANGE_HEADER'
        EXPORTING
          text_imp         = headertext
          default_text_imp = def_headertext
        IMPORTING
          text_exp         = headertext.


*     Setzen der Kopfzeile
      PERFORM set_title_box TABLES boxes_tab bvals_tab
                            USING  net_const-yes headertext.

*----------------------------------------------------------------------*
    WHEN OTHERS.
      lg_mes = net_const-do_nothing.
      abap_cmd = gr_mes.

*----------------------------------------------------------------------*
  ENDCASE.                             "case GR_MES

* Update der ALL-Tabellen
  CALL FUNCTION 'CNET_LOGIC_NETWORK'
    EXPORTING
      confirm   = net_const-confirm_yes
      lg_mes    = lg_mes
      lg_mode   = mode
    TABLES
      all_lines = all_lines_tab
      all_lvals = all_lvals_tab
      all_nodes = all_nodes_tab
      all_nvals = all_nvals_tab
      deletions = delete_tab
      lines     = lines_tab
      lvals     = lvals_tab
      nodes     = net_nodes_tab
      nvals     = nvals_tab.

* Cluster aktualisieren
  PERFORM update_clusters TABLES clusters_tab
                                 cvals_tab
                                 all_clusters_tab
                                 all_cvals_tab
                                 net_nodes_tab
                          USING  lg_mes.

* Textlabels aktualisieren
  PERFORM update_labels TABLES nvals_tab.

* PBO-Verarbeitung Netzplangrafik
  CALL FUNCTION 'CNET_GRAPHIC_NETWORK_PBO'
    EXPORTING
      control_handle = netz_ocx
      abap_cmd       = abap_cmd
      confirm        = net_const-confirm_yes
      profile        = profile
      stat           = stat
      status_text    = status_text
    TABLES
      clusters       = clusters_tab
      cvals          = cvals_tab
      deletions      = delete_tab
      inodes         = inodes_tab
      lines          = lines_tab
      lvals          = lvals_tab
      nodes          = net_nodes_tab
      nvals          = nvals_tab
      positions      = positions_tab
    EXCEPTIONS
      err_in_profile = 01
      inv_profile    = 02
      inv_winid      = 03.

ENDFORM.                               "ACTION_CALLBACK


*---------------------------------------------------------------------*
*       FORM EXIT_CALLBACK                                            *
*---------------------------------------------------------------------*
*       Callbackroutine fur Schlieяen des Fensters                    *
*---------------------------------------------------------------------*
FORM exit_callback.

* AufrЇumen
  CALL FUNCTION 'CNET_GRAPHIC_PAI'
    EXPORTING
      control_handle     = netz_ocx
      at_control_destroy = sgrc_const-yes.

* Control l_schen
  CALL FUNCTION 'CONTROL_DESTROY'
    CHANGING
      h_control = netz_ocx
    EXCEPTIONS
      OTHERS    = 1.

  SET SCREEN 0.
  LEAVE SCREEN.

ENDFORM.                               "EXIT_CALLBACK.


*---------------------------------------------------------------------*
*       FORM COLLECT_DATA                                             *
*---------------------------------------------------------------------*
*       Daten zusammenstellen                                         *
*---------------------------------------------------------------------*
FORM collect_data.

* Grafikprofil
  profile-gruppe = prf_grup.
  profile-name   = prf_name.
  profile-index  = prf_indx.

* Verschieben der Boxen unterbinden
  CALL FUNCTION 'CNET_SET_OPTIONS'
    EXPORTING
      noboxmove = net_const-yes.

* Erzeugen der Knoten
  PERFORM make_nodes TABLES net_nodes_tab nvals_tab.

* Textlabels aktualisieren
  PERFORM update_labels TABLES nvals_tab.

* Erzeugen der Kanten
  PERFORM make_lines TABLES lines_tab lvals_tab.

* Erzeugen der Cluster
  PERFORM make_clusters TABLES clusters_tab cvals_tab.

* Erzeugen der Knoten der Nodearea
  PERFORM make_inodes TABLES inodes_tab nvals_tab.

* Erzeugen der Legende
  PERFORM make_legend TABLES legend_tab.

* Setzen der Kopfzeile
  headertext     = text-009.
  def_headertext = text-009.
  PERFORM set_title_box TABLES boxes_tab bvals_tab
                        USING  space headertext.

* Setzen des Texts im Zeitei
  PERFORM set_time_egg_text.

* Sichern des Anfangszustendes
  CALL FUNCTION 'CNET_LOGIC_NETWORK'
    TABLES
      all_lines = all_lines_tab
      all_lvals = all_lvals_tab
      all_nodes = all_nodes_tab
      all_nvals = all_nvals_tab
      deletions = delete_tab
      lines     = lines_tab
      lvals     = lvals_tab
      nodes     = net_nodes_tab
      nvals     = nvals_tab.

  abap_cmd = space.

* Cluster aktualisieren
  PERFORM update_clusters TABLES clusters_tab
                                 cvals_tab
                                 all_clusters_tab
                                 all_cvals_tab
                                 net_nodes_tab
                          USING  abap_cmd.

  stat = net_const-stat_1.   "Open Window, Transfer Data, Wait for Input

* Daten an Grafik _bergeben
  CALL FUNCTION 'CNET_GRAPHIC_NETWORK_PBO'
    EXPORTING
      abap_cmd       = abap_cmd
      confirm        = net_const-confirm_yes
      profile        = profile
      stat           = stat
      status_text    = status_text
      control_handle = netz_ocx  "f_r OCX-Umstellung
    TABLES
      clusters       = clusters_tab
      cvals          = cvals_tab
      deletions      = delete_tab
      inodes         = inodes_tab
      lines          = lines_tab
      lvals          = lvals_tab
      nodes          = net_nodes_tab
      nvals          = nvals_tab
      positions      = positions_tab
    EXCEPTIONS
      err_in_profile = 1
      inv_profile    = 2
      inv_winid      = 3.

ENDFORM.                               "COLLECT_DATA


*---------------------------------------------------------------------*
*       FORM FIELD_TO_TEXTINDEX_CVALS                                 *
*---------------------------------------------------------------------*
*       Feldname in Textindex umwandeln                               *
*---------------------------------------------------------------------*
FORM field_to_textindex_cvals TABLES cvals    STRUCTURE net_cvals
                                 all_clusters STRUCTURE cng_clustr.

  LOOP AT all_clusters WHERE id = cvals-id.
    EXIT.
  ENDLOOP.
  IF sy-subrc IS INITIAL.
    CALL FUNCTION 'CNET_FIELD_TO_INDEX_CVALS'
      EXPORTING
        cluster_type = all_clusters-type
      TABLES
        cvals        = cvals.
  ENDIF.                               "if SY-SUBRC is initial

ENDFORM.                               "form FIELD_TO_TEXTINDEX_CVALS


*---------------------------------------------------------------------*
*       FORM FIELD_TO_TEXTINDEX_LVALS                                 *
*---------------------------------------------------------------------*
*       Feldname in Textindex umwandeln                               *
*---------------------------------------------------------------------*
FORM field_to_textindex_lvals TABLES lvals STRUCTURE net_lvals
                                 all_lines STRUCTURE cng_lines.

  LOOP AT all_lines WHERE id = lvals-id.
    EXIT.
  ENDLOOP.
  IF sy-subrc IS INITIAL.
    CALL FUNCTION 'CNET_FIELD_TO_INDEX_LVALS'
      EXPORTING
        line_type = all_lines-type
      TABLES
        lvals     = lvals.
  ENDIF.                               "if SY-SUBRC is initial

ENDFORM.                               "form FIELD_TO_TEXTINDEX_LVALS


*---------------------------------------------------------------------*
*       FORM FIELD_TO_TEXTINDEX_NVALS                                 *
*---------------------------------------------------------------------*
*       Feldname in Textindex umwandeln                               *
*---------------------------------------------------------------------*
FORM field_to_textindex_nvals TABLES nvals STRUCTURE net_nvals
                                all_nodes STRUCTURE cng_inodes.

  LOOP AT all_nodes WHERE id = nvals-id.
    EXIT.
  ENDLOOP.
  IF sy-subrc IS INITIAL.
    CALL FUNCTION 'CNET_FIELD_TO_INDEX_NVALS'
      EXPORTING
        node_type = all_nodes-type
      TABLES
        nvals     = nvals.
  ENDIF.                               "if SY-SUBRC is initial

ENDFORM.                               "form FIELD_TO_TEXTINDEX_NVALS


*---------------------------------------------------------------------*
*       FORM MAKE_CLUSTERS                                            *
*---------------------------------------------------------------------*
*       Erzeugen der Cluster                                          *
*---------------------------------------------------------------------*
FORM make_clusters TABLES clusters STRUCTURE cng_clustr
                          cvals    STRUCTURE net_cvals.

  clusters-id   = 'C1'.
  clusters-type = net_const-type_0.
  APPEND clusters.
  cvals-id      = clusters-id.
  cvals-fl      = net_const-add_node.
  cvals-val     = '1'.
  APPEND cvals.
  cvals-fl      = net_const-add_node.
  cvals-val     = '2'.
  APPEND cvals.
  cvals-fl      = net_const-add_node.
  cvals-val     = '3'.
  APPEND cvals.
  cvals-fl      = net_const-text_index_0.
  cvals-val     = text-043.                                 "Cluster 1
  APPEND cvals.
  cvals-fl      = net_const-movable.
  cvals-val     = '0'.
  APPEND cvals.

  clusters-id   = 'C2'.
  clusters-type = net_const-type_1.
  APPEND clusters.
  cvals-id      = clusters-id.
  cvals-fl      = net_const-add_node.
  cvals-val     = '4'.
  APPEND cvals.
  cvals-fl      = net_const-add_node.
  cvals-val     = '5'.
  APPEND cvals.
  cvals-fl      = net_const-add_node.
  cvals-val     = '6'.
  APPEND cvals.
  cvals-fl      = net_const-text_index_0.
  cvals-val     = text-044.                                 "Cluster 2
  APPEND cvals.
  cvals-fl      = net_const-movable.
  cvals-val     = '0'.
  APPEND cvals.

ENDFORM.                               "MAKE_CLUSTERS


*---------------------------------------------------------------------*
*       FORM MAKE_INODES                                              *
*---------------------------------------------------------------------*
*       Zusammenstellen der einf_gbaren Knoten                        *
*---------------------------------------------------------------------*
FORM make_inodes TABLES inodes STRUCTURE inodes_tab
                        nvals  STRUCTURE nvals_tab.

  inodes-id   = 'INODE1'.
  inodes-type = net_const-type_1.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val   = text-023.                                   "Typ 1
  APPEND nvals.

  inodes-id   = 'INODE2'.
  inodes-type = net_const-type_2.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val   = text-024.                                   "Typ 2
  APPEND nvals.

  inodes-id   = 'INODE3'.
  inodes-type = net_const-type_3.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val   = text-025.                                   "Typ 3
  APPEND nvals.

  inodes-id   = 'INODE4'.
  inodes-type = net_const-type_4.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val   = text-026.                                   "Typ 4
  APPEND nvals.

  inodes-id   = 'INODE5'.
  inodes-type = net_const-type_5.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val   = text-027.                                   "Typ 5
  APPEND nvals.

  inodes-id   = 'INODE6'.
  inodes-type = net_const-type_6.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val = text-028.                                     "Typ 6
  APPEND nvals.

  inodes-id   = 'INODE7'.
  inodes-type = net_const-type_7.
  APPEND inodes.
  nvals-id    = inodes-id.
  nvals-fl    = net_const-text_index_0.
  nvals-val = text-029.                                     "Typ 7
  APPEND nvals.

ENDFORM.                               "form MAKE_INODES


*---------------------------------------------------------------------*
*       FORM MAKE_NODES                                               *
*---------------------------------------------------------------------*
*       Erzeugen der Knoten, Setzen der Labels                        *
*---------------------------------------------------------------------*
FORM make_nodes TABLES nodes STRUCTURE cng_nodes
                       nvals STRUCTURE net_nvals.

  nodes-id   = '1'.
  nodes-type = net_const-type_1.
  APPEND nodes .
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-030.                                    "Knoten 1
  APPEND nvals.
  nvals-fl   = net_const-text_index_1.
  nvals-val  = text-037.               "Text a
  APPEND nvals.
  nvals-fl   = net_const-text_index_2.
  nvals-val  = text-038.               "Text b
  APPEND nvals.
  nvals-fl   = net_const-text_index_3.
  nvals-val  = text-039.               "Text c
  APPEND nvals.
  nvals-fl   = net_const-text_index_4.
  nvals-val  = text-047.               "Text d
  APPEND nvals.
  nvals-fl   = net_const-text_index_5.
  nvals-val  = text-048.               "Text e
  APPEND nvals.
  nvals-fl   = net_const-text_index_6.
  nvals-val  = text-049.               "Text f
  APPEND nvals.
  nvals-fl   = net_const-text_index_7.
  nvals-val  = text-050.               "Text g
  APPEND nvals.
  nvals-fl   = net_const-text_index_8.
  nvals-val  = text-051.               "Text h
  APPEND nvals.
  nvals-fl   = net_const-text_index_9.
  nvals-val  = text-052.               "Text i
  APPEND nvals.
  nvals-fl   = net_const-text_index_10.
  nvals-val  = text-053.               "Text j
  APPEND nvals.
  nvals-fl   = net_const-text_index_11.
  nvals-val  = text-054.               "Text k
  APPEND nvals.
  nvals-fl   = net_const-text_index_11.
  nvals-val  = text-055.               "Text l
  APPEND nvals.

  nodes-id   = '2'.
  nodes-type = net_const-type_2.
  APPEND nodes.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-031.                                    "Knoten 2
  APPEND nvals.
  nvals-fl   = net_const-text_index_1.
  nvals-val  =  text-037.              "Text a
  APPEND nvals.

  nodes-id   = '3'.
  nodes-type = net_const-type_3.
  APPEND nodes.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-032.                                    "Knoten 3
  APPEND nvals.
  nvals-fl   = net_const-text_index_1.
  nvals-val  = text-037.               "Text a
  APPEND nvals.
  nvals-fl   = net_const-text_index_2.
  nvals-val  = text-038.               "Text b
  APPEND nvals.
  nvals-fl   = net_const-text_index_3.
  nvals-val  = text-039.               "Text c
  APPEND nvals.

  nodes-id   = '4'.
  nodes-type = net_const-type_4.
  APPEND nodes.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  =  text-033.                                   "Knoten 4
  APPEND nvals.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_1.
  nvals-val  = text-037.               "Text a
  APPEND nvals.
  nvals-fl   = net_const-text_index_2.
  nvals-val  = text-038.               "Text b
  APPEND nvals.
  nvals-fl   = net_const-select_node.  "select node
  nvals-val  = space.
  APPEND nvals.

  nodes-id   = '5'.
  nodes-type = net_const-type_5.
  APPEND nodes.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-034.                                    "Knoten 5
  APPEND nvals.
  nvals-fl   = net_const-text_index_1.
  nvals-val  = text-037.               "Text a
  APPEND nvals.
  nvals-fl   = net_const-text_index_2.
  nvals-val  = text-038.               "Text b
  APPEND nvals.

  nodes-id   = '6'.
  nodes-type = net_const-type_6.
  APPEND nodes .
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-035.                                    "Knoten 6
  APPEND nvals.
  nvals-fl   = net_const-text_index_1.
  nvals-val  = text-040.                                    "6
  APPEND nvals.
  nvals-fl   = net_const-text_index_2.
  nvals-val  = text-037.               "Text a
  APPEND nvals.

  nodes-id   = '7'.
  nodes-type = net_const-type_7.
  APPEND nodes.
  nvals-id   = nodes-id.
  nvals-fl   = net_const-text_index_0.
  nvals-val  = text-036.                                    "Knoten 7
  APPEND nvals.

ENDFORM.                               "form MAKE_NODES


*---------------------------------------------------------------------*
*       FORM MAKE_LEGEND                                              *
*---------------------------------------------------------------------*
*       Erzeugen der Legende                                          *
*---------------------------------------------------------------------*
FORM make_legend TABLES legend STRUCTURE cng_legend.

  DATA: head_line LIKE cng_legend-text,
        foot_line LIKE cng_legend-text.

  head_line = text-041.                "Legende
  foot_line = text-042.                "Fuяzeile

  legend-type = net_const-type_1.
  legend-text = text-023.                                   "Typ 1
  APPEND legend.

  legend-type = net_const-type_2.
  legend-text = text-024.                                   "Typ 2
  APPEND legend.

  legend-type = net_const-type_3.
  legend-text = text-025.                                   "Typ 3
  APPEND legend.

  legend-type = net_const-type_4.
  legend-text = text-026.                                   "Typ 4
  APPEND legend.

  legend-type = net_const-type_5.
  legend-text = text-027.                                   "Typ 5
  APPEND legend.

  legend-type = net_const-type_6.
  legend-text = text-028.                                   "Typ 6
  APPEND legend.

  legend-type = net_const-type_7.
  legend-text = text-029.                                   "Typ 7
  APPEND legend.

  CALL FUNCTION 'CNET_SET_LEGEND'
    EXPORTING
      foot_line   = foot_line
      head_line   = head_line
      legend_type = net_const-type_a
    TABLES
      legend      = legend.

  FREE legend.

ENDFORM.                               "form MAKE_LEGEND


*---------------------------------------------------------------------*
*       FORM MAKE_LINES                                               *
*---------------------------------------------------------------------*
*       Kanten zusammenstellen                                        *
*---------------------------------------------------------------------*
FORM make_lines TABLES lines STRUCTURE cng_lines
                       lvals STRUCTURE net_lvals.

  lines-id   = '1'.
  lines-type = net_const-type_1.
  lines-pre  = '1'.
  lines-suc  = '2'.
  lines-ab   = net_const-aob_ea.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.
  lvals-fl   = net_const-text_index_1.
  lvals-val  = text-037.               "Text a
  APPEND lvals.
  lvals-fl   = net_const-text_index_2.
  lvals-val  = text-038.               "Text b
  APPEND lvals.
  lvals-fl   = net_const-text_index_3.
  lvals-val  = text-039.               "Text c
  APPEND lvals.
  lvals-fl   = net_const-text_index_4.
  lvals-val  = text-047.               "Text d
  APPEND lvals.
  lvals-fl   = net_const-text_index_5.
  lvals-val  = text-048.               "Text e
  APPEND lvals.
  lvals-fl   = net_const-text_index_6.
  lvals-val  = text-049.               "Text f
  APPEND lvals.
  lvals-fl   = net_const-text_index_7.
  lvals-val  = text-050.               "Text g
  APPEND lvals.
  lvals-fl   = net_const-text_index_8.
  lvals-val  = text-051.               "Text h
  APPEND lvals.
  lvals-fl   = net_const-text_index_9.
  lvals-val  = text-052.               "Text i
  APPEND lvals.
  lvals-fl   = net_const-text_index_10.
  lvals-val  = text-053.               "Text j
  APPEND lvals.
  lvals-fl   = net_const-text_index_11.
  lvals-val  = text-054.               "Text k
  APPEND lvals.
  lvals-fl   = net_const-text_index_11.
  lvals-val  = text-055.               "Text l
  APPEND lvals.
  lvals-fl   = net_const-mark_at_end.
  lvals-val  = '40'.
  APPEND lvals.

  lines-id   = '2'.
  lines-type = net_const-type_2.
  lines-pre  = '2'.
  lines-suc  = '4'.
  lines-ab   = net_const-aob_aa.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

  lines-id   = '3'.
  lines-type = net_const-type_1.
  lines-pre  = '1'.
  lines-suc  = '3'.
  lines-ab   = net_const-aob_ee.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

  lines-id   = '4'.
  lines-type = net_const-type_1.
  lines-pre  = '3'.
  lines-suc  = '4'.
  lines-ab   = net_const-aob_ae.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

  lines-id   = '5'.
  lines-type = net_const-type_2.
  lines-pre  = '4'.
  lines-suc  = '5'.
  lines-ab   = net_const-aob_ea.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.
  lvals-fl   = net_const-mark_at_end.
  lvals-val  = '44'.
  APPEND lvals.

  lines-id   = '6'.
  lines-type = net_const-type_1.
  lines-pre  = '5'.
  lines-suc  = '6'.
  lines-ab   = net_const-aob_ea.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

  lines-id   = '7'.
  lines-type = net_const-type_1.
  lines-pre  = '5'.
  lines-suc  = '7'.
  lines-ab   = net_const-aob_ea.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

  lines-id   = '8'.
  lines-type = net_const-type_1.
  lines-pre  = '1'.
  lines-suc  = '7'.
  lines-ab   = net_const-aob_ea.
  APPEND lines.
  lvals-id   = lines-id.
  lvals-fl   = net_const-text_index_0.
  lvals-val  = lines-ab.
  APPEND lvals.

ENDFORM.       "form MAKE_LINES TABLES LINES STRUCTURE CNG_LINES


*---------------------------------------------------------------------*
*       FORM SET_CUA_STATUS.                                          *
*---------------------------------------------------------------------*
*       Pflegen der CUA-OberflЇche _ber den CUA-Painter               *
*---------------------------------------------------------------------*
FORM set_cua_status.

  DATA: BEGIN OF excluding_tab OCCURS 0.
          INCLUDE STRUCTURE sgrcexclud.
  DATA: END OF excluding_tab.

  DATA: prog LIKE sy-repid.

  prog = sy-repid.

* CUA-Status
  CALL FUNCTION 'GRAPH_SET_CUA_STATUS'
    EXPORTING
      program      = prog
      status       = 'GRAFIK'
    TABLES
      excluding    = excluding_tab
    EXCEPTIONS
      inv_cua_info = 1.

  FREE excluding_tab.

* Fenstertitel
  SET TITLEBAR '006'.

ENDFORM.                               "form SET_CUA_STATUS


*---------------------------------------------------------------------*
*       FORM INIT_0100                                                *
*---------------------------------------------------------------------*
*       Initialisierung Dynpro 100                                    *
*---------------------------------------------------------------------*
FORM init_0100 TABLES nvals     STRUCTURE net_nvals
                      all_nodes STRUCTURE cng_inodes.

  CLEAR:   field_tab,
           node_line.
  REFRESH: field_tab.

  READ TABLE nvals INDEX 1.
  LOOP AT all_nodes WHERE id = nvals-id.
    node_line-id   = nvals-id.
    node_line-type = all_nodes-type.
    EXIT.
  ENDLOOP.

  LOOP AT nvals.
    MOVE-CORRESPONDING nvals TO field_tab.
    APPEND field_tab.
  ENDLOOP.

  SORT field_tab.

ENDFORM.                               "form INIT_0100


*---------------------------------------------------------------------*
*       FORM INIT_0101                                                *
*---------------------------------------------------------------------*
*       Initailisierung Dynpro 101                                    *
*---------------------------------------------------------------------*
FORM init_0101 TABLES lvals     STRUCTURE net_lvals
                      all_lines STRUCTURE cng_lines.

  CLEAR:   field_tab,
           node_line.
  REFRESH: field_tab.

  READ TABLE lvals INDEX 1.
  LOOP AT all_lines WHERE id = lvals-id.
    node_line-id   = lvals-id.
    node_line-type = all_lines-type.
    EXIT.
  ENDLOOP.

  LOOP AT lvals.
    MOVE-CORRESPONDING lvals TO field_tab.
    APPEND field_tab.
  ENDLOOP.

  SORT field_tab.

ENDFORM.                               "form INIT_0101


*---------------------------------------------------------------------*
*       FORM INIT_0104                                                *
*---------------------------------------------------------------------*
*       Initialisierung Dynpro 104                                    *
*---------------------------------------------------------------------*
FORM init_0104 TABLES cvals        STRUCTURE net_cvals
                      all_clusters STRUCTURE cng_clustr.

  CLEAR:   field_tab,
           node_line.
  REFRESH: field_tab.

  READ TABLE cvals INDEX 1.
  LOOP AT all_clusters WHERE id = cvals-id.
    node_line-id   = cvals-id.
    node_line-type = all_clusters-type.
    EXIT.
  ENDLOOP.

  LOOP AT cvals.
    MOVE-CORRESPONDING cvals TO field_tab.
    APPEND field_tab.
  ENDLOOP.

  SORT field_tab.

ENDFORM.                               "form INIT_0104


*---------------------------------------------------------------------*
*       FORM SET_TITLE_BOX                                            *
*---------------------------------------------------------------------*
*       Setzen der Titelbox f_r's Drucken                             *
*---------------------------------------------------------------------*
FORM set_title_box TABLES boxes STRUCTURE net_boxes
                          bvals STRUCTURE net_nvals
                   USING  change_flag LIKE net_const-yes
                          header_text LIKE net_nvals-val.

  boxes-id = 'B1'.
  bvals-id = boxes-id.

  IF change_flag = space.
*   Box neu erzeugen
    boxes-box_type = net_const-borderbox.
    boxes-type     = net_const-type_2. "Rahmentyp 2
    APPEND boxes.

    bvals-fl  = net_const-box_position.
    bvals-val = net_const-top_box.     "Position oben
    APPEND bvals.
  ENDIF.

  bvals-fl  = net_const-text_index_0.
  bvals-val = header_text.
  APPEND bvals.

  CALL FUNCTION 'CNET_MAKE_BOXES'
    TABLES
      boxes = boxes
      bvals = bvals.

  FREE: boxes, bvals.

ENDFORM.                               "SET_TITLE_BOX


*---------------------------------------------------------------------*
*       FORM SET_TIME_EGG_TEXT                                        *
*---------------------------------------------------------------------*
*       Setzen Text im Zeitei                                         *
*---------------------------------------------------------------------*
FORM set_time_egg_text.

  time_egg_text = text-021.

  CALL FUNCTION 'CNET_SET_TIMEEGG_TEXT'
    EXPORTING
      text = time_egg_text.

ENDFORM.                               "SET_TIME_EGG_TEXT


*---------------------------------------------------------------------*
*       FORM UPDATE_CLUSTERS                                          *
*---------------------------------------------------------------------*
*       Update der Clustertabellen                                    *
*---------------------------------------------------------------------*
FORM update_clusters TABLES clusters     STRUCTURE cng_clustr
                            cvals        STRUCTURE net_cvals
                            all_clusters STRUCTURE cng_clustr
                            all_cvals    STRUCTURE net_cvals
                            nodes        STRUCTURE cng_nodes
                     USING  mes.

  DATA: text_fl_values_1(10) TYPE c              VALUE '1234567890',
        text_fl_values_2(11) TYPE c              VALUE '1234567890 '.

  CASE mes.
    WHEN space.                        "Laden
      LOOP AT clusters.                "Cluster
        CLEAR all_clusters.
        MOVE-CORRESPONDING clusters TO all_clusters.
        APPEND all_clusters.
      ENDLOOP.

      LOOP AT cvals.                   "Attribute der Cluster
        CLEAR all_cvals.
        MOVE-CORRESPONDING cvals TO all_cvals.
        APPEND all_cvals.
      ENDLOOP.

    WHEN OTHERS.                       "Update
      LOOP AT cvals.
*       Text
        IF  text_fl_values_1 CA cvals-fl(1)
        AND text_fl_values_2 CA cvals-fl+1(1).
          LOOP AT all_cvals WHERE id = cvals-id
                              AND fl = cvals-fl.
            all_cvals-val = cvals-val.
            MODIFY all_cvals.
          ENDLOOP.
          IF NOT sy-subrc IS INITIAL.
            MOVE-CORRESPONDING cvals TO all_cvals.
            APPEND all_cvals.
          ENDIF.

*       Typ
        ELSEIF cvals-fl = net_const-type.
          LOOP AT all_clusters WHERE id = cvals-id.
            all_clusters-type = cvals-val.
            MODIFY all_clusters.
          ENDLOOP.

*       AnhЇngen
        ELSEIF cvals-fl = net_const-add_node      "Knoten anhЇngen
            OR cvals-fl = net_const-add_cluster.      "Cluster anhЇngen
          IF  mes = net_const-ask_for_insert
          AND cvals-fl = net_const-add_node.
            READ TABLE nodes INDEX 1.
            CHECK sy-subrc IS INITIAL.
            cvals-val = nodes-id.
            MODIFY cvals.
          ENDIF.
          LOOP AT all_cvals WHERE id  = cvals-id
                              AND fl  = cvals-fl
                              AND val = cvals-val.
            EXIT.
          ENDLOOP.
          IF NOT sy-subrc IS INITIAL.
            CLEAR all_cvals.
            MOVE-CORRESPONDING cvals TO all_cvals.
            APPEND all_cvals.
          ENDIF.

*       Knoten entfernen
        ELSEIF cvals-fl = net_const-remove_node.
          LOOP AT all_cvals WHERE id  = cvals-id
                              AND fl  = net_const-add_node
                              AND val = cvals-val.
            DELETE all_cvals.
          ENDLOOP.

*       Cluster entfernen
        ELSEIF cvals-fl = net_const-remove_cluster.
          LOOP AT all_cvals WHERE id  = cvals-id
                              AND fl  = net_const-add_cluster
                              AND val = cvals-val.
            DELETE all_cvals.
          ENDLOOP.

*       X-Position, Y-Position, Breite, H_he
        ELSEIF cvals-fl = net_const-cluster_xpos
            OR cvals-fl = net_const-cluster_ypos
            OR cvals-fl = net_const-cluster_width
            OR cvals-fl = net_const-cluster_height.
          LOOP AT all_cvals WHERE id  = cvals-id
                              AND fl  = cvals-fl.
            MODIFY all_cvals.
          ENDLOOP.
          IF NOT sy-subrc IS INITIAL.
            CLEAR all_cvals.
            MOVE-CORRESPONDING cvals TO all_cvals.
            APPEND all_cvals.
          ENDIF.

        ENDIF.                         "if CVALS-FL = ...
      ENDLOOP.                         "at CVALS
  ENDCASE.                             "case MES

ENDFORM.                               "UPDATE_CLUSTERS


*---------------------------------------------------------------------*
*       FORM UPDATE_LABELS                                            *
*---------------------------------------------------------------------*
*       Textlabels aktualisieren                                      *
*---------------------------------------------------------------------*
FORM update_labels TABLES nvals STRUCTURE net_nvals.

  DATA: text LIKE net_labels-text.

  LOOP AT nvals WHERE fl = net_const-text_index_0.
    text = nvals-val.

    CALL FUNCTION 'CNET_SET_LABEL'
      EXPORTING
        id   = nvals-id
        text = text.

  ENDLOOP.

ENDFORM.                               "UPDATE_LABELS


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0100 OUTPUT                              *
*---------------------------------------------------------------------*
*       Status zur Modifikation der Knoteninhalte                     *
*---------------------------------------------------------------------*
MODULE set_pf-status_0100 OUTPUT.

  SET PF-STATUS 'MOD_TYPE'.
  SET TITLEBAR '001'.

ENDMODULE.                             "module SET_PF-STATUS_0100 OUTPUT


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0101 OUTPUT                              *
*---------------------------------------------------------------------*
*       Status + ьberschrift zur Modifikation der Kanten              *
*---------------------------------------------------------------------*
MODULE set_pf-status_0101 OUTPUT.

  SET PF-STATUS 'MOD_TYPE'.
  SET TITLEBAR '002'.

ENDMODULE.         "module  SET_PF-STATUS_0101 OUTPUT.


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0102 OUTPUT                              *
*---------------------------------------------------------------------*
*       Status: Selektierte Knoten bzw. Kanten anzeigen               *
*---------------------------------------------------------------------*
MODULE set_pf-status_0102 OUTPUT.

  SET PF-STATUS 'MOD_TAB'.
  SET TITLEBAR '003'.

ENDMODULE.      "module  SET_PF-STATUS_0102 OUTPUT


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0103 OUTPUT                              *
*---------------------------------------------------------------------*
*       Status: Positionen der Objekte                                *
*---------------------------------------------------------------------*
MODULE set_pf-status_0103 OUTPUT.

  SET PF-STATUS 'MOD_TYPE'.
  SET TITLEBAR '004'.

ENDMODULE.     "module  SET_PF-STATUS_0103 OUTPUT


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0104 OUTPUT                              *
*---------------------------------------------------------------------*
*       Modifikation Rahmen                                           *
*---------------------------------------------------------------------*
MODULE set_pf-status_0104 OUTPUT.

  SET PF-STATUS 'MOD_TYPE'.
  SET TITLEBAR '005'.

ENDMODULE.                             "module SET_PF-STATUS_0104 OUTPUT


*---------------------------------------------------------------------*
*       MODULE MODIFY_TAB_0100 INPUT                                  *
*---------------------------------------------------------------------*
*       Modifikation der Knoten bzw. Kanten der Grafik                *
*---------------------------------------------------------------------*
MODULE modify_tab_0100 INPUT.

  MODIFY field_tab INDEX entry_act.

ENDMODULE.                             "module MODIFY_TAB_0100 INPUT


*---------------------------------------------------------------------*
*       MODULE MODIFY_TAB_0103 INPUT                                  *
*---------------------------------------------------------------------*
*       Modifikation der Knotenpositionen                             *
*---------------------------------------------------------------------*
MODULE modify_tab_0103 INPUT.

  MODIFY positions_tab INDEX entry_act.

ENDMODULE.                             "module MODIFY_TAB_0103 INPUT


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0100 INPUT                                     *
*---------------------------------------------------------------------*
*       Auswertung des OK-CODES bei der Modifikation der Knoten/Kanten*
*---------------------------------------------------------------------*
MODULE ok_code_0100 INPUT.

  save_ok-code = ok-code.
  CLEAR ok-code.

  CASE save_ok-code.

    WHEN 'UPDA'.
      CASE object_type.
        WHEN net_const-node_object.    "Knoten
          CLEAR   nvals_tab.
          REFRESH nvals_tab.

          READ TABLE field_tab INDEX 1.
          nvals_tab-id  = field_tab-id.
          nvals_tab-fl  = net_const-type.
          nvals_tab-val = node_line-type.
          APPEND nvals_tab.

          LOOP AT field_tab.
            CLEAR nvals_tab.
            MOVE-CORRESPONDING field_tab TO nvals_tab.
            APPEND nvals_tab.

            IF field_tab-color <> space.
              CLEAR nvals_tab.

              READ TABLE nvals_tab INDEX sy-tabix.
              WRITE nvals_tab-fl TO nvals_tab-val.
              WRITE '/' TO nvals_tab-val+2(1).
              WRITE field_tab-color TO nvals_tab-val+3.
              CONDENSE nvals_tab-val NO-GAPS.

              nvals_tab-fl = net_const-color.

              APPEND nvals_tab.
            ENDIF.
          ENDLOOP.

        WHEN net_const-line_object.    "Kante
          CLEAR   lvals_tab.
          REFRESH lvals_tab.

          READ TABLE field_tab INDEX 1.
          lvals_tab-id  = field_tab-id.
          lvals_tab-fl  = net_const-type.
          lvals_tab-val = node_line-type.
          APPEND lvals_tab.

          LOOP AT field_tab.
            CLEAR lvals_tab.
            MOVE-CORRESPONDING field_tab TO lvals_tab.
            APPEND lvals_tab.
          ENDLOOP.

        WHEN net_const-cluster_object. "Rahmen
          CLEAR   cvals_tab.
          REFRESH cvals_tab.

          READ TABLE field_tab INDEX 1.
          cvals_tab-id  = field_tab-id.
          cvals_tab-fl  = net_const-type.
          cvals_tab-val = node_line-type.
          APPEND cvals_tab.

          LOOP AT field_tab.
            CLEAR cvals_tab.
            MOVE-CORRESPONDING field_tab TO cvals_tab.
            APPEND cvals_tab.
          ENDLOOP.
      ENDCASE.                         "case OBJECT_TYPE

      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN 'ABBR'.
      CLEAR:   nvals_tab, lvals_tab, cvals_tab, field_tab.
      REFRESH: nvals_tab, lvals_tab, cvals_tab, field_tab.

      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN OTHERS.
      DESCRIBE TABLE field_tab LINES entry_to.

      CALL FUNCTION 'SCROLLING_IN_TABLE'
        EXPORTING
          entry_act             = entry_act
          entry_to              = entry_to
          last_page_full        = space
          loops                 = line_count
          ok_code               = save_ok-code
        IMPORTING
          entry_new             = entry_new
        EXCEPTIONS
          no_entry_or_page_act  = 01
          no_entry_to           = 02
          no_ok_code_or_page_go = 03.

      IF sy-subrc <> 3.
        entry_act = entry_new.
      ENDIF.
  ENDCASE.                             "case SAVE_OK-CODE

ENDMODULE.                             "module OK_CODE_0100 INPUT


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0102 INPUT                                     *
*---------------------------------------------------------------------*
*       Auswertung des OK-CODES bei der Anzeige selektierter Objekte  *
*---------------------------------------------------------------------*
MODULE ok_code_0102 INPUT.

  save_ok-code = ok-code.
  CLEAR ok-code.

  CASE save_ok-code.
    WHEN 'ENTR'.
      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN 'ABBR'.
      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN OTHERS.
      DESCRIBE TABLE scroll_tab LINES entry_to.

      CALL FUNCTION 'SCROLLING_IN_TABLE'
        EXPORTING
          entry_act             = entry_act
          entry_to              = entry_to
          last_page_full        = space
          loops                 = line_count_1
          ok_code               = save_ok-code
        IMPORTING
          entry_new             = entry_new
        EXCEPTIONS
          no_entry_or_page_act  = 01
          no_entry_to           = 02
          no_ok_code_or_page_go = 03.

      IF sy-subrc <> 3.
        entry_act = entry_new.
      ENDIF.
  ENDCASE.                             "case SAVE_OK-CODE

ENDMODULE.                             "module  OK_CODE_0102 INPUT.


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0103 INPUT                                     *
*---------------------------------------------------------------------*
*       Auswertung des OK-CODES bei Anzeige der Positionen            *
*---------------------------------------------------------------------*
MODULE ok_code_0103 INPUT.

  save_ok-code = ok-code.
  CLEAR ok-code.

  CASE save_ok-code.
    WHEN 'UPDA'.
      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN 'ABBR'.
      CLEAR   positions_tab.
      REFRESH positions_tab.

      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN OTHERS.
      DESCRIBE TABLE positions_tab LINES entry_to.

      CALL FUNCTION 'SCROLLING_IN_TABLE'
        EXPORTING
          entry_act             = entry_act
          entry_to              = entry_to
          last_page_full        = space
          loops                 = line_count_1
          ok_code               = save_ok-code
        IMPORTING
          entry_new             = entry_new
        EXCEPTIONS
          no_entry_or_page_act  = 01
          no_entry_to           = 02
          no_ok_code_or_page_go = 03.

      IF sy-subrc <3> Knoten: ╘ndern
* 002 --> Kanten: ╘ndern
* 003 --> Selektierte Objekte: Anzeigen
* 004 --> Positionen: ╘ndern
* 005 --> Knotenanordnung: Anzeigen
* 006 --> Demo zum grafischen Netzplaneditor
* 001 --> ╙чы√: шчьхэхэшх
* 002 --> ╤юхфшэхэш : шчьхэхэшх
* 003 --> ┬√сЁрээ√х юс·хъЄ√: яЁюёьюЄЁ
* 004 --> ╧ючшЎшш: шчьхэхэшх
* 005 --> ╧Ёшётюхэшх єчыют: яЁюёьюЄЁ
* 006 --> ─хьюэёЄЁ. яЁшьхЁ яю уЁрЇшўхёъюьє ЁхфръЄюЁє ёхЄхтюую уЁрЇшър

*Text elements
*----------------------------------------------------------
* 040 6
* 043 Frame 1
* 044 Frame 2
* 047 Text d
* 048 Text e
* 039 Text c
* 034 Node 5
* 035 Node 6
* 036 Node 7
* 037 Text a
* 038 Text b
* 049 Text f
* 056 Frame modified
* 055 Text l
* 050 Text g
* 051 Text h
* 052 Text i
* 053 Text j
* 054 Text k
* 007 Selections determined
* 008 Positions determined
* 009 Title
* 010 Graphic prfl
* 021 Test
* 006 Link modified
* 001 Node inserted
* 002 Node copied
* 003 Node / link deleted
* 004 Link inserted
* 005 Node modified
* 022 No Object Selected
* 029 Typ.7
* 030 Node 1
* 031 Node 2
* 032 Node 3
* 033 Node 4
* 028 Typ.6
* 023 Typ.1
* 024 Typ.2
* 025 Typ.3
* 026 Typ.4
* 027 Typ.5


*Selection texts
*----------------------------------------------------------
* PRF_GRUP         Group
* PRF_INDX         Index
* PRF_NAME         Name

****************************************************************
* This file was generated by Direct Download Enterprise. *
* Please do not change it manually. *
****************************************************************
%_DYNPRO
NETZOCX2
0100
620
40
%_HEADER
NETZOCX2 0100M0100 11 61192 34 0 0 12 61 0GXD 19971022153703
%_DESCRIPTION
Change Nodes
%_FIELDS
TEXT1 CHAR 61 00 00 00 30 00 1 2 0 0 0 4 R 0 0 102 Nodes
IDENTIFICATION 3 CHAR 20 00 00 00 38 00 2 3 0 0 0 0 0 0 0 Identification
NODE_LINE-ID C CHAR 10 80 00 80 70 00 2 24 0 0 0 0 0 0 0 __________
TYPE 3 CHAR 10 00 00 00 38 00 3 3 0 0 0 0 0 0 0 Type
NODE_LINE-TYPE C CHAR 1 80 00 80 40 00 3 24 0 0 0 0 0 0 0 _
TEXT2 CHAR 61 00 00 00 30 00 5 2 0 0 0 7 R 0 0 103 Field Attributes
FIELD CHAR 4 00 00 00 38 00 6 3 0 0 0 0 0 0 0 Fld
TEXT CHAR 4 00 00 00 38 00 6 9 0 0 0 0 0 0 0 Text
COLOR CHAR 5 00 00 00 38 00 6 51 0 0 0 0 0 0 0 Color
FIELD_TAB-FL C CHAR 2 80 00 88 40 00 7 3 L 101 1 4 0 0 0 0 __
FIELD_TAB-VAL C CHAR 40 80 02 80 40 00 7 9 L 101 1 4 0 0 0 0 ________________________________________
FIELD_TAB-COLOR C CHAR 11 80 00 80 40 08 7 51 L 101 1 4 0 0 0 0 ___________
OK-CODE CHAR 4 80 10 00 40 00 255 255 O 0 0 0 0 0 0 0 ____
%_FLOWLOGIC
PROCESS BEFORE OUTPUT.

MODULE SET_PF-STATUS_0100.

LOOP AT FIELD_TAB CURSOR ENTRY_ACT.
ENDLOOP.
*
PROCESS AFTER INPUT.

LOOP AT FIELD_TAB.
CHAIN.
FIELD FIELD_TAB-COLOR
SELECT * FROM TWCOL WHERE COLOR = FIELD_TAB-COLOR.
ENDCHAIN.
CHAIN.
FIELD: FIELD_TAB-FL.
FIELD: FIELD_TAB-VAL.
FIELD: FIELD_TAB-COLOR.
MODULE MODIFY_TAB_0100 ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.

MODULE OK_CODE_0100.
****************************************************************
* This file was generated by Direct Download Enterprise. *
* Please do not change it manually. *
****************************************************************
%_DYNPRO
NETZOCX2
0101
620
40
%_HEADER
NETZOCX2 0101M0101 9 48192 34 0 0 10 48101GXD 19971022153715
%_DESCRIPTION
Change Link
%_FIELDS
TEXT1 CHAR 48 00 00 00 30 00 1 2 0 0 0 4 R 0 0 102 Edge
IDENTIFIKATION 3 CHAR 20 00 00 00 38 00 2 3 0 0 0 0 0 0 0 Identification
NODE_LINE-ID C CHAR 10 80 00 80 70 00 2 24 0 0 0 0 0 0 0 __________
TYPE 3 CHAR 10 00 00 00 38 00 3 3 0 0 0 0 0 0 0 Type
NODE_LINE-TYPE C CHAR 1 80 00 80 40 00 3 24 0 0 0 0 0 0 0 _
TEXT2 CHAR 48 00 00 00 30 00 5 2 0 0 0 5 R 0 0 103 Field Attributes
FIELD CHAR 4 00 00 00 38 00 6 3 0 0 0 0 0 0 0 Fld
TEXT CHAR 4 00 00 00 38 00 6 9 0 0 0 0 0 0 0 Text
FIELD_TAB-FL C CHAR 2 80 00 88 40 00 7 3 L 101 1 2 0 0 0 0 __
FIELD_TAB-VAL C CHAR 40 80 02 80 40 00 7 9 L 101 1 2 0 0 0 0 ________________________________________
OK-CODE CHAR 4 80 10 00 40 00 255 255 O 0 0 0 0 0 0 0 ____
%_FLOWLOGIC
PROCESS BEFORE OUTPUT.

MODULE SET_PF-STATUS_0101.

LOOP AT FIELD_TAB CURSOR ENTRY_ACT.
ENDLOOP.
*
PROCESS AFTER INPUT.

LOOP AT FIELD_TAB.
CHAIN.
FIELD: FIELD_TAB-FL.
FIELD: FIELD_TAB-VAL.
MODULE MODIFY_TAB_0100 ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.

MODULE OK_CODE_0100.

****************************************************************
* This file was generated by Direct Download Enterprise. *
* Please do not change it manually. *
****************************************************************
%_DYNPRO
NETZOCX2
0102
620
40
%_HEADER
NETZOCX2 0102M0102 13 40192 34 0 0 13 40 0GXD 19971022153725
%_DESCRIPTION
Display Selected Objects
%_FIELDS
KNOTENTEXT CHAR 12 00 00 00 30 00 1 4 0 0 0 13 R 0 0 107 Nodes
KANTENTEXT CHAR 12 00 00 00 30 00 1 17 0 0 0 13 R 0 0 106 Links
CLUTERTEXT CHAR 12 00 00 00 30 00 1 30 0 0 0 13 R 0 0 105 Frames
IDKNOTEN CHAR 2 00 00 00 30 00 2 5 0 0 0 0 0 0 ID
IDKANTEN CHAR 2 00 00 00 30 00 2 18 0 0 0 0 0 0 ID
IDRAHMEN CHAR 2 00 00 00 30 00 2 31 0 0 0 0 0 0 ID
SCROLL_TAB-FLAG CHAR 1 80 00 80 74 00 3 2 L 101 1 10 0 0 0 0 _
NET_NODES_TAB-ID CHAR 10 80 00 80 30 00 3 5 L 102 1 10 0 0 0 __________
LINES_TAB-ID CHAR 10 80 00 80 30 00 3 18 L 103 1 10 0 0 0 __________
CLUSTERS_TAB-ID CHAR 10 80 00 80 30 00 3 31 L 104 1 10 0 0 0 __________
OK-CODE CHAR 5 80 10 00 40 00 64 5 O 0 0 0 0 0 0 _____
%_FLOWLOGIC
PROCESS BEFORE OUTPUT.

MODULE SET_PF-STATUS_0102.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Dialog Programming -> Graphics All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.