· 9 years ago · Jan 27, 2017, 01:24 PM
1 METHOD zii_sales_order_service_provid~create_order.
2
3 DATA:
4 lo_ws_badi TYPE REF TO zsd_sales_order_ws_in_badi,
5 salesdocumentin TYPE bapivbeln-vbeln,
6 order_header_in TYPE bapisdhd1,
7 order_header_inx TYPE bapisdhd1x,
8 sender TYPE bapi_sender,
9 testrun TYPE bapiflag-bapiflag,
10 salesdocument TYPE bapivbeln-vbeln,
11 return TYPE TABLE OF bapiret2,
12 order_items_in TYPE TABLE OF bapisditm,
13 order_items_inx TYPE TABLE OF bapisditmx,
14 order_partners TYPE TABLE OF bapiparnr,
15 order_schedules_in TYPE TABLE OF bapischdl,
16 order_schedules_inx TYPE TABLE OF bapischdlx,
17 order_conditions_in TYPE TABLE OF bapicond,
18 order_conditions_inx TYPE TABLE OF bapicondx,
19 order_ccard TYPE TABLE OF bapiccard,
20 order_text TYPE TABLE OF bapisdtext,
21 order_keys TYPE TABLE OF bapisdkey,
22 extensionin TYPE TABLE OF bapiparex,
23 partneraddresses TYPE TABLE OF bapiaddr1.
24
25
26 "Badi implementation must exist!
27 GET BADI lo_ws_badi FILTERS sales_office = input-sales_order_create_message_typ-order_header-sales_office.
28 IF lo_ws_badi IS NOT BOUND.
29 APPEND INITIAL LINE TO output-response_sales_order_create_me-return_messages ASSIGNING FIELD-SYMBOL(<ls_messages>).
30 <ls_messages>-message_type = 'E'.
31 <ls_messages>-message_text = |Pro prodejnà kancelář { input-sales_order_create_message_typ-order_header-sales_office
32 } nenà definována žádná logika zpracovánÃ. |.
33
34 RETURN.
35
36 ENDIF.
37
38 "check input data, if error messages exists, don't continue
39 CALL BADI lo_ws_badi->check_input_data
40 EXPORTING
41 input = input
42 CHANGING
43 return_messages = output-response_sales_order_create_me-return_messages.
44 IF output-response_sales_order_create_me-return_messages IS NOT INITIAL.
45
46 READ TABLE output-response_sales_order_create_me-return_messages WITH KEY message_type = 'E' TRANSPORTING NO FIELDS.
47 IF sy-subrc = 0.
48 RETURN.
49 ENDIF.
50
51 ENDIF.
52
53
54 "input data ok, prepare header, items, partners, texts, extensions and then create the fucking order
55
56 CALL BADI lo_ws_badi->fill_bapi_head
57 EXPORTING
58 input = input
59 CHANGING
60 cs_bapi_head = order_header_in " KomunikaÄnà pole: HlaviÄka odbyt.dokladu
61 cs_bapi_headx = order_header_inx. " Pole k zakřÞk.- hlaviÄka odb.dokladu
62
63 CALL BADI lo_ws_badi->fill_bapi_items
64 EXPORTING
65 input = input
66 CHANGING
67 ct_bapi_item = order_items_in " KomunikaÄnà pole: HlaviÄka odbyt.dokladu
68 ct_bapi_itemx = order_items_inx " Pole k zakřÞk.- hlaviÄka odb.dokladu
69 ct_bapi_sched = order_schedules_in " SAP Retail Store: Typ tabulky - BAPISCHDL
70 ct_bapi_schedx = order_schedules_inx " SAP Retail Store: Typ tabulky - BAPISCHDLX
71 ct_bapi_cond = order_conditions_in " SAP Retail Store: Typ tabulky - BAPICOND
72 ct_bapi_condx = order_conditions_inx. " SAP Retail Store: Typ tabulky - BAPICONDX
73
74 CALL BADI lo_ws_badi->fill_bapi_partners
75 EXPORTING
76 input = input
77 CHANGING
78 ct_bapi_partners = order_partners " KomunikaÄnà pole: HlaviÄka odbyt.dokladu
79 ct_bapi_addr = partneraddresses. " Pole k zakřÞk.- hlaviÄka odb.dokladu
80
81 CALL BADI lo_ws_badi->fill_bapi_texts
82 EXPORTING
83 input = input
84 CHANGING
85 ct_bapi_text = order_text. " Tabulka s typ.řádky BAPISDTEXT
86
87 CALL BADI lo_ws_badi->fill_bapi_extensions
88 EXPORTING
89 input = input
90 CHANGING
91 ct_bapi_extin = extensionin. " RozÅ¡ÃÅ™enà BAPI
92
93
94 CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
95 EXPORTING
96 salesdocumentin = salesdocumentin
97 order_header_in = order_header_in
98 order_header_inx = order_header_inx
99 sender = sender
100 testrun = testrun
101 convert = ' '
102 IMPORTING
103 salesdocument = salesdocument
104 TABLES
105 return = return
106 order_items_in = order_items_in
107 order_items_inx = order_items_inx
108 order_partners = order_partners
109 order_schedules_in = order_schedules_in
110 order_schedules_inx = order_schedules_inx
111 order_conditions_in = order_conditions_in
112 order_conditions_inx = order_conditions_inx
113 order_text = order_text
114 extensionin = extensionin
115 partneraddresses = partneraddresses.
116
117 output-response_sales_order_create_me-order_number = salesdocument.
118
119 CALL BADI lo_ws_badi->do_after_bapi_call
120 EXPORTING
121 salesdocument = salesdocument " Prodej.doklad
122 bapi_return = return " Chybová hlášenÃ
123 CHANGING
124 return_messages = output-response_sales_order_create_me-return_messages.
125
126
127
128 ENDMETHOD.