CS02

背景:根据变更编号和数据对BOM进行修改操作

I_HEAD 和 I_ITEM分别为接口的导入抬头数据和导入项目数据

I_HEAD结构

I_ITEM结构

创建变更编号关键代码:

  LV_CHANGE_NO = I_HEAD-AENNR.LV_CHANGE_NO = |{ LV_CHANGE_NO ALPHA = IN }|.LS_CHANGE_HEADER-CHANGE_NO = LV_CHANGE_NO.LS_CHANGE_HEADER-STATUS = I_HEAD-AENST.LS_CHANGE_HEADER-VALID_FROM = I_HEAD-DATUV.LS_CHANGE_HEADER-DESCRIPT = I_HEAD-AETXT."勾选下列四个LS_OBJECT_BOM_MAT-ACTIVE      = 'X'.LS_OBJECT_BOM_MAT-OBJ_REQU    = 'X'.LS_OBJECT_BOM_MAT-MGTREC_GEN  = 'X'.LS_OBJECT_BOM_MAT-GEN_NEW     = 'X'.LS_OBJMGREC-BOM_USAGE   = I_HEAD-STLAN.   "BOM 用途LS_OBJMGREC-MATERIAL = I_HEAD-MATNR.LS_OBJMGREC-PLANT = I_HEAD-WRKAN.LS_OBJMGREC-CHG_OBJTYP  = '1'.  "工程更改管理对象\LS_OBJMGREC-BOM_CAT = 'M'.APPEND LS_OBJMGREC TO LT_OBJMGREC.CLEAR LS_OBJMGREC."查看当前变更编号是否已在系统中存在CALL FUNCTION 'CCAP_ECN_HEADER_READ'EXPORTINGCHANGE_NO       = LV_CHANGE_NOIMPORTINGCHANGE_HEADER   = LS_CHGEXCEPTIONSNO_RECORD_FOUND = 1OTHERS          = 2.IF SY-SUBRC <> 0. "不存在创建CALL FUNCTION 'CCAP_ECN_CREATE'EXPORTINGCHANGE_HEADER            = LS_CHANGE_HEADEROBJECT_BOM               = LS_OBJECT_BOM_MATOBJECT_BOM_MAT           = LS_OBJECT_BOM_MATFL_COMMIT_AND_WAIT       = 'X'IMPORTINGCHANGE_NO                = LV_CHANGE_NOTABLESOBJMGREC                 = LT_OBJMGRECEFFECTIVITY              = LT_EFFECTIVITYEXCEPTIONSCHANGE_NO_ALREADY_EXISTS = 1ERROR                    = 2OTHERS                   = 3.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.ELSE. "存在做修改CALL FUNCTION 'CCAP_ECN_MAINTAIN'EXPORTINGCHANGE_HEADER     = LS_CHANGE_HEADEROBJECT_BOM        = LS_OBJECT_BOM_MATOBJECT_BOM_MAT    = LS_OBJECT_BOM_MAT
*       object_bom_psp    = ls_object_bom_matFL_NO_COMMIT_WORK = SPACEFL_SYNCH          = SPACETABLESOBJMGREC          = LT_OBJMGRECEFFECTIVITY       = LT_EFFECTIVITYEXCEPTIONSERROR             = 1OTHERS            = 2.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.ENDIF.

情况1、仅对指定行项目和物料号的数据进行修改,不更改其他

    LOOP AT I_ITEM INTO DATA(LS_I_ITEM).LV_POSNR = LS_I_ITEM-POSNR.LS_T_STPO-ID_ITEM_NO = LV_POSNR. "项目号CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'EXPORTINGINPUT  = LS_T_STPO-ID_ITEM_NOIMPORTINGOUTPUT = LS_T_STPO-ID_ITEM_NO.CLEAR LV_POSNR.LS_T_STPO-ITEM_CATEG = LS_I_ITEM-POSTP. "项目类型LS_T_STPO-ID_COMP = LS_I_ITEM-IDNRK. "子件物料LS_T_STPO-COMP_QTY = LS_I_ITEM-MENGE. "数量LS_T_STPO-VALID_FROM = LV_VALID_FROM.LS_T_STPO-ITEM_NO = LS_T_STPO-ID_ITEM_NO.LS_STPO-ITEM_NO = LS_T_STPO-ID_ITEM_NO.LS_T_STPO-COMPONENT = LS_T_STPO-ID_COMP.
