<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: BAPI for COPA postings in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061157#M426037</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have this code , may be this one will help, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also got this from some other forum&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Report ZCO_COST_UPLOAD 
*&amp;amp; 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; 
*&amp;amp; 
*&amp;amp;---------------------------------------------------------------------* 

REPORT zco_cost_upload. 

*Tables 
TABLES : mara,lfa1. 

* Type / Data declarations 
TYPES : BEGIN OF ty_upload , 

record_id TYPE char6, 
val_01 TYPE rke_param_value, 
val_02 TYPE rke_param_value, 
val_03 TYPE rke_param_value, 
val_04 TYPE rke_param_value, 
val_05 TYPE rke_param_value, 
val_06 TYPE rke_param_value, 
val_07 TYPE rke_param_value, 
val_08 TYPE rke_param_value, 
val_09 TYPE rke_param_value, 
val_10 TYPE rke_param_value, 
val_11 TYPE rke_param_value, 
val_12 TYPE rke_param_value, 
val_13 TYPE rke_param_value, 
val_14 TYPE rke_param_value, 
val_15 TYPE rke_param_value, 
val_16 TYPE rke_param_value, 
val_17 TYPE rke_param_value, 
val_18 TYPE rke_param_value, 
val_19 TYPE rke_param_value, 
val_20 TYPE rke_param_value, 
val_21 TYPE rke_param_value, 
val_22 TYPE rke_param_value, 
val_23 TYPE rke_param_value, " new 
val_24 TYPE rke_param_value, " new KWGOHD 

END OF ty_upload. 


TYPES : BEGIN OF ty_matnr, 

matnr TYPE matnr, 

END OF ty_matnr. 



DATA : it_upload TYPE TABLE OF ty_upload, 
it_uploadx TYPE TABLE OF ty_upload, 
wa_upload LIKE LINE OF it_upload, 
it_ipdata TYPE TABLE OF bapi_copa_data, 
wa_ipdata LIKE LINE OF it_ipdata, 
it_flist TYPE TABLE OF bapi_copa_field, 
wa_flist LIKE LINE OF it_flist, 
it_ret TYPE TABLE OF bapiret2 WITH HEADER LINE, 
it_mara TYPE TABLE OF mara, 
wa_mara LIKE LINE OF it_mara, 
it_matnr TYPE TABLE OF ty_matnr, 
wa_matnr LIKE LINE OF it_matnr. 


* Selection Screen 
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001 . 
SELECTION-SCREEN SKIP 1. 

PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY MEMORY ID file, 
p_oc LIKE bapi0017-op_concern DEFAULT 'HOPE' , 
p_test LIKE bapi0017-testrun DEFAULT 'X'. 

SELECTION-SCREEN SKIP 1. 
SELECTION-SCREEN END OF BLOCK blk. 




AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. 

PERFORM get_filename CHANGING p_file . 


START-OF-SELECTION. 

PERFORM upload_file. 

PERFORM fill_feild_table. 

PERFORM bapi_update. 


*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form get_filename 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* &amp;lt;--P_P_FILE text 
*----------------------------------------------------------------------* 
FORM get_filename CHANGING p_p_file LIKE p_file. 

DATA: filename LIKE p_file. 

CALL FUNCTION 'WS_FILENAME_GET' 
EXPORTING 
def_filename = 'BDS.txt' 
def_path = 'C:' 
mask = ',BDC Upload File,*.*.' 
mode = '0' 
title = 'Chose file location' 
IMPORTING 
filename = filename 
EXCEPTIONS 
inv_winsys = 1 
no_batch = 2 
selection_cancel = 3 
selection_error = 4 
OTHERS = 5. 
IF sy-subrc &amp;lt;&amp;gt; 0. 
EXIT. 
ELSE. 
p_p_file = filename. 

ENDIF. 


ENDFORM. " get_filename 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form upload_file 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM upload_file . 

DATA : v_file TYPE string. 
v_file = p_file. 




CALL FUNCTION 'WS_UPLOAD' 
EXPORTING 
codepage = 'IBM' 
filename = p_file 
filetype = 'DAT' 
* HEADLEN = ' ' 
* LINE_EXIT = ' ' 
* TRUNCLEN = ' ' 
* USER_FORM = ' ' 
* USER_PROG = ' ' 
* DAT_D_FORMAT = ' ' 
* IMPORTING 
* FILELENGTH = 
TABLES 
data_tab = it_upload 
EXCEPTIONS 
conversion_error = 1 
file_open_error = 2 
file_read_error = 3 
invalid_type = 4 
no_batch = 5 
unknown_error = 6 
invalid_table_width = 7 
gui_refuse_filetransfer = 8 
customer_error = 9 
no_authority = 10 
OTHERS = 11 
. 
IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
ENDIF. 




