Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

CNTB_ERROR_FCODE while processing alv tree

former_member219850
Participant
0 Kudos
REPORT yyidoc_automation.
*REPORT  Z_ALV_TREE                    .
****TYPES

INCLUDE yyyyidoc_automation_dd.

*INCLUDE yyz_alv_tree_dd.



SELECTION-SCREEN BEGIN OF BLOCK b1.

SELECT-OPTIONS: s_mestyp FOR edidc-mestyp,

                s_credat FOR edidc-credat OBLIGATORY.

SELECTION-SCREEN SKIP 1.

PARAMETERS: p_check AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK b1.





START-OF-SELECTION.

  IF p_check EQ gc_x.

    PERFORM ztable_update.

*  ELSE.

*    PERFORM get_ztable.

  ENDIF.

CALL SCREEN 100.

END-OF-SELECTION.



****

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

*&      Module  STATUS_0100  OUTPUT

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

MODULE status_0100 OUTPUT.

  REFRESH : gt_fieldcatalog, it_exit1.

  SET PF-STATUS 'ALVTREE'.

  SET TITLEBAR 'IDOC STATUS'.

*  IF tree1 IS INITIAL.

  PERFORM get_ztable.

*  PERFORM free_objects.

* CATALOG

  PERFORM fo_fieldcat.

* CREATE TREE

  PERFORM create_tree.

* create Hierarchy-header

  PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

* create info-table for html-header

  PERFORM build_comment USING

                 lt_list_commentary.

* repid for saving variants

  ls_variant-report = sy-repid.



* Creation of ALV

  CALL METHOD tree1->set_table_for_first_display

    EXPORTING

      is_hierarchy_header = l_hierarchy_header

      it_list_commentary  = lt_list_commentary

      i_save              = 'A'

      is_variant          = ls_variant

    CHANGING

      it_outtab           = it_exit1

      it_fieldcatalog     = gt_fieldcatalog.

* create hierarchy

  PERFORM create_hierarchy.

* register events

  PERFORM register_events.

*  ENDIF.

  CALL METHOD cl_gui_cfw=>flush.

ENDMODULE.                 " STATUS_0100  OUTPUT

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

*&      Module  USER_COMMAND_0100  INPUT

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

MODULE user_command_0100 INPUT.

  CLEAR ok_code.

  ok_code = sy-ucomm.

  CASE ok_code.

    WHEN 'EXIT' OR 'BACK' .

      PERFORM exit_program.

    WHEN 'BACK1'.

      CALL METHOD tree1->free.

      LEAVE TO SCREEN 0.

    WHEN 'REPROCESS'.

      PERFORM get_selected_item.



    WHEN 'REFRESH'.

      PERFORM refresh.

      REFRESH gt_docnum2.

      CALL SCREEN 100.

    WHEN OTHERS.

      CALL METHOD cl_gui_cfw=>dispatch.

  ENDCASE.

  CLEAR ok_code.

  CALL METHOD cl_gui_cfw=>flush.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

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

*&      Form  exit_program

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

FORM exit_program.

  CALL METHOD tree1->free.

  LEAVE TO SCREEN 0.

ENDFORM.                    " exit_program

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

*&      Form  fo_fieldcat

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

FORM fo_fieldcat.

  DATA: ls_fieldcatalog TYPE lvc_s_fcat.

****MAIN NODE

  ls_fieldcatalog-col_pos = '1'.

  ls_fieldcatalog-fieldname = 'NODE_MAIN'.

  ls_fieldcatalog-tabname = 'IT_EXIT'.

  ls_fieldcatalog-coltext  = 'Main Node'.

  ls_fieldcatalog-key = 'X'.

  ls_fieldcatalog-just = 'L'.

  ls_fieldcatalog-no_out = 'X'.

  ls_fieldcatalog-outputlen = '50'.

  APPEND  ls_fieldcatalog TO gt_fieldcatalog.

  CLEAR ls_fieldcatalog.



**** idoc number

  ls_fieldcatalog-col_pos = '2'.

  ls_fieldcatalog-fieldname = 'IDOC_NUM'.

  ls_fieldcatalog-tabname = 'IT_EXIT'.

  ls_fieldcatalog-coltext  = 'Idoc Number'.

*  ls_fieldcatalog-key = 'X'.

  ls_fieldcatalog-just = 'L'.

*  ls_fieldcatalog-no_out = 'X'.

*  ls_fieldcatalog-hotspot = 'X'.

  ls_fieldcatalog-outputlen = '30'.

  APPEND  ls_fieldcatalog TO gt_fieldcatalog.

  CLEAR ls_fieldcatalog.



* Material Number

  ls_fieldcatalog-col_pos = '3'.

  ls_fieldcatalog-fieldname = 'NODE_N01'.

  ls_fieldcatalog-tabname = 'IT_EXIT'.

  ls_fieldcatalog-coltext  = 'Material Number'.

*  ls_fieldcatalog-key = 'X'.

  ls_fieldcatalog-just = 'L'.

*  ls_fieldcatalog-no_out = 'X'.

*  ls_fieldcatalog-hotspot = 'X'.

  ls_fieldcatalog-outputlen = '30'.

  APPEND  ls_fieldcatalog TO gt_fieldcatalog.

  CLEAR ls_fieldcatalog.

* Customer number

  ls_fieldcatalog-col_pos = '4'.

  ls_fieldcatalog-fieldname = 'NODE_N02'.

  ls_fieldcatalog-tabname = 'IT_EXIT'.

  ls_fieldcatalog-coltext  = 'Customer number'.

*  ls_fieldcatalog-key = 'X'.

  ls_fieldcatalog-just = 'L'.

