MM-公司间采购交货信息报表(开发笔记)

*&---------------------------------------------------------------------*
*& Report ZSDR008
*&---------------------------------------------------------------------*
*& Author              :  NathanSun
*& Create Date         :  2019-11-25
*& Program Type        :  Report
*& Description         :  公司间采购交货信息报表
*&---------------------------------------------------------------------*
REPORT ZMMR131.

TABLES:EKKO,EKPO,LIKP,LIPS,VBRK,VBRP.

TYPE-POOLS:SLIS,T001W,ICON.
DATA OK_CODE         TYPE SY-UCOMM.
DATA OK_SAVE         TYPE SY-UCOMM.
"定义ALV输出所需变量
DATAS_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATALS_STYLE TYPE LVC_S_STYL,
      LT_STYLE TYPE TABLE OF LVC_S_STYL.
DATAIW_CELLCOLOR TYPE LVC_T_SCOL WITH HEADER LINE.
TYPESBEGIN OF GTS_DATA,
         CKBOX      TYPE  C,
         FLAG       TYPE  C,
         EBELN_PO   TYPE  EKPO-EBELN,                      "采购凭证
         EBELP_PO   TYPE  EKPO-EBELP,                      "采购凭证项目
         VGPOS      TYPE  LIPS-VGPOS,                      "项目号
         BSART      TYPE  EKKO-BSART,                      "采购凭证类型
         EKORG      TYPE  EKKO-EKORG,                      "采购组织
         EKGRP      TYPE  EKKO-EKGRP,                      "采购组

         MATNR      TYPE  EKPO-MATNR,                      "物料编号
         MAKTX      TYPE  MAKT-MAKTX,                      "物料描述
         BUKRS      TYPE  EKPO-BUKRS,                      "公司代码
         MENGE_SO   TYPE  EKPO-MENGE,                      "采购数量
         MEINS      TYPE  EKPO-MEINS,                      "单位
         NETPR      TYPE  EKPO-NETPR,                      "单价
         PEINH      TYPE  EKPO-PEINH,                      "价格单位
         NETWR      TYPE  EKPO-NETWR,                      "金额

         VBELN_DN   TYPE  LIPS-VBELN,                      "DN单号
         POSNR_DN   TYPE  LIPS-POSNR,                      "DN单号
         WERKS_DN   TYPE  LIPS-WERKS,                      "DN工厂
         LGORT_DN   TYPE  LIPS-LGORT,                      "DN库位
         LFIMG_DN   TYPE  LIPS-LFIMG,                      "DN数量
         LFIMY_DN   TYPE  LIPS-LFIMG,                      "已拣配数量
         LFIMJ_DN   TYPE  LIPS-LFIMG,                      "DN数量
         KCMENG_DN  TYPE  LIPS-KCMENG,                     "累计批数量
         UECHA_DN   TYPE  LIPS-UECHA,                      "上层项目

         MENGE_GZ   TYPE  MSEG-MENGE,                      "交货过账数量
         MBLNR_GZ   TYPE  MSEG-MBLNR,                      "交货过账数量
         ZEILE_GZ   TYPE  MSEG-ZEILE,                      "交货过账数量

         BUDAT_MKPF TYPE  MSEG-BUDAT_MKPF,                 "交货过账数量

         VBELN_VF   TYPE  VBRP-VBELN,                      "开票凭证
         POSNR_VF   TYPE  VBRP-POSNR,                      "开票项目
         FKIMG_VF   TYPE  VBRP-FKIMG,                      "开票数量
         NETWR_VF   TYPE  VBRP-NETWR,                      "开票净值
         MWSBP_VF   TYPE  VBRP-MWSBP,                      "开票税额
         ZHSJE_VF   TYPE  VBRP-NETWR,                      "开票含税金额

         CELLCOLOR  TYPE  LVC_T_SCOL,                      "单元格颜色
         STYLE      TYPE  LVC_T_STYL,                      "控制不可编辑
       END OF GTS_DATA.