* BREAK-POINT. 

* DELETE it_upload WHERE lifnr IS INITIAL. 

ENDFORM. " upload_file 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form fill_feild_table 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM fill_feild_table . 

DATA : cnt TYPE rke_record_id, 
v_kunnr TYPE kunnr. 

LOOP AT it_upload INTO wa_upload. 

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' 
EXPORTING 
input = wa_upload-val_02 
IMPORTING 
output = wa_upload-val_02 
* EXCEPTIONS 
* LENGTH_ERROR = 1 
* OTHERS = 2 
. 
* IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
* ENDIF. 

wa_matnr-matnr = wa_upload-val_02. 
APPEND wa_matnr TO it_matnr. 

ENDLOOP. 

IF it_matnr[] IS NOT INITIAL. 

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara 
FOR ALL ENTRIES IN it_matnr 
WHERE matnr = it_matnr-matnr. 

ENDIF. 


LOOP AT it_upload INTO wa_upload. 
* Fill the field name and value based on fixed sequence 

* Starts from Col 2 of EXCEL 
CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'BUDAT'. 
wa_ipdata-value = wa_upload-val_01. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ARTNR'. 

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' 
EXPORTING 
input = wa_upload-val_02 
IMPORTING 
output = wa_upload-val_02 
* EXCEPTIONS 
* LENGTH_ERROR = 1 
* OTHERS = 2 
. 
* IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
* ENDIF. 

wa_ipdata-value = wa_upload-val_02. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


* Find wt and dimension 

READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_upload-val_02. 
IF sy-subrc = 0. 

CLEAR: wa_ipdata. 

wa_mara-volum = wa_mara-volum * wa_upload-val_13. "ABSMG 
wa_mara-ntgew = wa_mara-ntgew * wa_upload-val_13. "ABSMG 

wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVVOL'. 
wa_ipdata-value = wa_mara-volum. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVVOL_ME'. 
wa_ipdata-value = wa_mara-voleh. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVWGT'. 
wa_ipdata-value = wa_mara-ntgew. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVWGT_ME'. 
wa_ipdata-value = wa_mara-gewei. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

ENDIF. 



CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'BUKRS'. 
wa_ipdata-value = wa_upload-val_03. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KNDNR'. 

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' 
EXPORTING 
input = wa_upload-val_04 
IMPORTING 
output = v_kunnr. 


wa_ipdata-value = v_kunnr. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KOKRS'. 
wa_ipdata-value = wa_upload-val_05. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 




CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'PRCTR'. 
wa_ipdata-value = wa_upload-val_06. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VKORG'. 
wa_ipdata-value = wa_upload-val_07. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VRGAR'. 
wa_ipdata-value = wa_upload-val_08. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VTWEG'. 
wa_ipdata-value = wa_upload-val_09. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'WERKS'. 
wa_ipdata-value = wa_upload-val_10. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 




CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KMKDGR'. 
wa_ipdata-value = wa_upload-val_11. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'MVGR1'. 
wa_ipdata-value = wa_upload-val_12. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ABSMG'. 
wa_ipdata-value = wa_upload-val_13. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ERLOS'. 
wa_ipdata-value = wa_upload-val_14. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWAGTK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_15. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVCOG'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_16. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWMAEK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_17. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVCPK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_18. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVDLR'. 
wa_ipdata-value = wa_upload-val_19. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVDSA'. 
wa_ipdata-value = wa_upload-val_20. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVTXS'. 
wa_ipdata-value = wa_upload-val_21. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


* Hardcoded feilds 
* ABSMG_ME 
CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ABSMG_ME'. 
wa_ipdata-value = wa_upload-val_22. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVTOT'. 
wa_ipdata-value = wa_upload-val_23. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWGOHD'. 
wa_ipdata-value = wa_upload-val_24. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

ENDLOOP. 

ENDFORM. " fill_feild_table 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form bapi_update 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM bapi_update . 
DATA : ret LIKE LINE OF it_ret. 
WRITE : / 'Log of the Cost Data upload..'. 
SKIP 2. 
SORT it_flist . 
DELETE ADJACENT DUPLICATES FROM it_flist COMPARING fieldname. 