*  ls_fieldcatalog-no_out = 'X'.

  ls_fieldcatalog-outputlen = '30'.

  APPEND  ls_fieldcatalog TO gt_fieldcatalog.

*  CLEAR LS_FIELDCATALOG.

* Vendor Number4

  ls_fieldcatalog-col_pos = '4'.

  ls_fieldcatalog-fieldname = 'NODE_N03'.

  ls_fieldcatalog-tabname = 'IT_EXIT'.

  ls_fieldcatalog-coltext  = 'Vendor Number'.

*  ls_fieldcatalog-key = 'X'.

  ls_fieldcatalog-just = 'L'.

*  ls_fieldcatalog-no_out = 'X'.

  ls_fieldcatalog-outputlen = '30'.

  APPEND  ls_fieldcatalog TO gt_fieldcatalog.

  CLEAR ls_fieldcatalog.

ENDFORM.                    " fo_fieldcat

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

*&      Form  create_tree

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

FORM create_tree.

* create container for alv-tree

  DATA: l_tree_container_name(30) TYPE c.

*        l_custom_container        TYPE REF TO cl_gui_custom_container.

  l_tree_container_name = 'TREE1'.

  IF l_custom_container IS INITIAL.

    CREATE OBJECT l_custom_container

      EXPORTING

        container_name              = l_tree_container_name

      EXCEPTIONS

        cntl_error                  = 1

        cntl_system_error           = 2

        create_error                = 3

        lifetime_error              = 4

        lifetime_dynpro_dynpro_link = 5.

    IF sy-subrc <> 0.

      MESSAGE x208(00) WITH 'ERROR'.

    ENDIF.

  ENDIF.

* create tree control

  IF tree1 IS INITIAL.

    CREATE OBJECT tree1

      EXPORTING

        parent                      = l_custom_container

        node_selection_mode         = cl_gui_column_tree=>node_sel_mode_multiple

        item_selection              = 'X'

        no_html_header              = ''

        no_toolbar                  = ''

      EXCEPTIONS

        cntl_error                  = 1

        cntl_system_error           = 2

        create_error                = 3

        lifetime_error              = 4

        illegal_node_selection_mode = 5

        failed                      = 6

        illegal_column_name         = 7.

    IF sy-subrc <> 0.

      MESSAGE x208(00) WITH 'ERROR'.                        "#EC NOTEXT

    ENDIF.

  ENDIF.



****

ENDFORM.                    " create_tree

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

*&      Form  build_hierarchy_header

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

FORM build_hierarchy_header CHANGING

                               p_hierarchy_header TYPE treev_hhdr.

  CLEAR p_hierarchy_header.

  p_hierarchy_header-heading = 'Message Types'.

  p_hierarchy_header-width = 70.

  p_hierarchy_header-width_pix = ''.

ENDFORM.                    " build_hierarchy_header

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

*&      Form  build_comment

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

*       text

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

*      -->P_LT_LIST_COMMENTARY  text

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

FORM build_comment USING

      pt_list_commentary TYPE slis_t_listheader.

  DATA: ls_line  TYPE slis_listheader, text(60) TYPE c.

  DATA  url(132).

  DATA picture TYPE REF TO cl_gui_picture.

  REFRESH:pt_list_commentary.

  CLEAR ls_line.

  ls_line-typ  = 'H'.

  ls_line-info = 'Number Of Counts'."sy-title.

  APPEND ls_line TO pt_list_commentary.



  IF NOT gv_matcnt IS INITIAL .

    CLEAR ls_line.

    ls_line-key = 'Matmas:'.

    ls_line-info = gv_matcnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.

  IF NOT gv_crecnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Cremas:'.

    ls_line-info = gv_crecnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.



  IF NOT gv_debcnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Debmas:'.

    ls_line-info = gv_debcnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.



  IF NOT gv_adrcnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Adrmas:'.

    ls_line-info = gv_adrcnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.



  IF NOT gv_maqcnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Matqm:'.

    ls_line-info = gv_maqcnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.



  IF NOT gv_procnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Project:'.

    ls_line-info = gv_procnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.



  IF NOT gv_clfcnt IS INITIAL.

    CLEAR ls_line.

    ls_line-key = 'Clfmas:'.

    ls_line-info = gv_clfcnt."sy-uname.

    ls_line-typ  = 'S'.

    APPEND ls_line TO pt_list_commentary.

  ENDIF.





ENDFORM.                    " build_comment

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

*&      Form  create_hierarchy

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

FORM create_hierarchy.

* add data to tree

  DATA: l_key_main      TYPE lvc_nkey,

        l_key_node1     TYPE lvc_nkey,

        l_key_node2     TYPE lvc_nkey,

        l_key_node3     TYPE lvc_nkey,

        l_node          TYPE lvc_value,

        p_node_key      TYPE lvc_nkey,

        p_node_key2     TYPE lvc_nkey,

        p_aux           TYPE it,

        p_node_cremas   TYPE lvc_nkey,

        p_node_cremas2  TYPE lvc_nkey,

        p_node_cremas3  TYPE lvc_nkey,

        p_node_debmas   TYPE lvc_nkey,

        p_node_debmas2  TYPE lvc_nkey,

        p_node_clfmas   TYPE lvc_nkey,

        p_node_clfmas2  TYPE lvc_nkey,

        p_node_adrmas   TYPE lvc_nkey,

        p_node_adrmas2  TYPE lvc_nkey,

        p_node_matqm    TYPE lvc_nkey,

        p_node_matqm2   TYPE lvc_nkey,

        p_node_project  TYPE lvc_nkey,

        p_node_project2 TYPE lvc_nkey.



  DATA: l_node_text TYPE lvc_value,

        lv_var      TYPE char10,

        lv_text     TYPE lvc_value,

        lv_count    TYPE i,

        lv_count2   TYPE lvc_value,

        lv_msgid    TYPE t100-arbgb,

        lv_msgno    TYPE t100-msgnr.

  DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.

  CREATE OBJECT l_event_receiver.