DATAGT_ALV    TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_ALV_A  TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_ALV_B  TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_LIPS   TYPE TABLE OF LIPS WITH HEADER LINE .

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
SELECT-OPTIONSS_BSART FOR EKKO-BSART MODIF ID MXY .  "采购凭证类型
SELECT-OPTIONSS_EBELN FOR EKPO-EBELN MODIF ID MXY .  "采购凭证
SELECT-OPTIONSS_BUKRS FOR EKPO-BUKRS MODIF ID MXY .  "公司代码
SELECT-OPTIONSS_EKORG FOR EKKO-EKORG MODIF ID MXY .  "采购组织
SELECT-OPTIONSS_EKGRP FOR EKKO-EKGRP MODIF ID MXY .  "采购组
SELECT-OPTIONSS_DNELN FOR LIPS-VBELN MODIF ID MXY .  "DN编号
SELECT-OPTIONSS_MATNR FOR EKPO-MATNR MODIF ID MXY .  "物料

SELECTION-SCREEN END OF BLOCK B2.


*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
  DATA GT_LIPS TYPE TABLE OF LIPS WITH HEADER LINE .
  DATA GT_VBRP TYPE TABLE OF VBRP WITH HEADER LINE .
  DATA GT_MSEG TYPE TABLE OF MSEG WITH HEADER LINE .
  DATA GT_VBFA TYPE TABLE OF VBFA WITH HEADER LINE .
  DATA LV_FLAG TYPE C .
  CLEAR GT_ALV[].
  SELECT
    EKPO~EBELN  AS EBELN_PO
    EKPO
~EBELP  AS EBELP_PO
    EKPO
~EBELP  AS VGPOS
    EKKO
~BSART
    EKKO
~EKORG
    EKKO
~EKGRP
    EKPO
~MATNR
    EKPO
~BUKRS
    EKPO
~NETPR
    EKPO
~PEINH
    EKPO
~NETWR
*    LIPS~VBELN  AS VBELN_DN
*    LIPS~POSNR  AS POSNR_DN
*    LIPS~LGORT  AS LGORT_DN
*    LIPS~LFIMG  AS LFIMG_DN
*    LIPS~KCMENG AS KCMENG_DN
*    LIPS~UECHA  AS UECHA_DN
  INTO CORRESPONDING FIELDS OF TABLE GT_ALV[]
    
FROM EKKO
    INNER 
JOIN EKPO ON EKKO~EBELN EKPO~EBELN
*    LEFT  JOIN LIPS ON LIPS~VGBEL = EKPO~EBELN AND LIPS~VGPOS = EKPO~EBELP
    WHERE EKKO~BSART IN S_BSART
      
AND EKKO~EKORG IN S_EKORG
      
AND EKKO~EKGRP IN S_EKGRP
      
AND EKPO~EBELN IN S_EBELN
      
AND EKPO~BUKRS IN S_BUKRS
      
AND EKPO~MATNR IN S_MATNR
      
.

  LOOP AT GT_ALV.
    CLEAR GT_LIPS[].
    SELECT INTO CORRESPONDING FIELDS OF TABLE GT_LIPS FROM LIPS
      
WHERE VGBEL GT_ALV-EBELN_PO
        
AND VGPOS GT_ALV-VGPOS
        
.
    IF GT_LIPS[] IS NOT INITIAL.
      GT_ALV-FLAG      'D' .
    ENDIF.
    MODIFY GT_ALV .
    CLEAR GT_ALV .
  ENDLOOP.

  LOOP AT GT_ALV WHERE FLAG 'D'.
    CLEAR LV_FLAG.
    CLEAR GT_LIPS[].
    SELECT INTO CORRESPONDING FIELDS OF TABLE GT_LIPS FROM LIPS
      
WHERE VGBEL GT_ALV-EBELN_PO
        
AND VGPOS GT_ALV-VGPOS
        
.
    LOOP AT GT_LIPS.
      GT_ALV-VBELN_DN  GT_LIPS-VBELN .
      GT_ALV-POSNR_DN  GT_LIPS-POSNR .
      GT_ALV-LGORT_DN  GT_LIPS-LGORT .
      GT_ALV-LFIMG_DN  GT_LIPS-LFIMG .
      GT_ALV-KCMENG_DN GT_LIPS-KCMENG .
      GT_ALV-UECHA_DN  GT_LIPS-UECHA .
      GT_ALV-FLAG      'X' .
      LV_FLAG          'X' .
      APPEND GT_ALV .
      CLEAR GT_LIPS .
    ENDLOOP.
    CLEAR GT_ALV .
  ENDLOOP.

  DELETE GT_ALV[] WHERE FLAG 'D' .
  DELETE GT_ALV[] WHERE VBELN_DN NOT IN S_DNELN .
  SORT GT_ALV[] BY EBELN_PO EBELP_PO VBELN_DN POSNR_DN .
  GT_ALV_A[] GT_ALV[].
  DELETE GT_ALV[] WHERE UECHA_DN IS NOT INITIAL .

  LOOP AT GT_ALV_A.

