【南京】根据销售订单创建交货单并自动拣配、过账发货程序
2013-08-27 09:52
597 查看
Code listing for: ZSD020
Description: 根据销售订单创建交货单并过账发货
Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 701
Description: 根据销售订单创建交货单并过账发货
*&---------------------------------------------------------------------* * 程序名称: 根据销售订单创建交货单并过账发货 * 程序名 :ZSD020 * 开发日期:2013-08-26 * 创建者 :ZCY * 申请者 : *----------------------------------------------------------------------* * 概 要 :2013-08-26 初次开发 *&---------------------------------------------------------------------* REPORT ZSD020. ***************************************************************** *TYPE DECLARATION ***************************************************************** TYPES:BEGIN OF TY_TAB_UPLOAD, "上传文件接收表 SHIP_POINT TYPE BAPIDLVCREATEHEADER-SHIP_POINT, "装运点 VBELN(10) TYPE C, "订单号 REF_ITEM TYPE RFPOS_VL, "项目 DLV_QTY TYPE LFIMG, "交货数量 MESSAGE TYPE STRING, END OF TY_TAB_UPLOAD. TYPES:BEGIN OF TY_VBAP, VRKME TYPE VBAP-VRKME, END OF TY_VBAP. ***************************************************************** *TYPE DECLARATION ***************************************************************** TABLES: VBAP. ************************************************************************ * INTERNAL TABLE DECLARATION ************************************************************************ DATA: IT_TAB_UPLOAD TYPE STANDARD TABLE OF TY_TAB_UPLOAD, "上传文件接收表 IT_INTERN LIKE STANDARD TABLE OF ALSMEX_TABLINE, "EXCEL文件接收表 SALES_ITEMS LIKE STANDARD TABLE OF BAPIDLVREFTOSALESORDER, "BAPI输入表: IT_RETURN LIKE STANDARD TABLE OF BAPIRET2, "BAPI返回参数 IT_SERIAL_NUMBERS LIKE STANDARD TABLE OF BAPIDLVSERIALNUMBER, "BAPI返回参数 IT_EXTENSION_IN LIKE STANDARD TABLE OF BAPIPAREX, "BAPI返回参数 IT_DELIVERIES LIKE STANDARD TABLE OF BAPISHPDELIVNUMB, "BAPI返回参数 IT_CREATED_ITEMS LIKE STANDARD TABLE OF BAPIDLVITEMCREATED, "BAPI返回参数 IT_EXTENSION_OUT LIKE STANDARD TABLE OF BAPIPAREX. "BAPI返回参数 ************************************************************************ * WORKAREA DECLARATION ************************************************************************ DATA: WA_VBAP TYPE TY_VBAP, WA_TAB_UPLOAD TYPE TY_TAB_UPLOAD, "上传文件接收表 WA_SALES_ITEMS TYPE BAPIDLVREFTOSALESORDER, "BAPI输入表: G_SHIP_POINT TYPE BAPIDLVCREATEHEADER-SHIP_POINT, "装运点 WA_INTERN LIKE ALSMEX_TABLINE, "EXCEL参数表 G_DELIVERY TYPE BAPISHPDELIVNUMB-DELIV_NUMB, "BAPI返回参数 G_NUM_DELIVERIES TYPE BAPIDLVCREATEHEADER-NUM_DELIVERIES, "BAPI返回参数 WA_CREATED_ITEMS LIKE BAPIDLVITEMCREATED, WA_RETURN LIKE BAPIRET2. ************************************************************************ * SELECTION SCREEN DECLARATION ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK BLK. PARAMETERS: P_FIN TYPE RLGRAP-FILENAME OBLIGATORY. "文件名 SELECTION-SCREEN END OF BLOCK BLK. ************************************************************************ * AT SELECTION SCREEN ************************************************************************ AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FIN. PERFORM FRM_F4_HELP CHANGING P_FIN. "文件浏览 ************************************************************************ * EVENT START OF SELECTION ************************************************************************ START-OF-SELECTION. PERFORM FM_UPLOAD_DATA. "上传文件 *&---------------------------------------------------------------------* * FORM ADD_ZERO *&---------------------------------------------------------------------* * 增加前导零 *&---------------------------------------------------------------------* DEFINE ADD_ZERO. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = &1 IMPORTING OUTPUT = &1. END-OF-DEFINITION. *&---------------------------------------------------------------------* * FORM DELIVERY *&---------------------------------------------------------------------* * BAPI发货过账 * 输入参数:交货单号 P_VBELN *&---------------------------------------------------------------------* FORM DELIVERY USING P_VBELN TYPE VBELN. DATA:G_LIKP LIKE LIKP. DATA:G_LIPS LIKE LIPS. DATA GV_14(14) TYPE C. DATA: BEGIN OF I_VBKOK OCCURS 11. INCLUDE STRUCTURE VBKOK. DATA: END OF I_VBKOK. DATA: BEGIN OF I_VBPOK_TAB OCCURS 12. INCLUDE STRUCTURE VBPOK. DATA: END OF I_VBPOK_TAB. DATA:EF_ERROR_ANY TYPE XFELD. SELECT SINGLE * INTO G_LIKP FROM LIKP WHERE VBELN = P_VBELN. I_VBKOK-VBELN_VL = P_VBELN. "DELIVERY NUMBER I_VBKOK-WABUC = 'X'. "AUTOMATIC PGI I_VBKOK-WADAT_IST = G_LIKP-BLDAT. APPEND I_VBKOK. SELECT * INTO G_LIPS FROM LIPS WHERE VBELN = P_VBELN. I_VBPOK_TAB-VBELN_VL = P_VBELN. "DELIVERY NUMBER I_VBPOK_TAB-POSNR_VL = G_LIPS-POSNR. I_VBPOK_TAB-VBELN = P_VBELN. I_VBPOK_TAB-POSNN = G_LIPS-POSNR. I_VBPOK_TAB-MATNR = G_LIPS-MATNR. GV_14 = G_LIPS-LFIMG. CONDENSE GV_14. I_VBPOK_TAB-PIKMG = GV_14 . APPEND I_VBPOK_TAB. ENDSELECT. CALL FUNCTION 'WS_DELIVERY_UPDATE' EXPORTING VBKOK_WA = I_VBKOK COMMIT = 'X' DELIVERY = P_VBELN UPDATE_PICKING = 'X' IMPORTING EF_ERROR_ANY_0 = EF_ERROR_ANY TABLES VBPOK_TAB = I_VBPOK_TAB EXCEPTIONS ERROR_MESSAGE = 1 OTHERS = 2. IF EF_ERROR_ANY = 'X'. WRITE:/ , / P_VBELN , ' 发货过账失败!可能需要手动发货过账'. ELSE. WRITE:/ , / P_VBELN , ' 发货过账成功!'. ENDIF. ENDFORM. "DELIVERY *&---------------------------------------------------------------------* * FORM FM_UPLOAD_DATA *&---------------------------------------------------------------------* * 上传文件 *&---------------------------------------------------------------------* FORM FM_UPLOAD_DATA. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING FILENAME = P_FIN I_BEGIN_COL = 1 I_BEGIN_ROW = 1 I_END_COL = 255 I_END_ROW = 65536 TABLES INTERN = IT_INTERN EXCEPTIONS INCONSISTENT_PARAMETERS = 1 UPLOAD_OLE = 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. DELETE IT_INTERN WHERE ROW = 1. "删除字段名行 LOOP AT IT_INTERN INTO WA_INTERN. "将EXCEL信息储存至内表IT_TAB_UPLOAD CASE WA_INTERN-COL. WHEN 1. WA_TAB_UPLOAD-SHIP_POINT = WA_INTERN-VALUE. WHEN 2. WA_TAB_UPLOAD-VBELN = WA_INTERN-VALUE. ADD_ZERO WA_TAB_UPLOAD-VBELN. WHEN 3. WA_TAB_UPLOAD-REF_ITEM = WA_INTERN-VALUE. WHEN 4. WA_TAB_UPLOAD-DLV_QTY = WA_INTERN-VALUE. APPEND WA_TAB_UPLOAD TO IT_TAB_UPLOAD. ENDCASE. ENDLOOP. LOOP AT IT_TAB_UPLOAD INTO WA_TAB_UPLOAD. "填充BAPI参数表:SALES_ITEMS G_SHIP_POINT = WA_TAB_UPLOAD-SHIP_POINT. WA_SALES_ITEMS-REF_DOC = WA_TAB_UPLOAD-VBELN. WA_SALES_ITEMS-REF_ITEM = WA_TAB_UPLOAD-REF_ITEM. WA_SALES_ITEMS-DLV_QTY = WA_TAB_UPLOAD-DLV_QTY. SELECT SINGLE VRKME FROM VBAP INTO CORRESPONDING FIELDS OF WA_VBAP "数量单位取VBAP中单位 WHERE VBELN = WA_TAB_UPLOAD-VBELN AND POSNR = WA_TAB_UPLOAD-REF_ITEM. WA_SALES_ITEMS-SALES_UNIT = WA_VBAP-VRKME. APPEND WA_SALES_ITEMS TO SALES_ITEMS. ENDLOOP. PERFORM MANAGE_DATA. "创建交货单,发货过账 ENDFORM. "FM_UPLOAD_DATA *&---------------------------------------------------------------------* * FORM MANAGE_DATA *&---------------------------------------------------------------------* * BAPI处理创建交货单 *&---------------------------------------------------------------------* FORM MANAGE_DATA. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS' EXPORTING SHIP_POINT = G_SHIP_POINT * DUE_DATE = * DEBUG_FLG = * NO_DEQUEUE = ' ' IMPORTING DELIVERY = G_DELIVERY NUM_DELIVERIES = G_NUM_DELIVERIES TABLES SALES_ORDER_ITEMS = SALES_ITEMS SERIAL_NUMBERS = IT_SERIAL_NUMBERS EXTENSION_IN = IT_EXTENSION_IN DELIVERIES = IT_DELIVERIES CREATED_ITEMS = IT_CREATED_ITEMS EXTENSION_OUT = IT_EXTENSION_OUT RETURN = IT_RETURN . CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. LOOP AT IT_RETURN INTO WA_RETURN. IF WA_RETURN-ROW = 0. ELSE. READ TABLE IT_TAB_UPLOAD INTO WA_TAB_UPLOAD INDEX WA_RETURN-ROW. CONCATENATE WA_TAB_UPLOAD-MESSAGE WA_RETURN-MESSAGE INTO WA_TAB_UPLOAD-MESSAGE. MODIFY IT_TAB_UPLOAD FROM WA_TAB_UPLOAD INDEX WA_RETURN-ROW. ENDIF. ENDLOOP. LOOP AT IT_TAB_UPLOAD INTO WA_TAB_UPLOAD. IF WA_TAB_UPLOAD-MESSAGE IS NOT INITIAL. WRITE: / ' 单据号:', WA_TAB_UPLOAD-VBELN , ' 项目号:' ,
WA_TAB_UPLOAD-REF_ITEM , '错误信息:', WA_TAB_UPLOAD-MESSAGE. ENDIF. ENDLOOP. IF IT_CREATED_ITEMS IS NOT INITIAL. WRITE: / , / '==================================================================================================================================================================='. READ TABLE IT_CREATED_ITEMS INTO WA_CREATED_ITEMS INDEX 1. "自动拣配过账 WRITE: / , / ' 已创建交货单:' , WA_CREATED_ITEMS-DELIV_NUMB. * LOOP AT IT_CREATED_ITEMS INTO WA_CREATED_ITEMS. * WRITE: / , /' 单据号:' , WA_CREATED_ITEMS-REF_DOC , * ' 项目号:' , WA_CREATED_ITEMS-REF_ITEM , * ' 发货单项目号:' , WA_CREATED_ITEMS-DELIV_ITEM , * ' 物料号:' , WA_CREATED_ITEMS-MATERIAL , * ' 发货数量:' , WA_CREATED_ITEMS-DLV_QTY , * ' 发货单位:' , WA_CREATED_ITEMS-SALES_UNIT. * ENDLOOP. PERFORM DELIVERY USING WA_CREATED_ITEMS-DELIV_NUMB. ELSE. WRITE: / , / ' 发货单未能创建!'. ENDIF. ENDFORM. "MANAGE_DATA *&---------------------------------------------------------------------* * FORM FRM_F4_HELP *&---------------------------------------------------------------------* * F4文件浏览帮助 *&---------------------------------------------------------------------* FORM FRM_F4_HELP CHANGING O_FNAME TYPE RLGRAP-FILENAME. DATA: L_FILETAB TYPE FILETABLE, L_WAFTAB LIKE LINE OF L_FILETAB, L_RC TYPE I. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING WINDOW_TITLE = '打开文件' INITIAL_DIRECTORY = 'C:/' CHANGING FILE_TABLE = L_FILETAB RC = L_RC EXCEPTIONS FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. EXIT. ELSE. READ TABLE L_FILETAB INTO L_WAFTAB INDEX 1. O_FNAME = L_WAFTAB-FILENAME. CLEAR: L_FILETAB, L_WAFTAB. ENDIF. ENDFORM. "FRM_F4_HELP *Selection texts *---------------------------------------------------------- * P_FIN 上传文件路径
Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 701
相关文章推荐
- ABAP 订单-交货单-发货过账自动完成 案例
- ABAP模块-根据销售订单创建交货单BAPI
- 根据采购订单创建外向交货单的BAPI
- SD外向交货 创建 拆批 发货过帐——今天完成的程序
- 根据采购/销售订单创建STO/SO
- 创建销售订单提示:配置文件选项不允许自动编号
- 销售订单->交货->发票:参考创建条件
- 实时发货过账自动创建发票
- SAP交货单过账自动生产采购订单、采购订单自动收货入库
- 一个根据.BOM文件自动创建Excel BOM的程序---记录在此,以便查询
- sap 销售订单过量交货和拣配有关设置
- 【原创】2011.09.19 问题记录——销售订单合并交货创建交货单
- K3后台修改销售模块(销售订单、发货通知单、销售出库单、销售发票)业务员名称语句
- 关于通过使用BAPI创建销售订单(抬头信息中:含增强字段)
- 销售订单过账装箱单方法调用流程[AX2012]
- [转贴]用Vs.net制作安装程序,在安装包中自动为客户创建数据库
- 根据CDImage.cue产生自动改名命令的Python小程序
- sap-abap-销售订单的订货,生产,存货,发货情况统计报表
- 创建计划订单(MD11)与根据MRP控制者删除计划订单(MD16)
- 解决在创建销售订单时出现工厂日历CN等错误提示问题