* set item-layout

  DATA: lt_item_layout TYPE lvc_t_layi,

        ls_item_layout TYPE lvc_s_layi.

  ls_item_layout-fieldname = tree1->c_hierarchy_column_name.

  ls_item_layout-class   = cl_gui_column_tree=>item_class_text.

*  ls_item_layout-editable = 'X'.

  APPEND ls_item_layout TO lt_item_layout.

*  p_aux-node_n01 = '92111'.



  " MATMAS

  IF NOT gt_matmas_n2 IS INITIAL.

    IF NOT gv_matcnt IS INITIAL.

      CALL METHOD tree1->add_node

        EXPORTING

          i_relat_node_key = ''

          i_relationship   = cl_gui_column_tree=>relat_last_child

*         IS_OUTTAB_LINE   = P_AUX

          i_node_text      = 'MATMAS' "L_NODE_TEXT

          it_item_layout   = lt_item_layout

        IMPORTING

          e_new_node_key   = p_node_key.



* Matmas Loop



      LOOP AT gt_matmas_n2 INTO gs_matmas_n2.

        lv_msgid = gs_matmas_n2-msgid.

        lv_msgno = gs_matmas_n2-msgno.

        CALL FUNCTION 'MESSAGE_PREPARE'

          EXPORTING

            language               = sy-langu

            msg_id                 = lv_msgid

            msg_no                 = lv_msgno

*           msg_var1               = "<ts_matmas>-msgv1

*           msg_var2               = "<ts_matmas>-msgv2

*           msg_var3               = "<ts_matmas>-msgv3

*           msg_var4               = "<ts_matmas>-msgv4

          IMPORTING

            msg_text               = lv_text

          EXCEPTIONS

            function_not_completed = 1

            message_not_found      = 2

            OTHERS                 = 3.

        IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

        ENDIF.



        CALL METHOD tree1->add_node

          EXPORTING

            i_relat_node_key = p_node_key

            i_relationship   = cl_gui_column_tree=>relat_last_child

*           IS_OUTTAB_LINE   = P_AUX

            i_node_text      = lv_text

            it_item_layout   = lt_item_layout

          IMPORTING

            e_new_node_key   = p_node_key2.



        LOOP AT gt_matmas_n INTO  gs_matmas_n WHERE msgno = gs_matmas_n2-msgno.

          lv_count = lv_count + 1.

          lv_count2 = lv_count.

          READ TABLE gt_matnr INTO gs_matnr WITH KEY docnum = gs_matmas_n-docnum.

          IF sy-subrc EQ 0.

            p_aux-idoc_num = gs_matnr-docnum.

            p_aux-node_n01 = gs_matnr-matnr.

            CALL METHOD tree1->add_node

              EXPORTING

                i_relat_node_key = p_node_key2

                i_relationship   = cl_gui_column_tree=>relat_last_child

                is_outtab_line   = p_aux

                i_node_text      = lv_count2

                it_item_layout   = lt_item_layout.

            CLEAR: lv_count2,p_aux.

          ENDIF.



        ENDLOOP.

        CLEAR : lv_count2,lv_count.

      ENDLOOP.

    ENDIF.

  ENDIF.



  SORT gt_edid4 BY docnum.

*  SORT gt_edidc BY docnum.

  gt_edids_n2[] = gt_edids_n[].

  SORT gt_edids_n2 BY stamid stamno stapa1 stapa2 stapa3 stapa4.

  DELETE ADJACENT DUPLICATES FROM gt_edids_n2 COMPARING stamid stamno stapa1 stapa2 stapa3 stapa4.



* cremas

  IF NOT gv_crecnt IS INITIAL.

*    IF gv_creflag2 NE gc_x.

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'CREMAS' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_cremas.



    CLEAR lv_count2.



* Cremas loop

    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1LFA1M'.

          CLEAR gv_text.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_cremas

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_cremas2.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.



            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1LFA1M'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                p_aux-node_n03 = gs_edid4-sdata+3(10).

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_cremas2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.

*  ENDIF.



* debmas loop

  IF NOT gv_debcnt IS INITIAL.

*    IF gv_debflag2 NE gc_x.

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'DEBMAS' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_debmas.



    CLEAR lv_count2.

    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1KNA1M'.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_debmas

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_debmas2.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.

            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1KNA1M'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                p_aux-node_n02 = gs_edid4-sdata+3(10).

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_debmas2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.



* Clfmas Loop

  IF NOT gv_clfcnt IS INITIAL.

*    IF gv_clfflag2 NE gc_x.

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'CLFMAS' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_clfmas.



    CLEAR lv_count2.



    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1OCLFM'.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_clfmas

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_clfmas2.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.

            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1OCLFM'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_clfmas2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.



* adrmas loop

  IF NOT gv_adrcnt IS INITIAL.

*    IF gv_adrflag2 NE gc_x.

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'ADRMAS' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_adrmas.



    CLEAR lv_count2.



    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1ADRMAS'.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_adrmas

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_adrmas2.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.

            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1ADRMAS'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_adrmas2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.



* Matqm loop

  IF NOT gv_maqcnt IS INITIAL.

*    IF gv_maqflag2 NE gc_x.

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'MATQM' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_matqm.



    CLEAR lv_count2.



    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1BP1001004_QMAT'.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_matqm

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_matqm2.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.

            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1BP1001004_QMAT'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_matqm2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.



