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: Hierarchy Graphics in Maintenance Mode



 
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 1:47 pm    Post subject: Demo: Hierarchy Graphics in Maintenance Mode Reply with quote

Code:
PROGRAM HIER_BO2 MESSAGE-ID CG.

INCLUDE LCNETDAT.                      "allg. Datendeklarationen
INCLUDE LCNETCON.                      "Konstanten

DATA: BEGIN OF ALL_NODES_TAB OCCURS 0. "Alle Knoten
        INCLUDE STRUCTURE CHG_INODES.
DATA: END OF ALL_NODES_TAB.

DATA: BEGIN OF ALL_NVALS_TAB OCCURS 0. "Werte zu allen Knoten
        INCLUDE STRUCTURE NET_NVALS.
DATA: END OF ALL_NVALS_TAB.

DATA: BEGIN OF COLLAPSED_NODES_TAB OCCURS 0.   "Kollabierte Knoten
        INCLUDE STRUCTURE CHG_INODES.
DATA: END OF COLLAPSED_NODES_TAB.

DATA: BEGIN OF FIELD_TAB OCCURS 0,  "Modifizieren der Knoten und Kanten
        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 der Knoten und Kanten
        ID   LIKE CNG_INODES-ID,
        TYPE LIKE CNG_INODES-TYPE,
      END OF NODE_LINE.

DATA: ANZ                 TYPE I,
      COLLAPSED_NODE_TYPE LIKE CHG_NODES-TYPE         VALUE '9',
      COUNT               TYPE I,
      ENTRY_ACT           LIKE SY-TABIX,
      ENTRY_TO            LIKE SY-TABIX,
      ENTRY_NEW           LIKE SY-TABIX,
      LINE_COUNT          LIKE SY-TABIX               VALUE 4,
      LINE_COUNT_1        LIKE SY-TABIX               VALUE 10,
      OK_CODE(4)          TYPE C,
      SAVE_OK_CODE        LIKE OK_CODE.

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

PROFILE-GRUPPE = PRF_GRUP.
PROFILE-NAME   = PRF_NAME.
PROFILE-INDEX  = PRF_INDX.

* Setzen des CUA-Status und Fenstertitel
PERFORM SET_CUA_STATUS.

* Erzeugen der Knoten der Nodearea
PERFORM MAKE_INODES TABLES INODES_TAB NVALS_TAB.

* Erzeugen der Legende
PERFORM MAKE_LEGEND TABLES LEGEND_TAB NVALS_TAB.

* Erzeugen der Knoten
PERFORM MAKE_NODES TABLES HIER_NODES_TAB NVALS_TAB.

* Setzen der Titelbox fќr's Drucken
PERFORM SET_TITLE_BOX TABLES BOXES_TAB BVALS_TAB.

* Sichern des Anfangszustendes
CALL FUNCTION 'CNET_LOGIC_HIERARCHY'
     TABLES
          ALL_NODES = ALL_NODES_TAB
          ALL_NVALS = ALL_NVALS_TAB
          DELETIONS = DELETE_TAB
          NODES     = HIER_NODES_TAB
          NVALS     = NVALS_TAB.

STAT = NET_CONST-STAT_1.   "Open Window, Transfer Data, Wait for Input
ABAP_CMD = SPACE.

DO.
  CALL FUNCTION 'CNET_GRAPHIC_HIERARCHY'
       EXPORTING
            ABAP_CMD          = ABAP_CMD
            CONFIRM           = NET_CONST-CONFIRM_YES
            PROFILE           = PROFILE
            STAT              = STAT
            STATUS_TEXT       = STATUS_TEXT
       IMPORTING
            GR_MES            = GR_MES
            GR_MODE           = MODE
            GR_SEL_FIELD      = SEL_FIELD
            M_TYP             = M_TYP
       TABLES
            CLUSTERS          = CLUSTERS_TAB
            CVALS             = CVALS_TAB
            DELETIONS         = DELETE_TAB
            INODES            = INODES_TAB
            NODES             = HIER_NODES_TAB
            NVALS             = NVALS_TAB
            POSITIONS         = POSITIONS_TAB
       EXCEPTIONS
            INV_PROFILE       = 1
            INV_WINID         = 2
            ERR_IN_PROFILE    = 3
            NO_BATCH          = 4
            INV_COMMUNICATION = 5.

  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

  CLEAR: ABAP_CMD,
         STATUS_TEXT.

  STAT = NET_CONST-STAT_4.             "wait for input

  CASE M_TYP.
    WHEN NET_CONST-M_TYP_D.            "Graphic Window has been closed
      EXIT.

    WHEN NET_CONST-M_TYP_I.            "Message recieved

      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.

          IF MODE = NET_CONST-TEXT_MODE.
