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

Former Member
0 Likes
635

Hi Guru's,

Can u please help me on bapi's.

Thanks in advance

5 REPLIES 5
Read only

Former Member
0 Likes
599

Hi Satish,

In Simpler terms BAPI's are Function Module assigned to OBJECTS. The functionality is similar to a function module..

Check the link given below:

http://help.sap.com/saphelp_470/helpdata/en/e0/9eb2370f9cbe68e10000009b38f8cf/frameset.htm

Reward if helpful.

Best Regards,

Ram.

Read only

Former Member
0 Likes
599

Hi

BAPI is a medium of converting npn sap system to sap system by converting data. Its not screen dependent like BDC. BAPI acts as function modules in which you have to transfer data through internal tables.

If you need any particular information of BAPI then let me know.

Aditya

Read only

Former Member
0 Likes
599

Hi,

There is lot of help on SDN.

But for your knowledge in brief i can tell you,

1. Through BAPI transaction you can find list of bapis.

2. Its business interface Function modules using RFC.

3. You can take data from SAP and NON-SAP systems.

4. Like ususal Function Module , you can call BAPI in Reports.

5. From SE37, you can check documentation of parameters for perticular BAPI.

6. Search SDN for examples.

Reward if useful!

Read only

Clemenss
Active Contributor
0 Likes
599

Hi satish,

this question comes every week a couple of times. Let us know what you expected to find when searching this forum or other internet resources and what you did not find.

In short:

BAPIS are function modules replacing transaction functionalities. They can be called from outside SAP and so they never have any screen I/O.

Most BAPI parameters, mainly internal TABLES, come in pairs, one is called PARAM and the second PRAMX. In PARAMX you have the same field names as in PARAM, but PRAMX fields are flags. If you want a certaiin PARAM field to be used (inserted, changed, deleted) then the PARAMX field must be set to 'X'.

RETURN parameter of BAPI contains oe or more messages, TYPE E means failure.

Look at this FORM calling a (slightly modified) BAPI for SD order creation. It is incomplete but shows how to proceed:


*&---------------------------------------------------------------------*
*&      Form  bapi_create_sales_document
*&---------------------------------------------------------------------*
*       Create order from IDOC data using BAPI in own system
*       store non-standard referemce data to database
*       write messages to protocol
*       append IDOC status table
*----------------------------------------------------------------------*
FORM bapi_create_sales_document
  USING    ps_edidc       TYPE edidc
           pt_idoc_head   TYPE ty_t_idoc_head
           pt_item_w_cond TYPE ty_t_item_w_cond
           pt_idoc_par    TYPE ty_t_idoc_par
           pt_idoc_hcond  TYPE ty_t_idoc_hcond
           pr_sbal        TYPE REF TO /well/u_cl_sbal
  CHANGING pt_idoc_status TYPE ty_t_bdidocstat.

  DATA:
    lv_subrc              TYPE sysubrc,
    lv_vbeln              TYPE vbeln,
    lv_msg                 TYPE string,                     "#EC NEEDED
    ls_order_header_in    TYPE bapisdhd1,
    ls_order_header_inx   TYPE bapisdhd1x,
    lt_order_items_in     TYPE TABLE OF bapisditm,
    lt_order_items_inx    TYPE TABLE OF bapisditmx,
    lt_order_schdl        TYPE TABLE OF bapischdl,
    lt_order_schdlx       TYPE TABLE OF bapischdlx,
    lt_order_partners     TYPE TABLE OF bapiparnr,
    lt_order_conditions   TYPE TABLE OF bapicond,
    lt_order_text         TYPE TABLE OF bapisdtext,"***CCC
    lt_return             TYPE TABLE OF bapiret2,
    ls_tvak               TYPE tvak,
    lv_vbtyp              TYPE vbtyp,
    lv_oj_name            TYPE oj_name,"biz object <==> VBTYP
    lt_idoc_par           TYPE ty_t_idoc_par,
    lt_item_w_cond        TYPE ty_t_item_w_cond.
  FIELD-SYMBOLS:
    <idoc_head>           TYPE LINE OF ty_t_idoc_head,
    <idoc_par>            TYPE LINE OF ty_t_idoc_par,
    <return>              TYPE bapiret2.


* pre-precondition NPAX must have a document number
  PERFORM check_npax_number_given
    USING    pt_idoc_head
             ps_edidc
             gr_sbal
    CHANGING pt_idoc_status
             lv_subrc.
  CHECK  lv_subrc = 0.

* Precondition for document creation: NPAX order unique in SAP
  PERFORM check_npax_unique
    USING    pt_idoc_head
             pt_idoc_par
             ps_edidc
             gr_sbal
    CHANGING pt_idoc_status
             lv_subrc.
  CHECK  lv_subrc = 0.

* provide IDOC header data
  READ TABLE pt_idoc_head INDEX 1 ASSIGNING <idoc_head>.

* Partner segments without customer number to be ignored
* From here on, use local copy of idoc segments
  lt_idoc_par = pt_idoc_par.
  LOOP AT lt_idoc_par ASSIGNING <idoc_par>
    WHERE kunnr IS initial.
    MESSAGE i117 WITH <idoc_par>-parvw INTO lv_msg.
*   Partner segment & without partner number ignored
    PERFORM log_symsg USING pr_sbal.
    DELETE lt_idoc_par.
  ENDLOOP." AT lt_idoc_par ASSIGNING <idoc_par>