* Project loop

  IF NOT gv_procnt IS INITIAL.

*    IF gv_proflag2 NE gc_x .

    CALL METHOD tree1->add_node

      EXPORTING

        i_relat_node_key = ''

        i_relationship   = cl_gui_column_tree=>relat_last_child

*       IS_OUTTAB_LINE   = P_AUX

        i_node_text      = 'PROJECT' "L_NODE_TEXT

        it_item_layout   = lt_item_layout

      IMPORTING

        e_new_node_key   = p_node_project.



    CLEAR lv_count2.



    LOOP AT gt_edids_n2 INTO gs_edids_n2.

      READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n2-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        IF gs_edid4-segnam = 'E1BP2054_PROJDEFINITION'.

          PERFORM read_text.

          CALL METHOD tree1->add_node

            EXPORTING

              i_relat_node_key = p_node_project

              i_relationship   = cl_gui_column_tree=>relat_last_child

*             IS_OUTTAB_LINE   = P_AUX

              i_node_text      = gv_text

              it_item_layout   = lt_item_layout

            IMPORTING

              e_new_node_key   = p_node_project.



          LOOP AT gt_edids_n INTO gs_edids_n WHERE  stamid = gs_edids_n2-stamid AND

                                                stamno = gs_edids_n2-stamno AND

                                                stapa1 = gs_edids_n2-stapa1 AND

                                                stapa2 = gs_edids_n2-stapa2 AND

                                                stapa3 = gs_edids_n2-stapa3 AND

                                                stapa4 = gs_edids_n2-stapa4.

            READ TABLE gt_edid4 INTO gs_edid4 WITH KEY  docnum = gs_edids_n-docnum BINARY SEARCH.

            IF sy-subrc EQ 0.

              IF gs_edid4-segnam = 'E1BP2054_PROJDEFINITION'.

                lv_count = lv_count + 1.

                lv_count2 = lv_count.

                p_aux-idoc_num = gs_edid4-docnum.

                CALL METHOD tree1->add_node

                  EXPORTING

                    i_relat_node_key = p_node_project2

                    i_relationship   = cl_gui_column_tree=>relat_last_child

                    is_outtab_line   = p_aux

                    i_node_text      = lv_count2

                    it_item_layout   = lt_item_layout.

              ENDIF.

            ENDIF.

            CLEAR: gs_edid4,p_aux.

          ENDLOOP.

          CLEAR : lv_count2,lv_count.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    ENDIF.

  ENDIF.



* this method must be called to send the data to the frontend

  CALL METHOD tree1->frontend_update.

*****

ENDFORM.                    " create_hierarchy

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

*&      Form  register_events

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

FORM register_events.

* define the events which will be passed to the backend

  DATA: lt_events TYPE cntl_simple_events,

        l_event   TYPE cntl_simple_event.

*  DATA: g_application TYPE REF TO lcl_application.

* define the events which will be passed to the backend

  l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_header_click.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.

  APPEND l_event TO lt_events.

  l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.

  APPEND l_event TO lt_events.



*  l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.

*  APPEND l_event TO lt_events.

*  l_event-eventid = cl_gui_column_tree=>eventid_item_double_click.

*  APPEND l_event TO lt_events.



  CALL METHOD tree1->set_registered_events

    EXPORTING

      events                    = lt_events

    EXCEPTIONS

      cntl_error                = 1

      cntl_system_error         = 2

      illegal_event_combination = 3.

  IF sy-subrc <> 0.

    MESSAGE x208(00) WITH 'ERROR'.                          "#EC NOTEXT

  ENDIF.

* set Handler

  DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.

  CREATE OBJECT l_event_receiver.

*  CREATE OBJECT gv_rcvr.

  SET HANDLER l_event_receiver->handle_node_ctmenu_request

                                                        FOR tree1.

  SET HANDLER l_event_receiver->handle_node_ctmenu_selected

                                                        FOR tree1.

  SET HANDLER l_event_receiver->handle_item_ctmenu_request

                                                        FOR tree1.

  SET HANDLER l_event_receiver->handle_item_ctmenu_selected

                                                        FOR tree1.

  SET HANDLER:

    lcl_eventhandler=>handle_item_double_click FOR tree1.



*  SET HANDLER:

**    lcl_eventhandler=>handle_node_double_click FOR tree1,

*    lcl_eventhandler=>handle_item_double_click FOR tree1.

*  SET HANDLER l_event_receiver->handle_node_double_click FOR tree1.

*  SET HANDLER l_event_receiver->RIGHT_CLICK FOR tree1.

*  SET HANDLER gv_rcvr->hotspot_click FOR tree1.

ENDFORM.                    " register_events

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

*&      Form  add_node_main

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

FORM add_node      USING       p_aux TYPE it

                               p_relat_key TYPE lvc_nkey

                               p_node TYPE lvc_value

                     CHANGING  p_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,

        ls_sflight  TYPE sflight.

* set item-layout

  DATA: lt_item_layout TYPE lvc_t_layi,

        ls_item_layout TYPE lvc_s_layi.

*  ls_item_layout-t_image = '<at:var at:name="3P" />'.

  ls_item_layout-fieldname = tree1->c_hierarchy_column_name.

  ls_item_layout-style   =

                        cl_gui_column_tree=>style_intensifd_critical.

  APPEND ls_item_layout TO lt_item_layout.

* add node

  l_node_text =  p_node.

  CALL METHOD tree1->add_node

    EXPORTING

      i_relat_node_key = p_relat_key

      i_relationship   = cl_gui_column_tree=>relat_last_child

      i_node_text      = l_node_text

      is_outtab_line   = p_aux

      it_item_layout   = lt_item_layout

    IMPORTING

      e_new_node_key   = p_node_key.