*           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
          ENDIF.

*----------------------------------------------------------------------*
        WHEN NET_CONST-DOUBLECLICKED.
          LG_MES   = NET_CONST-ASK_FOR_MODIFY.
          ABAP_CMD = NET_CONST-ASK_FOR_MODIFY.

          CLEAR   NVALS_TAB.
          REFRESH NVALS_TAB.
          READ TABLE HIER_NODES_TAB INDEX 1.
          LOOP AT ALL_NVALS_TAB WHERE ID = HIER_NODES_TAB-ID.
            MOVE-CORRESPONDING ALL_NVALS_TAB TO NVALS_TAB.
            APPEND NVALS_TAB.
          ENDLOOP.
          CLEAR HIER_NODES_TAB.
          REFRESH HIER_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

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_VER_ALIGN.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_HOR_ALIGN.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_EXPAND.
          LG_MES   = NET_CONST-ASK_FOR_MODIFY.
          ABAP_CMD = GR_MES.

          LOOP AT NVALS_TAB WHERE FL  = NET_CONST-OUTLINING
                              AND VAL = NET_CONST-EXPAND.
            LOOP AT COLLAPSED_NODES_TAB WHERE ID = NVALS_TAB-ID.
              NVALS_TAB-FL = NET_CONST-TYPE.
              NVALS_TAB-VAL = COLLAPSED_NODES_TAB-TYPE.
              APPEND NVALS_TAB.

              DELETE COLLAPSED_NODES_TAB.
            ENDLOOP.                   "loop at COLLAPSED_NODES_TAB
          ENDLOOP.                     "loop at NVALS_TAB

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_COLLAPS.
          LG_MES   = NET_CONST-ASK_FOR_MODIFY.
          ABAP_CMD = GR_MES.

          LOOP AT NVALS_TAB WHERE FL  = NET_CONST-OUTLINING
                              AND VAL = NET_CONST-COLLAPS.
            LOOP AT ALL_NODES_TAB WHERE ID = NVALS_TAB-ID.
              COLLAPSED_NODES_TAB = ALL_NODES_TAB.
              APPEND COLLAPSED_NODES_TAB.
            ENDLOOP.                   "loop at ALL_NODES_TAB

            NVALS_TAB-FL = NET_CONST-TYPE.
            NVALS_TAB-VAL = COLLAPSED_NODE_TYPE.
            APPEND NVALS_TAB.
          ENDLOOP.                     "loop at NVALS_TAB

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_VISIBLE.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_INVISIBLE.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_MOVE.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_EXIT.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_QUIT.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-ASK_FOR_BACK.
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = GR_MES.

*----------------------------------------------------------------------*
        WHEN NET_CONST-GET_SELECTION.  "Selected nodes
          LG_MES = NET_CONST-DO_NOTHING.
          READ TABLE HIER_NODES_TAB INDEX 1.
          IF NOT SY-TFILL IS INITIAL.
            SORT HIER_NODES_TAB BY ID.
            ENTRY_ACT = 1.
            CALL SCREEN 102 STARTING AT 10 10 ENDING AT 22 23.
            CLEAR   HIER_NODES_TAB.
            REFRESH HIER_NODES_TAB.
          ELSE.
            ABAP_CMD = NET_CONST-ASK_FOR_MODIFY.
            STATUS_TEXT = TEXT-039.    "keine Objekte selektiert
          ENDIF.                       "if not SY-TFILL is initial

*----------------------------------------------------------------------*
        WHEN NET_CONST-GET_POSITIONS.  "Positionen
          LG_MES = NET_CONST-DO_NOTHING.
          READ TABLE POSITIONS_TAB INDEX 1.
          IF NOT SY-TFILL IS INITIAL.
            SORT POSITIONS_TAB BY OBJ_TYPE ID.
            ENTRY_ACT = 1.
            CALL SCREEN 103 STARTING AT 10 10 ENDING AT 38 23.
            CLEAR   POSITIONS_TAB.
            REFRESH POSITIONS_TAB.
          ELSE.
            ABAP_CMD = NET_CONST-ASK_FOR_MODIFY.
            STATUS_TEXT = TEXT-040.    "Keine Objekte vorhanden
          ENDIF.                       "if not SY-TFILL is initial

