*&---------------------------------------------------------------------*
*& 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.