


************************************************************************ * 程 序 名:ZMMR501 * 程序描述:资讯记录查询 * 事务代码:xxx ************************************************************************ * 修改日志 ************************************************************************ * 日期 版本 修改人 描述 * -------- ---- ------------ ------------------------------------------- * 20221117 1.0 Amell 创建程序 * ************************************************************************ REPORT zmmr501 NO STANDARD PAGE HEADING MESSAGE-ID 00 LINE-SIZE 177 LINE-COUNT 200. *********************************************************************** * Tables Definitions ************************************************************************ *TABLES:. TABLES: eina,eine,konp,a017,lfa1,makt,marc. ************************************************************************ * Data Definitions ************************************************************************ DATA: BEGIN OF ty_data , lifnr LIKE a017-lifnr, "供應商帳戶號碼 name1 LIKE lfa1-name1, " 供应商简称 lfa1_sortl LIKE lfa1-sortl, " 供应商搜索条件 matnr LIKE a017-matnr, "物料號碼 maktx LIKE makt-maktx, "物料说明 ekorg LIKE eine-ekorg, "採購組織 werks LIKE eine-werks, "工廠 esokz LIKE a017-esokz, "採購資訊記錄種類 txz01 LIKE eina-txz01, "短文 sortl LIKE eina-sortl, "排序条件 datbi LIKE a017-datbi, "條件記錄的有效期限 datab LIKE a017-datab, "條件記錄的生效日期 *kschl LIKE konp-kschl, "條件類型 knumh LIKE konp-knumh, "條件記錄號碼 *kopos LIKE konp-kopos, "條件的序號 *kbetr LIKE konp-kbetr, "條件金額或百分比 *konwa LIKE konp-konwa, "條件單位 *kpein LIKE konp-kpein, "條件定價單位 *mwsk1 LIKE konp-mwsk1, "進項稅/銷項稅碼 *loevm_ko LIKE konp-loevm_ko, "條件項目的刪除指示碼 infnr LIKE eina-infnr, "採購資訊記錄的號碼 matkl LIKE eina-matkl, "物料群組 loekz LIKE eina-loekz, "完整采购资讯记录 loekz1 LIKE eine-loekz, "完整采购资讯记录 erdat LIKE eina-erdat, "記錄建立日期 ernam LIKE eina-ernam, "物件建立者的姓名 mahn1 LIKE eina-mahn1, "第一次催單天數 mahn2 LIKE eina-mahn2, "第二次催單天數 mahn3 LIKE eina-mahn3, "第三次催單天數 urzla LIKE eina-urzla, "原產地證明的發貨國家 lmein LIKE eina-lmein, "基礎計量單位 ekgrp LIKE eine-ekgrp, "採購群組 waers LIKE eine-waers, "幣別碼 minbm LIKE eine-minbm, "最小採購單數量 norbm LIKE eine-norbm, "標準採購單數量 aplfz LIKE eine-aplfz, "計劃交貨時間 bstyp LIKE eine-bstyp, "採購文件種類 ebeln LIKE eine-ebeln, "採購文件號碼 ebelp LIKE eine-ebelp, "採購文件的項目號碼 datlb LIKE eine-datlb, "文件的日期 netpr LIKE eine-netpr, "採購資訊記錄中的淨價 peinh LIKE eine-peinh, "價格單位 bprme LIKE eine-bprme, "採購單的計價單位 prdat LIKE eine-prdat, "價格有效期限 mwskz LIKE eine-mwskz, "進項稅/銷項稅碼 aut_source LIKE eine-aut_source, "與自動採購相關 lvorm LIKE marc-lvorm, "为物料加注删除旗标 dismm LIKE marc-dismm, "MRP 类型 dispo LIKE marc-dispo, "MRP 控制员 plifz LIKE marc-plifz, "MRP 计划交货天数 webaz LIKE marc-webaz, "收货作业处理时间 beskz LIKE marc-beskz, " 采购类型 sobsl LIKE marc-sobsl, " 特殊采购类型 END OF ty_data. TYPES: BEGIN OF ty_konp, "构建条件值结构 kschl LIKE konp-kschl, "條件類型 krech LIKE konp-krech, "计算类型 knumh LIKE konp-knumh, "條件記錄號碼 kopos LIKE konp-kopos, "條件的序號 kbetr LIKE konp-kbetr, "條件金額或百分比 konwa LIKE konp-konwa, "條件單位 kpein LIKE konp-kpein, "條件定價單位 * mwsk1 LIKE konp-mwsk1, "進項稅/銷項稅碼 loevm_ko LIKE konp-loevm_ko, "條件項目的刪除指示碼 kappl LIKE konp-kappl, "应用程序 END OF ty_konp, BEGIN OF ty_t685t, "构建条件类型说明结构 spras LIKE t685t-spras, "语言 * kvewe LIKE t685t-kvewe, "用途 kappl LIKE t685t-kappl, "程序 kschl LIKE t685t-kschl, "条件类型 vtext LIKE t685t-vtext, "条件类型名称 END OF ty_t685t, BEGIN OF ty_dd03l, tabname LIKE dd03l-tabname , "表名 fieldname LIKE dd03l-fieldname , "栏位名称 as4local LIKE dd03l-as4local , "表格状态 * as4vers LIKE dd03l-as4vers , "版本 position LIKE dd03l-position , "栏位位置 keyflag LIKE dd03l-keyflag , "主键标识 rollname LIKE dd03l-rollname , "資料元素 checktable LIKE dd03l-checktable , "检查表(栏位值的来源) inttype LIKE dd03l-inttype , "字段 類型 intlen LIKE dd03l-intlen , "二进制栏位长度 reftable LIKE dd03l-reftable , "參考表 reffield LIKE dd03l-reffield , "參考欄位 datatype LIKE dd03l-datatype , "資料類型 leng LIKE dd03l-leng , "字元數(栏位长度) decimals LIKE dd03l-decimals , "小數位 domname LIKE dd03l-domname , "範圍名稱 ddlanguage LIKE dd04t-ddlanguage , "語言碼 * as4local LIKE dd04t-as4local , "资料元素啟動狀態 * as4vers LIKE dd04t-as4vers , "资料元素版本 ddtext LIKE dd04t-ddtext , "說明 R/3 資源庫物件的短文 reptext LIKE dd04t-reptext , "標題 scrtext_s LIKE dd04t-scrtext_s , "Short Field Label scrtext_m LIKE dd04t-scrtext_m , "中欄位標籤 scrtext_l LIKE dd04t-scrtext_l , "長欄位標籤 END OF ty_dd03l. DATA:gt_konp TYPE TABLE OF ty_konp, "条件值明细 gt_t685t TYPE TABLE OF ty_t685t, "条件类型说明 gt_dd03l TYPE TABLE OF ty_dd03l, "栏位说明 gt_data LIKE TABLE OF ty_data, "资讯记录一般资讯 wa_t685t TYPE ty_t685t, wa_data LIKE ty_data. DATA: wa_layout TYPE slis_layout_alv, gt_fieldcat TYPE slis_t_fieldcat_alv , "with header line. wa_fieldcat TYPE slis_fieldcat_alv. *--->动态表变量 FIELD-SYMBOLS:<gt_table> TYPE STANDARD TABLE, <g_wa>, <g_field>. DATA: gt_table TYPE REF TO data, gt_structure TYPE lvc_t_fcat. ************************************************************************ * Includes Module ************************************************************************ ************************************************************************ * Selection Screen ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-b01. PARAMETERS:c_pro AS CHECKBOX DEFAULT 'X', " 包含制程委外 c_weight AS CHECKBOX DEFAULT 'X'. " 查看有效资料 PARAMETERS:p_ekorg LIKE eine-ekorg DEFAULT '2000' OBLIGATORY."采购组织 SELECT-OPTIONS: s_werks FOR eine-werks, s_loev_k FOR konp-loevm_ko DEFAULT '' ," 条件是否删除 s_loekz FOR eina-loekz DEFAULT '',"完整采购资讯记录 s_loekz1 FOR eine-loekz DEFAULT ''," 采购组织上删除旗标 s_esokz FOR a017-esokz,"采购资讯记录种类 s_infnr FOR eina-infnr, s_matnr FOR a017-matnr, s_lifnr FOR a017-lifnr, s_datbi FOR a017-datbi, s_datab FOR a017-datab, s_kschl FOR a017-kschl, s_matkl FOR eina-matkl. "物料群組 SELECTION-SCREEN END OF BLOCK b1. ************************************************************************ * Initialization 初始化事件 ************************************************************************ INITIALIZATION. ************************************************************************ * At Selection Screen PAI事件 ************************************************************************ AT SELECTION-SCREEN. ************************************************************************ * At Selection Screen Output PBO事件 ************************************************************************ AT SELECTION-SCREEN OUTPUT. ************************************************************************ * Report Format 报表格式 ************************************************************************ TOP-OF-PAGE. END-OF-PAGE. ************************************************************************ * Main Process 主要逻辑 ************************************************************************ START-OF-SELECTION. PERFORM get_data. PERFORM display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM get_data . "查询工厂不为空的资讯记录 SELECT a017~lifnr,a017~matnr,eine~ekorg, lfa1~name1,lfa1~sortl AS lfa1_sortl, a017~esokz,a017~datbi, a017~datab,a017~knumh, eina~infnr,eina~matkl,eina~loekz, eina~urzla,eina~lmein,eina~mahn1, eina~mahn2,eina~mahn3, eine~erdat, eine~ekgrp,eine~waers,eine~minbm, eine~bstyp,eine~ebeln,eine~ernam,eine~aplfz, eine~ebelp,eine~datlb,eine~netpr, eine~peinh, eine~bprme,eine~prdat, eine~mwskz,eine~aut_source, eine~norbm,eine~werks,eine~loekz AS loekz1 FROM a017 INNER JOIN eina ON eina~matnr EQ a017~matnr AND eina~lifnr EQ a017~lifnr INNER JOIN eine ON eine~infnr EQ eina~infnr AND eine~ekorg EQ a017~ekorg AND eine~esokz EQ a017~esokz AND eine~werks EQ a017~werks INNER JOIN lfa1 ON lfa1~lifnr EQ a017~lifnr INTO CORRESPONDING FIELDS OF TABLE @gt_data WHERE a017~ekorg EQ @p_ekorg AND a017~werks IN @s_werks AND a017~lifnr IN @s_lifnr AND a017~matnr IN @s_matnr AND a017~esokz IN @s_esokz AND a017~datbi IN @s_datbi AND a017~datab IN @s_datab AND eina~infnr IN @s_infnr AND eina~matnr IN @s_matnr AND eina~loekz IN @s_loekz AND eine~loekz IN @s_loekz1 AND eine~esokz IN @s_esokz. * eina~matkl IN @s_matkl. "工厂为空的采购咨询记录 SELECT a018~lifnr,a018~matnr,eine~ekorg, lfa1~name1,lfa1~sortl AS lfa1_sortl, a018~esokz,a018~datbi, a018~datab,a018~knumh, eina~infnr,eina~matkl,eina~loekz, eina~urzla,eina~lmein,eina~mahn1, eina~mahn2,eina~mahn3, eine~erdat, eine~ekgrp,eine~waers,eine~minbm, eine~bstyp,eine~ebeln,eine~ernam,eine~aplfz, eine~ebelp,eine~datlb,eine~netpr, eine~peinh, eine~bprme,eine~prdat, eine~mwskz,eine~aut_source, eine~norbm,eine~werks,eine~loekz AS loekz1 FROM a018 INNER JOIN eina ON eina~matnr EQ a018~matnr AND eina~lifnr EQ a018~lifnr INNER JOIN eine ON eine~infnr EQ eina~infnr AND eine~ekorg EQ a018~ekorg AND eine~esokz EQ a018~esokz "AND * eine~werks EQ a018~werks INNER JOIN lfa1 ON lfa1~lifnr EQ a018~lifnr APPENDING CORRESPONDING FIELDS OF TABLE @gt_data WHERE a018~ekorg EQ @p_ekorg AND * a018~werks IN @s_werks AND a018~lifnr IN @s_lifnr AND a018~matnr IN @s_matnr AND a018~esokz IN @s_esokz AND a018~datbi IN @s_datbi AND a018~datab IN @s_datab AND eina~infnr IN @s_infnr AND eina~matnr IN @s_matnr AND eina~loekz IN @s_loekz AND eine~loekz IN @s_loekz1 AND eine~esokz IN @s_esokz. * eina~matkl IN @s_matkl. "-->制程委外采购资讯记录查询 IF c_pro EQ 'X'. SELECT a025~lifnr,eine~ekorg, lfa1~name1,lfa1~sortl AS lfa1_sortl, a025~esokz,a025~datbi, a025~datab,a025~knumh, eina~infnr,eina~matkl,eina~loekz, eina~urzla,eina~lmein,eina~mahn1, eina~mahn2,eina~mahn3, eina~erdat,eina~txz01,eina~sortl, eine~ekgrp,eine~waers,eine~minbm, eine~bstyp,eine~ebeln,eine~ernam,eine~aplfz, eine~ebelp,eine~datlb,eine~netpr, eine~peinh, eine~bprme,eine~prdat, eine~mwskz,eine~aut_source, eine~norbm,eine~werks,eine~loekz AS loekz1 FROM a025 INNER JOIN eina ON eina~infnr EQ a025~infnr AND eina~lifnr EQ a025~lifnr INNER JOIN eine ON eine~infnr EQ eina~infnr AND eine~ekorg EQ a025~ekorg AND eine~werks EQ a025~werks AND eine~ekorg EQ a025~ekorg AND eine~esokz EQ a025~esokz INNER JOIN lfa1 ON lfa1~lifnr EQ a025~lifnr APPENDING CORRESPONDING FIELDS OF TABLE @gt_data WHERE a025~ekorg EQ @p_ekorg AND a025~werks IN @s_werks AND a025~lifnr IN @s_lifnr AND a025~esokz IN @s_esokz AND a025~datbi IN @s_datbi AND a025~datab IN @s_datab AND eina~infnr IN @s_infnr AND eina~matnr IN @s_matnr AND eina~loekz IN @s_loekz AND eine~loekz IN @s_loekz1 AND eine~esokz IN @s_esokz AND eina~matkl IN @s_matkl. ENDIF. "获取条件值 SELECT konp~knumh, konp~krech,konp~kopos, konp~kbetr, konp~konwa ,konp~kpein, konp~loevm_ko, konp~kappl,konp~kschl FROM @gt_data AS a INNER JOIN konp ON konp~knumh EQ a~knumh WHERE loevm_ko EQ @space INTO CORRESPONDING FIELDS OF TABLE @gt_konp. "条件类型 MOVE-CORRESPONDING gt_konp[] TO gt_t685t[]. "排序 SORT: gt_data BY infnr datbi DESCENDING, gt_t685t BY kschl, gt_konp BY knumh kschl. "条件类型去重 DELETE ADJACENT DUPLICATES FROM gt_t685t COMPARING kschl. ENDFORM. *&---------------------------------------------------------------------* *& Form DISPLAY_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM display_data . *--> dynamic table structure and generate ALV fieldcat PERFORM create_structure. *--> Create dynamic table PERFORM create_dynamic_table. *--> input data to dynamic table PERFORM process_data. **--> ALV Layout Setting wa_layout-colwidth_optimize = 'X'. " 最佳欄寬 wa_layout-zebra = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = wa_layout it_fieldcat = gt_fieldcat * i_callback_pf_status_set = 'PF_STATUS' * i_callback_user_command = 'USER_COMMAND' i_save = 'A' TABLES t_outtab = <gt_table>. ENDFORM. FORM create_structure. DATA:lt_fieldcat TYPE slis_t_fieldcat_alv, lt_data2 LIKE TABLE OF ty_data, lt_data LIKE lt_data2, lt_t685t TYPE TABLE OF ty_t685t. "条件类型 DATA: wa_structure TYPE lvc_s_fcat, wa_fieldcat TYPE slis_fieldcat_alv. DATA: lv_count TYPE i. DATA: lv_repid TYPE sy-repid, lv_inclname TYPE trdir-name. CLEAR: lt_fieldcat[], wa_fieldcat. "--->获取固定栏位 lv_repid = lv_inclname = sy-cprog. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = lv_repid i_internal_tabname = 'TY_DATA' i_inclname = lv_inclname CHANGING ct_fieldcat = lt_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. "---->固定栏位 LOOP AT lt_fieldcat INTO wa_fieldcat. ADD 1 TO lv_count. wa_structure-col_pos = lv_count. wa_fieldcat-col_pos = lv_count. wa_structure-fieldname = wa_fieldcat-fieldname ."栏位 wa_structure-ref_field = wa_fieldcat-ref_fieldname."参考栏位 wa_structure-ref_table = wa_fieldcat-ref_tabname."参考表 APPEND wa_structure TO gt_structure. APPEND wa_fieldcat TO gt_fieldcat. CLEAR: wa_fieldcat,wa_structure. ENDLOOP. "获取条件类型说明 SELECT t685t~spras, t685t~kappl ,t685t~kschl ,t685t~vtext FROM @gt_t685t AS a INNER JOIN t685t ON t685t~kschl EQ a~kschl WHERE t685t~kappl EQ 'M' "采购 INTO TABLE @lt_t685t. "1.获取konp的栏位有资料元素栏位说明 SELECT dd03l~tabname dd03l~fieldname dd03l~as4local dd03l~position dd03l~keyflag dd03l~rollname dd03l~checktable dd03l~inttype dd03l~intlen dd03l~reftable dd03l~reffield dd03l~datatype dd03l~leng dd03l~decimals dd03l~domname dd04t~ddlanguage dd04t~ddtext dd04t~reptext dd04t~scrtext_s dd04t~scrtext_m dd04t~scrtext_l INTO CORRESPONDING FIELDS OF TABLE gt_dd03l FROM dd03l INNER JOIN dd04t ON dd04t~rollname = dd03l~rollname WHERE dd03l~tabname EQ 'KONP' AND dd03l~fieldname IN ( 'MANDT','KAPPL','KSCHL', 'KRECH','KBETR','KONWA','KPEIN','KMEIN','LOEVM_KO' ). "2.获取konp的栏位无资料元素栏位说明 SELECT dd03l~tabname dd03l~fieldname dd03l~as4local dd03l~position dd03l~keyflag dd03l~rollname dd03l~checktable dd03l~inttype dd03l~intlen dd03l~reftable dd03l~reffield dd03l~datatype dd03l~leng dd03l~decimals dd03l~domname dd03t~ddlanguage dd03t~ddtext dd03t~ddtext AS reptext dd03t~ddtext AS scrtext_s dd03t~ddtext AS scrtext_m dd03t~ddtext AS scrtext_l APPENDING CORRESPONDING FIELDS OF TABLE gt_dd03l FROM dd03l INNER JOIN dd03t ON dd03t~fieldname = dd03l~fieldname AND dd03t~tabname = dd03l~tabname WHERE dd03l~tabname EQ 'KONP' AND dd03l~fieldname IN ( 'MANDT','KAPPL','KSCHL', 'KRECH','KBETR','KONWA','KPEIN','KMEIN','LOEVM_KO' ). "---->动态栏位 LOOP AT gt_t685t INTO wa_t685t. READ TABLE lt_t685t INTO DATA(ls_t685t) WITH KEY kschl = wa_t685t-kschl spras = sy-langu. "-->條件類型 READ TABLE gt_dd03l INTO DATA(ls_dd03l) WITH KEY fieldname = 'KSCHL' ddlanguage = sy-langu. IF sy-subrc <> 0. READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KSCHL' . ENDIF. "动态栏位说明 PERFORM dynamic_fieldcat_text USING ls_dd03l ls_t685t lv_count. "-->條件金額或百分比 READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KBETR' ddlanguage = sy-langu. IF sy-subrc <> 0. READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KBETR' . ENDIF. "动态栏位说明 PERFORM dynamic_fieldcat_text USING ls_dd03l ls_t685t lv_count. "-->條件單位 READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KONWA' ddlanguage = sy-langu. IF sy-subrc <> 0. READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KONWA' . ENDIF. "动态栏位说明 PERFORM dynamic_fieldcat_text USING ls_dd03l ls_t685t lv_count. "-->條件定價單位 READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KPEIN' ddlanguage = sy-langu. IF sy-subrc <> 0. READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'KPEIN' . ENDIF. "动态栏位说明 PERFORM dynamic_fieldcat_text USING ls_dd03l ls_t685t lv_count. "-->條件項目的刪除指示碼 READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'LOEVM_KO' ddlanguage = sy-langu. IF sy-subrc <> 0. READ TABLE gt_dd03l INTO ls_dd03l WITH KEY fieldname = 'LOEVM_KO'. ENDIF. "动态栏位说明 PERFORM dynamic_fieldcat_text USING ls_dd03l ls_t685t lv_count. CLEAR:ls_t685t. ENDLOOP. ENDFORM. FORM create_dynamic_table . CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_structure IMPORTING ep_table = gt_table. ASSIGN gt_table->* TO <gt_table>. ENDFORM. *&---------------------------------------------------------------------* *& Form PROCESS_DATA *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM process_data . * FIELD-SYMBOLS: <ls_fs> TYPE any. * FIELD-SYMBOLS: <ls_data> TYPE any. FIELD-SYMBOLS: <ls_value>. TYPES:BEGIN OF ty_marc, matnr TYPE matnr, "物料 lvorm TYPE lvorm, "工厂层级 dismm TYPE dismm, "MRP 类型 dispo TYPE dispo, "MRP 控制员 plifz TYPE plifz, "主档计划交货时间 beskz TYPE beskz, "采购类型 sobsl TYPE sobsl, "特殊采购类型 webaz TYPE webaz, "收货作业处理时间 END OF ty_marc, BEGIN OF ty_makt, spras TYPE spras, "语系 matnr TYPE matnr, "物料 maktx TYPE maktx, "物料说明 END OF ty_makt. DATA:lt_dd03l TYPE TABLE OF ty_dd03l, "动太栏位 lt_marc TYPE TABLE OF ty_marc, "工厂基础资料 lt_makt TYPE TABLE OF ty_makt. "物料说明 DATA: l_index LIKE sy-tabix, l_infnr LIKE eine-infnr, l_datab LIKE a017-datab. DATA: l_new_line TYPE REF TO data, l_comp_line TYPE REF TO data. CREATE DATA l_new_line LIKE LINE OF <gt_table>. CREATE DATA l_comp_line LIKE LINE OF <gt_table>. ASSIGN l_new_line->* TO <g_wa>. *---->其他信息 "物料工厂基础信息 SELECT matnr lvorm dismm dispo plifz beskz sobsl webaz INTO CORRESPONDING FIELDS OF TABLE lt_marc FROM marc FOR ALL ENTRIES IN gt_data WHERE matnr EQ gt_data-matnr AND werks EQ gt_data-werks. "物料说明 SELECT spras matnr maktx INTO TABLE lt_makt FROM makt FOR ALL ENTRIES IN gt_data WHERE matnr EQ gt_data-matnr. lt_dd03l[] = gt_dd03l[]. SORT:lt_dd03l BY fieldname, lt_marc BY matnr, lt_makt BY spras matnr. "动态栏位 DELETE ADJACENT DUPLICATES FROM lt_dd03l COMPARING fieldname. DELETE lt_dd03l WHERE fieldname = 'MANDT' OR fieldname = 'KNUMH' OR fieldname = 'KAPPL'. *---->向动态表赋值 LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<ls_data>). l_index = sy-tabix. IF c_weight EQ 'X' AND ( ( <ls_data>-infnr EQ l_infnr AND <ls_data>-datbi < l_datab ) OR <ls_data>-datab > sy-datum ). DELETE gt_data INDEX l_index. CONTINUE. ENDIF. l_datab = <ls_data>-datab.l_infnr = <ls_data>-infnr. "--->工厂基础信息更新 READ TABLE lt_marc INTO DATA(ls_marc) WITH KEY matnr = <ls_data>-matnr BINARY SEARCH. "--->物料说明 READ TABLE lt_makt INTO DATA(ls_makt) WITH KEY spras = sy-langu matnr = <ls_data>-matnr. IF sy-subrc = 0. READ TABLE lt_makt INTO ls_makt WITH KEY matnr = <ls_data>-matnr. ENDIF. MOVE-CORRESPONDING ls_marc TO <ls_data>. MOVE-CORRESPONDING ls_makt TO <ls_data>. MOVE-CORRESPONDING <ls_data> TO <g_wa>. LOOP AT gt_t685t INTO DATA(ls_t685t). * kschl " 条件类型 READ TABLE gt_konp ASSIGNING FIELD-SYMBOL(<ls_fs>) WITH KEY knumh = <ls_data>-knumh kschl = ls_t685t-kschl BINARY SEARCH. IF sy-subrc = 0. LOOP AT lt_dd03l INTO DATA(ls_dd03l). "动态赋值 ASSIGN COMPONENT ls_t685t-kschl && '_' && ls_dd03l-fieldname OF STRUCTURE <g_wa> TO <g_field>. IF sy-subrc = 0. UNASSIGN <ls_value>. "动态获取栏位值 ASSIGN COMPONENT ls_dd03l-fieldname OF STRUCTURE <ls_fs> TO <ls_value>. "-->若是条件类型的值是百分比那么需要将值缩小10倍 IF <ls_fs>-krech = 'A' AND ls_dd03l-fieldname = 'KBETR'. <ls_value> = <ls_value> / 10. ENDIF. <g_field> = <ls_value>. ENDIF. ENDLOOP. ENDIF. ENDLOOP. APPEND <g_wa> TO <gt_table>. CLEAR:ls_makt,ls_marc. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form DYNAMIC_FIELDCAT_TEXT *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> P_ *& --> LS_DD03L *&---------------------------------------------------------------------* FORM dynamic_fieldcat_text USING ls_dd03l TYPE ty_dd03l ls_t685t TYPE ty_t685t lv_count. DATA: wa_structure TYPE lvc_s_fcat, wa_fieldcat TYPE slis_fieldcat_alv. IF ls_dd03l IS INITIAL. EXIT. ENDIF. ADD 1 TO lv_count. MOVE-CORRESPONDING ls_dd03l TO wa_fieldcat. wa_structure-col_pos = lv_count. wa_fieldcat-col_pos = lv_count. wa_structure-fieldname = wa_fieldcat-fieldname = wa_t685t-kschl && '_' && ls_dd03l-fieldname."栏位名称 * wa_structure-ref_field = wa_fieldcat-ref_fieldname = * ls_dd03l-reffield ."参考栏位 * wa_structure-ref_table = wa_fieldcat-ref_tabname = * ls_dd03l-reftable."参考表 wa_fieldcat-tabname = 'TY_DATA'. wa_fieldcat-seltext_l = ls_dd03l-scrtext_l && '_' && ls_t685t-vtext. wa_fieldcat-seltext_m = ls_dd03l-scrtext_m && '_' && ls_t685t-vtext. wa_fieldcat-seltext_s = ls_dd03l-scrtext_s && '_' && ls_t685t-vtext. wa_fieldcat-ddictxt = ls_dd03l-reptext && '_' && ls_t685t-vtext. wa_fieldcat-reptext_ddic = ls_dd03l-reptext && '_' && ls_t685t-vtext. wa_fieldcat-ddictxt = ls_dd03l-ddtext && '_' && ls_t685t-vtext. * wa_structure-inttype = wa_fieldcat-inttype."abap类型 * wa_structure-intlen = wa_fieldcat-outputlen."输出长度 * wa_structure-decimals_o = wa_fieldcat-decimals_out."输出小数位数 APPEND wa_structure TO gt_structure. APPEND wa_fieldcat TO gt_fieldcat. CLEAR: wa_fieldcat,wa_structure,ls_dd03l. * ADD 1 TO lv_count. * wa_structure-fieldname = 'SPBUP'. * wa_structure-col_pos = lv_count. * wa_fieldcat-col_pos = lv_count. * wa_fieldcat-fieldname = wa_structure-fieldname. * wa_fieldcat-seltext_s = wa_fieldcat-seltext_m = * wa_fieldcat-seltext_l = '过账期间'. * wa_fieldcat-ddictxt = 'L'. ** wa_fieldcat-inttype = 'P'. * wa_fieldcat-outputlen = '8'. ** wa_fieldcat-decimals_out = '2'. * APPEND wa_structure TO gt_structure. * CLEAR wa_structure. * APPEND wa_fieldcat TO gt_fieldcat. * CLEAR wa_fieldcat. ENDFORM.
浙公网安备 33010602011771号