*----------------------------------------------------------------------*
        WHEN 'XBO1'.                   "Get selected nodes
          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.      "Positionen ermittelt

*----------------------------------------------------------------------*
        WHEN 'XBO3'.                   "Knotenanordnung ermitteln
          LG_MES   = NET_CONST-DO_NOTHING.
          ABAP_CMD = NET_CONST-ASK_FOR_MODIFY.
          PERFORM INIT_0104 TABLES HIER_NODES_TAB
                                   ALL_NODES_TAB.
          READ TABLE HIER_NODES_TAB INDEX 1.
          IF NOT SY-TFILL IS INITIAL.
            ENTRY_ACT = 1.
            CALL SCREEN 104 STARTING AT 10 10 ENDING AT 44 23.
            CLEAR   HIER_NODES_TAB.
            REFRESH HIER_NODES_TAB.
          ELSE.
            ABAP_CMD = NET_CONST-ASK_FOR_MODIFY.
            STATUS_TEXT = TEXT-040.
          ENDIF.

*----------------------------------------------------------------------*
        WHEN OTHERS.
          LG_MES = NET_CONST-DO_NOTHING.

*----------------------------------------------------------------------*
      ENDCASE.                         "CASE GR_MES

      CALL FUNCTION 'CNET_LOGIC_HIERARCHY'
           EXPORTING
                CONFIRM   = NET_CONST-CONFIRM_YES
                LG_MES    = LG_MES
                LG_MODE   = MODE
           TABLES
                ALL_NODES = ALL_NODES_TAB
                ALL_NVALS = ALL_NVALS_TAB
                DELETIONS = DELETE_TAB
                NODES     = HIER_NODES_TAB
                NVALS     = NVALS_TAB.

  ENDCASE.                             "CASE M_TYP
ENDDO.


*---------------------------------------------------------------------*
*       FORM FIELD_TO_TEXTINDEX_NVALS                                 *
*---------------------------------------------------------------------*
*       Feldnamen in Textindex umwandeln                              *
*---------------------------------------------------------------------*
FORM FIELD_TO_TEXTINDEX_NVALS TABLES NVALS STRUCTURE NET_NVALS
                                     ALL_NODES STRUCTURE CHG_INODES.

  LOOP AT ALL_NODES WHERE ID = NVALS-ID.
    EXIT.
  ENDLOOP.

  IF SY-SUBRC = 0.
    CALL FUNCTION 'CNET_FIELD_TO_INDEX_NVALS'
         EXPORTING
              NODE_TYPE = ALL_NODES-TYPE
         TABLES
              NVALS     = NVALS.
  ENDIF.                               "if SY-SUBRC = 0.

ENDFORM.                               "form FIELD_TO_TEXTINDEX_NVALS


*---------------------------------------------------------------------*
*       FORM MAKE_INODES                                              *
*---------------------------------------------------------------------*
*       Erzeugen der Knoten des Knotenbereichs                        *
*---------------------------------------------------------------------*
FORM MAKE_INODES TABLES INODES STRUCTURE CNG_INODES
                        NVALS  STRUCTURE NET_NVALS.

  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-017.                                   "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-018.                                   "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-019.                                   "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-020.                                   "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-021.                                   "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-022.                                   "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-023.                                   "Typ 7
  APPEND NVALS.

ENDFORM.                               "form MAKE_INODES


