zoukankan      html  css  js  c++  java
  • ABAP写的一个递归

     需求:计算下面树形结构中每个子节点与最上层父节点的对应关系。

    DATA:BEGIN OF lt_ztab OCCURS 0,
          a  TYPE string,
          b  TYPE string,
         END OF lt_ztab.
    DATA:lw_ztab LIKE LINE OF lt_ztab,
         lw_ztab1 LIKE LINE OF lt_ztab,
         lt_ltab LIKE TABLE OF lt_ztab WITH HEADER LINE.

    DATA:BEGIN OF lt_mtab OCCURS 0,
          m  TYPE string,
    END OF lt_mtab.

    DATA:lw_mtab LIKE LINE OF lt_mtab.
    DATA:l_a TYPE string,
         l_b TYPE string.
    lw_ztab-'A'.
    lw_ztab-'B'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'B'.
    lw_ztab-'D'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'B'.
    lw_ztab-'E'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'D'.
    lw_ztab-'M'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'M'.
    lw_ztab-'W'.
    APPEND lw_ztab TO lt_ztab.


    lw_ztab-'M'.
    lw_ztab-'L'.
    APPEND lw_ztab TO lt_ztab.


    lw_ztab-'C'.
    lw_ztab-'F'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'F'.
    lw_ztab-'N'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'C'.
    lw_ztab-'G'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'C'.
    lw_ztab-'H'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'A'.
    lw_ztab-'C'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'A1'.
    lw_ztab-'B1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'B1'.
    lw_ztab-'D1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'B1'.
    lw_ztab-'E1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'D1'.
    lw_ztab-'M1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'C1'.
    lw_ztab-'F1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'F1'.
    lw_ztab-'N1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'C1'.
    lw_ztab-'G1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'C1'.
    lw_ztab-'H1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'A1'.
    lw_ztab-'C1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'X'.
    lw_ztab-'Y'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'X'.
    lw_ztab-'C'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'X1'.
    lw_ztab-'Y1'.
    APPEND lw_ztab TO lt_ztab.

    lw_ztab-'X1'.
    lw_ztab-'B'.
    APPEND lw_ztab TO lt_ztab.

    lw_mtab-'A'.
    APPEND lw_mtab TO lt_mtab.

    lw_mtab-'A1'.
    APPEND lw_mtab TO lt_mtab.

    lw_mtab-'X'.
    APPEND lw_mtab TO lt_mtab.

    lw_mtab-'X1'.
    APPEND lw_mtab TO lt_mtab.

    SORT lt_ztab BY a b.

    LOOP AT lt_mtab INTO lw_mtab.
      LOOP AT lt_ztab INTO lw_ztab WHERE lw_mtab-m.

        l_a lw_ztab-a.
        l_b =  lw_ztab-.

        PERFORMget_lastdata USING l_a l_b .

      ENDLOOP.
    ENDLOOP.

    LOOP AT lt_ltab.
      WRITE/ lt_ltab-a,lt_ltab-b.
    ENDLOOP.

     

    FORM get_lastdata USING p_a TYPE string  p_b TYPE string.

      lt_ltab-p_a.
      lt_ltab-p_b.
      APPEND lt_ltab.

      READ TABLE lt_ztab WITH KEY p_b BINARY SEARCH.
      IF sy-subrc NE 0.
        EXIT.
      ELSE.
        LOOP AT lt_ztab INTO lw_ztab1 WHERE p_b.
          PERFORMget_lastdata USING p_a lw_ztab1-.
        ENDLOOP.
      ENDIF.

    ENDFORM

    执行结果:

  • 相关阅读:
    Jmeter_实现操作postgresql数据库
    测试人员如何使用Git部署测试环境
    GitLab简单使用
    ssh: Could not resolve hostname git.*****-inc.com : Temporary failure in name resolution fatal: The remote end hung up unexpectedly
    本地Linux服务器上配置Git
    SeleniumIDE_初识
    自动化测试_测试模型
    Top命令详解02
    【Linux性能调优一】观大局:系统平均负载load average
    【自动化专题】借助firefox插件定位web元素小技巧
  • 原文地址:https://www.cnblogs.com/szfeng/p/3156198.html
Copyright © 2011-2022 走看看