*交货过账数量
    CLEAR GT_VBFA[].
    SELECT  *
    
INTO CORRESPONDING FIELDS OF TABLE GT_VBFA[]
      
FROM VBFA
      
WHERE VBFA~VBELV GT_ALV_A-VBELN_DN
        
AND VBFA~POSNV GT_ALV_A-POSNR_DN
        
AND VBFA~VBTYP_N IN 'R','h' )
        AND VBFA~VBTYP_N <> ''
        .

    LOOP AT GT_VBFA.
      IF GT_VBFA-PLMIN '-'.
        GT_VBFA-RFMNG GT_VBFA-RFMNG * -.
      ENDIF.
      GT_ALV_A-MENGE_GZ GT_ALV_A-MENGE_GZ + GT_VBFA-RFMNG .

      GT_ALV_A-MBLNR_GZ GT_VBFA-VBELN .
      GT_ALV_A-ZEILE_GZ GT_VBFA-POSNN .

      CLEAR GT_VBFA.
    ENDLOOP.

*开票数量
    CLEAR GT_VBRP[] .
    SELECT
       VBRP~FKIMG
       VBRP
~NETWR
       VBRP
~MWSBP
    
INTO CORRESPONDING FIELDS OF TABLE GT_VBRP[]
      
FROM VBRP
      INNER 
JOIN VBRK ON VBRP~VBELN VBRK~VBELN
      
WHERE VBRP~VGBEL  GT_ALV_A-VBELN_DN
        
AND VBRP~VGPOS  GT_ALV_A-POSNR_DN
        
AND VBRK~FKART  <> 'F8'
        AND VBRK~FKSTO  ''
        AND VBRK~FKSTO  ''
        AND VBRK~SFAKN  ''
        .
    CLEAR GT_ALV_A-FKIMG_VF.
    CLEAR GT_ALV_A-NETWR_VF.
    CLEAR GT_ALV_A-MWSBP_VF.
    LOOP AT GT_VBRP.

*     'FKIMG_VF'    'DN开票数量合计',
      GT_ALV_A-FKIMG_VF GT_ALV_A-FKIMG_VF + GT_VBRP-FKIMG .

*     'NETWR_VF'    'DN开票净值合计',
      GT_ALV_A-NETWR_VF GT_ALV_A-NETWR_VF + GT_VBRP-NETWR .

*     'MWSBP_VF'    'DN开票税额合计'.
      GT_ALV_A-MWSBP_VF GT_ALV_A-MWSBP_VF + GT_VBRP-MWSBP .

      CLEAR GT_VBRP.
    ENDLOOP.

    MODIFY GT_ALV_A .
    CLEAR GT_ALV_A .
  ENDLOOP.

  IF GT_ALV[] IS NOT INITIAL.
    LOOP AT GT_ALV.

      IF GT_ALV-KCMENG_DN IS NOT INITIAL
       AND GT_ALV-VBELN_DN IS NOT INITIAL
       AND GT_ALV-POSNR_DN IS NOT INITIAL
       .

*交货单数量
        GT_ALV-LFIMY_DN GT_ALV-KCMENG_DN .
        GT_ALV-LFIMJ_DN GT_ALV-LFIMG_DN + GT_ALV-KCMENG_DN .

*拆批
        CLEAR GT_ALV-MENGE_GZ .
        CLEAR GT_ALV-FKIMG_VF .
        CLEAR GT_ALV-NETWR_VF .
        CLEAR GT_ALV-MWSBP_VF .
        LOOP AT GT_ALV_A WHERE VBELN_DN GT_ALV-VBELN_DN AND UECHA_DN GT_ALV-POSNR_DN.
*过账数量-拆批
          GT_ALV-MENGE_GZ GT_ALV-MENGE_GZ + GT_ALV_A-MENGE_GZ .
          GT_ALV-MBLNR_GZ GT_ALV_A-MBLNR_GZ .
          GT_ALV-ZEILE_GZ GT_ALV_A-ZEILE_GZ .

