Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI

Former Member
0 Likes
386

Hi gurus,

I have uploaded sales order data using BDC call transaction but now I want to use BAPI for this, so can you please the desired changes in the following code which I used to upload data using BDC.

Thanks

Rajeev Gupta

&----


*& Report ZBDC_SORDER *

*& *

&----


*& *

*& *

&----


REPORT zbdc_sorder .

************************************************************************

  • Definition of Structures *

************************************************************************

DATA: bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE.

DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: messtab1 LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF itab OCCURS 0,

ord_typ(2),

sales_org(4),

dist_chan(2),

divison(2),

po_no(35),

sp(10),

sh(10),

mat_no(18),

quant(15),

price(10),

END OF itab.

DATA: itab2 LIKE itab OCCURS 0 WITH HEADER LINE.

************************************************************************

    • Definition of Variables *

************************************************************************

DATA: v_tabix LIKE syst-tabix,

v_tabix2(2) TYPE n,

v_kunnr LIKE vbak-kunnr,

v_vkorg LIKE vbak-vkorg,

v_vtweg LIKE vbak-vtweg,

v_spart LIKE vbak-spart,

v_index LIKE syst-index,

l1 LIKE syst-tabix,

v_counter(2) TYPE n,

v_counter_100(3) TYPE n,

c_tabix(2),

v_mat_no(18),

v_mat_quant(16),

v_mat_price(14),

v_messtab1_text(73).

************************************************************************

    • Definition of Constants *

************************************************************************

************************************************************************

  • START-OF-SELECTION *

************************************************************************

START-OF-SELECTION.

PERFORM get_data.

PERFORM create_bdcdata.

PERFORM process_messtab.

END-OF-SELECTION.

&----


*& Form get_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_data .

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\Documents and Settings\ekansh\Desktop\sales_ord.txt'

filetype = 'DAT'

TABLES

data_tab = itab

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_table_width = 4

invalid_type = 5

no_batch = 6

unknown_error = 7

gui_refuse_filetransfer = 8

OTHERS = 9.

  • write:/ itab-divison.

itab2[] = itab[].

ENDFORM. " get_data

*&----


**& Form create_bdcdata

*&----


    • text

*----


    • --> p1 text

    • <-- p2 text

*----


FORM create_bdcdata .

DESCRIBE TABLE itab LINES l1.

LOOP AT itab.

v_tabix = syst-tabix.

IF v_tabix = 1.

MOVE v_tabix TO v_tabix2.

PERFORM bdc_dynpro USING:

'X' 'SAPMV45A' '0101',

'' 'BDC_OKCODE' '/00',

'' 'VBAK-AUART' itab-ord_typ,

'' 'VBAK-VKORG' itab-sales_org,

'' 'VBAK-VTWEG' itab-dist_chan,

'' 'VBAK-SPART' itab-divison.

PERFORM line_bdc_tab.

v_kunnr = itab-sp.

v_vkorg = itab-sales_org.

v_vtweg = itab-dist_chan.

v_spart = itab-divison.

ELSE.

IF v_kunnr = itab-sp AND

v_vkorg = itab-sales_org AND

v_vtweg = itab-dist_chan AND

v_spart = itab-divison.

v_tabix2 = v_tabix2 + 1.

PERFORM line_bdc_tab.

ELSE.

PERFORM bdc_dynpro USING:

'X' 'SAPMV45A' '0101',

'' 'BDC_OKCODE' '/00',

'' 'VBAK-AUART' itab-ord_typ,

'' 'VBAK-VKORG' itab-sales_org,

'' 'VBAK-VTWEG' itab-dist_chan,

'' 'VBAK-SPART' itab-divison.

CLEAR v_tabix2.

v_tabix2 = v_tabix2 + 1.

PERFORM line_bdc_tab.

v_kunnr = itab-sp.

v_vkorg = itab-sales_org.

v_vtweg = itab-dist_chan.

v_spart = itab-divison.

ENDIF.

ENDIF.

READ TABLE itab2 WITH KEY sp = itab-sp

sales_org = itab-sales_org

dist_chan = itab-dist_chan

divison = itab-divison.

IF v_tabix = 1.

MOVE syst-tabix TO v_index.

ENDIF.

v_index = v_index + 1.

READ TABLE itab2 INDEX v_index.

IF itab2-sp = itab-sp AND

itab2-sales_org = itab-sales_org AND

itab2-dist_chan = itab-dist_chan AND

itab2-divison = itab-divison.

IF l1 = v_tabix.