*      LS_T_STPO-FLDELETE = 'X'."此字段不为空的话表示删除LV_POSNR和LS_I_ITEM-IDNRK对应的BOM组件APPEND LS_T_STPO TO LT_T_STPO.CLEAR: LS_T_STPO.ENDLOOP.CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL           = LV_MATERIALPLANT              = LV_PLANTBOM_USAGE          = LV_BOM_USAGEALTERNATIVE        = LV_ALTERNATIVEVALID_FROM         = LV_VALID_FROMCHANGE_NO          = LV_CHANGE_NOI_STKO             = LS_I_STKOFL_COMMIT_AND_WAIT = 'X'FL_BOM_CREATE      = 'X'FL_NEW_ITEM        = 'X'FL_COMPLETE        = 'X'
*       FL_DEFAULT_VALUES  = 'X'IMPORTINGFL_WARNING         = LV_FL_WARNINGO_STKO             = LS_O_STKOTABLEST_STPO             = LT_T_STPOEXCEPTIONSERROR              = 1OTHERS             = 2.

情况2、在修改BOM组件之前删除掉旧的组件

对于这种情况,在T_STPO中有个字段为FLDELETE,如果情况1中的ITEM数据都给这个字段赋值为X,则表示删除掉该BOM中对应项目号和组件号的BOM组件。

如果直接使用CS_BOM_EXPL_MAT_V2展开这个BOM,则只能得到变更生效的组件项目,而不能得到未生效的组件项目,因此,我们需要先使用函数CSAP_MAT_BOM_OPEN来获得BOM的组件项目,并将组件项目全部删除,主要代码如下:

V_MATERIAL = I_HEAD-MATNR. "父件物料LV_PLANT = I_HEAD-WRKAN.  " 工厂LV_BOM_USAGE = I_HEAD-STLAN. "用途LV_ALTERNATIVE = I_HEAD-STLAL. "备选LV_VALID_FROM = I_HEAD-DATUV. "生效时间LV_CHANGE_NO = LV_CHANGE_NO. "变更号
*    LS_I_STKO-BOM_STATUS = I_HEAD-STLST. "状态
*    LS_I_STKO-BASE_QUAN = I_HEAD-BMENG.
*    LS_I_STKO-BOM_GROUP = I_HEAD-STLAL.
*    LS_I_STKO-DELETE_INDCALL FUNCTION 'CSAP_MAT_BOM_OPEN'EXPORTINGMATERIAL    = LV_MATERIALPLANT       = LV_PLANTBOM_USAGE   = LV_BOM_USAGEALTERNATIVE = LV_ALTERNATIVEVALID_FROM  = LV_VALID_FROMTABLEST_STPO      = LT_STPO"这里得到了LV_MATERIAL对应的BOM的所有的组件数据EXCEPTIONSERROR       = 1OTHERS      = 2.IF SY-SUBRC EQ 0.LOOP AT LT_STPO ASSIGNING FIELD-SYMBOL(<LFS_STPO>).<LFS_STPO>-FLDELETE = 'X'."注意,这里将得到的组件项目打上删除标记ENDLOOP.CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL           = LV_MATERIALPLANT              = LV_PLANTBOM_USAGE          = LV_BOM_USAGEALTERNATIVE        = LV_ALTERNATIVEVALID_FROM         = LV_VALID_FROMCHANGE_NO          = LV_CHANGE_NOI_STKO             = LS_I_STKOFL_COMMIT_AND_WAIT = 'X'FL_BOM_CREATE      = 'X'FL_NEW_ITEM        = 'X'FL_COMPLETE        = 'X'IMPORTINGFL_WARNING         = LV_FL_WARNINGO_STKO             = LS_O_STKOTABLEST_STPO             = LT_STPOEXCEPTIONSERROR              = 1OTHERS             = 2.ENDIF.

接口全部代码如下所示:

