SAP ABAB长文本高效取值优化
2026/6/9 19:55:35 网站建设 项目流程

常规思路使用FUNCTION:READ_TEXT获取长文本内容,

优化思路通过SQL批量取出长文本内容,然后转换成常规的文本文字显示

直接上代码,这里用交货单表头文本为例子:

*&---------------------------------------------------------------------* *& Report YTEST_ZW26 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ytest_zw26. DATA:BEGIN OF gs_vbeln, vbeln TYPE likp-vbeln, END OF gs_vbeln, gt_vbeln LIKE TABLE OF gs_vbeln. START-OF-SELECTION. SELECT vbeln UP TO 1000 ROWS FROM likp INTO TABLE @gt_vbeln. PERFORM function. PERFORM sql. *&---------------------------------------------------------------------* *& Form FUNCTION *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM function . DATA:client LIKE sy-mandt, id LIKE thead-tdid, language LIKE thead-tdspras, name LIKE thead-tdname, object LIKE thead-tdobject, lines LIKE TABLE OF tline. LOOP AT gt_vbeln INTO gs_vbeln. name = gs_vbeln-vbeln. CALL FUNCTION 'READ_TEXT' EXPORTING client = sy-mandt id = 'ZM13' language = sy-langu name = name object = 'VBBK' TABLES lines = lines EXCEPTIONS id = 1 language = 2 name = 3 not_found = 4 object = 5 reference_check = 6 wrong_access_to_archive = 7 OTHERS = 8. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno INTO DATA(l_mtext) WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form SQL *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM sql . TYPES: BEGIN OF ty_stxl_raw, clustr TYPE stxl-clustr, clustd TYPE stxl-clustd, END OF ty_stxl_raw. DATA: it_stxl_raw TYPE STANDARD TABLE OF ty_stxl_raw, wa_stxl_raw TYPE ty_stxl_raw, it_tline TYPE STANDARD TABLE OF tline, BEGIN OF ls_dn_text, vbeln TYPE vbeln, text TYPE string, END OF ls_dn_text, lt_dn_text LIKE TABLE OF ls_dn_text. "取表头文本 SELECT tdname, clustr, clustd FROM stxl INNER JOIN @gt_vbeln AS dn ON dn~vbeln = stxl~tdname WHERE relid = 'TX' AND tdobject = 'VBBK' AND tdid = 'ZM13' AND tdspras = @sy-langu INTO TABLE @DATA(lt_stxl). SORT lt_stxl BY tdname. LOOP AT lt_stxl INTO DATA(ls_stxl). CLEAR: wa_stxl_raw,it_stxl_raw[],it_tline[]. wa_stxl_raw-clustr = ls_stxl-clustr. wa_stxl_raw-clustd = ls_stxl-clustd. APPEND wa_stxl_raw TO it_stxl_raw. * 因為儲存在STXL的資料都是壓縮過的 所以要經過解壓縮 才能正常顯示 IMPORT tline = it_tline FROM INTERNAL TABLE it_stxl_raw. CLEAR ls_dn_text. LOOP AT it_tline INTO DATA(ls_tline). ls_dn_text-text = ls_dn_text-text && ` ` && ls_tline-tdline. ENDLOOP. ls_dn_text-vbeln = ls_stxl-tdname. APPEND ls_dn_text TO lt_dn_text. ENDLOOP. SORT lt_dn_text BY vbeln. ENDFORM.

ST12性能分析,取1000笔的情况下,结果整整相差100倍,数据量越大这个差距会更大

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询