PERFORM call_save.

CALL TRANSACTION 'VA01' USING bdctab

MODE 'E'

UPDATE 'S'

MESSAGES INTO messtab.

APPEND LINES OF messtab TO messtab1.

CLEAR: bdctab, messtab.

REFRESH: messtab,bdctab.

ENDIF.

ELSE.

PERFORM call_save.

CALL TRANSACTION 'VA01' USING bdctab

MODE 'E'

UPDATE 'S'

MESSAGES INTO messtab.

APPEND LINES OF messtab TO messtab1.

CLEAR: bdctab, messtab.

REFRESH: messtab,bdctab.

ENDIF.

ENDLOOP.

ENDFORM. " create_bdcdata

*&----


**& Form line_bdc_tab

*&----


    • text

*----


    • --> p1 text

    • <-- p2 text

*----


FORM line_bdc_tab .

PERFORM bdc_dynpro USING:

'X' 'SAPMV45A' '4001',

'' 'BDC_OKCODE' '=T\02',

'' 'VBKD-BSTKD' itab-po_no,

'' 'KUAGV-KUNNR' itab-sp,

'' 'KUWEV-KUNNR' itab-sh,

'X' 'SAPMV45A' '4001',

'' 'BDC_OKCODE' '/00'.

MOVE v_tabix2 TO c_tabix.

CONCATENATE 'RV45A-MABNR(' c_tabix ')' INTO v_mat_no.

CONCATENATE 'RV45A-KWMENG(' c_tabix ')' INTO v_mat_quant.

CONCATENATE 'KOMV-KBETR(' c_tabix ')' INTO v_mat_price.

CONDENSE v_mat_no.

CONDENSE v_mat_quant.

CONDENSE v_mat_price.

PERFORM bdc_dynpro USING:

'' v_mat_no itab-mat_no,

'' v_mat_quant itab-quant,

'' v_mat_price itab-price.

  • 'X' 'SAPMV45A' '4001',

  • '' 'BDC_OKCODE' '=SICH'.

ENDFORM. " line_bdc_tab

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0382 text

  • -->P_0383 text

  • -->P_0384 text

----


FORM bdc_dynpro USING p1

p2

p3.

IF p1 = 'X'.

bdctab-dynbegin = p1.

bdctab-program = p2.

bdctab-dynpro = p3.

ELSE.

bdctab-fnam = p2.

bdctab-fval = p3.

ENDIF.

APPEND bdctab.

CLEAR bdctab.

ENDFORM. " bdc_dynpro

&----


*& Form call_save

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_save .

PERFORM bdc_dynpro USING:

'X' 'SAPMV45A' '4001',

'' 'BDC_OKCODE' '=SICH'.

ENDFORM. " call_save

&----


*& Form process_messtab

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM process_messtab .

LOOP AT messtab1 WHERE msgtyp = 'S'.

CALL FUNCTION 'SX_MESSAGE_TEXT_BUILD'

EXPORTING

msgid = messtab1-msgid

msgnr = messtab1-msgnr

msgv1 = messtab1-msgv1

msgv2 = messtab1-msgv2

msgv3 = messtab1-msgv3

msgv4 = messtab1-msgv4

IMPORTING

message_text_output = v_messtab1_text.

WRITE:/10 v_messtab1_text.

ENDLOOP.

ENDFORM. " process_messtab

2 REPLIES 2
Read only

Former Member
0 Likes
355

Hello,

Try to pass the values to the BAPI like this.


    CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
         EXPORTING
              ORDER_HEADER_IN = G_SO_HEADER
         IMPORTING
              SALESDOCUMENT      = G_ORDER_NUMBER
              SOLD_TO_PARTY      = G_SO_SOLD_TO
              SHIP_TO_PARTY      = G_SO_SHIP_TO
              BILLING_PARTY      = G_SO_PAYER
              RETURN             = RETURN
         TABLES
              ORDER_ITEMS_IN     = PI_T_SO_ITEM_IN
              ORDER_PARTNERS     = PI_T_SO_PARTNER
              ORDER_ITEMS_OUT    = PE_T_SO_ITEM_OUT
              ORDER_CCARD        = PI_T_SO_CCARD
         EXCEPTIONS
              OTHERS          = 1.

Regards,

Vasanth

Read only

Former Member
0 Likes
355

See tha sample code for sales order creation

SALES ORDER INPUT CREATION.

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'

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.

after that check in the table VBAP whether serial number is cretaed or not

Thanks

Mahesh