*&---------------------------------------------------------------------* *& Report ZBC2_TRG05_PRG30 *& *&---------------------------------------------------------------------* *& *&***BAPI for sales order creation*** *&---------------------------------------------------------------------* REPORT zbc2_trg05_prg30. TYPES : BEGIN OF ty_main, f1(10), f2(10), f3(10), f4(10), f5(10), f6(10), END OF ty_main. TYPES : BEGIN OF ty_head, salesdocument TYPE bapivbeln-vbeln, doc_type TYPE bapisdh1-collect_no, sales_org TYPE bapisdh1-sales_org, distr_chan TYPE bapisdh1-distr_chan, division TYPE bapisdh1-division, req_date_h TYPE bapisdh1-req_date_h, END OF ty_head. TYPES :BEGIN OF ty_item, salesdocument TYPE bapivbeln-vbeln, itm_number TYPE bapisditm-itm_number, material TYPE bapisditm-material, target_qty TYPE bapisditm-target_qty, target_qu TYPE bapisditm-target_qu, plant TYPE bapisditm-plant, itm_number1 TYPE bapischdl-itm_number, req_qty TYPE bapischdl-req_qty, END OF ty_item. DATA :it_order_item_in TYPE bapisditm OCCURS 0 WITH HEADER LINE, it_order_item_inx TYPE bapisditmx OCCURS 0 WITH HEADER LINE, it_partners TYPE bapiparnr OCCURS 0 WITH HEADER LINE , it_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE, it_order_schedules_in TYPE bapischdl OCCURS 0 WITH HEADER LINE, it_order_schedules_inx TYPE bapischdlx OCCURS 0 WITH HEADER LINE, it_main TYPE ty_main OCCURS 0 WITH HEADER LINE , it_main1 TYPE ty_main OCCURS 0 WITH HEADER LINE, it_head TYPE ty_head OCCURS 0 WITH HEADER LINE, it_item TYPE ty_item OCCURS 0 WITH HEADER LINE. PARAMETERS : p_file TYPE rlgrap-filename. DATA: c_file TYPE string, wa_order_header_in LIKE bapisdhd1, wa_order_header_inx LIKE bapisdhd1x, c_vbeln TYPE vbak-vbeln, message_text_output TYPE natxt. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING program_name = syst-cprog dynpro_number = syst-dynnr field_name = ' ' IMPORTING file_name = p_file. START-OF-SELECTION. c_file = p_file. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = c_file filetype = 'ASC' has_field_separator = 'X' * HEADER_LENGTH = 0 * READ_BY_LINE = 'X' * DAT_MODE = ' ' * CODEPAGE = ' ' * IGNORE_CERR = ABAP_TRUE * REPLACEMENT = '#' * CHECK_BOM = ' ' * VIRUS_SCAN_PROFILE = * NO_AUTH_CHECK = ' ' * IMPORTING * FILELENGTH = * HEADER = TABLES data_tab = it_main[] EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 17 . IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. LOOP AT it_main . MOVE-CORRESPONDING it_main TO it_main1. AT NEW f1. it_head-salesdocument = it_main1-f1. it_head-doc_type = it_main1-f2. it_head-sales_org = it_main1-f3. it_head-distr_chan = it_main1-f4. it_head-division = it_main1-f5. it_head-req_date_h = it_main1-f6. APPEND it_head. CONTINUE. ENDAT. it_item-salesdocument = it_head-salesdocument. it_item-itm_number = it_main1-f2. it_item-material = it_main1-f3. it_item-target_qty = it_main1-f4. it_item-target_qu = it_main1-f5. it_item-plant = it_main1-f6. APPEND it_item. ENDLOOP. LOOP AT it_head. wa_order_header_in-doc_type = it_head-doc_type. wa_order_header_in-sales_org = it_head-sales_org. wa_order_header_in-distr_chan = it_head-distr_chan. wa_order_header_in-division = it_head-division. wa_order_header_in-req_date_h = it_head-req_date_h. wa_order_header_inx-updateflag = 'I'. wa_order_header_inx-doc_type = 'X'. wa_order_header_inx-sales_org = 'X'. wa_order_header_inx-distr_chan = 'X'. wa_order_header_inx-division = 'X'. wa_order_header_inx-req_date_h = 'X'. LOOP AT it_item WHERE salesdocument = it_head-salesdocument. it_order_item_in-itm_number = it_item-itm_number. it_order_item_in-material = it_item-material. it_order_item_in-target_qty = it_item-target_qty. it_order_item_in-target_qu = it_item-target_qu. it_order_item_in-plant = it_item-plant. APPEND it_order_item_in. it_order_item_inx-itm_number = it_item-itm_number. it_order_item_inx-updateflag ='I'. it_order_item_inx-material = 'X'. it_order_item_inx-target_qty = 'X'. it_order_item_inx-target_qu = 'X'. it_order_item_inx-plant = 'X'. APPEND it_order_item_inx. it_order_schedules_in-itm_number = it_order_item_in-itm_number. it_order_schedules_in-req_qty = it_order_item_in-target_qty. APPEND it_order_schedules_in. it_order_schedules_inx-itm_number = it_order_item_in-itm_number. it_order_schedules_inx-req_qty = 'X'. APPEND it_order_schedules_inx. ENDLOOP. it_partners-partn_role = 'AG'. it_partners-partn_numb = '0000002004'. APPEND it_partners. it_partners-partn_role = 'WE'. it_partners-partn_numb = '0000002004'. APPEND it_partners. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING * SALESDOCUMENTIN = order_header_in = wa_order_header_in order_header_inx = wa_order_header_inx * SENDER = * BINARY_RELATIONSHIPTYPE = * INT_NUMBER_ASSIGNMENT = * BEHAVE_WHEN_ERROR = * LOGIC_SWITCH = * TESTRUN = convert = 'X' IMPORTING salesdocument = c_vbeln TABLES return = it_return[] order_items_in = it_order_item_in[] order_items_inx = it_order_item_inx[] order_partners = it_partners[] order_schedules_in = it_order_schedules_in[] order_schedules_inx = it_order_schedules_inx[] * ORDER_CONDITIONS_IN = * ORDER_CONDITIONS_INX = * ORDER_CFGS_REF = * ORDER_CFGS_INST = * ORDER_CFGS_PART_OF = * ORDER_CFGS_VALUE = * ORDER_CFGS_BLOB = * ORDER_CFGS_VK = * ORDER_CFGS_REFINST = * ORDER_CCARD = * ORDER_TEXT = * ORDER_KEYS = * EXTENSIONIN = * PARTNERADDRESSES = . *LOOP AT it_return where type eq 'E' or type eq 'A'. * message : it_return-message type 'S'. *exit. *endloop. *IF sy-subrc ne 0. * * CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' * EXPORTING * WAIT = 'X' ** IMPORTING ** RETURN = * . * *write : 'SO created:',c_vbeln. *ENDIF. READ TABLE it_return WITH KEY type = 'E'. IF sy-subrc EQ 0. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = it_return-id msgnr = it_return-number msgv1 = it_return-message_v1 msgv2 = it_return-message_v2 msgv3 = it_return-message_v3 msgv4 = it_return-message_v4 IMPORTING message_text_output = message_text_output. WRITE :message_text_output. else. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X' * IMPORTING * RETURN = . data : lineno type sy-linno value 1. lineno = lineno + 1. sy-linno = lineno. skip. write : /3 'SO created for:',c_vbeln. ENDIF. CLEAR :wa_order_header_in,wa_order_header_inx,it_order_item_in[],it_order_item_inx[],it_head, it_order_schedules_in[],it_order_schedules_inx[]. ENDLOOP. 13001 OR 1000 12 00 20110620 13001 10 M-05 25 ST 1200 13001 20 M-06 35 ST 1200 13001 30 M-07 15 ST 1200 13002 OR 1000 12 00 20110621 13002 10 M-05 44 ST 1200 13002 20 M-06 33 ST 1200