*---------------------------------------------------------------------*
*       FORM MAKE_LEGEND                                              *
*---------------------------------------------------------------------*
*       Erzeugen der Legende                                          *
*---------------------------------------------------------------------*
FORM MAKE_LEGEND TABLES LEGEND STRUCTURE CNG_LEGEND
                        NVALS  STRUCTURE NET_NVALS.

  DATA: HEAD_LINE LIKE CNG_LEGEND-TEXT,
        FOOT_LINE LIKE CNG_LEGEND-TEXT.

  HEAD_LINE = TEXT-037.
  FOOT_LINE = TEXT-038.

  LEGEND-ID   = 'L1'.
  LEGEND-TYPE = NET_CONST-TYPE_1.
  LEGEND-TEXT = TEXT-017.                                   "Typ 1
  APPEND LEGEND.
  NVALS-ID  = LEGEND-ID.
  NVALS-FL  = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL = TEXT-017.
  APPEND NVALS.
  NVALS-FL  = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL = TEXT-017.
  APPEND NVALS.
  NVALS-FL  = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL = TEXT-017.
  APPEND NVALS.

  CLEAR LEGEND-ID.
  LEGEND-TYPE = NET_CONST-TYPE_2.
  LEGEND-TEXT = TEXT-018.                                   "Typ 2
  APPEND LEGEND.

  LEGEND-TYPE = NET_CONST-TYPE_3.
  LEGEND-TEXT = TEXT-019.                                   "Typ 3
  APPEND LEGEND.

  LEGEND-TYPE = NET_CONST-TYPE_4.
  LEGEND-TEXT = TEXT-020.                                   "Typ 4
  APPEND LEGEND.

  LEGEND-TYPE = NET_CONST-TYPE_5.
  LEGEND-TEXT = TEXT-021.                                   "Typ 5
  APPEND LEGEND.

  LEGEND-TYPE = NET_CONST-TYPE_6.
  LEGEND-TEXT = TEXT-022.                                   "Typ 6
  APPEND LEGEND.

  LEGEND-TYPE = NET_CONST-TYPE_7.
  LEGEND-TEXT = TEXT-023.                                   "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_NODES                                               *
*---------------------------------------------------------------------*
*       Erzeugen der Knoten                                           *
*---------------------------------------------------------------------*
FORM MAKE_NODES TABLES NODES STRUCTURE CHG_NODES
                       NVALS STRUCTURE NET_NVALS.

  NODES-ID        = '1'.
  NODES-TYPE      = NET_CONST-TYPE_1.
  NODES-PARENT_ID = SPACE.
  NODES-LEFT_ID   = SPACE.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-027.                               "Node 1
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-025.          "Text b
  APPEND NVALS.

  NODES-ID        = '2'.
  NODES-TYPE      = NET_CONST-TYPE_2.
  NODES-PARENT_ID = '1'.
  NODES-LEFT_ID   = SPACE.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-028.                               "Node 2
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.

  NODES-ID        = '3'.
  NODES-TYPE      = NET_CONST-TYPE_3.
  NODES-PARENT_ID = SPACE.
  NODES-LEFT_ID   = SPACE.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-029.                               "Node 3
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-025.          "Text b
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_3.
  NVALS-VAL       = TEXT-026.          "Text c
  APPEND NVALS.

  NODES-ID        = '4'.
  NODES-TYPE      = NET_CONST-TYPE_4.
  NODES-PARENT_ID = '1'.
  NODES-LEFT_ID   = '2'.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-030.                               "Node 4
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-025.          "Text b
  APPEND NVALS.
  NVALS-FL        = NET_CONST-SELECT_NODE.
  NVALS-VAL       = SPACE.
  APPEND NVALS.

  NODES-ID        = '5'.
  NODES-TYPE      = NET_CONST-TYPE_5.
  NODES-PARENT_ID = '2'.
  NODES-LEFT_ID   = SPACE.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-031.                               "Node 5
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-025.          "Text b
  APPEND NVALS.

  NODES-ID        = '6'.
  NODES-TYPE      = NET_CONST-TYPE_6.
  NODES-PARENT_ID = '2'.
  NODES-LEFT_ID   = '5'.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-032.                               "Node 6
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-036.                               "6
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.

  NODES-ID        = '7'.
  NODES-TYPE      = NET_CONST-TYPE_7.
  NODES-PARENT_ID = '2'.
  NODES-LEFT_ID   = '6'.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-033.                               "Node 7
  APPEND NVALS.

  NODES-ID        = '8'.
  NODES-TYPE      = NET_CONST-TYPE_2.
  NODES-PARENT_ID = '3'.
  NODES-LEFT_ID   = SPACE.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-034.                               "Node 8
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.

  NODES-ID        = '9'.
  NODES-TYPE      = NET_CONST-TYPE_3.
  NODES-PARENT_ID = '3'.
  NODES-LEFT_ID   = '8'.
  APPEND NODES.
  NVALS-ID        = NODES-ID.
  NVALS-FL        = NET_CONST-TEXT_INDEX_0.
  NVALS-VAL       = TEXT-035.                               "Node 9
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_1.
  NVALS-VAL       = TEXT-024.          "Text a
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_2.
  NVALS-VAL       = TEXT-025.          "Text b
  APPEND NVALS.
  NVALS-FL        = NET_CONST-TEXT_INDEX_3.
  NVALS-VAL       = TEXT-026.          "Text c
  APPEND NVALS.