*****

ENDFORM.                    " add_node

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

*&      Form  add_complete_line

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

FORM add_complete_line USING   p_aux TYPE it

                               p_relat_key TYPE lvc_nkey

                               p_node TYPE lvc_value

                     CHANGING  p_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value.

* set item-layout

  DATA: lt_item_layout TYPE lvc_t_layi,

        ls_item_layout TYPE lvc_s_layi.

  ls_item_layout-fieldname = tree1->c_hierarchy_column_name.

  ls_item_layout-class   = cl_gui_column_tree=>item_class_text.

*  ls_item_layout-editable = 'X'.

  APPEND ls_item_layout TO lt_item_layout.

  l_node_text =  p_node.

  CALL METHOD tree1->add_node

    EXPORTING

      i_relat_node_key = p_relat_key

      i_relationship   = cl_gui_column_tree=>relat_last_child

      is_outtab_line   = p_aux

      i_node_text      = l_node_text

      it_item_layout   = lt_item_layout

    IMPORTING

      e_new_node_key   = p_node_key.

ENDFORM.                    " add_complete_line

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

*&      Form  add_node_main

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

FORM add_node_main USING       p_aux TYPE it

                               p_relat_key TYPE lvc_nkey

                               p_node TYPE lvc_value

                     CHANGING  p_node_key TYPE lvc_nkey.

  DATA: l_node_text TYPE lvc_value,

        ls_sflight  TYPE sflight.

* set item-layout

  DATA: lt_item_layout TYPE lvc_t_layi,

        ls_item_layout TYPE lvc_s_layi.

*  ls_item_layout-t_image = '<at:var at:name="3P" />'.

  ls_item_layout-fieldname = tree1->c_hierarchy_column_name.

  ls_item_layout-style   =

                        cl_gui_column_tree=>style_intensifd_critical.

  APPEND ls_item_layout TO lt_item_layout.

* add node

  l_node_text =  p_node.

  CALL METHOD tree1->add_node

    EXPORTING

      i_relat_node_key = p_relat_key

      i_relationship   = cl_gui_column_tree=>relat_last_child

      i_node_text      = l_node_text

      is_outtab_line   = p_aux

      it_item_layout   = lt_item_layout

    IMPORTING

      e_new_node_key   = p_node_key.

*****

ENDFORM.                    " add_node_main

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

*&      Form  GET_DATA

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM get_data.

  DATA: lv_msgno    LIKE t100-msgnr,

        lv_date(10),

        lv_time(8),

        lv_cnt      TYPE i.



  CLEAR:    t_report.

  REFRESH:  t_report.



  SELECT docnum credat mestyp

        FROM edidc

        INTO TABLE gt_edidc

        WHERE status = '51' AND

              mestyp IN s_mestyp AND

              test = '' AND

              credat IN s_credat.



  IF sy-subrc EQ 0.



  ENDIF.



  IF NOT gt_edidc IS INITIAL.

*    SELECT docnum segnam dtint2 sdata

*           FROM edid4 CLIENT SPECIFIED

*           INTO TABLE gt_edid4

*           FOR ALL ENTRIES IN gt_edidc

*           WHERE docnum = gt_edidc-docnum AND

*                 segnam IN gr_segnam.

*    IF sy-subrc EQ 0.

*    ENDIF.



    REFRESH: gt_edids, gt_edids3.



* Fetch latest 51 status from DB

    LOOP AT gt_edidc ASSIGNING <ts_edidc>.

      SELECT mandt docnum logdat logtim countr credat cretim status uname

             repid routid stacod statxt

             segnum segfld stapa1 stapa2 stapa3 stapa4 statyp stamqu

             stamid stamno tid  appl_log _dataaging

      FROM edids

      INTO TABLE gt_edids3 UP TO 1 ROWS

      WHERE docnum = <ts_edidc>-docnum AND

            status = '51'

      ORDER BY credat DESCENDING  cretim DESCENDING countr DESCENDING.

      IF sy-subrc EQ 0.

        APPEND LINES OF gt_edids3 TO gt_edids.

      ENDIF.

      REFRESH gt_edids3.

    ENDLOOP.



  ENDIF.



*  IF  NOT gt_edid4 IS INITIAL.

*    LOOP AT gt_edid4 INTO gs_edid4.

*      gs_matnr-docnum = gs_edid4-docnum.

*      gs_matnr-matnr = gs_edid4-sdata+3(18).

*      APPEND gs_matnr TO gt_matnr.

*      CLEAR gs_matnr.

*    ENDLOOP.

*  ENDIF.



** 'MATMAS' Logic

*  IF NOT gt_edids IS INITIAL.

*    IF gv_matflag = 'X'.

*      SELECT lognumber

*            object

*            subobject

*            extnumber

*            aldate

*            altime

*            aluser

*     FROM balhdr

*     INTO TABLE t_balhdr

*     FOR ALL ENTRIES IN gt_edids

*     WHERE lognumber = gt_edids-appl_log AND

*           object EQ 'MATU' AND

*           aldate IN s_credat.

** Delete previous logs and consider just the last one for each IDOC

*      IF sy-subrc = 0.

*        SORT t_balhdr BY extnumber ASCENDING lognumber DESCENDING.

*        DELETE ADJACENT DUPLICATES FROM t_balhdr COMPARING extnumber.

*      ENDIF.

*    ENDIF.

*  ENDIF.

*

*  IF NOT t_balhdr[] IS INITIAL.

*    LOOP AT t_balhdr ASSIGNING <ts_balhdr>.

