ABAP开发笔记-对帐确认函

*&---------------------------------------------------------------------*
*& Report ZMMR102
*&---------------------------------------------------------------------*
*& Author              :  NathanSun
*& Create Date         :  2019-06-27
*& Program Type        :  Report
*& Description         :  对帐确认函
*&---------------------------------------------------------------------*
REPORT ZSDR002.

*&---------------------------------------------------------------------*
*& 包含               YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:LIKP,EKKO,VBAP,VBRK,VBPA.

TYPE-POOLS:SLIS.

"定义ALV输出所需变量
DATAS_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

TYPESBEGIN OF GTS_DATA_HEAD,
         CKBOX TYPE  C,                               "选择列
         ZDZQJ TYPE  DATS,                            "对账期间日期
         ZBITI TYPE  CHAR30,                          "标题

         VBELN TYPE  VBRK-VBELN,                      "开票凭证
         KUNRG TYPE  VBRK-KUNRG,                      "客户
         NAME1 TYPE  KNA1-NAME1,                      "客户名称
         ZDZRN TYPE  CHAR30,                          "对账人
         ZLXDH TYPE  CHAR30,                          "联系电话
         ZCZDH TYPE  CHAR30,                          "传真电话
         ZDZYX TYPE  CHAR30,                          "电子邮箱

         BUKRS TYPE  VBRK-BUKRS,                      "公司代码
         BUTXT TYPE  T001-BUTXT,                      "公司代码或公司的名称
         ZTERM TYPE  VBRK-ZTERM,                      "付款条件代码
         TEXT1 TYPE  T052U-TEXT1,                     "收付条款的自解释
         ZDQRQ TYPE  DATS,                            "到期日
       END OF GTS_DATA_HEAD.

TYPESBEGIN OF GTS_DATA_ITEM,
         ITEM      TYPE  CHAR10,                      "序号
         VBELN     TYPE  VBRP-VBELN,                  "开票凭证
         POSNR     TYPE  VBRP-POSNR,                  "开票项目
         KUNRG     TYPE  VBRK-KUNRG,                  "客户编号
         MATNR     TYPE  VBRP-MATNR,                  "物料编号
         WADAT_IST TYPE  LIKP-WADAT_IST,              "DN过账日期
         VGBEL     TYPE  VBRP-VGBEL,                  "送货单号
         AUBEL     TYPE  VBRP-AUBEL,                  "销售凭证
         MEINS     TYPE  VBRP-MEINS,                  "单位
         FKIMG     TYPE  VBRP-FKIMG,                  "数量
         ZVSDJ     TYPE  VBRP-NETWR,                  "单价(不含税)
         NETWR     TYPE  VBRP-NETWR,                  "金额(不含税)
         ZSHLV     TYPE  CHAR20,                      "税率
         MWSBP     TYPE  VBRP-MWSBP,                  "税额
         ZHSJE     TYPE  VBRP-NETWR,                  "金额(含税)
       END OF GTS_DATA_ITEM.

DATAGT_DATA      TYPE TABLE OF GTS_DATA_HEAD WITH HEADER LINE.
DATAGT_DATA_A    TYPE TABLE OF GTS_DATA_HEAD WITH HEADER LINE.
DATAGT_DATA_IT   TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATAGT_DATA_IT_A TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATAGT_DATA_IT_B TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATALV_NETJE TYPE VBRP-NETWR.
DATALV_NETSE TYPE VBRP-NETWR.
DATALV_NETHS TYPE VBRP-NETWR.
DATALV_HEAD  TYPE CHAR40.

DATAGV_TOP     TYPE SDYDO_TEXT_ELEMENT.
DATAGV_SPRAS   TYPE SPRAS.
DATAADDRNUMBER TYPE AD_ADDRNUM .
DATACOUNTRY    TYPE LAND1  .
DATALV_ITEM    TYPE CHAR10.
DATALV_ITEM1   TYPE STRING.

*导出EXCEL所用到变量
TYPE-POOLS OLE2 .
DATAV_EXCEL TYPE OLE2_OBJECT,
      V_SHEET TYPE OLE2_OBJECT,
      V_BOOK  TYPE OLE2_OBJECT,
      V_CELL  TYPE OLE2_OBJECT.
