*&---------------------------------------------------------------------* *& Report ZPPRP028 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT zpprp028. INCLUDE zpprp028top. INCLUDE zpprp028alv. *生成按钮 SELECTION-SCREEN: FUNCTION KEY 1, FUNCTION KEY 2. *初始化显示按钮 INITIALIZATION. comm_smp_dyntxt-icon_id = icon_create. comm_smp_dyntxt-icon_text = '导入模版'. sscrfields-functxt_01 = comm_smp_dyntxt. comm_smp_dyntxt-icon_id = icon_change. comm_smp_dyntxt-icon_text = '下载模版'. sscrfields-functxt_02 = comm_smp_dyntxt. *自定义按钮点击事件 AT SELECTION-SCREEN. CASE sscrfields-ucomm. WHEN 'FC01'. IF comm_p_f = ''. MESSAGE '请选择模版' TYPE 'I'. EXIT. ENDIF. PERFORM func_itab_get_data."获取数据 PERFORM func_alv_show. "显示ALV WHEN 'FC02'. PERFORM func_004. WHEN OTHERS. ENDCASE. *执行按钮点击事件 START-OF-SELECTION. IF comm_p_f = ''. MESSAGE '请选择模版' TYPE 'I'. EXIT. ENDIF. PERFORM func_itab_get_data."获取数据 PERFORM func_alv_show. "显示ALV
**&---------------------------------------------------------------------* **& 包含 ZPPRP028TOP **&---------------------------------------------------------------------* TABLES: SSCRFIELDS."选择屏幕上的字段 TABLES: AFPO. TABLES: MARA. TABLES: MAKT. TABLES: T001W. TABLES: AFKO. TYPE-POOLS: ICON."图标 DATA: COMM_SMP_DYNTXT TYPE SMP_DYNTXT."菜单制作器:动态文本的程序接口 DATA: BEGIN OF COMM_WTAB_001, KDAUF(10)," LIKE afpo-kdauf, "销售订单号 KDPOS LIKE AFPO-KDPOS, "销售订单行项目 MATNR(18),"LIKE mara-matnr, "物料编码 MAKTX LIKE MAKT-MAKTX, "物料名称 WERKS LIKE T001W-WERKS, "生产工厂 DAUAT LIKE AFPO-DAUAT, "生产订单类型 MENGE TYPE STRING, "数量 MEINS LIKE MARA-MEINS, "基本单位 GSTRP LIKE AFKO-GSTRP, "基本开始日期 GLTRP LIKE AFKO-GLTRP, "基本结束日期 TERKZ LIKE AFKO-TERKZ, "计划类型 VERID LIKE AFPO-VERID, "生产版本 UEBTK LIKE AFPO-UEBTK, "是否允许过量交货 ZTEXT TYPE STRING, "长文本备注 WEMPF LIKE AFPO-WEMPF, "收货方 END OF COMM_WTAB_001. DATA: BEGIN OF COMM_WTAB_002, CHECK(1), KDAUF(10)," LIKE afpo-kdauf, "销售订单号 KDPOS LIKE AFPO-KDPOS, "销售订单行项目 MATNR(18), "LIKE mara-matnr, "物料编码 MAKTX LIKE MAKT-MAKTX, "物料名称 WERKS LIKE T001W-WERKS, "生产工厂 DAUAT LIKE AFPO-DAUAT, "生产订单类型 MENGE TYPE STRING, "数量 MEINS LIKE MARA-MEINS, "基本单位 GSTRP LIKE AFKO-GSTRP, "基本开始日期 GLTRP LIKE AFKO-GLTRP, "基本结束日期 TERKZ LIKE AFKO-TERKZ, "计划类型 VERID LIKE AFPO-VERID, "生产版本 UEBTK LIKE AFPO-UEBTK, "是否允许过量交货 ZTEXT TYPE STRING, "长文本备注 WEMPF LIKE AFPO-WEMPF, "收货方 ISOK TYPE STRING, "成功标记 AUFNR LIKE AFPO-AUFNR, "生产订单号 ZMSG TYPE STRING, "提示 END OF COMM_WTAB_002. DATA: BEGIN OF COMM_WTAB_003, DISPO LIKE MARC-DISPO, END OF COMM_WTAB_003. DATA: BEGIN OF COMM_WTAB_004, MATNR LIKE MAKT-MATNR, MAKTX LIKE MAKT-MAKTX, END OF COMM_WTAB_004. DATA: BEGIN OF COMM_WTAB_005, VBELN LIKE KDST-VBELN, VBPOS LIKE KDST-VBPOS, MATNR LIKE KDST-MATNR, END OF COMM_WTAB_005. DATA: COMM_ALV_ITAB LIKE TABLE OF COMM_WTAB_002 WITH HEADER LINE. PARAMETERS: COMM_P_F TYPE RLGRAP-FILENAME. AT SELECTION-SCREEN ON VALUE-REQUEST FOR COMM_P_F. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING MASK = ',EXCEL FILE,*.XLS;*.XLSX;' MODE = 'O' IMPORTING FILENAME = COMM_P_F EXCEPTIONS INV_WINSYS = 1 NO_BATCH = 2 SELECTION_CANCEL = 3 SELECTION_ERROR = 4 OTHERS = 5.
*&---------------------------------------------------------------------* *& 包含 ZPPRP028ALV *&---------------------------------------------------------------------* *---------------------------------------------------------------------* * ALV字段显示控制 *---------------------------------------------------------------------* FORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_T_FCAT TYPE LVC_T_FCAT USING FUNC_FIELDNAME TYPE C " 字段名 FUNC_SCRTEXT_M TYPE C " 标题 FUNC_COL_POS TYPE I " 所在列 FUNC_OUTPUTLEN TYPE I " 输出长度 FUNC_EMPHASIZE TYPE C " 高亮显示 FUNC_KEY TYPE C " 主键 FUNC_CHECKBOX TYPE C " 显示checkbox FUNC_EDIT TYPE C " 是否可编辑 FUNC_FIX_COLUMN TYPE C " 固定列 FUNC_NO_ZERO TYPE C " 为输出隐藏零 . DATA: FUNC_LVC_S_FCAT TYPE LVC_S_FCAT. FUNC_LVC_S_FCAT-FIELDNAME = FUNC_FIELDNAME. FUNC_LVC_S_FCAT-SCRTEXT_M = FUNC_SCRTEXT_M. FUNC_LVC_S_FCAT-COL_POS = FUNC_COL_POS. FUNC_LVC_S_FCAT-OUTPUTLEN = FUNC_OUTPUTLEN. FUNC_LVC_S_FCAT-EMPHASIZE = FUNC_EMPHASIZE. FUNC_LVC_S_FCAT-KEY = FUNC_KEY. FUNC_LVC_S_FCAT-CHECKBOX = FUNC_CHECKBOX. FUNC_LVC_S_FCAT-EDIT = FUNC_EDIT. FUNC_LVC_S_FCAT-FIX_COLUMN = FUNC_FIX_COLUMN. FUNC_LVC_S_FCAT-NO_ZERO = FUNC_NO_ZERO. APPEND FUNC_LVC_S_FCAT TO FUNC_LVC_T_FCAT. CLEAR FUNC_LVC_S_FCAT. ENDFORM. *---------------------------------------------------------------------* * 绑定按钮 *---------------------------------------------------------------------* FORM FUNC_ALV_BTN_INIT USING FUNC_SLIS_T_EXTAB TYPE SLIS_T_EXTAB . SET PF-STATUS 'ZPPRP028STATUS' EXCLUDING FUNC_SLIS_T_EXTAB. ENDFORM. *---------------------------------------------------------------------* * 绑定按钮事件 *---------------------------------------------------------------------* FORM FUNC_ALV_BTN_EVENT USING FUNC_SY_UCOMM LIKE SY-UCOMM FUNC_SLIS_SELFIELD TYPE SLIS_SELFIELD . DATA: FUNC_CL_GUI_ALV_GRID TYPE REF TO CL_GUI_ALV_GRID. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING E_GRID = FUNC_CL_GUI_ALV_GRID. CALL METHOD FUNC_CL_GUI_ALV_GRID->CHECK_CHANGED_DATA. FUNC_SLIS_SELFIELD-REFRESH = 'X'. READ TABLE COMM_ALV_ITAB INDEX FUNC_SLIS_SELFIELD-TABINDEX. CASE FUNC_SY_UCOMM. WHEN '&FUNC_001'. PERFORM FUNC_001. WHEN '&FUNC_002'. PERFORM FUNC_002. WHEN '&FUNC_003'. PERFORM FUNC_003. WHEN '&FUNC_005'. PERFORM FUNC_001. WHEN OTHERS. ENDCASE. CLEAR:FUNC_SY_UCOMM. ENDFORM. *---------------------------------------------------------------------* * 显示ALV *---------------------------------------------------------------------* FORM FUNC_ALV_SHOW. DATA: FUNC_LVC_S_FCAT TYPE TABLE OF LVC_S_FCAT WITH HEADER LINE."设定输出目录 DATA: FUNC_LVC_S_LAYO TYPE LVC_S_LAYO."对输出样式的设定 FUNC_LVC_S_LAYO-CWIDTH_OPT = 'X'. FUNC_LVC_S_LAYO-CWIDTH_OPT = 'X'. FUNC_LVC_S_LAYO-STYLEFNAME = 'FIELD_STYLE'. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'CHECK' '选择' '' '' '' '' 'X' 'X' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'KDAUF' '销售订单号' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'KDPOS' '销售订单行项目' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MATNR' '物料编码' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MAKTX' '物料名称' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'WERKS' '生产工厂' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'DAUAT' '生产订单类型' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MENGE' '数量' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'MEINS' '基本单位' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'GSTRP' '基本开始日期' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'GLTRP' '基本结束日期' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'TERKZ' '计划类型' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'VERID' '生产版本' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'UEBTK' '是否允许过量交货' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'ZTEXT' '长文本备注' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'UEBTK' '是否允许过量交货' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'WEMPF' '收货方' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'ISOK' '是否成功' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'AUFNR' '生产订单号' '' '' '' '' '' '' '' ''. PERFORM COMM_ALV_FIELD_INIT TABLES FUNC_LVC_S_FCAT USING 'ZMSG' '系统返回的错误提示信息' '' '' '' '' '' '' '' ''. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_CALLBACK_PROGRAM = SY-CPROG I_CALLBACK_PF_STATUS_SET = 'FUNC_ALV_BTN_INIT' "绑定按钮 I_CALLBACK_USER_COMMAND = 'FUNC_ALV_BTN_EVENT' "自定义工具栏的事件 IT_FIELDCAT_LVC = FUNC_LVC_S_FCAT[] IS_LAYOUT_LVC = FUNC_LVC_S_LAYO TABLES T_OUTTAB = COMM_ALV_ITAB "ALV 输出的内表 EXCEPTIONS PROGRAM_ERROR = 1 OTHERS. ENDFORM. *---------------------------------------------------------------------* * itab赋值 *---------------------------------------------------------------------* FORM FUNC_ITAB_GET_DATA. DATA: FUNC_ITAB LIKE TABLE OF COMM_WTAB_001 WITH HEADER LINE. DATA: FUNC_TRUXS_T_TEXT_DATA TYPE TRUXS_T_TEXT_DATA. CLEAR: COMM_ALV_ITAB, COMM_ALV_ITAB[], FUNC_ITAB, FUNC_ITAB[]. CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING I_LINE_HEADER = 'X' I_TAB_RAW_DATA = FUNC_TRUXS_T_TEXT_DATA I_FILENAME = COMM_P_F TABLES I_TAB_CONVERTED_DATA = FUNC_ITAB EXCEPTIONS CONVERSION_FAILED = 1 OTHERS = 2. DATA: FUNC_TMP_DAUAT LIKE AFPO-DAUAT."生产订单类型 DATA: FUNC_TMP_WEMPF LIKE AFPO-WEMPF."收货方 DATA: FUNC_MARC_ITAB LIKE TABLE OF COMM_WTAB_003 WITH HEADER LINE. DATA: FUNC_MAKT_ITAB LIKE TABLE OF COMM_WTAB_004 WITH HEADER LINE. DATA: FUNC_KDST_ITAB LIKE TABLE OF COMM_WTAB_005 WITH HEADER LINE. DATA: MSG TYPE STRING. LOOP AT FUNC_ITAB. CLEAR: FUNC_TMP_DAUAT,FUNC_TMP_WEMPF, FUNC_MARC_ITAB, FUNC_MAKT_ITAB, FUNC_KDST_ITAB. COMM_ALV_ITAB-CHECK = 'X'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "前导0 销售订单号 EXPORTING INPUT = FUNC_ITAB-KDAUF IMPORTING OUTPUT = COMM_ALV_ITAB-KDAUF. COMM_ALV_ITAB-KDPOS = FUNC_ITAB-KDPOS."销售订单行项目 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "前导0 物料编码 EXPORTING INPUT = FUNC_ITAB-MATNR IMPORTING OUTPUT = COMM_ALV_ITAB-MATNR. "-----------------------------------------采购类型为F 不用创建----------------------------------------- DATA: TMPBESKZ TYPE CHAR1. CLEAR: TMPBESKZ. SELECT SINGLE MARC~BESKZ INTO TMPBESKZ FROM MARC WHERE MARC~MATNR = COMM_ALV_ITAB-MATNR AND MARC~BESKZ = 'F'. IF TMPBESKZ IS NOT INITIAL."找到数据 跳过 不创建 ELSE. "-----------------------------------------销售订单行项目校验----------------------------------------- IF FUNC_ITAB-KDAUF IS NOT INITIAL."有销售订单 SELECT KDST~VBELN KDST~VBPOS KDST~MATNR INTO CORRESPONDING FIELDS OF TABLE FUNC_KDST_ITAB FROM KDST WHERE KDST~VBELN = COMM_ALV_ITAB-KDAUF AND KDST~VBPOS = FUNC_ITAB-KDPOS AND KDST~MATNR = COMM_ALV_ITAB-MATNR . IF SY-SUBRC IS NOT INITIAL. CLEAR: MSG. CONCATENATE '没有找到相关销售订单数据,请检查' ',销售订单:' COMM_ALV_ITAB-KDAUF ',行号:' FUNC_ITAB-KDPOS ',物料号:' COMM_ALV_ITAB-MATNR INTO MSG. MESSAGE MSG TYPE 'I'. STOP. ENDIF. ENDIF. COMM_ALV_ITAB-MAKTX = FUNC_ITAB-MAKTX."物料名称 SELECT MAKT~MATNR MAKT~MAKTX INTO CORRESPONDING FIELDS OF TABLE FUNC_MAKT_ITAB FROM MAKT * WHERE matnr = func_itab-matnr WHERE MATNR = COMM_ALV_ITAB-MATNR . IF SY-SUBRC IS INITIAL. LOOP AT FUNC_MAKT_ITAB. COMM_ALV_ITAB-MAKTX = FUNC_MAKT_ITAB-MAKTX."物料名称 ENDLOOP. ENDIF. COMM_ALV_ITAB-WERKS = FUNC_ITAB-WERKS."生产工厂 IF FUNC_ITAB-KDAUF IS NOT INITIAL."有销售订单 FUNC_TMP_DAUAT = 'ZP05'. ELSE. SELECT DISPO INTO CORRESPONDING FIELDS OF TABLE FUNC_MARC_ITAB FROM MARC WHERE MATNR = COMM_ALV_ITAB-MATNR AND DISPO = '001'. IF SY-SUBRC IS INITIAL."物料需求计划控制员 001 FUNC_TMP_DAUAT = 'ZP05'. ELSE. FUNC_TMP_DAUAT = FUNC_ITAB-DAUAT. ENDIF. ENDIF. COMM_ALV_ITAB-DAUAT = FUNC_TMP_DAUAT."生产订单类型 COMM_ALV_ITAB-MENGE = FUNC_ITAB-MENGE."数量 COMM_ALV_ITAB-MEINS = FUNC_ITAB-MEINS."基本单位 COMM_ALV_ITAB-GSTRP = FUNC_ITAB-GSTRP."基本开始日期 COMM_ALV_ITAB-GLTRP = FUNC_ITAB-GLTRP."基本结束日期 COMM_ALV_ITAB-TERKZ = FUNC_ITAB-TERKZ."计划类型 "-----------------------------------------获取生产版本----------------------------------------- * COMM_ALV_ITAB-VERID = FUNC_ITAB-VERID."生产版本 DATA: TMPVERID TYPE CHAR4. CLEAR: TMPVERID. SELECT SINGLE MKAL~VERID INTO TMPVERID FROM MAPL INNER JOIN MKAL ON MAPL~MATNR = MKAL~MATNR AND MAPL~PLNNR = MKAL~PLNNR AND MAPL~WERKS = MKAL~WERKS WHERE MAPL~VBELN = COMM_ALV_ITAB-KDAUF AND MAPL~POSNR = FUNC_ITAB-KDPOS AND MAPL~MATNR = COMM_ALV_ITAB-MATNR. IF TMPVERID IS NOT INITIAL."找到数据" COMM_ALV_ITAB-VERID = TMPVERID."生产版本 ELSE. CLEAR: MSG. CONCATENATE '请维护好生产版本,请检查' ',销售订单:' COMM_ALV_ITAB-KDAUF ',行号:' FUNC_ITAB-KDPOS ',物料号:' COMM_ALV_ITAB-MATNR INTO MSG. MESSAGE MSG TYPE 'I'. STOP. ENDIF. COMM_ALV_ITAB-UEBTK = FUNC_ITAB-UEBTK."是否允许过量交货 COMM_ALV_ITAB-ZTEXT = FUNC_ITAB-ZTEXT."长文本备注 FUNC_TMP_WEMPF = FUNC_ITAB-WEMPF. TRANSLATE FUNC_TMP_WEMPF TO UPPER CASE."强制转大写 COMM_ALV_ITAB-WEMPF = FUNC_TMP_WEMPF."收货方 APPEND COMM_ALV_ITAB. ENDIF. ENDLOOP. ENDFORM. FORM FUNC_001. COMM_ALV_ITAB-CHECK = 'X'. MODIFY COMM_ALV_ITAB FROM COMM_ALV_ITAB TRANSPORTING CHECK WHERE CHECK = ''. CLEAR COMM_ALV_ITAB. ENDFORM. FORM FUNC_002. COMM_ALV_ITAB-CHECK = ''. MODIFY COMM_ALV_ITAB FROM COMM_ALV_ITAB TRANSPORTING CHECK WHERE CHECK = 'X'. CLEAR COMM_ALV_ITAB. ENDFORM. FORM FUNC_003. READ TABLE COMM_ALV_ITAB WITH KEY CHECK = 'X'. "是否有选中的记录 IF SY-SUBRC <> 0. MESSAGE '请选择' TYPE 'S'. RETURN. ENDIF. DATA: FUNC_BAPI_PP_ORDER_CREATE TYPE BAPI_PP_ORDER_CREATE. DATA: FUNC_BAPIRET2 TYPE BAPIRET2. DATA: FUNC_BAPI_ORDER_NUMBER TYPE BAPI_ORDER_KEY-ORDER_NUMBER. DATA: FUNC_THEAD_TDNAME TYPE THEAD-TDNAME. DATA: FUNC_TLINE TYPE TLINE. DATA: FUNC_TLINE_TB TYPE TABLE OF TLINE. LOOP AT COMM_ALV_ITAB WHERE CHECK NE ''. IF COMM_ALV_ITAB[] IS NOT INITIAL. FUNC_BAPI_PP_ORDER_CREATE-SALES_ORDER = COMM_ALV_ITAB-KDAUF."销售订单号 FUNC_BAPI_PP_ORDER_CREATE-SALES_ORDER_ITEM = COMM_ALV_ITAB-KDPOS."销售订单行项目 FUNC_BAPI_PP_ORDER_CREATE-MATERIAL = COMM_ALV_ITAB-MATNR."物料编码 FUNC_BAPI_PP_ORDER_CREATE-PLANT = COMM_ALV_ITAB-WERKS."生产工厂 FUNC_BAPI_PP_ORDER_CREATE-ORDER_TYPE = COMM_ALV_ITAB-DAUAT."生产订单类型 FUNC_BAPI_PP_ORDER_CREATE-QUANTITY = COMM_ALV_ITAB-MENGE."数量 FUNC_BAPI_PP_ORDER_CREATE-BASIC_START_DATE = COMM_ALV_ITAB-GSTRP."基本开始日期 FUNC_BAPI_PP_ORDER_CREATE-BASIC_END_DATE = COMM_ALV_ITAB-GLTRP."基本结束日期 * func_bapi_pp_order_create-order_type = comm_alv_itab-terkz."计划类型 FUNC_BAPI_PP_ORDER_CREATE-ROUTING_TYPE = COMM_ALV_ITAB-TERKZ."计划类型 FUNC_BAPI_PP_ORDER_CREATE-PROD_VERSION = COMM_ALV_ITAB-VERID."生产版本 * func_bapi_pp_order_create-goods_recipient = comm_alv_itab-wempf."收货方 FUNC_BAPI_PP_ORDER_CREATE-STORAGE_LOCATION = COMM_ALV_ITAB-WEMPF."收货方 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' "单位 EXPORTING INPUT = COMM_ALV_ITAB-MEINS IMPORTING OUTPUT = FUNC_BAPI_PP_ORDER_CREATE-QUANTITY_UOM EXCEPTIONS UNIT_NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC <> 0. ENDIF. CALL FUNCTION 'BAPI_PRODORD_CREATE' EXPORTING ORDERDATA = FUNC_BAPI_PP_ORDER_CREATE IMPORTING RETURN = FUNC_BAPIRET2 ORDER_NUMBER = FUNC_BAPI_ORDER_NUMBER. IF FUNC_BAPIRET2-TYPE <> ''. LOOP AT COMM_ALV_ITAB WHERE KDAUF = COMM_ALV_ITAB-KDAUF AND KDPOS = COMM_ALV_ITAB-KDPOS AND MATNR = COMM_ALV_ITAB-MATNR. COMM_ALV_ITAB-ISOK = '失败'. COMM_ALV_ITAB-AUFNR = ''. COMM_ALV_ITAB-ZMSG = FUNC_BAPIRET2-MESSAGE. MODIFY COMM_ALV_ITAB. ENDLOOP. ELSE. LOOP AT COMM_ALV_ITAB WHERE KDAUF = COMM_ALV_ITAB-KDAUF AND KDPOS = COMM_ALV_ITAB-KDPOS AND MATNR = COMM_ALV_ITAB-MATNR. COMM_ALV_ITAB-ISOK = '成功'. COMM_ALV_ITAB-AUFNR = FUNC_BAPI_ORDER_NUMBER. COMM_ALV_ITAB-ZMSG = ''. MODIFY COMM_ALV_ITAB. ENDLOOP. * 手动修改 WAIT UP TO 1 SECONDS. UPDATE AFKO SET GSTRP = COMM_ALV_ITAB-GSTRP GLTRP = COMM_ALV_ITAB-GLTRP TERKZ = COMM_ALV_ITAB-TERKZ WHERE AUFNR = FUNC_BAPI_ORDER_NUMBER. COMMIT WORK. "长文本备注 CONCATENATE SY-MANDT FUNC_BAPI_ORDER_NUMBER INTO FUNC_THEAD_TDNAME. FUNC_TLINE-TDFORMAT = 1. FUNC_TLINE-TDLINE = COMM_ALV_ITAB-ZTEXT. APPEND FUNC_TLINE TO FUNC_TLINE_TB. CALL FUNCTION 'CREATE_TEXT' EXPORTING FID = 'KOPF' FLANGUAGE = SY-LANGU FNAME = FUNC_THEAD_TDNAME FOBJECT = 'AUFK' TABLES FLINES = FUNC_TLINE_TB EXCEPTIONS NO_INIT = 1 NO_SAVE = 2 OTHERS = 3. IF SY-SUBRC = 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. * WAIT UP TO 1 SECONDS. UPDATE AUFK SET LTEXT = '1' WHERE AUFNR = FUNC_BAPI_ORDER_NUMBER. * COMMIT WORK. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. ENDIF. ENDIF. CLEAR: FUNC_BAPI_PP_ORDER_CREATE, FUNC_BAPIRET2, FUNC_BAPI_ORDER_NUMBER, FUNC_THEAD_TDNAME, FUNC_TLINE, FUNC_TLINE_TB. ENDLOOP. ENDFORM. FORM FUNC_004. DATA: FUNC_WWWDATATAB LIKE WWWDATATAB, FUNC_RLGRAP_FILENAME TYPE RLGRAP-FILENAME. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING DEF_FILENAME = 'ZPPRP028模版.xls' MASK = '.xls;' MODE = 'S' TITLE = '下载' IMPORTING FILENAME = FUNC_RLGRAP_FILENAME EXCEPTIONS SELECTION_CANCEL = 1 OTHERS = 2. SELECT SINGLE * INTO CORRESPONDING FIELDS OF FUNC_WWWDATATAB FROM WWWDATA WHERE OBJID = 'ZPPRP028'. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' " EXPORTING KEY = FUNC_WWWDATATAB DESTINATION = FUNC_RLGRAP_FILENAME. ENDFORM.