**   Get log

*      CALL FUNCTION 'APPL_LOG_READ_DB'

*        EXPORTING

*          object           = '*'

*          subobject        = '*'

*          external_number  = <ts_balhdr>-extnumber

*          program_name     = '*'

*          transaction_code = '*'

*        TABLES

*          messages         = t_message.

*      IF sy-subrc = 0.

**     Delete previous attempts

*        DELETE t_message WHERE lognumber NE <ts_balhdr>-lognumber.

**     Delete messages that aren't error

*        DELETE t_message WHERE msgty     NE 'E'.

*      ENDIF.

**      ASSIGN ts_message2 TO <ts_message2>.

**      LOOP AT t_message ASSIGNING <ts_message>.

**        MOVE-CORRESPONDING <ts_message> TO <ts_message2>.

**        APPEND <ts_message2> TO t_message2.

**      ENDLOOP.

*      APPEND LINES OF t_message TO t_message2.

*      REFRESH: t_message.

*    ENDLOOP.

*

*    t_matmas[] = t_message2[].

*    SORT t_matmas[] BY msgno.

*    DELETE ADJACENT DUPLICATES FROM t_matmas[] COMPARING msgno.

*  ENDIF.





ENDFORM.

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

*&      Form  READ_TEXT

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM read_text .



  CALL FUNCTION 'FORMAT_MESSAGE'

    EXPORTING

      id        = gs_edids_n2-stamid

      lang      = '-D'

      no        = gs_edids_n2-stamno

      v1        = gs_edids_n2-stapa1

      v2        = gs_edids_n2-stapa2

      v3        = gs_edids_n2-stapa3

      v4        = gs_edids_n2-stapa4

    IMPORTING

      msg       = gv_text "gs_cremas-msg

    EXCEPTIONS

      not_found = 1

      OTHERS    = 2.

  IF sy-subrc <> 0.

* Implement suitable error handling here

  ENDIF.

ENDFORM.

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

*&      Form  FIND_OCCUR

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM find_occur.

  DATA: lv_cnt TYPE i.

  CLEAR : gv_matflag,gv_creflag,gv_debflag,gv_clfflag,gv_maqflag,gv_proflag.

  FIND ALL OCCURRENCES OF 'MATMAS' IN TABLE s_mestyp

          RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_matflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'CREMAS' IN TABLE s_mestyp

          RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_creflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'DEBMAS' IN TABLE s_mestyp

          RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_debflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'CLFMAS' IN TABLE s_mestyp

        RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_clfflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'MATQM' IN TABLE s_mestyp

          RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_maqflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'PROJECT' IN TABLE s_mestyp

        RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_proflag = gc_x.

  ENDIF.



  FIND ALL OCCURRENCES OF 'ADRMAS' IN TABLE s_mestyp

        RESULTS tbl_tab1_result IN CHARACTER MODE.

  IF sy-subrc EQ 0.

    gv_adrflag = gc_x.

  ENDIF.



ENDFORM.

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

*&      Form  GET_SELECTED_ITEM

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM get_selected_item.



  DATA:   e_outtab_line TYPE char255,

          lt_nkey       TYPE lvc_t_nkey,

          lwa_nkey      TYPE lvc_nkey,

          lvc_fname     TYPE lvc_fname,

          lvc_value     TYPE lvc_value,

          lv_var(16),

          gw_status     TYPE bdidocstat,

          gt_status     TYPE TABLE OF bdidocstat,

          lv_doc        TYPE  edi_docnum,

          lvc_nkey      TYPE lvc_nkey,



          lv_idoc       TYPE edi_docnum.







  RANGES    lt_rspar      FOR bdidocs-docnum. "TYPE TABLE OF rsparams,

*          ls_rspar      LIKE LINE OF lt_rspar.



  CALL METHOD tree1->get_selected_item

    IMPORTING

      e_selected_node = lvc_nkey

      e_fieldname     = lvc_fname.



*  LOOP AT lt_nkey INTO lwa_nkey.

*    CALL METHOD tree1->get_outtab_line

*      EXPORTING

*        i_node_key    = lwa_nkey

*      IMPORTING

**       E_OUTTAB_     =

*        e_node_text   = lvc_value

*        e_outtab_line = e_outtab_line.

*    gs_docnum-docnum = e_outtab_line+15(16).

*    APPEND gs_docnum TO gt_docnum.

*    APPEND gs_docnum TO gt_docnum2.

*    CLEAR gs_docnum.

*  ENDLOOP.



  CALL METHOD tree1->get_outtab_line

    EXPORTING

      i_node_key    = lvc_nkey

    IMPORTING

*     E_OUTTAB_     =

      e_node_text   = lvc_value

      e_outtab_line = e_outtab_line.



  lv_idoc =  e_outtab_line+15(16).

  gs_docnum2-docnum = lv_idoc.

  APPEND gs_docnum2 TO gt_docnum2.

  CLEAR gs_docnum2.

  PERFORM bdc_begin USING 'RBDMON00' '1100'.

  PERFORM bdc_valu  USING: 'BDC_CURSOR' 'SX_UPDDA-HIGH',

                           'BDC_OKCODE' '=CRET',

                           'SX_DOCNU-LOW' lv_idoc,

                           'SX_CRETI-LOW' '00:00:00',

                           'SX_CRETI-HIGH' '00:00:00',

                           'SX_UPDDA-LOW' '',

                           'SX_UPDDA-HIGH' ''.



  CALL TRANSACTION 'BD87' USING t_bdcdata MODE 'E'.

  CALL METHOD cl_gui_cfw=>dispatch.

  REFRESH gt_docnum.