FUNCTION Z_XXXX.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_HEAD) TYPE  ZPPS_PDM_ECN
*"     VALUE(I_ITEM) TYPE  ZPPT_PDM_ECN_ITEM
*"  EXPORTING
*"     VALUE(E_TYP) TYPE  CHAR1
*"     VALUE(E_MSG) TYPE  CHAR255
*"----------------------------------------------------------------------DATA:RETURN TYPE STRING.DATA:LV_MATERIAL    TYPE CSAP_MBOM-MATNR,LV_PLANT       TYPE CSAP_MBOM-WERKS,LV_BOM_USAGE   TYPE CSAP_MBOM-STLAN,LV_ALTERNATIVE TYPE CSAP_MBOM-STLAL,LV_VALID_FROM  TYPE CSAP_MBOM-DATUV,LV_CHANGE_NO   TYPE CSAP_MBOM-AENNR,LS_I_STKO      TYPE STKO_API01,LS_O_STKO      TYPE STKO_API02,LT_T_STPO      TYPE TABLE OF STPO_API03,LS_T_STPO      TYPE STPO_API03,LT_STPO        TYPE TABLE OF STPO_API03,LS_STPO        TYPE STPO_API03.DATA:LV_FL_WARNING TYPE CAPIFLAG-FLWARNING."创建变更号参数DATA: LS_CHANGE_HEADER  TYPE AENR_API01.DATA: LS_CHG            TYPE AENR_API02.DATA: LS_RETURN_MSG     TYPE BAPIRET2.DATA: LS_OBJECT_BOM_MAT TYPE AENV_API01..DATA: LS_OBJECT_BOM_PSP TYPE AENV_API01..DATA: LS_OBJECT_DOC     TYPE AENV_API01.DATA: LT_OBJMGREC       TYPE STANDARD TABLE OF AEOI_API01.DATA: LS_OBJMGREC       TYPE AEOI_API01.DATA: LT_EFFECTIVITY    TYPE STANDARD TABLE OF AEEF_API01.DATA: LS_EFFECTIVITY    TYPE AEEF_API01.DATA:LV_POSNR TYPE I.DATA:LT_STB   TYPE TABLE OF STPOX.CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGINPUT  = I_HEAD-MATNRIMPORTINGOUTPUT = I_HEAD-MATNR.LV_CHANGE_NO = I_HEAD-AENNR.LV_CHANGE_NO = |{ LV_CHANGE_NO ALPHA = IN }|.LS_CHANGE_HEADER-CHANGE_NO = LV_CHANGE_NO.LS_CHANGE_HEADER-STATUS = I_HEAD-AENST.LS_CHANGE_HEADER-VALID_FROM = I_HEAD-DATUV.LS_CHANGE_HEADER-DESCRIPT = I_HEAD-AETXT.LS_OBJECT_BOM_MAT-ACTIVE      = 'X'.LS_OBJECT_BOM_MAT-OBJ_REQU    = 'X'.LS_OBJECT_BOM_MAT-MGTREC_GEN  = 'X'.LS_OBJECT_BOM_MAT-GEN_NEW     = 'X'.LS_OBJMGREC-BOM_USAGE   = I_HEAD-STLAN.   "BOM 用途LS_OBJMGREC-MATERIAL = I_HEAD-MATNR.LS_OBJMGREC-PLANT = I_HEAD-WRKAN.LS_OBJMGREC-CHG_OBJTYP  = '1'.  "工程更改管理对象\LS_OBJMGREC-BOM_CAT = 'M'.APPEND LS_OBJMGREC TO LT_OBJMGREC.CLEAR LS_OBJMGREC.CALL FUNCTION 'CCAP_ECN_HEADER_READ'EXPORTINGCHANGE_NO       = LV_CHANGE_NOIMPORTINGCHANGE_HEADER   = LS_CHGEXCEPTIONSNO_RECORD_FOUND = 1OTHERS          = 2.IF SY-SUBRC <> 0. "不存在创建CALL FUNCTION 'CCAP_ECN_CREATE'EXPORTINGCHANGE_HEADER            = LS_CHANGE_HEADEROBJECT_BOM               = LS_OBJECT_BOM_MATOBJECT_BOM_MAT           = LS_OBJECT_BOM_MATFL_COMMIT_AND_WAIT       = 'X'IMPORTINGCHANGE_NO                = LV_CHANGE_NOTABLESOBJMGREC                 = LT_OBJMGRECEFFECTIVITY              = LT_EFFECTIVITYEXCEPTIONSCHANGE_NO_ALREADY_EXISTS = 1ERROR                    = 2OTHERS                   = 3.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.ELSE. "存在做修改CALL FUNCTION 'CCAP_ECN_MAINTAIN'EXPORTINGCHANGE_HEADER     = LS_CHANGE_HEADEROBJECT_BOM        = LS_OBJECT_BOM_MATOBJECT_BOM_MAT    = LS_OBJECT_BOM_MAT
*       object_bom_psp    = ls_object_bom_matFL_NO_COMMIT_WORK = SPACEFL_SYNCH          = SPACETABLESOBJMGREC          = LT_OBJMGRECEFFECTIVITY       = LT_EFFECTIVITYEXCEPTIONSERROR             = 1OTHERS            = 2.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.ENDIF.IF SY-SUBRC = 0 .CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'..ELSE.E_TYP = 'E'.E_MSG = LV_CHANGE_NO && '创建修改失败,请检查上传的数据.'.ENDIF.IF E_TYP IS INITIAL.LV_MATERIAL = I_HEAD-MATNR. "父件物料LV_PLANT = I_HEAD-WRKAN.  " 工厂LV_BOM_USAGE = I_HEAD-STLAN. "用途LV_ALTERNATIVE = I_HEAD-STLAL. "备选LV_VALID_FROM = I_HEAD-DATUV. "生效时间LV_CHANGE_NO = LV_CHANGE_NO. "变更号CALL FUNCTION 'CSAP_MAT_BOM_OPEN'EXPORTINGMATERIAL    = LV_MATERIALPLANT       = LV_PLANTBOM_USAGE   = LV_BOM_USAGEALTERNATIVE = LV_ALTERNATIVEVALID_FROM  = LV_VALID_FROMTABLEST_STPO      = LT_STPOEXCEPTIONSERROR       = 1OTHERS      = 2.IF SY-SUBRC EQ 0.LOOP AT LT_STPO ASSIGNING FIELD-SYMBOL(<LFS_STPO>).<LFS_STPO>-FLDELETE = 'X'.ENDLOOP.CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL           = LV_MATERIALPLANT              = LV_PLANTBOM_USAGE          = LV_BOM_USAGEALTERNATIVE        = LV_ALTERNATIVEVALID_FROM         = LV_VALID_FROMCHANGE_NO          = LV_CHANGE_NOI_STKO             = LS_I_STKOFL_COMMIT_AND_WAIT = 'X'FL_BOM_CREATE      = 'X'FL_NEW_ITEM        = 'X'FL_COMPLETE        = 'X'IMPORTINGFL_WARNING         = LV_FL_WARNINGO_STKO             = LS_O_STKOTABLEST_STPO             = LT_STPOEXCEPTIONSERROR              = 1OTHERS             = 2.ENDIF.LOOP AT I_ITEM INTO DATA(LS_I_ITEM).LV_POSNR = LS_I_ITEM-POSNR.LS_T_STPO-ID_ITEM_NO = LV_POSNR. "项目号CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'EXPORTINGINPUT  = LS_T_STPO-ID_ITEM_NOIMPORTINGOUTPUT = LS_T_STPO-ID_ITEM_NO.CLEAR LV_POSNR.LS_T_STPO-ITEM_CATEG = LS_I_ITEM-POSTP. "项目类型LS_T_STPO-ID_COMP = LS_I_ITEM-IDNRK. "子件物料LS_T_STPO-COMP_QTY = LS_I_ITEM-MENGE. "数量LS_T_STPO-VALID_FROM = LV_VALID_FROM.LS_T_STPO-ITEM_NO = LS_T_STPO-ID_ITEM_NO.LS_STPO-ITEM_NO = LS_T_STPO-ID_ITEM_NO.LS_T_STPO-COMPONENT = LS_T_STPO-ID_COMP.APPEND LS_T_STPO TO LT_T_STPO.CLEAR: LS_T_STPO.ENDLOOP.CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'EXPORTINGMATERIAL           = LV_MATERIALPLANT              = LV_PLANTBOM_USAGE          = LV_BOM_USAGEALTERNATIVE        = LV_ALTERNATIVEVALID_FROM         = LV_VALID_FROMCHANGE_NO          = LV_CHANGE_NOI_STKO             = LS_I_STKOFL_COMMIT_AND_WAIT = 'X'FL_BOM_CREATE      = 'X'FL_NEW_ITEM        = 'X'FL_COMPLETE        = 'X'IMPORTINGFL_WARNING         = LV_FL_WARNINGO_STKO             = LS_O_STKOTABLEST_STPO             = LT_T_STPOEXCEPTIONSERROR              = 1OTHERS             = 2.IF SY-SUBRC NE 0.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = SY-MSGIDMSGNR               = SY-MSGNOMSGV1               = SY-MSGV1MSGV2               = SY-MSGV2MSGV3               = SY-MSGV3MSGV4               = SY-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = RETURN.E_MSG = RETURN.
*      BREAK-POINT.ELSE.E_TYP = 'S'.E_MSG = I_HEAD-MATNR && '  BOM修改成功 更改号为' && LV_CHANGE_NO.CLEAR LV_CHANGE_NO.ENDIF.ENDIF.
ENDFUNCTION.

