• 物料组查询接口,处理数据后,再处理分页


    FUNCTION z_rfc_plm_009.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  IMPORTING
    *"     VALUE(P_SYSTEM) TYPE  CHAR4 DEFAULT 'PLM'
    *"     VALUE(P_UNAME) TYPE  UNAME DEFAULT SY-UNAME
    *"     VALUE(P_NAME1) TYPE  CHAR12 OPTIONAL
    *"     VALUE(P_START) TYPE  SYST_TABIX OPTIONAL
    *"     VALUE(P_LIMIT) TYPE  SYST_TABIX OPTIONAL
    *"     VALUE(P_MATKL) TYPE  MATKL OPTIONAL
    *"     VALUE(P_WGBEZ) TYPE  WGBEZ OPTIONAL
    *"     VALUE(P_KONTSX) TYPE  CHAR1 OPTIONAL
    *"  EXPORTING
    *"     VALUE(P_TOTAL) TYPE  INT4
    *"  TABLES
    *"      IT_T023T STRUCTURE  ZRFCS_PLM009 OPTIONAL
    *"      S_MATKL STRUCTURE  ZRANGES_MATKL OPTIONAL
    *"      S_WGBEZ STRUCTURE  ZRANGES_WGBEZ OPTIONAL
    *"----------------------------------------------------------------------
      DATA: lv_tabix TYPE sy-tabix.
      IF p_matkl IS NOT INITIAL.
        s_matkl-sign = 'I'.
        s_matkl-option = 'CP'.
        s_matkl-low = p_matkl.
        APPEND s_matkl.
      ENDIF.
      IF p_wgbez IS NOT INITIAL.
        s_wgbez-sign = 'I'.
        s_wgbez-option = 'CP'.
        s_wgbez-low = p_wgbez.
        APPEND s_wgbez.
      ENDIF.
    
      IF p_limit IS INITIAL OR p_kontsx IS NOT INITIAL.
        SELECT *
          INTO CORRESPONDING FIELDS OF TABLE @it_t023t
          FROM t023t
         WHERE spras EQ @sy-langu
           AND matkl IN @s_matkl
           AND wgbez IN @s_wgbez.
        p_total = lines( it_t023t[] ).
      ELSE.
        SELECT COUNT(*)
          INTO @p_total"TABLE @DATA(lt_t023t)
          FROM t023t
         WHERE spras EQ @sy-langu
           AND matkl IN @s_matkl
           AND wgbez IN @s_wgbez.
    
        SELECT FROM t023t
        FIELDS matkl,wgbez
        WHERE spras EQ @sy-langu
          AND matkl IN @s_matkl
          AND wgbez IN @s_wgbez
        ORDER BY matkl
        INTO CORRESPONDING FIELDS OF TABLE @it_t023t
        OFFSET @p_start UP TO @p_limit ROWS.
    
    *    p_total = lines( lt_t023t[] ).
      ENDIF.
    
      IF it_t023t[] IS NOT INITIAL.
        SELECT t023~matkl,
               t023~bklas,
               t030~ktopl,
               t030~ktosl,
               t030~bwmod,
               t030~komok,
               t030~konts
          INTO TABLE @DATA(lt_t023)
          FROM t023 JOIN t030 ON t023~bklas EQ t030~bklas
           FOR ALL ENTRIES IN @it_t023t
         WHERE t023~matkl EQ @it_t023t-matkl
           AND t023~bklas NE ''
           AND t030~ktopl EQ 'HL00'.
        SORT lt_t023[] BY matkl.
      ENDIF.
    
      LOOP AT it_t023t ASSIGNING FIELD-SYMBOL(<ls_t023t>).
        READ TABLE lt_t023 INTO DATA(ls_t023) WITH KEY matkl = <ls_t023t>-matkl BINARY SEARCH.
        IF sy-subrc EQ 0.
          <ls_t023t>-konts = ls_t023-konts.
        ENDIF.
      ENDLOOP.
    
      IF p_kontsx IS NOT INITIAL.
        DELETE it_t023t[] WHERE konts EQ ''.
        p_total = lines( it_t023t[] ).
        SORT it_t023t[] BY matkl.
        IF p_limit IS NOT INITIAL.
          "分页操作
          LOOP AT it_t023t ASSIGNING FIELD-SYMBOL(<ls_t023t2>).
            <ls_t023t2>-zindex = sy-tabix.
          ENDLOOP.
          lv_tabix = p_start + p_limit.
          DELETE it_t023t[] WHERE zindex > lv_tabix.
          DELETE it_t023t[] WHERE zindex < p_start.
        ENDIF.
    
      ENDIF.
    
    ENDFUNCTION.
  • 相关阅读:
    npm中package-lock.json的作用:npm install安装时使用
    git回退到某个commit
    如何把自己的代码发布到npmjs(npm publish)
    阿里蚂蚁的前端ant-design
    axure产品原型图,元件库导入方法
    react with JSX for {if…else…}
    JavaScript的filter用法
    ES6中的模板字符串---反引号``
    react数组key的唯一性
    Swagger简介,轻松构造restful api的文档
  • 原文地址:https://www.cnblogs.com/chaguoguo/p/16304286.html
Copyright © 2020-2023  润新知