ENDFORM.

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

*&      Form  BDC_BEGIN

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

*       text

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

*      -->P_3146   text

*      -->P_3147   text

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

FORM bdc_begin  USING rv_program rv_screen.

  DATA: s_bdcdata TYPE bdcdata.



  s_bdcdata-program = rv_program.

  s_bdcdata-dynpro  = rv_screen.

  s_bdcdata-dynbegin = gc_x.

  APPEND s_bdcdata TO t_bdcdata.





ENDFORM.

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

*&      Form  BDC_VALU

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

*       text

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

*      -->P_3151   text

*      -->P_3152   text

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

FORM bdc_valu  USING rv_fnam rv_fval.

  DATA: s_bdcdata TYPE bdcdata.



  s_bdcdata-fnam = rv_fnam.

  s_bdcdata-fval = rv_fval.

  APPEND s_bdcdata TO t_bdcdata.



ENDFORM.

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

*&      Form  REFRESH

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM refresh.



  IF NOT gt_docnum2 IS INITIAL.

    LOOP AT gt_docnum2 INTO gs_docnum2.

      SELECT mandt docnum logdat logtim countr credat cretim status uname

                 repid routid stacod statxt

                 segnum segfld stapa1 stapa2 stapa3 stapa4 statyp stamqu

                 stamid stamno tid  appl_log _dataaging

          FROM edids

          INTO TABLE gt_edids3 UP TO 1 ROWS

          WHERE docnum = gs_docnum2-docnum AND

                status = '51'

          ORDER BY credat DESCENDING cretim DESCENDING countr DESCENDING.

      IF sy-subrc EQ 0.

        READ TABLE gt_edids3 INTO gs_edids3 WITH KEY docnum = gs_docnum2-docnum.

        IF sy-subrc EQ 0.

          IF gs_edids3-status NE '51'.

*          DELETE FROM yyidoc_monitor WHERE docnum = gs_docnum2-docnum.

            DELETE FROM yyidoc_monitor WHERE  credat = gs_edids3-credat AND

                                              docnum =  gs_edids3-docnum.

            COMMIT WORK AND WAIT.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDLOOP.

*    PERFORM get_ztable.

  ELSE.

    MESSAGE 'Reprocess IDOCS' TYPE 'I' DISPLAY LIKE 'E'.



  ENDIF.



ENDFORM.

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

*&      Form  MATMAS

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM matmas.



* 'MATMAS' Logic

  IF NOT gt_edids IS INITIAL.

    SELECT lognumber

          object

          subobject

          extnumber

          aldate

          altime

          aluser

   FROM balhdr

   INTO TABLE t_balhdr

   FOR ALL ENTRIES IN gt_edids

   WHERE lognumber = gt_edids-appl_log AND

         object EQ 'MATU' AND

         aldate IN s_credat.

* Delete previous logs and consider just the last one for each IDOC

    IF sy-subrc = 0.

      SORT t_balhdr BY extnumber ASCENDING lognumber DESCENDING.

      DELETE ADJACENT DUPLICATES FROM t_balhdr COMPARING extnumber.

    ENDIF.

  ENDIF.



  IF NOT t_balhdr[] IS INITIAL.

    LOOP AT t_balhdr ASSIGNING <ts_balhdr>.

*   Get log

      CALL FUNCTION 'APPL_LOG_READ_DB'

        EXPORTING

          object           = '*'

          subobject        = '*'

          external_number  = <ts_balhdr>-extnumber

          program_name     = '*'

          transaction_code = '*'

        TABLES

          messages         = t_message.

      IF sy-subrc = 0.

*     Delete previous attempts

        DELETE t_message WHERE lognumber NE <ts_balhdr>-lognumber.

*     Delete messages that aren't error

        DELETE t_message WHERE msgty     NE 'E'.

      ENDIF.

      APPEND LINES OF t_message TO t_message2.

      REFRESH: t_message.

    ENDLOOP.



  ENDIF.





ENDFORM.

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

*&      Form  ZTABLE_UPDATE

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM ztable_update.

  PERFORM get_data.



  PERFORM matmas.



  PERFORM update.

ENDFORM.

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

*&      Form  GET_ZTABLE

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM get_ztable.

  DATA : lv_cnt      TYPE i.

  REFRESH:  gt_edid4,

            gt_ztable2,

            gt_matmas_n,

            gt_edids_n,

            gt_edids_n2.



  CLEAR: gv_matcnt,gv_crecnt,gv_debcnt,gv_adrcnt,gv_maqcnt,gv_procnt,gv_clfcnt.

  SELECT *   FROM  yyidoc_monitor

             INTO TABLE gt_ztable2

             WHERE credat IN s_credat AND

                   mestyp IN s_mestyp.

  IF sy-subrc EQ 0.

* matmas count

    FIND ALL OCCURRENCES OF 'MATMAS' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_matcnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

* cremas count

    FIND ALL OCCURRENCES OF 'CREMAS' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_crecnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

* debmas count

    FIND ALL OCCURRENCES OF 'DEBMAS' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_debcnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

* adrmas count

    FIND ALL OCCURRENCES OF 'ADRMAS' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_adrcnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

* matqm count

    FIND ALL OCCURRENCES OF 'MATQM' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_maqcnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

* project count

    FIND ALL OCCURRENCES OF 'PROJECT' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_procnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

