1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
***********SALES ORDER INPUT CREATION. REPORT soi. PARAMETERS: p_auart TYPE auart OBLIGATORY. PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY. PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY. PARAMETERS: p_spart TYPE vtweg OBLIGATORY. PARAMETERS: p_sold TYPE kunnr OBLIGATORY. PARAMETERS: p_ship TYPE kunnr OBLIGATORY. *ITEM PARAMETERS: p_matnr TYPE matnr OBLIGATORY. PARAMETERS: p_menge TYPE kwmeng OBLIGATORY. PARAMETERS: p_plant TYPE werks_d OBLIGATORY. PARAMETERS: p_itcat TYPE pstyv OBLIGATORY. * DATA DECLARATIONS. DATA: v_vbeln LIKE vbak-vbeln. DATA: header LIKE bapisdhead1. DATA: headerx LIKE bapisdhead1x. DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE. DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE. DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE. DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE. DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx WITH HEADER LINE. DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl WITH HEADER LINE. * HEADER DATA header-doc_type = p_auart. headerx-doc_type = 'X'. header-sales_org = p_vkorg. headerx-sales_org = 'X'. header-distr_chan = p_vtweg. headerx-distr_chan = 'X'. header-division = p_spart. headerx-division = 'X'. headerx-updateflag = 'I'. * PARTNER DATA partner-partn_role = 'AG'. partner-partn_numb = p_sold. APPEND partner. partner-partn_role = 'WE'. partner-partn_numb = p_ship. APPEND partner. * ITEM DATA itemx-updateflag = 'I'. item-itm_number = '000010'. itemx-itm_number = 'X'. item-material = p_matnr. itemx-material = 'X'. item-plant = p_plant. itemx-plant = 'X'. item-target_qty = p_menge. itemx-target_qty = 'X'. item-target_qu = 'EA'. itemx-target_qu = 'X'. item-item_categ = p_itcat. itemx-item_categ = 'X'. APPEND item. APPEND itemx. * Fill schedule lines lt_schedules_in-itm_number = '000010'. lt_schedules_in-sched_line = '0001'. lt_schedules_in-req_qty = p_menge. APPEND lt_schedules_in. * Fill schedule line flags lt_schedules_inx-itm_number = '000010'. lt_schedules_inx-sched_line = '0001'. lt_schedules_inx-updateflag = 'X'. lt_schedules_inx-req_qty = 'X'. APPEND lt_schedules_inx. * Call the BAPI CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1' " 销售订单创建bapi,创建后按现有情况需要修改 交货冻结。 EXPORTING sales_header_in = header sales_header_inx = headerx IMPORTING salesdocument_ex = v_vbeln TABLES return = return sales_items_in = item sales_items_inx = itemx sales_schedules_in = lt_schedules_in sales_schedules_inx = lt_schedules_inx sales_partners = partner. * Check the return table. LOOP AT return WHERE type = 'E' OR type = 'A'. EXIT. ENDLOOP. IF sy-subrc = 0. WRITE: / 'Error in creating document'. ELSE. COMMIT WORK AND WAIT. WRITE: / 'Document ', v_vbeln, ' created'. ENDIF. ************DELIVERY CREATION. DATA: BEGIN OF t_vbap OCCURS 0, vbeln LIKE vbap-vbeln, posnr LIKE vbap-posnr, zmeng LIKE vbap-kwmeng, matnr LIKE vbap-matnr, werks LIKE vbap-werks, END OF t_vbap. DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest WITH HEADER LINE. DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems WITH HEADER LINE. DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE. SELECT vbeln posnr zmeng matnr werks INTO TABLE t_vbap FROM vbap WHERE vbeln = v_vbeln. LOOP AT t_vbap. t_request-document_numb = t_vbap-vbeln. t_request-document_item = t_vbap-posnr. t_request-quantity_sales_uom = t_vbap-zmeng. t_request-quantity_base__uom = t_vbap-zmeng. t_request-id = 1. t_request-document_type = 'A'. t_request-delivery_date = sy-datum. t_request-material = t_vbap-matnr. t_request-plant = t_vbap-werks. t_request-date = sy-datum. t_request-goods_issue_date = sy-datum. t_request-goods_issue_time = sy-uzeit. APPEND t_request. ENDLOOP. CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC' "外向交货单创建,创建后交货数量和拣配数量都为空。需要填写 TABLES request = t_request createditems = t_created return = t_return. READ TABLE t_return WITH KEY type = 'E'. IF sy-subrc = 0. MESSAGE e208(00) WITH 'Delivery creation error'. ENDIF. COMMIT WORK. ************Post goods issue. READ TABLE t_created INDEX 1. DATA: vbkok_wa TYPE vbkok. vbkok_wa-vbeln_vl = t_created-document_numb. vbkok_wa-wabuc = 'X'. DATA: v_error. CALL FUNCTION 'WS_DELIVERY_UPDATE' "外向交货bapi EXPORTING vbkok_wa = vbkok_wa delivery = t_created-document_numb IMPORTING ef_error_in_goods_issue_0 = v_error. COMMIT WORK. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/1336.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。