CS01/CS02/CS03 BOM修改 CSAP_MAT_BOM_MAINTAIN相关推荐

  1. PP-基础操作03(ECN(工程变更单)创建及BOM修改)

    ECN(工程变更单)创建及BOM修改 通过路径: 或者tcode-CC01进入工程变更单(ECN)创建界面 (注:PP相关的事务有很多都是以C开头) 输入一个变更编号点击Enter可以进入ECN维护界 ...

  2. SAP ABAP BOM 更新函数 CSAP_MAT_BOM_MAINTAIN使用

    背景: 对于使用PLM系统 或 CAPP系统的企业,SAP 需要承接上游对于BOM的数据,包括 创建.更改.删除等操作. 因管理要求不同,SAP端更新逻辑由原先的 先删除,再创建,改成直接更改,实现S ...

  3. ABAP CS02物料BOM相关性分配实现

    一.SAP前台界面操作 二.代码实现 DATA:bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE. DATA:messtab LIKE bdcmsgcoll ...

  4. 订单BOM与销售BOM的区别

    订单BOM与销售BOM的区别 訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM 銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶 ...

  5. SAP 订单BOM与销售BOM的区别

    订单BOM与销售BOM的区别 訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM 銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶 ...

  6. 订单BOM、销售BOM、标准BOM

    訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM 銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的. 標準BO ...

  7. SAP各种BOM详解(包含常用BAPI)

    生产订单BOM.销售订单BOM.标准BOM 生产订单BOM ,跑生产订单时,子组件体现作用 . 销售订单BOM ,跑MRP 时体现子组件的作用 . rcdf应用:真空管损耗率.销售bom zpp020 ...

  8. 订单BOM -销售BOM-标准BOM

    订单BOM -销售BOM-标准BOM 订单BOM: 是实际生产时使用的BOM, 在标准BOM和销售BOM基础上增减物料的BOM: 销售BOM: 是为特定客户设定的BOM, 在主档数据层次上的BOM, ...

  9. 生产BOM、销售BOM、标准BOM的区别

    订单BOM: 是生产订单所使用的BOM, 在标准BOM和销售 BOM基礎上增減物料的BOM 销售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的. 标准 ...