CALL FUNCTION 'BAPI_COPAACTUALS_POSTCOSTDATA' 
EXPORTING 
operatingconcern = p_oc 
testrun = p_test 
TABLES 
inputdata = it_ipdata 
fieldlist = it_flist 
return = it_ret. 






READ TABLE it_ret WITH KEY type = 'E'. 

IF sy-subrc NE 0. 
READ TABLE it_ret WITH KEY type = 'A'. 

ENDIF. 

IF sy-subrc = 0. 
* error. 

WRITE : / 'Upload error...'. 

LOOP AT it_ret INTO ret. 

WRITE : / ret-type , ret-id , ret-number, 
ret-message, ret-log_no, 
ret-message_v1, ret-message_v2, 
ret-message_v3, ret-message_v4. 

ENDLOOP. 
SKIP 1. 

ELSE. 

IF p_test = ' '. 
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' 
EXPORTING 
wait = 'X' 
* IMPORTING 
* RETURN = 
. 
WRITE : 'List of Records uploaded...'. 
ENDIF. 



LOOP AT it_upload INTO wa_upload. 

WRITE : / 'Record No. ' , wa_upload-record_id, 
'Product : ' , wa_upload-val_02. 
ENDLOOP. 

ENDIF. 




SKIP 2. 






ENDFORM. " bapi_update 

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;aRs&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 18 Mar 2007 23:30:07 GMT</pubDate>
    <dc:creator>former_member194669</dc:creator>
    <dc:date>2007-03-18T23:30:07Z</dc:date>
    <item>
      <title>BAPI for COPA postings</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061155#M426035</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;can i use bapi  &amp;lt;b&amp;gt;BAPI_COPAACTUALS_POSTCOSTDATA&amp;lt;/b&amp;gt; to post COPA  related data with reference to &amp;lt;b&amp;gt;Incoming Invoice&amp;lt;/b&amp;gt;  ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If yes, what are the reference fileds in  Invoice data ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am getting invoice data file with COPA line items.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Mar 2007 20:01:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061155#M426035</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-03-18T20:01:21Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for COPA postings</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061156#M426036</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Anybody give me some Idea ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Mar 2007 23:20:14 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061156#M426036</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-03-18T23:20:14Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for COPA postings</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061157#M426037</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have this code , may be this one will help, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also got this from some other forum&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Report ZCO_COST_UPLOAD 
*&amp;amp; 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; 
*&amp;amp; 
*&amp;amp;---------------------------------------------------------------------* 

REPORT zco_cost_upload. 

*Tables 
TABLES : mara,lfa1. 

* Type / Data declarations 
TYPES : BEGIN OF ty_upload , 

record_id TYPE char6, 
val_01 TYPE rke_param_value, 
val_02 TYPE rke_param_value, 
val_03 TYPE rke_param_value, 
val_04 TYPE rke_param_value, 
val_05 TYPE rke_param_value, 
val_06 TYPE rke_param_value, 
val_07 TYPE rke_param_value, 
val_08 TYPE rke_param_value, 
val_09 TYPE rke_param_value, 
val_10 TYPE rke_param_value, 
val_11 TYPE rke_param_value, 
val_12 TYPE rke_param_value, 
val_13 TYPE rke_param_value, 
val_14 TYPE rke_param_value, 
val_15 TYPE rke_param_value, 
val_16 TYPE rke_param_value, 
val_17 TYPE rke_param_value, 
val_18 TYPE rke_param_value, 
val_19 TYPE rke_param_value, 
val_20 TYPE rke_param_value, 
val_21 TYPE rke_param_value, 
val_22 TYPE rke_param_value, 
val_23 TYPE rke_param_value, " new 
val_24 TYPE rke_param_value, " new KWGOHD 

END OF ty_upload. 


TYPES : BEGIN OF ty_matnr, 

matnr TYPE matnr, 

END OF ty_matnr. 



DATA : it_upload TYPE TABLE OF ty_upload, 
it_uploadx TYPE TABLE OF ty_upload, 
wa_upload LIKE LINE OF it_upload, 
it_ipdata TYPE TABLE OF bapi_copa_data, 
wa_ipdata LIKE LINE OF it_ipdata, 
it_flist TYPE TABLE OF bapi_copa_field, 
wa_flist LIKE LINE OF it_flist, 
it_ret TYPE TABLE OF bapiret2 WITH HEADER LINE, 
it_mara TYPE TABLE OF mara, 
wa_mara LIKE LINE OF it_mara, 
it_matnr TYPE TABLE OF ty_matnr, 
wa_matnr LIKE LINE OF it_matnr. 


