ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-05-24 09:31:37  阅读:140  来源: 互联网

标签:物料 matkl wgbez 处理 OPTIONAL t023t 接口 t023 TYPE


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.

 

标签:物料,matkl,wgbez,处理,OPTIONAL,t023t,接口,t023,TYPE
来源: https://www.cnblogs.com/chaguoguo/p/16304286.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有