*clfmas count

    FIND ALL OCCURRENCES OF 'CLFMAS' IN TABLE gt_ztable2 MATCH COUNT lv_cnt RESPECTING CASE.

    IF sy-subrc EQ 0.

      gv_clfcnt = lv_cnt.

      CLEAR lv_cnt.

    ENDIF.

  ELSEIF sy-subrc NE 0.

    MESSAGE 'Update The ZTable For Given Period' TYPE 'I' DISPLAY LIKE 'E'.

    LEAVE LIST-PROCESSING.

  ENDIF.



  IF NOT gt_ztable2 IS INITIAL.

    SELECT docnum segnam dtint2 sdata

             FROM edid4

             INTO TABLE gt_edid4

             FOR ALL ENTRIES IN gt_ztable2

             WHERE docnum = gt_ztable2-docnum AND

                   segnam IN gr_segnam.

    IF sy-subrc EQ 0.



      IF  NOT gt_edid4 IS INITIAL.

        LOOP AT gt_edid4 INTO gs_edid4.

          gs_matnr-docnum = gs_edid4-docnum.

          gs_matnr-matnr = gs_edid4-sdata+3(18).

          APPEND gs_matnr TO gt_matnr.

          CLEAR gs_matnr.

        ENDLOOP.

      ENDIF.

    ENDIF.

  ENDIF.



  LOOP AT gt_ztable2 INTO gs_ztable2.

* matmas

    IF gs_ztable2-mestyp EQ 'MATMAS'.

      gs_matmas_n-docnum = gs_ztable2-docnum.

      gs_matmas_n-msgid = gs_ztable2-msgid.

      gs_matmas_n-msgno = gs_ztable2-msgno.

    ELSE.

* Other

      gs_edids_n-docnum = gs_ztable2-docnum.

      gs_edids_n-stamid = gs_ztable2-stamid.

      gs_edids_n-stamno = gs_ztable2-stamno.

      gs_edids_n-stapa1 = gs_ztable2-stapa1.

      gs_edids_n-stapa2 = gs_ztable2-stapa2.

      gs_edids_n-stapa3 = gs_ztable2-stapa3.

      gs_edids_n-stapa4 = gs_ztable2-stapa4.

    ENDIF.

    IF NOT gs_matmas_n IS INITIAL.

      APPEND gs_matmas_n TO gt_matmas_n.

    ENDIF.

    IF NOT gs_edids_n IS INITIAL.

      APPEND gs_edids_n TO gt_edids_n.

    ENDIF.

    CLEAR: gs_ztable2,gs_matmas_n.

  ENDLOOP.



  IF NOT gt_matmas_n[] IS INITIAL.

    gt_matmas_n2[] = gt_matmas_n[].

    SORT gt_matmas_n2[] BY msgno.

    DELETE ADJACENT DUPLICATES FROM gt_matmas_n2[] COMPARING msgno.

  ENDIF.





ENDFORM.

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

*&      Form  UPDATE

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM update.

  SORT: gt_edids BY docnum,

        gt_edidc BY docnum,

        t_balhdr BY extnumber,

        t_message2 BY lognumber.

  LOOP AT gt_edids INTO gs_edids.

    READ TABLE gt_edidc INTO gs_edidc WITH KEY docnum = gs_edids-docnum BINARY SEARCH.

    IF sy-subrc EQ 0.

      gs_ztable-credat = gs_edidc-credat.

      gs_ztable-mestyp = gs_edidc-mestyp.

      gs_ztable-docnum = gs_edidc-docnum.

      IF gs_edidc-mestyp NE 'MATMAS'.

        gs_ztable-stamid = gs_edids-stamid.

        gs_ztable-stamno = gs_edids-stamno.

        gs_ztable-stapa1 = gs_edids-stapa1.

        gs_ztable-stapa2 = gs_edids-stapa2.

        gs_ztable-stapa3 = gs_edids-stapa3.

        gs_ztable-stapa4 = gs_edids-stapa4.

      ENDIF.

    ENDIF.

    IF gs_edidc-mestyp EQ 'MATMAS'.

      READ TABLE t_balhdr INTO ts_balhdr WITH KEY extnumber = gs_edids-docnum BINARY SEARCH.

      IF sy-subrc EQ 0.

        READ TABLE t_message2 INTO ts_message2 WITH KEY lognumber = ts_balhdr-lognumber BINARY SEARCH.

        IF sy-subrc EQ 0.

          gs_ztable-lognumber = ts_message2-lognumber.

          gs_ztable-msgid = ts_message2-msgid.

          gs_ztable-msgno = ts_message2-msgno.

        ENDIF.

      ENDIF.

    ENDIF.

    APPEND gs_ztable TO gt_ztable.

    CLEAR: gs_ztable,ts_balhdr, ts_message2, gs_edidc,gs_edids.

  ENDLOOP.



  IF NOT gt_ztable IS INITIAL.

    MODIFY yyidoc_monitor FROM TABLE gt_ztable.

    IF sy-subrc EQ 0.

      COMMIT WORK AND WAIT.

      MESSAGE 'Table Updated Sucessfully' TYPE 'S'.

    ENDIF.

  ENDIF.





ENDFORM.

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

*&      Form  FREE_OBJECTS

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM free_objects.



  IF NOT l_custom_container IS INITIAL.

    CALL METHOD l_custom_container->free.

*      EXCEPTIONS

*        cntl_error        = 1

*        cntl_system_error = 2

*        OTHERS            = 3.



    CLEAR l_custom_container.

  ENDIF.



  IF NOT tree1 IS INITIAL.

    CALL METHOD tree1->free.

    CLEAR: tree1.

*    CALL METHOD cl_gui_cfw=>flush.



  ENDIF.









ENDFORM.

I am getting error

Exception condition "CNTB_ERROR_FCODE" triggered

while going back to the previous screen.

I have given the initial check for the create objects still I am facing this issue.

code is provided in code window.

Please help.

Thanks,

Darshan

0 REPLIES 0