Skip to Content
author's profile photo
Former Member

Automatically create sales objects in background

Hello All:

Very very new to the SAP, so this question is very elemental, and hoping for some direction on how to accomplish this!

Scenario: from legacy system output daily sales order, delivery, invoice information. These output will be tab delimited txt file. Need to load them to SAP in a periodic fashion in the background. Sales order, delivery ,invoice may or may not be relate to each other.

Do I use Bapi, BDC, write my own ABAP code, IDoc batch load?

Any help will be greatly appreciated. and any link regarding books or resource on this kind integration are also much appreciated it.!

Sincerely Yours

Bo Peng

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

1 Answer

  • author's profile photo
    Former Member
    Oct 11, 2007 at 05:56 PM

    Hi

    You can use BDC's or BAPIs'

    Best one is the BAPI

    see the sample code

    Check this example of creating a sales order and for creating delivery...and PGI

    ************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.

    ************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'

    EXPORTING

    vbkok_wa = vbkok_wa

    delivery = t_created-document_numb

    IMPORTING

    ef_error_in_goods_issue_0 = v_error.

    COMMIT WORK.

    Regards

    Anji

    Add comment
    10|10000 characters needed characters exceeded