DATAV_SHEET_NUMBER TYPE I.
DATA LV_NM    TYPE .

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS:     P_BUKRS  LIKE VBRK-BUKRS  MODIF ID C1 OBLIGATORY.                "公司
SELECT-OPTIONSS_FKDAT  FOR  VBRK-FKDAT  MODIF ID C1 OBLIGATORY.                "对账日期
SELECT-OPTIONSS_KUNRG  FOR  VBRK-KUNRG  MODIF ID C1.                           "客户编码
PARAMETERS:     P_ZDZRQ  LIKE VBRK-FKDAT  MODIF ID C1 OBLIGATORY.                "对账期间日期
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& 包含               YN_TEST02_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
* AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
*  ID 'WERKS' FIELD P_WERKS.
*  IF SY-SUBRC <> 0.
*    MESSAGE '您没有工厂:'&& P_WERKS && '  的权限!' TYPE 'E' .
*  ENDIF.
  IF S_FKDAT-HIGH IS INITIAL.
    MESSAGE '请输入对账日期的上限!TYPE 'E' .
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .

  CLEAR GT_DATA[] .
  SELECT INTO CORRESPONDING FIELDS OF TABLE GT_DATA[] FROM VBRK
    
WHERE BUKRS P_BUKRS
      
.
  LOOP AT GT_DATA.

    GT_DATA-ZBITI P_ZDZRQ(4&& '&& P_ZDZRQ+4(2&& '月对帐确认函.

    CLEAR GT_DATA-KUNRG .
    SELECT SINGLE KUNNR INTO GT_DATA-KUNRG FROM VBPA
      
WHERE VBPA~VBELN GT_DATA-VBELN
        
AND VBPA~PARVW 'AG'
        .

    SELECT SINGLE NAME1 INTO GT_DATA-NAME1 FROM KNA1
      
WHERE KUNNR GT_DATA-KUNRG
      
.
    SELECT SINGLE BUTXT INTO GT_DATA-BUTXT FROM T001
      
WHERE BUKRS GT_DATA-BUKRS
      
.
    GT_DATA-ZDZRN '陈婷'.
    GT_DATA-ZLXDH '021-3957-5538'.
    GT_DATA-ZDZYX 'Rong.Zhou@brose.com'.
    GT_DATA-BUTXT GT_DATA-BUTXT .
    GT_DATA-ZDQRQ SY-DATUM .

    SELECT SINGLE TEXT1 INTO GT_DATA-TEXT1 FROM T052U
      
WHERE ZTERM GT_DATA-ZTERM
        
.

    MODIFY GT_DATA .
    CLEAR GT_DATA .
  ENDLOOP.
  DELETE GT_DATA[] WHERE KUNRG NOT IN S_KUNRG .
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  frm_create_xsl
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CREATE_XSL .
  DATAL_NAME     LIKE WWWDATATAB,
        L_MIME     LIKE W3MIME OCCURS 10,
        L_FILENAME TYPE STRING,
        L_PATH     TYPE STRING,
        L_FULLPATH TYPE STRING,
        L_ROW      TYPE I,
        L_COL      TYPE I,
        L_TITLE    TYPE STRING.

  L_TITLE '对帐确认函'.
  L_NAME-OBJID 'ZSDR002'.                                         模板


  L_NAME-RELID 'MI'.
  L_NAME-TEXT SY-TITLE.
  CALL FUNCTION 'WWWDATA_IMPORT'
    EXPORTING
      KEY               L_NAME
    
TABLES
*     HTML              =
      MIME              L_MIME
    
EXCEPTIONS
      WRONG_OBJECT_TYPE 1
      IMPORT_ERROR      2
      OTHERS            3.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    
EXPORTING
      WINDOW_TITLE         L_TITLE
      DEFAULT_EXTENSION    
'xls'
      DEFAULT_FILE_NAME    L_TITLE
      FILE_FILTER          
'(电子表格EXCEL)'
    CHANGING
      FILENAME             L_FILENAME
      PATH                 
L_PATH
      FULLPATH             
L_FULLPATH
    
EXCEPTIONS
      CNTL_ERROR           1
      ERROR_NO_GUI         2
      NOT_SUPPORTED_BY_GUI 3
      OTHERS               4.
  IF SY-SUBRC <> 0.
    STOP.
  ENDIF.
*弹出窗口选择导出路径
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      FILENAME L_FULLPATH
      FILETYPE 
'BIN'
    TABLES
      DATA_TAB L_MIME.

*--打开excel模板
  PERFORM FRM_OPEN_EXCEL USING L_FULLPATH.

*--打开excel第一个sheet
  V_SHEET_NUMBER 1.
  PERFORM FRM_OPEN_EXCEL_SHEET USING V_SHEET_NUMBER.

*锁定单元格然后赋值

*--EXCEL FILE的内容
  L_ROW 1.
  L_COL 1.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZBITI.

  L_ROW 2.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-NAME1.

  L_ROW 3.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZDZRN.

  L_ROW 4.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZLXDH.

  L_ROW 5.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZCZDH.

  L_ROW 6.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZDZYX.

  L_ROW 2.
  L_COL 10.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-BUTXT.

  L_ROW 4.
  L_COL 10.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-TEXT1.

  L_ROW 5.
  L_COL 10.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZDQRQ.

  CLEAR LV_HEAD .
  LV_HEAD '对账期间:'  &&  S_FKDAT-LOW(4&& '&&  S_FKDAT-LOW+4(2&& '&& S_FKDAT-LOW+6(2&& '日至&&
  S_FKDAT
-HIGH(4&& '&&  S_FKDAT-HIGH+4(2&& '&& S_FKDAT-HIGH+6(2&& '.

  L_ROW 9.
  L_COL 1.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL LV_HEAD.

  L_ROW 9.
  L_COL 10.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '币种:CNY'.

  CLEAR GT_DATA_IT[] .
  SELECT INTO CORRESPONDING FIELDS OF TABLE GT_DATA_IT[] FROM VBRP
    
WHERE VBELN GT_DATA_A-VBELN
    
.
  SORT GT_DATA_IT[] BY VBELN MATNR .
  GT_DATA_IT_A[] GT_DATA_IT[] .

  DELETE ADJACENT DUPLICATES FROM GT_DATA_IT[] COMPARING VBELN MATNR.

  CLEAR LV_NETJE .
  CLEAR LV_NETSE .
  CLEAR LV_NETHS .
  LOOP AT GT_DATA_IT.
    CLEAR GT_DATA_IT-NETWR .
    CLEAR GT_DATA_IT-FKIMG .
    LOOP AT GT_DATA_IT_A WHERE VBELN GT_DATA_IT-VBELN AND MATNR GT_DATA_IT-MATNR.
      GT_DATA_IT-NETWR GT_DATA_IT-NETWR + GT_DATA_IT_A-NETWR .
      GT_DATA_IT-FKIMG GT_DATA_IT-FKIMG + GT_DATA_IT_A-FKIMG .
      CLEAR GT_DATA_IT_A .
    ENDLOOP.

    SELECT SINGLE KUNNR INTO GT_DATA_IT-KUNRG FROM VBPA
      
WHERE VBPA~VBELN GT_DATA_IT-VBELN
        
AND VBPA~PARVW 'AG'
        .
    SELECT SINGLE WADAT_IST INTO GT_DATA_IT-WADAT_IST FROM LIKP
      
WHERE LIKP~VBELN GT_DATA_IT-VGBEL
        
.
    IF GT_DATA_IT-FKIMG <> 0.
      GT_DATA_IT-ZVSDJ GT_DATA_IT-NETWR / GT_DATA_IT-FKIMG .
    ENDIF.

    GT_DATA_IT-ZSHLV '13%'.

    GT_DATA_IT-ZHSJE GT_DATA_IT-NETWR + GT_DATA_IT-MWSBP .

    LV_NETJE LV_NETJE + GT_DATA_IT-NETWR .
    LV_NETSE LV_NETSE + GT_DATA_IT-MWSBP .
    LV_NETHS LV_NETHS + GT_DATA_IT-ZHSJE .

    MODIFY GT_DATA_IT.
    CLEAR GT_DATA_IT .
  ENDLOOP.

  DELETE GT_DATA_IT WHERE WADAT_IST NOT IN S_FKDAT .

  CLEAR LV_ITEM .
  LOOP AT GT_DATA_IT.
    ADD TO LV_ITEM .
    L_ROW SY-TABIX + 10.
    L_COL 1.
    GT_DATA_IT-ITEM LV_ITEM .
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-ITEM.
    L_COL 2.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-KUNRG.
    L_COL 3.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-MATNR.
    L_COL 4.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-WADAT_IST.
    L_COL 5.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-VGBEL.
    L_COL 6.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-AUBEL.
    L_COL 7.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-MEINS.
    L_COL 8.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-FKIMG.
    L_COL 9.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-ZVSDJ.
    L_COL 10.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-NETWR.
    L_COL 11.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-ZSHLV.
    L_COL 12.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-MWSBP.
    L_COL 13.
    PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_IT-ZHSJE.
    CLEAR GT_DATA_IT .
  ENDLOOP.

  ADD TO L_ROW .
  L_COL 7.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '合计:'.
  L_COL 10.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL LV_NETJE.
  L_COL 12.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL LV_NETSE.
  L_COL 13.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL LV_NETHS.

  ADD TO L_ROW .
  L_COL 1.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '制表人:'.
  L_COL 2.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL GT_DATA_A-ZDZRN.
  L_COL 3.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '制表日期:'.
  L_COL 4.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL SY-DATUM.
  L_COL 9.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '客户确认:'.

  ADD TO L_ROW .
  L_COL 1.
  PERFORM FRM_WRITE_CELL USING L_ROW L_COL '注:退货/少料请用负数表示。  '.
关闭EXCEL
  PERFORM FRM_SAVE_EXCEL USING L_FULLPATH.
ENDFORM.                    " frm_create_xsl
*&---------------------------------------------------------------------*
*&      Form  FRM_OPEN_EXCEL
*&---------------------------------------------------------------------*
*      -->P_L_FULLPATH  Local excel file full path
*----------------------------------------------------------------------*
FORM FRM_OPEN_EXCEL  USING    PA_PATH.
  CREATE OBJECT V_EXCEL 'Excel.Application'.

  CALL METHOD OF V_EXCEL 'Workbooks' V_BOOK.

  CALL METHOD OF V_BOOK 'Open' V_BOOK
    
EXPORTING #1 PA_PATH.

  IF SY-SUBRC <> 0.
    MESSAGE E001(00)  WITH 'Open file failed!'.
    STOP.
  ENDIF.

ENDFORM.                    " FRM_OPEN_EXCEL
*&---------------------------------------------------------------------*
*&      Form  FRM_OPEN_EXCEL_SHEET
*&---------------------------------------------------------------------*
*      -->P_V_SHEET_NUMBER  sheet number
*----------------------------------------------------------------------*
FORM FRM_OPEN_EXCEL_SHEET  USING    PA_SHEET_NUMBER.
  SET PROPERTY OF V_EXCEL 'Visible' 1.

  CALL METHOD OF V_BOOK 'Sheets' V_SHEET
    
EXPORTING #1 PA_SHEET_NUMBER.

ENDFORM.                    " FRM_OPEN_EXCEL_SHEET
*&---------------------------------------------------------------------*
*&      Form  FRM_WRITE_CELL
*&---------------------------------------------------------------------*
*      -->P_L_ROW  number of row
*      -->P_L_COL  number of collum
*      -->P_L_VAL  cell value
*----------------------------------------------------------------------*
FORM FRM_WRITE_CELL  USING    PA_ROW
                              PA_COL
                              PA_VAL
.
  CALL METHOD OF V_SHEET 'Cells' V_CELL
    
EXPORTING #1 PA_ROW
    #2 
PA_COL.
  SET PROPERTY OF V_CELL 'Value' PA_VAL.

ENDFORM.                    " FRM_WRITE_CELL
*&---------------------------------------------------------------------*
*&      Form  FRM_SAVE_EXCEL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_L_FULLPATH  text
*----------------------------------------------------------------------*
FORM FRM_SAVE_EXCEL  USING    PA_FULLPATH.
  SET PROPERTY OF V_EXCEL 'DisplayAlerts' 0.
  CALL METHOD OF V_BOOK 'SAVEAS'
    EXPORTING
      #1 PA_FULLPATH.

  CALL METHOD OF V_BOOK 'Exit' V_BOOK.
  FREE OBJECT V_EXCEL.

ENDFORM.                    " FRM_SAVE_EXCEL
*&---------------------------------------------------------------------*
*& 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-box_fieldname    = 'BOX'.
  PERFORM FRM_FILL_FIELD .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      IS_LAYOUT                S_LAYOUT
      IT_FIELDCAT              
GT_FIELDCAT
      I_CALLBACK_PROGRAM       
SY-REPID
      I_CALLBACK_PF_STATUS_SET 
'PF_STATUS_SET'
      I_CALLBACK_USER_COMMAND  'USER_COMMAND'
    TABLES
      T_OUTTAB                 GT_DATA[].
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-OUTPUTLEN '6'.
      WA_FIELDCAT-CHECKBOX 'X'.
      WA_FIELDCAT-EDIT 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME =  'ZDQRQ' .
      WA_FIELDCAT-REF_TABNAME 'ZDQR'.
      WA_FIELDCAT-REF_FIELDNAME 'ZDQR'.
      WA_FIELDCAT-OUTPUTLEN '12'.
      WA_FIELDCAT-EDIT 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'PLNBEZ'
      OR WA_FIELDCAT-FIELDNAME 'MATNR' .
      WA_FIELDCAT-REF_TABNAME 'MARA'.
      WA_FIELDCAT-REF_FIELDNAME 'MATNR'.
    ENDIF.
    IF WA_FIELDCAT-FIELDNAME 'VBELN'
      OR WA_FIELDCAT-FIELDNAME 'KUNRG'
      .
      WA_FIELDCAT-OUTPUTLEN '12'.
    ENDIF.
    IF WA_FIELDCAT-FIELDNAME 'NAME1'
      .
      WA_FIELDCAT-OUTPUTLEN '40'.
    ENDIF.
    IF WA_FIELDCAT-FIELDNAME =  'ZDZRN'
      OR WA_FIELDCAT-FIELDNAME 'ZLXDH'
      OR WA_FIELDCAT-FIELDNAME 'ZCZDH'
      OR WA_FIELDCAT-FIELDNAME 'ZDZYX'
      .
      WA_FIELDCAT-OUTPUTLEN '30'.
      WA_FIELDCAT-EDIT 'X'.
    ENDIF .

    APPEND WA_FIELDCAT TO GT_FIELDCAT.
    CLEAR WA_FIELDCAT.
  END-OF-DEFINITION.
  FILL_FIELD :
        'CKBOX'     '选择列',
        'VBELN'     '开票凭证',
        'KUNRG'     '客户编号',
        'NAME1'     '客户名称',
        'ZDZRN'     '对账人'  ,
        'ZLXDH'     '联系电话',
        'ZCZDH'     '传真电话',
        'ZDZYX'     '电子邮箱',
        'ZDQRQ'     '到期日'  .

ENDFORM.

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

FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
                    IS_SELFIELD 
TYPE SLIS_SELFIELD.
  DATA:   REF TYPE REF TO CL_GUI_ALV_GRID.
  DATA :  LV_STABLE TYPE LVC_S_STBL.   "刷新稳定性
  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 'PRINT'."点击打印

    WHEN 'ALL'.
      LOOP AT GT_DATA.
        GT_DATA-CKBOX 'X' .
        MODIFY GT_DATA .
        CLEAR GT_DATA .
      ENDLOOP.
    WHEN 'SAL'.
      LOOP AT GT_DATA.
        GT_DATA-CKBOX '' .
        MODIFY GT_DATA .
        CLEAR GT_DATA .
      ENDLOOP.

    WHEN 'EXCEL_OUT'.

      GT_DATA_A[] GT_DATA[] .
      DELETE GT_DATA_A[] WHERE CKBOX IS INITIAL .

      IF GT_DATA_A[] IS NOT INITIAL.

        CLEAR LV_NM .
        LV_NM LINESGT_DATA_A[] ) .
        IF LV_NM > .
          MESSAGE 'EXCEL导出功能仅支持单条凭证!TYPE 'S'DISPLAY LIKE 'E' .
        ELSE .
          CLEAR GT_DATA_A .
          READ TABLE GT_DATA_A INDEX .
          PERFORM FRM_CREATE_XSL.

        ENDIF.

      ELSE .
        MESSAGE '您还没有选择任何条目!TYPE 'S'DISPLAY LIKE 'W' .
      ENDIF.

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

ENDFORM.

AT SELECTION-SCREEN.
  PERFORM SCREEN_SETTING.

START-OF-SELECTION.
  PERFORM FOM_GETDATA .
  PERFORM FRM_DISPLAY.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值