最新文章

  1. BCH涨幅超过146%,势必跟BTC争夺王位?
  2. asp.net webform 与asp.net mvc 混合开发项目总结
  3. Python之路--前端知识--JavaScript
  4. VTK:绘制BarChart条形图用法实战
  5. python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构
  6. POI SXSSFWorkbook 实现大批量数据 导出
  7. 计算机游戏攻略67,保卫萝卜2 67攻略水晶萝卜详解
  8. 技嘉z77主板msata速度_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比
  9. Spring Cloud Config服务器
  10. grafa导出数据图标_第5章 数据与可视化 - Grafana与数据可视化 - 《Prometheus操作指南》 - 书栈网 · BookStack...
  11. BAT账号相关1:腾讯开放平台和QQ互联开发者审核步骤
  12. MySql分页查询limit
  13. ios 开发证书导出p12文件_iOS 证书(.p12)和描述文件(.mobileprovision)的导出和使用方法...
  14. 国内打开Cousera方法
  15. 动态设置Button图片大小
  16. WIN10打开网络共享文件夹提示0x80004005怎么解决?(转载)
  17. android id如何修改密码,小编教你忘记Apple ID密码怎么办?以及如何修改密码
  18. Codeforces 940E: Cashback 单调队列优化DP
  19. 1996届瑞安市计算机学校,1996届校友
  20. Android蓝牙bt/ble开发

热门文章

  1. 【企业】乔吉拉德之 250 定律
  2. tcl/tk 的原生界面
  3. QMS-云质-质量管理-海克斯康为什么不断收购质量管理软件(QMS)?
  4. 勿忘2022,迎接2023
  5. Kev++之正则表达式系列-视频分享
  6. 他们为什么离开微软? 创业热情驱动
  7. 关于客户端断开连接后服务器抛出异常Connection reset
  8. 如何在Windows和Mac下挂载EFI分区
  9. mybatis 配置多数据源 java,SpringBoot+MyBatisPlus配置多数据源读写分离
  10. UE4 | 学习Shader - “赏月、玩灯笼”