ABAP开发笔记-对帐确认函

Terms of payment 解决方案 OBB8 SAP FICO运维问题解决方案 阅读详情

*&---------------------------------------------------------------------*
*& 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输出所需变量
DATA: S_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

TYPES: BEGIN 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.

TYPES: BEGIN 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.

DATA: GT_DATA      TYPE TABLE OF GTS_DATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_A    TYPE TABLE OF GTS_DATA_HEAD WITH HEADER LINE.
DATA: GT_DATA_IT   TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_A TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATA: GT_DATA_IT_B TYPE TABLE OF GTS_DATA_ITEM WITH HEADER LINE.
DATA: LV_NETJE TYPE VBRP-NETWR.
DATA: LV_NETSE TYPE VBRP-NETWR.
DATA: LV_NETHS TYPE VBRP-NETWR.
DATA: LV_HEAD  TYPE CHAR40.

DATA: GV_TOP     TYPE SDYDO_TEXT_ELEMENT.
DATA: GV_SPRAS   TYPE SPRAS.
DATA: ADDRNUMBER TYPE AD_ADDRNUM .
DATA: COUNTRY    TYPE LAND1  .
DATA: LV_ITEM    TYPE CHAR10.
DATA: LV_ITEM1   TYPE STRING.

*导出EXCEL所用到变量
TYPE-POOLS OLE2 .
DATA: V_EXCEL TYPE OLE2_OBJECT,
      V_SHEET TYPE OLE2_OBJECT,
      V_BOOK  TYPE OLE2_OBJECT,
      V_CELL  TYPE OLE2_OBJECT.
DATA: V_SHEET_NUMBER TYPE I.
DATA LV_NM    TYPE N .

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS:     P_BUKRS  LIKE VBRK-BUKRS  MODIF ID C1 OBLIGATORY.                "公司
SELECT-OPTIONS: S_FKDAT  FOR  VBRK-FKDAT  MODIF ID C1 OBLIGATORY.                "对账日期
SELECT-OPTIONS: S_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 .
  DATA: L_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 1 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 2 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 1 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 3 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 = LINES( GT_DATA_A[] ) .
        IF LV_NM > 1 .
          MESSAGE 'EXCEL导出功能仅支持单条凭证!' TYPE 'S'DISPLAY LIKE 'E' .
        ELSE .
          CLEAR GT_DATA_A .
          READ TABLE GT_DATA_A INDEX 1 .
          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.

SAP 至今为止的ABAP开发经历总结 从2019年下半年到2021年上半年,即写这篇文章为止,我已做了一年多半的ABAP开发。 从ERP是干什么都不懂的小白到熟悉开发和业务流程,这是一个曲折上升的过程。幸运的是刚入职就碰上S4/HANA升级项目,参与到了这个集团级的项目中。但可惜的是刚入职时啥都不会,导致前期盲人摸象,上级又忙没时间教导,进展缓慢。如果当时有基础再做升级项目,我的进步会更大,比如业务的熟悉程度。 我挺愿意分享一下当时的升级项目。总所周知,上SAP就是烧钱,这个项目花费百万,请外部顾问帮忙也花了百万,有够贵的。当然收益也不少,效率 阅读详情

相关推荐

abap2UI5 纯 ABAP 开发 UI5 应用程序

abap2UI5 纯 ABAP 开发 UI5 应用程序

SAP ABAP PO PI 银企直连 2121

T052U和TVZBT的区别

T052U:Own Explanations for Terms of Payment 从公司角度看,Payment维护主档,FI Module TVZBT: Customers: Terms of Payment Text...

1017

SAP HANA 上进行 ABAP 开发:简介

SAP ABAP 多年来一直在快速发展。随着 S/4HANA 的推出,ABAP 逐渐成为一门更令人印象深刻、更富有成效的语言。如果你问我 ABAP 是如何改进的,答案就是 “代码到数据 ”范式。传统的方法包括将数据从数据库引入到我们的演示服务器,进行数据密集型计算和过滤,然后将过滤后的数据呈现给用户。新的 HANA 方法是将我们的代码推送到所有数据所在的数据库层,在数据库层进行计算,然后只将相关记录带到演示服务器。

SAP学习成长之路的博客 2233

SAP笔记-abap 银行对账功能开发