* Selection Screen 
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001 . 
SELECTION-SCREEN SKIP 1. 

PARAMETERS: p_file LIKE rlgrap-filename OBLIGATORY MEMORY ID file, 
p_oc LIKE bapi0017-op_concern DEFAULT 'HOPE' , 
p_test LIKE bapi0017-testrun DEFAULT 'X'. 

SELECTION-SCREEN SKIP 1. 
SELECTION-SCREEN END OF BLOCK blk. 




AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. 

PERFORM get_filename CHANGING p_file . 


START-OF-SELECTION. 

PERFORM upload_file. 

PERFORM fill_feild_table. 

PERFORM bapi_update. 


*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form get_filename 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* &amp;lt;--P_P_FILE text 
*----------------------------------------------------------------------* 
FORM get_filename CHANGING p_p_file LIKE p_file. 

DATA: filename LIKE p_file. 

CALL FUNCTION 'WS_FILENAME_GET' 
EXPORTING 
def_filename = 'BDS.txt' 
def_path = 'C:' 
mask = ',BDC Upload File,*.*.' 
mode = '0' 
title = 'Chose file location' 
IMPORTING 
filename = filename 
EXCEPTIONS 
inv_winsys = 1 
no_batch = 2 
selection_cancel = 3 
selection_error = 4 
OTHERS = 5. 
IF sy-subrc &amp;lt;&amp;gt; 0. 
EXIT. 
ELSE. 
p_p_file = filename. 

ENDIF. 


ENDFORM. " get_filename 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form upload_file 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM upload_file . 

DATA : v_file TYPE string. 
v_file = p_file. 




CALL FUNCTION 'WS_UPLOAD' 
EXPORTING 
codepage = 'IBM' 
filename = p_file 
filetype = 'DAT' 
* HEADLEN = ' ' 
* LINE_EXIT = ' ' 
* TRUNCLEN = ' ' 
* USER_FORM = ' ' 
* USER_PROG = ' ' 
* DAT_D_FORMAT = ' ' 
* IMPORTING 
* FILELENGTH = 
TABLES 
data_tab = it_upload 
EXCEPTIONS 
conversion_error = 1 
file_open_error = 2 
file_read_error = 3 
invalid_type = 4 
no_batch = 5 
unknown_error = 6 
invalid_table_width = 7 
gui_refuse_filetransfer = 8 
customer_error = 9 
no_authority = 10 
OTHERS = 11 
. 
IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
ENDIF. 




* BREAK-POINT. 

* DELETE it_upload WHERE lifnr IS INITIAL. 

ENDFORM. " upload_file 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form fill_feild_table 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM fill_feild_table . 

DATA : cnt TYPE rke_record_id, 
v_kunnr TYPE kunnr. 

LOOP AT it_upload INTO wa_upload. 

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' 
EXPORTING 
input = wa_upload-val_02 
IMPORTING 
output = wa_upload-val_02 
* EXCEPTIONS 
* LENGTH_ERROR = 1 
* OTHERS = 2 
. 
* IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
* ENDIF. 

wa_matnr-matnr = wa_upload-val_02. 
APPEND wa_matnr TO it_matnr. 

ENDLOOP. 

IF it_matnr[] IS NOT INITIAL. 

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara 
FOR ALL ENTRIES IN it_matnr 
WHERE matnr = it_matnr-matnr. 

ENDIF. 


LOOP AT it_upload INTO wa_upload. 
* Fill the field name and value based on fixed sequence 

* Starts from Col 2 of EXCEL 
CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'BUDAT'. 
wa_ipdata-value = wa_upload-val_01. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ARTNR'. 

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' 
EXPORTING 
input = wa_upload-val_02 
IMPORTING 
output = wa_upload-val_02 
* EXCEPTIONS 
* LENGTH_ERROR = 1 
* OTHERS = 2 
. 
* IF sy-subrc &amp;lt;&amp;gt; 0. 
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
* ENDIF. 

wa_ipdata-value = wa_upload-val_02. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


* Find wt and dimension 

READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_upload-val_02. 
IF sy-subrc = 0. 

CLEAR: wa_ipdata. 

wa_mara-volum = wa_mara-volum * wa_upload-val_13. "ABSMG 
wa_mara-ntgew = wa_mara-ntgew * wa_upload-val_13. "ABSMG 

wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVVOL'. 
wa_ipdata-value = wa_mara-volum. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVVOL_ME'. 
wa_ipdata-value = wa_mara-voleh. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVWGT'. 
wa_ipdata-value = wa_mara-ntgew. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVWGT_ME'. 
wa_ipdata-value = wa_mara-gewei. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