*开票数量-拆批
*     'FKIMG_VF'    'DN开票数量合计',
          GT_ALV-FKIMG_VF GT_ALV-FKIMG_VF + GT_ALV_A-FKIMG_VF .

*     'NETWR_VF'    'DN开票净值合计',
          GT_ALV-NETWR_VF GT_ALV-NETWR_VF + GT_ALV_A-NETWR_VF .

*     'MWSBP_VF'    'DN开票税额合计'.
          GT_ALV-MWSBP_VF GT_ALV-MWSBP_VF + GT_ALV_A-MWSBP_VF .

          CLEAR GT_ALV_A.
        ENDLOOP.

        CLEAR IW_CELLCOLOR .
        IW_CELLCOLOR-FNAME 'VBELN_DN'.
        IW_CELLCOLOR-COLOR-COL 3.
        IW_CELLCOLOR-COLOR-INT 1.
        IW_CELLCOLOR-COLOR-INV 0.
        APPEND IW_CELLCOLOR TO GT_ALV-CELLCOLOR.

        CLEAR IW_CELLCOLOR .
        IW_CELLCOLOR-FNAME 'POSNR_DN'.
        IW_CELLCOLOR-COLOR-COL 3.
        IW_CELLCOLOR-COLOR-INT 1.
        IW_CELLCOLOR-COLOR-INV 0.
        APPEND IW_CELLCOLOR TO GT_ALV-CELLCOLOR.

      ELSE.

        GT_ALV-LFIMY_DN GT_ALV-LFIMG_DN .
        GT_ALV-LFIMJ_DN GT_ALV-LFIMG_DN + GT_ALV-KCMENG_DN .

        CLEAR GT_ALV_A .
        READ TABLE GT_ALV_A WITH KEY VBELN_DN GT_ALV-VBELN_DN POSNR_DN GT_ALV-POSNR_DN .
        IF SY-SUBRC 0.
*过账数量-不拆批
          GT_ALV-MENGE_GZ GT_ALV_A-MENGE_GZ .
          GT_ALV-MBLNR_GZ GT_ALV_A-MBLNR_GZ .
          GT_ALV-ZEILE_GZ GT_ALV_A-ZEILE_GZ .
*开票数量-不拆批
          GT_ALV-FKIMG_VF GT_ALV_A-FKIMG_VF .
          GT_ALV-NETWR_VF GT_ALV_A-NETWR_VF .
          GT_ALV-MWSBP_VF GT_ALV_A-MWSBP_VF .
        ENDIF.

      ENDIF.

*凭证中的过帐日期
      SELECT SINGLE BUDAT_MKPF INTO GT_ALV-BUDAT_MKPF FROM MSEG
        
WHERE MBLNR GT_ALV-MBLNR_GZ
          
AND ZEILE GT_ALV-ZEILE_GZ
        
.

      SELECT SINGLE MAKTX INTO GT_ALV-MAKTX FROM MAKT
        
WHERE MATNR GT_ALV-MATNR
        
.

*     'ZHSJE_VF'    'DN含税金额合计'.
      GT_ALV-ZHSJE_VF GT_ALV-NETWR_VF + GT_ALV-MWSBP_VF .

*      SELECT SINGLE
*        EDATU
*        INTO GT_ALV-EDATU FROM VBEP
*        WHERE VBELN = GT_ALV-VBELN_SO
*          AND POSNR = GT_ALV-POSNR_SO
*          AND ETENR = '1'
*          .

*      CLEAR GT_ALV-KUNRG .
*      SELECT SINGLE KUNNR INTO GT_ALV-KUNRG FROM VBPA
*        WHERE VBPA~VBELN = GT_ALV-VBELN_SO
*          AND VBPA~PARVW = 'AG'
*          .
*      SELECT SINGLE NAME1 INTO GT_ALV-NAME2 FROM KNA1
*        WHERE KUNNR = GT_ALV-KUNRG
*        .

      MODIFY GT_ALV .
      CLEAR GT_ALV .
    ENDLOOP.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
  CLEAR S_LAYOUT.
  S_LAYOUT-ZEBRA 'X'.
  S_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
  S_LAYOUT-COLTAB_FIELDNAME 'CELLCOLOR'"单元格颜色内表字段