ENDFORM.                               "form MAKE_NODES


*---------------------------------------------------------------------*
*       FORM INIT_0100                                                *
*---------------------------------------------------------------------*
*       Initialisieren des Dynpros zum Фndern der Knoten              *
*---------------------------------------------------------------------*
FORM INIT_0100 TABLES NVALS STRUCTURE NET_NVALS
                      ALL_NODES STRUCTURE CHG_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.
  ENDLOOP.

  LOOP AT NVALS.
    FIELD_TAB = NVALS.
    APPEND FIELD_TAB.
  ENDLOOP.

  SORT FIELD_TAB.

ENDFORM.                               "form INIT_0100


*---------------------------------------------------------------------*
*       FORM INIT_0104                                                *
*---------------------------------------------------------------------*
*       Ermitteln der Knotenanordnung                                 *
*---------------------------------------------------------------------*
FORM INIT_0104 TABLES NODES     STRUCTURE CHG_NODES
                      ALL_NODES STRUCTURE CHG_INODES.

  STATUS_TEXT = TEXT-013.              "Positionen ermittelt

* Knotenanordnung ermitteln
  CALL FUNCTION 'CNET_GET_NODES_ORDERED'
       EXPORTING
            STATUS_TEXT       = STATUS_TEXT
       TABLES
            ALL_NODES         = ALL_NODES
       EXCEPTIONS
            INV_WINID         = 01
            NO_BATCH          = 02
            FRONTEND_ERROR    = 03
            INV_COMMUNICATION = 04.

  IF NOT SY-SUBRC IS INITIAL.
    EXIT.
  ENDIF.

  REFRESH NODES.
  LOOP AT ALL_NODES.
    CLEAR NODES.
    MOVE-CORRESPONDING ALL_NODES TO NODES.
    APPEND NODES.
  ENDLOOP.

  SORT NODES BY ID.

ENDFORM.                               "form INIT_0104


*---------------------------------------------------------------------*
*       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 SET_TITLE_BOX                                            *
*---------------------------------------------------------------------*
*       Setzen der Titelbox fќr's Drucken                             *
*---------------------------------------------------------------------*
FORM SET_TITLE_BOX TABLES BOXES STRUCTURE NET_BOXES
                          BVALS STRUCTURE NET_NVALS.

  BOXES-ID       = 'B1'.
  BOXES-BOX_TYPE = NET_CONST-BORDERBOX.
  BOXES-TYPE     = NET_CONST-TYPE_2.   "Rahmentyp 2
  APPEND BOXES.

  BVALS-ID  = BOXES-ID.
  BVALS-FL  = NET_CONST-TEXT_INDEX_0.
  BVALS-VAL = TEXT-009.                "Titel
  APPEND BVALS.
  BVALS-FL  = NET_CONST-BOX_POSITION.
  BVALS-VAL = NET_CONST-TOP_BOX.       "Position oben
  APPEND BVALS.

  CALL FUNCTION 'CNET_MAKE_BOXES'
       TABLES
            BOXES = BOXES
            BVALS = BVALS.

ENDFORM.                               "SET_TITLE_BOX


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0100 OUTPUT                              *
*---------------------------------------------------------------------*
*       Setzen des PF-Status im Dynpro zum Фndern der Knoten          *
*---------------------------------------------------------------------*
MODULE SET_PF-STATUS_0100 OUTPUT.

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

ENDMODULE.                             "module SET_PF-STATUS_0100


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0102 OUTPUT                              *
*---------------------------------------------------------------------*
*       Anzeige aller selektierten Knoten                             *
*---------------------------------------------------------------------*
MODULE SET_PF-STATUS_0102 OUTPUT.

  SET PF-STATUS 'MOD_TAB'.
  SET TITLEBAR '003'.                  "Selektierte Knoten: Anzeigen

ENDMODULE.                             "module SET_PF-STATUS_0104


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0103 OUTPUT                              *
*---------------------------------------------------------------------*
*       Anzeige der Positionen aller Knoten                           *
*---------------------------------------------------------------------*
MODULE SET_PF-STATUS_0103 OUTPUT.

  SET PF-STATUS 'MOD_TAB'.
  SET TITLEBAR '004'.                  "Knotenpositionen: Anzeigen

ENDMODULE.                             "module SET_PF-STATUS_0103