* Precondition for document creation: Mapping possible
  PERFORM check_mapping_validity
    USING    ps_edidc
             pt_idoc_head
             pt_item_w_cond
             lt_idoc_par
             pt_idoc_hcond
             pr_sbal
    CHANGING pt_idoc_status
             lv_subrc.
  CHECK  lv_subrc = 0.

* special NPAX conditions like markup comes as header conditions
* Those conditions are transferred into 'virtual' items
*
* first transfer idoc item data to local table an use it
  lt_item_w_cond = pt_item_w_cond.
  PERFORM create_items_4_head_conditions
    USING    pt_idoc_hcond
    CHANGING lt_item_w_cond.

* decide: Order or Return
  PERFORM tvak_get_single
    USING <idoc_head>-auart
    CHANGING ls_tvak.
  lv_vbtyp = ls_tvak-vbtyp .

  PERFORM prepare_header
    USING    pt_idoc_head
             lt_idoc_par
    CHANGING ls_order_header_in ls_order_header_inx.

  PERFORM prepare_header_text
    USING    ls_order_header_in
             <idoc_head>-text1
             <idoc_head>-text2
    CHANGING lt_order_text.

* Item data with schedule lines and conditions
  PERFORM prepare_item_complete
    USING    lt_item_w_cond
             ls_order_header_in
             pr_sbal
             <idoc_head>
    CHANGING lt_order_items_in
             lt_order_items_inx
             lt_order_schdl
             lt_order_schdlx
             lt_order_conditions
             lt_order_text.

  PERFORM prepare_partners
    USING    lt_idoc_par
             <idoc_head>-bukrs
             ls_order_header_in
    CHANGING lt_order_partners.

* Master Data Check:
* Actual: Destination Country correct in customer master of recipient
*  PERFORM check_master_data
*    USING    ps_edidc
*             lt_order_partners
*             <idoc_head>-bukrs
*             ls_order_header_in
*             gr_sbal
*    CHANGING pt_idoc_status
*             lv_subrc.
*  CHECK  lv_subrc = 0.

* Not nice but necessary: herader needed for partners,
* partners needed for tax classification
* so header ist to be read and modified again here
  PERFORM determine_taxk1
    USING    lt_order_partners
    CHANGING ls_order_header_in
             ls_order_header_inx.

  PERFORM prepare_head_conditions
    USING    pt_idoc_hcond
             ls_order_header_in-currency
    CHANGING lt_order_conditions.

  CASE lv_vbtyp.
    WHEN gc_vbtyp_order.
      lv_oj_name = 'BUS2032'.
    WHEN gc_vbtyp_return.
      lv_oj_name = 'BUS2102'.
    WHEN gc_vbtyp_credit_req.
      lv_oj_name = 'BUS2094'.
    WHEN gc_vbtyp_debit_req.
      lv_oj_name = 'BUS2096'.
    WHEN OTHERS.
* no good
  ENDCASE." lv_vbtyp.

* Inform sub-processes and user-exits: This is NPAX
  PERFORM zz_srv_set_npax_memory_str
    USING pt_idoc_head.
  CALL FUNCTION '/WELL/V_BAPI_SD_SALESDOC_CREAT'
    EXPORTING
*   SALESDOCUMENTIN               =
      order_header_in               = ls_order_header_in
      order_header_inx              = ls_order_header_inx
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       =
*   INT_NUMBER_ASSIGNMENT         =
*   BEHAVE_WHEN_ERROR             =
*   LOGIC_SWITCH                  =
*   TESTRUN                       =
*   CONVERT                       = ' '
      business_object               = lv_oj_name
    IMPORTING
      salesdocument                 = lv_vbeln
    TABLES
      return                        = lt_return
      order_items_in                = lt_order_items_in
      order_items_inx               = lt_order_items_inx
      order_partners                = lt_order_partners
      order_schedules_in            = lt_order_schdl
      order_schedules_inx           = lt_order_schdlx
      order_conditions_in           = lt_order_conditions
*   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                    = lt_order_text
*   ORDER_KEYS                    =
*   EXTENSIONIN                   =
*   PARTNERADDRESSES              =
            .

  PERFORM npax_data_save
    USING    ps_edidc-docnum       "Idoc number
             pt_idoc_head          "IDOC header segment (4 filenmame)
             lt_idoc_par           "partners for role AG - Kunnr NPAX
             ls_order_header_in    "Document header data BAPI-processed
             lt_item_w_cond        "IDOC items (ref MWST etc...)
             lt_order_items_in     "IDOC items data BAPI-processed
             lt_order_conditions   "document condition table
             lv_vbeln.             "Doc num created and BAPI-returned

  LOOP AT lt_return ASSIGNING <return>.
    MESSAGE
      ID     <return>-id
      TYPE   <return>-type
      NUMBER <return>-number
      WITH   <return>-message_v1
             <return>-message_v2
             <return>-message_v3
             <return>-message_v4
      INTO lv_msg.
    PERFORM log_symsg USING pr_sbal.
  ENDLOOP."t lt_return assigning <return>.

  PERFORM append_idoc_status_bapi
    USING    ps_edidc
             lt_return
    CHANGING pt_idoc_status.

ENDFORM.                    " bapi_create_sales_document

Regards,

Clemens