*  s_layout-box_fieldname    = 'BOX'.
  PERFORM FRM_FILL_FIELD .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_SAVE                   'A'
      IS_LAYOUT                S_LAYOUT
      IT_FIELDCAT              
GT_FIELDCAT
      I_CALLBACK_PROGRAM       
SY-REPID
      I_CALLBACK_PF_STATUS_SET 
'PF_STATUS_SET'
*     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      I_CALLBACK_USER_COMMAND  'USER_COMMAND'
    TABLES
      T_OUTTAB                 GT_ALV[].
ENDFORM.

FORM FRM_FILL_FIELD .
  DATA:  WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  DEFINE FILL_FIELD.
    WA_FIELDCAT-FIELDNAME &1.
    WA_FIELDCAT-SELTEXT_L &2.

    IF WA_FIELDCAT-FIELDNAME =  'CKBOX' .
      WA_FIELDCAT-CHECKBOX 'X'.
      WA_FIELDCAT-EDIT 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME =  'MENGE_T' .
      WA_FIELDCAT-REF_TABNAME 'AUFM'.
      WA_FIELDCAT-REF_FIELDNAME 'MENGE'.
      WA_FIELDCAT-OUTPUTLEN '13'.
      WA_FIELDCAT-EDIT 'X'.
    ENDIF .

    IF WA_FIELDCAT-FIELDNAME =  'LGORT_T' .
      WA_FIELDCAT-EDIT 'X'.
    ENDIF .

    IF WA_FIELDCAT-FIELDNAME 'PLNBEZ'
       OR WA_FIELDCAT-FIELDNAME 'MATNR'
       OR WA_FIELDCAT-FIELDNAME 'MATNRT'
      .
      WA_FIELDCAT-REF_TABNAME 'MARA'.
      WA_FIELDCAT-REF_FIELDNAME 'MATNR'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'ARKTX' OR WA_FIELDCAT-FIELDNAME 'WAKTX' .
      WA_FIELDCAT-REF_TABNAME 'VBAP'.
      WA_FIELDCAT-REF_FIELDNAME 'ARKTX'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'VBELN_DN' .
      WA_FIELDCAT-REF_TABNAME 'LIPS'.
      WA_FIELDCAT-REF_FIELDNAME 'VBELN'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'KUNNR'
      OR WA_FIELDCAT-FIELDNAME 'KUNRG'
      .
      WA_FIELDCAT-REF_TABNAME 'VBAK'.
      WA_FIELDCAT-REF_FIELDNAME 'KUNNR'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'BLDAT'
       OR WA_FIELDCAT-FIELDNAME 'BUDAT'
      .
      WA_FIELDCAT-REF_TABNAME 'MATDOC'.
      WA_FIELDCAT-REF_FIELDNAME 'BLDAT'.
*      WA_FIELDCAT-EDIT = 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'MESSAGE' .
      WA_FIELDCAT-OUTPUTLEN '100'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'TYPBO'
     OR WA_FIELDCAT-FIELDNAME 'TYPAI'
      .
      WA_FIELDCAT-ICON 'X'.
      WA_FIELDCAT-OUTPUTLEN '13'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'TYPBO'
     OR WA_FIELDCAT-FIELDNAME 'TYPAI'
      .
      WA_FIELDCAT-ICON 'X'.
    ENDIF.

    APPEND WA_FIELDCAT TO GT_FIELDCAT.
    CLEAR WA_FIELDCAT.
  END-OF-DEFINITION.

  FILL_FIELD :
     'EBELN_PO'    '采购凭证',
     'EBELP_PO'    '采购凭证项目',
     'MATNR'       '物料编码',
     'MAKTX'       '物料描述',
     'BUKRS'       '公司代码',
     'MENGE_SO'    '采购数量',
     'MEINS'       '单位',
     'NETPR'       '单价',
     'NETWR'       '金额',
     'VBELN_DN'    'DN单号',
     'POSNR_DN'    'DN项目',
     'LGORT_DN'    '库位',
     'LFIMY_DN'    '已捡配数量',
     'LFIMJ_DN'    '交货单数量',
     'MENGE_GZ'    '交货过账数量',
     'BUDAT_MKPF'  '仓库发货过账日期',
     'FKIMG_VF'    'DN开票数量合计',
     'NETWR_VF'    'DN开票净值合计',
     'ZHSJE_VF'    'DN含税金额合计'.