*---------------------------------------------------------------------*
*       MODULE SET_PF-STATUS_0104 OUTPUT                              *
*---------------------------------------------------------------------*
*       Anzeige der Knotenanordnung                                   *
*---------------------------------------------------------------------*
MODULE SET_PF-STATUS_0104 OUTPUT.

  SET PF-STATUS 'MOD_TAB'.
  SET TITLEBAR '005'.                  "Knotenanordnung: Anzeigen

ENDMODULE.                             "module SET_PF-STATUS_0104


*---------------------------------------------------------------------*
*       MODULE MODIFY_TAB_0100 INPUT                                  *
*---------------------------------------------------------------------*
MODULE MODIFY_TAB_0100 INPUT.

  MODIFY FIELD_TAB INDEX ENTRY_ACT.

ENDMODULE.                             "MODIFY_TAB_0100


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0100 INPUT                                     *
*---------------------------------------------------------------------*
*       OK-Code-Verarbeitung fќr Dynpro 100 (Knoten фndern)           *
*---------------------------------------------------------------------*
MODULE OK_CODE_0100 INPUT.

  SAVE_OK_CODE = OK_CODE.
  CLEAR OK_CODE.

  CASE SAVE_OK_CODE.

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

      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN 'ABBR'.
      CLEAR:   NVALS_TAB, FIELD_TAB.
      REFRESH: NVALS_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.                             "OK_CODE_0100


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0102 INPUT                                     *
*---------------------------------------------------------------------*
*       Ok-Code-Verarbeitung fќr Dynpro 102                           *
*---------------------------------------------------------------------*
MODULE OK_CODE_0102 INPUT.

  SAVE_OK_CODE = OK_CODE.
  CLEAR OK_CODE.

  CASE SAVE_OK_CODE.

    WHEN 'ENTR'.                       "Weiter
      SET SCREEN 0.
      LEAVE SCREEN.

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

    WHEN OTHERS.
      DESCRIBE TABLE HIER_NODES_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_0102


*---------------------------------------------------------------------*
*       MODULE OK_CODE_0103 INPUT                                     *
*---------------------------------------------------------------------*
*       Ok-Code-Verarbeitung fќr Dynpro 103                           *
*---------------------------------------------------------------------*
MODULE OK_CODE_0103 INPUT.

  SAVE_OK_CODE = OK_CODE.
  CLEAR OK_CODE.

  CASE SAVE_OK_CODE.

    WHEN 'ENTR'.                       "Weiter
      SET SCREEN 0.
      LEAVE SCREEN.

    WHEN 'ABBR'.                       "Abbrechen
      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
                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
* 003 --> Sel. Knoten: Anz.
* 004 --> Positionen: Anzeigen
* 005 --> Anordnungen: Anzeigen
* 006 --> Demo zum grafischen Hierarchieeditor
* 001 --> Узлы: изменение
* 003 --> Выбранные узлы: изменение
* 004 --> Позиции: просмотр
* 005 --> Расположение: просмотр
* 006 --> Демонстр. пример к графическому редактору иерархии

*Text elements
*----------------------------------------------------------
* 027 Node 1
* 028 Node 2
* 029 Node 3
* 030 Node 4
* 031 Node 5
* 032 Node 6
* 033 Node 7
* 034 Node 8
* 035 Node 9
* 036 6
* 037 Legend
* 038 Footer
* 039 No nodes selected
* 040 No graphic objects exist.
* 026 Text c
* 001 Node inserted
* 002 Node copied
* 003 Node/link deleted
* 004 Link inserted
* 005 Node changed
* 007 Selections determined
* 008 Positions determined
* 009 Title
* 013 Requests determined
* 017 Type 1
* 018 Type 2
* 019 Type 3
* 020 Type 4
* 021 Type 5
* 022 Type 6
* 023 Type 7
* 024 Text a
* 025 Text b


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



screen_0104.txt
 Description:
Screen 104

Download
 Filename:  screen_0104.txt
 Filesize:  2.36 KB
 Downloaded:  1925 Time(s)


screen_0103.txt
 Description:
Screen 103

Download
 Filename:  screen_0103.txt
 Filesize:  2.5 KB
 Downloaded:  1787 Time(s)


screen_0102.txt
 Description:
Screen 102

Download
 Filename:  screen_0102.txt
 Filesize:  1.92 KB
 Downloaded:  1997 Time(s)


screen_0100.txt
 Description:
Screen 100

Download
 Filename:  screen_0100.txt
 Filesize:  3.35 KB
 Downloaded:  1878 Time(s)

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.