物料组查询接口,处理数据后,再处理分页
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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」