ENDFORM.

*         EDATU      TYPE  VBEP-EDATU,                      "SO交货日期

*        GT_ALV-LFIMY_DN = GT_ALV-KCMENG_DN .
*        GT_ALV-LFIMJ_DN = GT_ALV-LFIMY_DN + GT_ALV-KCMENG_DN .

FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN1'.
ENDFORM.

FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
                    IS_SELFIELD 
TYPE SLIS_SELFIELD.
  DATAREF TYPE REF TO CL_GUI_ALV_GRID.
  DATA LV_STABLE TYPE LVC_S_STBL.   "刷新稳定性
  RANGESL_WERKS FOR T001W-WERKS.
  RANGESL_MATNR FOR MARA-MATNR.
  DATA:L_BUKRS TYPE T001K-BUKRS.

  LV_STABLE-ROW '1'.
  LV_STABLE-COL '1'.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID REF.
  CALL METHOD REF->CHECK_CHANGED_DATA.

  CASE I_UCOMM.

    WHEN '&IC1'."表示双击
      IF IS_SELFIELD-FIELDNAME =  'VBELN_DN' .
        CHECK IS_SELFIELD-TABINDEX > 0.
        CLEAR GT_ALV .
        READ TABLE GT_ALV INDEX IS_SELFIELD-TABINDEX.
        IF GT_ALV-VBELN_DN IS NOT INITIAL.
          SET PARAMETER ID 'VL' FIELD GT_ALV-VBELN_DN.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
        ENDIF.

      ELSEIF IS_SELFIELD-FIELDNAME =  'EBELN_PO' .
        CHECK IS_SELFIELD-TABINDEX > 0.
        CLEAR GT_ALV .
        READ TABLE GT_ALV INDEX IS_SELFIELD-TABINDEX.
        IF GT_ALV-EBELN_PO IS NOT INITIAL.
          SET PARAMETER ID 'BES' FIELD GT_ALV-EBELN_PO.
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.

      ELSEIF IS_SELFIELD-FIELDNAME =  'POSNR_DN' .
        CHECK IS_SELFIELD-TABINDEX > 0.
        CLEAR GT_ALV .
        READ TABLE GT_ALV INDEX IS_SELFIELD-TABINDEX.
        IF GT_ALV-VBELN_DN IS NOT INITIAL
          AND GT_ALV-POSNR_DN IS NOT INITIAL
          .
          CLEAR GT_LIPS[].
          SELECT INTO CORRESPONDING FIELDS OF TABLE GT_LIPS[] FROM LIPS
            
WHERE VBELN GT_ALV-VBELN_DN
              
AND UECHA GT_ALV-POSNR_DN
              
.
          IF GT_LIPS[] IS NOT INITIAL.
            CALL SCREEN 0100 STARTING AT 3 3.
          ENDIF.
        ENDIF.

      ELSE .
        MESSAGE '请选择有效字段!'TYPE 'S' DISPLAY LIKE 'W'.
      ENDIF .
  ENDCASE.

  CALL METHOD REF->REFRESH_TABLE_DISPLAY
    
EXPORTING
      IS_STABLE LV_STABLE.
ENDFORM.

START-OF-SELECTION.

  PERFORM FOM_GETDATA.
  PERFORM FRM_DISPLAY.

*&SPWIZARD: DECLARATION OF TABLECONTROL 'TBC_01' ITSELF
  CONTROLSTBC_01 TYPE TABLEVIEW USING SCREEN 0100.

*&SPWIZARD: OUTPUT MODULE FOR TC 'TBC_01'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBC_01_CHANGE_TC_ATTR OUTPUT.
  DESCRIBE TABLE GT_LIPS LINES TBC_01-LINES.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT.
  LEAVE TO SCREEN .
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  OK_SAVE SY-UCOMM .
  CLEAR SY-UCOMM .
  CLEAR OK_CODE .
  CASE  OK_SAVE.
    WHEN 'BACK'  .
      LEAVE TO SCREEN .
    WHEN OTHERS .
  ENDCASE .
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS 'PF_0100'.
  SET TITLEBAR  'TITLE_0100'.
ENDMODULE.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值