PO保存时检查项目内容(?= 用法实例)

  METHOD IF_EX_ME_PROCESS_PO_CUST~CHECK.

    DATACL_HEADER  TYPE MEPOHEADER.
    DATAWA_ITEMS   TYPE MEPOITEM.
    DATALT_ITEMS   TYPE PURCHASE_ORDER_ITEMS.
    DATALS_ITEMS   TYPE PURCHASE_ORDER_ITEM.
    DATACL_ITEM    TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM.
    DATAGT_PRCD_ELEMENTS TYPE TABLE OF PRCD_ELEMENTS .
    DATAGS_PRCD_ELEMENTS TYPE PRCD_ELEMENTS .
    DATAGS_ZTMM_ST03 TYPE ZTMM_ST03 .
    DATAGS_WAERS TYPE WAERS .
    DATAFLAG TYPE C .

    CALL METHOD IM_HEADER->GET_DATA
      RECEIVING
        RE_DATA 
CL_HEADER.

    CALL METHOD IM_HEADER->GET_ITEMS
      RECEIVING
        RE_ITEMS 
LT_ITEMS.

*    LT_ITEMS = IM_HEADER->GET_ITEMS( ).

    LOOP AT LT_ITEMS INTO LS_ITEMS .

      CL_ITEM ?= LS_ITEMS-ITEM"类、接口等类型的向下类型转换(参照其它类的对象创建新对象)

      CALL METHOD CL_ITEM->GET_DATA
        RECEIVING
          RE_DATA 
WA_ITEMS.

    ENDLOOP.

*    CLEAR GT_PRCD_ELEMENTS[].
*    SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_PRCD_ELEMENTS[] FROM PRCD_ELEMENTS
*      WHERE KNUMV = CL_HEADER-KNUMV
*        AND KSCHL IN ( 'PB00', 'PBXX' )
*        AND KINAK = ''
*        AND KBETR > 0
*        .
*
*    LOOP AT GT_PRCD_ELEMENTS INTO GS_PRCD_ELEMENTS WHERE KSCHL = 'PBXX'.
*    ENDLOOP.
*    IF SY-SUBRC = 0 .
*      SELECT SINGLE * INTO CORRESPONDING FIELDS OF GS_ZTMM_ST03 FROM ZTMM_ST03
*        WHERE BSART = CL_HEADER-BSART
*        .
*      IF SY-SUBRC <> 0 .
*        MESSAGE '不允许手工输入价格,请通知采购部维护信息记录!' TYPE 'E'.
*      ENDIF.
*    ENDIF.
*
*    READ TABLE GT_PRCD_ELEMENTS INTO GS_PRCD_ELEMENTS INDEX 1 .
*    IF SY-SUBRC = 0 .
*      GS_WAERS = GS_PRCD_ELEMENTS-WAERS.
*    ENDIF.
*
*    CLEAR FLAG .
*    LOOP AT GT_PRCD_ELEMENTS INTO GS_PRCD_ELEMENTS.
*      IF GS_PRCD_ELEMENTS-WAERS <> GS_WAERS.
*        FLAG = 'X'.
*        EXIT.
*      ENDIF.
*    ENDLOOP.
*
*    IF FLAG = 'X'.
*      MESSAGE '采购单项目有多个结算币别,不能创建在一张采购单中!' TYPE 'E'.
*    ENDIF.

  ENDMETHOD.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要在项目中引入poi和poi-ooxml的依赖,然后可以通过以下代码来实现导出excel并动态合并相同内容列的单元格: ```java // 创建工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建工作表 XSSFSheet sheet = workbook.createSheet("Sheet1"); // 创建标题行 XSSFRow titleRow = sheet.createRow(0); titleRow.createCell(0).setCellValue("姓名"); titleRow.createCell(1).setCellValue("年龄"); titleRow.createCell(2).setCellValue("性别"); titleRow.createCell(3).setCellValue("地址"); // 创建数据行 List<User> userList = getUserList(); int rowIndex = 1; for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); XSSFRow dataRow = sheet.createRow(rowIndex++); dataRow.createCell(0).setCellValue(user.getName()); dataRow.createCell(1).setCellValue(user.getAge()); dataRow.createCell(2).setCellValue(user.getGender()); dataRow.createCell(3).setCellValue(user.getAddress()); // 动态合并相同内容列的单元格 if (i > 0) { User prevUser = userList.get(i - 1); if (user.getName().equals(prevUser.getName())) { sheet.addMergedRegion(new CellRangeAddress( rowIndex - 2, rowIndex - 1, 0, 0)); } if (user.getAge() == prevUser.getAge()) { sheet.addMergedRegion(new CellRangeAddress( rowIndex - 2, rowIndex - 1, 1, 1)); } if (user.getGender().equals(prevUser.getGender())) { sheet.addMergedRegion(new CellRangeAddress( rowIndex - 2, rowIndex - 1, 2, 2)); } if (user.getAddress().equals(prevUser.getAddress())) { sheet.addMergedRegion(new CellRangeAddress( rowIndex - 2, rowIndex - 1, 3, 3)); } } } // 输出Excel文件 FileOutputStream outputStream = new FileOutputStream("users.xlsx"); workbook.write(outputStream); outputStream.close(); ``` 其中,getUserList() 方法可以返回需要导出的数据列表,User 类是一个自定义的实体类,包含了姓名、年龄、性别和地址等属性。在创建数据行,可以将每个属性的值写入相应的单元格中,然后通过判断相邻两行的数据是否相同来动态合并相同内容列的单元格。最后,将工作簿输出到文件中即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值