前一段时间花了几天重新设计了一下银行对账功能,其中用到了 abap 的 OO 事件处理方法,及alv 的一些用法和大家分享一下,这次的修改更贴合实际业务操作. doc 档下载: http://fangkailove.download.youkuaiyun.com/银行对账功能-开发.doc银行对账功能: 功能简价:基本功能,导入银行对账单,企业明细账和银行明细账核对,打印余额调节表....

星陨阁:wxgnolux 1万+

我们一起学 ABAP (01) ~ 初识SAP ABAP

1、SAP和ABAP是什么?    SAP的英文全名是:System Applications and Products 的简写,它即是一个公司的名字,也是其公司开发的软件的名字。ABAP是SAP的开发语言,SAP几乎都是用ABAP写的。现在主流SAP R/3系统 和 ABAP/4。至于详细的发展历史及SAP的各个模块,后面在详细介绍。循序渐进。 2、ABAP咬文嚼字释义:

~ 会飞的鱼 ~ 1万+

一套适合 ABAP 初级和中级开发人员,从入门到提高的 ABAP 学习教程

曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。 ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5919

SAP 客户/供应商的到期日计算

SAP 客户/供应商的到期日计算

IamRunjiang的博客 2685

SAP Query 查询 ABAP 开发和运维笔记

Query 查询是 SAP 在 ABAP 应用层提供的简易报表查询工具,这几乎是一套最早期的低代码解决方案。这篇文章记录了我在工作中开发和运维 Query 的一些笔记,权当工具章节使用。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 1426

ABAP开发笔记-往来供应商对帐明细表

*&---------------------------------------------------------------------**&ReportZMMR102*&---------------------------------------------------------------------**&Author...

Nathan的博客 2613

Eclipse中的ABAP插件开发指南

Eclipse是一个开源的集成开发环境(IDE),最初由IBM赞助开发,旨在为所有编程语言提供一个统一、灵活、可扩展的开发平台。Eclipse以其丰富的插件生态系统而闻名,这使它能够支持多种编程语言和开发技术,包括Java、C/C++、PHP、Python等。随着插件的安装,开发者可以在Eclipse上完成从编写代码到应用部署的整个生命周期。安装ABAP插件到Eclipse IDE中是开始ABAP开发的第一步。

weixin_35829279的博客 1354

确认函格式范文.doc

确认函格式范文.doc

SAP开发语言ABAP开发入门

ABAP支持多种数据类型,包括基本数据类型(如C - 字符型、N - 数字字符型、I - 整型等)和复杂数据类型(如结构体、内表等)。函数模块是一种可复用的代码单元,可以在不同的程序中调用。- ABAP(Advanced Business Application Programming)是SAP系统中的编程语言,主要用于开发企业级的业务应用程序,如财务、物流、人力资源等模块的定制开发。- 给程序命名(遵循SAP的命名规范,一般以 Z 或 Y 开头,表示自定义程序),如 Z_HELLO_WORLD。

alittlehippo的博客 3753

保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限

本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。

weixin_30954817的博客 335

[SAP ABAP] ABAP基础语法

本问主要讲解SAP ABAP中的基础语法结构,ABAP注释

Hudas的博客 8185

如何用Python分析20年投资者情绪数据(附ISI和CICSI完整数据集)

本文提供了一份利用Python分析2003-2023年投资者情绪数据的实战指南。文章详细介绍了如何获取并清洗ISI和CICSI数据集,运用Pandas、Matplotlib等工具进行数据探索、可视化与深度分析,包括趋势分解、成分关联及情绪状态划分,旨在帮助读者掌握从数据到洞察的完整流程,为量化金融研究提供方法论支持。

gpu4optimizer的博客 468

APM32F103 配置CAN

摘要: 本文介绍了基于APM32F103RCT6的CAN通信实现,包含GPIO初始化、CAN配置、数据收发功能。通过配置CAN1的GPIO引脚(PB8/PB9)和波特率(500Kbps),实现标准帧格式的数据传输。发送函数支持8字节数据包,接收函数通过FIFO0处理消息,并根据接收ID触发响应发送(如ID 0x1回复0x2)。代码还包含错误状态检测(如总线关闭处理)和过滤器配置(32位掩码模式)。整体实现了基础的CAN通信与错误管理功能。

weixin_43676660的博客 862

ABAP小白开发操作手册+前导文

给超级小白白分享的ABAP开发必读前导文,在实际开发工作中,如何进行开发

LilySesy的博客 4532

代谢组数据分析(一):生成代谢组数据SummarizedExperiment对象