ENDIF. 



CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'BUKRS'. 
wa_ipdata-value = wa_upload-val_03. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KNDNR'. 

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' 
EXPORTING 
input = wa_upload-val_04 
IMPORTING 
output = v_kunnr. 


wa_ipdata-value = v_kunnr. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KOKRS'. 
wa_ipdata-value = wa_upload-val_05. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 




CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'PRCTR'. 
wa_ipdata-value = wa_upload-val_06. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VKORG'. 
wa_ipdata-value = wa_upload-val_07. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VRGAR'. 
wa_ipdata-value = wa_upload-val_08. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VTWEG'. 
wa_ipdata-value = wa_upload-val_09. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'WERKS'. 
wa_ipdata-value = wa_upload-val_10. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 




CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KMKDGR'. 
wa_ipdata-value = wa_upload-val_11. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'MVGR1'. 
wa_ipdata-value = wa_upload-val_12. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ABSMG'. 
wa_ipdata-value = wa_upload-val_13. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ERLOS'. 
wa_ipdata-value = wa_upload-val_14. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWAGTK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_15. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVCOG'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_16. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWMAEK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_17. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVCPK'. 
wa_ipdata-currency = 'LKR'. 
wa_ipdata-value = wa_upload-val_18. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVDLR'. 
wa_ipdata-value = wa_upload-val_19. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVDSA'. 
wa_ipdata-value = wa_upload-val_20. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVTXS'. 
wa_ipdata-value = wa_upload-val_21. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 


* Hardcoded feilds 
* ABSMG_ME 
CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'ABSMG_ME'. 
wa_ipdata-value = wa_upload-val_22. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'VVTOT'. 
wa_ipdata-value = wa_upload-val_23. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

CLEAR: wa_ipdata. 
wa_ipdata-record_id = wa_upload-record_id. 
wa_ipdata-fieldname = 'KWGOHD'. 
wa_ipdata-value = wa_upload-val_24. 
wa_ipdata-currency = 'LKR'. 
APPEND wa_ipdata TO it_ipdata. 
wa_flist-fieldname = wa_ipdata-fieldname. 
APPEND wa_flist TO it_flist. 

ENDLOOP. 

ENDFORM. " fill_feild_table 
*&amp;amp;---------------------------------------------------------------------* 
*&amp;amp; Form bapi_update 
*&amp;amp;---------------------------------------------------------------------* 
* text 
*----------------------------------------------------------------------* 
* --&amp;gt; p1 text 
* &amp;lt;-- p2 text 
*----------------------------------------------------------------------* 
FORM bapi_update . 
DATA : ret LIKE LINE OF it_ret. 
WRITE : / 'Log of the Cost Data upload..'. 
SKIP 2. 
SORT it_flist . 
DELETE ADJACENT DUPLICATES FROM it_flist COMPARING fieldname. 


CALL FUNCTION 'BAPI_COPAACTUALS_POSTCOSTDATA' 
EXPORTING 
operatingconcern = p_oc 
testrun = p_test 
TABLES 
inputdata = it_ipdata 
fieldlist = it_flist 
return = it_ret. 






READ TABLE it_ret WITH KEY type = 'E'. 

IF sy-subrc NE 0. 
READ TABLE it_ret WITH KEY type = 'A'. 

ENDIF. 

IF sy-subrc = 0. 
* error. 

WRITE : / 'Upload error...'. 

LOOP AT it_ret INTO ret. 

WRITE : / ret-type , ret-id , ret-number, 
ret-message, ret-log_no, 
ret-message_v1, ret-message_v2, 
ret-message_v3, ret-message_v4. 

ENDLOOP. 
SKIP 1. 

ELSE. 

IF p_test = ' '. 
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' 
EXPORTING 
wait = 'X' 
* IMPORTING 
* RETURN = 
. 
WRITE : 'List of Records uploaded...'. 
ENDIF. 



LOOP AT it_upload INTO wa_upload. 

WRITE : / 'Record No. ' , wa_upload-record_id, 
'Product : ' , wa_upload-val_02. 
ENDLOOP. 

ENDIF. 




SKIP 2. 






ENDFORM. " bapi_update 

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;aRs&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Mar 2007 23:30:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-copa-postings/m-p/2061157#M426037</guid>
      <dc:creator>former_member194669</dc:creator>
      <dc:date>2007-03-18T23:30:07Z</dc:date>
    </item>
  </channel>
</rss>