本文介绍了基于Zeybel 2022年发布的多组学数据集的分析脚本,该数据集包含微生物组、宿主人体学指标、临床学指标、血浆代谢组和免疫因子等多维度数据,涵盖56位患者的横截面数据和22位患者的纵向时间序列数据。脚本旨在生成适用于下游分析的数据对象,主要包括phyloseq和SummarizedExperiment两类。phyloseq对象用于整合微生物群落数据,支持多数据整合、可视化、丰富分析功能和便捷的数据处理;SummarizedExperiment对象则广泛应用于基因组学和转录组学研究,便于数据整合、

专注生信领域 2989

eclipse开发ABAP

前言:熟悉JAVA开发的小伙伴肯定都知道Eclipse,这是一款强大的开发工具,支持多种语言,利用它,基本可以满足我们的开发需求,当然它也支持ABAP开发,只要安装了插件ADT(ABAP Development Tool),就可以连接SAP系统进行开发了。接下来就介绍如何使用。

qq_37388190的博客 3876

Arduino ESP32 Web服务器从microSD卡读取

Arduino ESP32 Web服务器从microSD卡读取 将网页内容放到SD卡中,当有客户端数据请求时,从SD卡读取信息进行发送,比起SPIFFS文件系统,更节约板上的硬件资源。 SD卡接线说明 ESP32----- SD D5(GPIO 5)-----CS D18(GPIO 18)-----SCK D19(GPIO 19)-----MISO D23()GPIO 23-----MOSI 文件放置 需要把文件放置到SD卡的根目录下。注意SD卡的格式FAT32格式。 实例代码 /*

perseverance51博客 1433

突破边缘AI算力瓶颈:YOLOv12模型剪枝与知识蒸馏联合优化全攻略

这套剪枝-蒸馏联合方案的优势在于其系统性和可靠性。它不是单一的技巧,而是一套完整的工程流程,确保了从研发到部署的无缝衔接。

m0_71589036的博客 219

学习ABAP开发笔记

DATA ZX LIKE LH. “代码说明:DATA是创建变量的语句,ZX是变量名,LIKE接数据变量 LH是已经定义好的数据变量”DATA LH TYPE C. “代码说明:DATA是创建变量的语句,LH是变量名,TYPE接数据类型 c是文本数据类型”

m0_72694630的博客 519

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

【数据集】全球首个10米分辨率精细分类土地覆盖数据集GLC_FCS10

WW、forever的博客 1567

第8章ABAP OOP开发实例

基于类对象的动态创建则是我们推荐使用的,如前面讲过的各种设计模式,都是与自定义数据库表相配合,才能达成低耦合的灵活的架构。一般的方式是将业务类型与对应的类类型存储在自定义的数据库表中,然后在程序运行时动态读取配置,获得类名称,按字符串的形式传入到所创建的代码中,动态创建对象实例。动态创建对象实例时,需要注意以下几点。1)确认类的实例化类型,是否能够直接使用CREATE OBJECT或者NEW来创建,还是需要使用类的静态方法或者辅助类的方法来创建。

weixin_44741835的博客 1553

vue3中使用antv-S2表格(基础功能版)

表格的数值默认会渲染排序 icon, 可以配置 showDefaultHeaderActionIcon关闭。当配置为对象时,always 控制是否在子维度不足 2 个时始终展示小计,默认不展示。首先创建一个vue3+vite+ts项目,可以查看下面相关文章,只看第一条即可。可以调整行宽、列宽、列排序、单个单元格详情展示、选中某列、某行等基本功能。可以通过上面设置的SUM函数自动计算出数值,也可以自定义累加函数。配置自定义方法优先级大于配置聚合方式,即配置。1、在项目中安装(npm/pnpm都可以)

蜗牛~~ 2210

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ABAP:Visual Studio Code->ABAP FS開發ABAP教程

本文介绍了在Visual Studio Code中配置ABAP开发环境的步骤。首先需下载VS Code和ABAPFS Workspaces组件,然后通过命令面板配置SAP系统连接信息,包括获取ADT URL的方法。完成连接后即可在VS Code中访问ABAP开发包和对象,支持编辑、激活和调试代码。虽然相比GUI优势不大,但该方法可以访问需要使用Eclipse开发的CDS视图等元素。

缘起缘灭皆为因果,看到就是缘分,点赞收藏一键三连吧! 783

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: MIGO批次增强总结&技巧
下一篇: ABAP离线帮助文档下载
Nathan_Sun
博客等级 码龄9年 452粉丝 202原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值