Skip to Content
avatar image
Former Member

ABAP Function Module alternative to MELB transaction

Hello,

I figuring out how to get Purchase orders for a specific Tracking number with ABAP function module with SapNCo (.Net Connector).

I currently do that with FM BAPI_PO_GETITEMS. I fill in TRACKINGNO, DOC_DATE and invoke my destination. But because it takes unreasonable amount of time to execute, I think there should be another way.

If I try to do the same with transaction MELB or ME2B via SAP GUI, the results appear very fast.

Do anyone know if there is any better BAPI "on the market" to do my job?

Thank you

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Best Answer
    avatar image
    Former Member
    Jan 15 at 12:45 PM

    I solved this by myself.

    When I ran the BAPI_PO_GETITEMS with just TRACKING_NO parameter on PO's from year 2014, the SAP needed about 3 minutes to return the result.

    Now I managed to accelerate this functionality with combining invoking two separate readings direct from SAP tables.

    Firstly I employed BBP_RFC_READ_TABLE to read EBELN and BEDNR from EKPO table. I had some problems with building SQL query, because I tried to insert too long string. Then I broke it to two parts:

    // VERY IMPORTANT!!!! 
    // if query lenght is very long, the whole SQL ROW exceeds its limits, which is 72 char! You need to break it to more smaller parts
    // https://www.sapdatasheet.org/abap/tabl/rfc_db_opt.html 
           
    // pointer to EKPO -> OPTIONS table                           
    var optionsEKPO = readTableEKPO.GetTable("OPTIONS");
    
    // build SQL query each in new row (TEXT field is limited to 72 char)
    string query = "";
    
    query = "(BEDNR LIKE '" + TRACKINGNO + "')"; // filter by TRACKINGNO
    optionsEKPO.Append();
    optionsEKPO.SetValue("TEXT", query);
    
    query = " AND (AEDAT >= '" + dateStart.ToString("yyyyMMdd") + "')"; // filter by DATE
    optionsEKPO.Append();
    optionsEKPO.SetValue("TEXT", query);
    

    Secondly I invoked the same BAPI function to read from EKKO table.

    Then I combined returned EBELN (Purchasing Document Number) numbers.

    I shortened query from 3 minutes with integrated API to around 300 ms with my own code.

    Add comment
    10|10000 characters needed characters exceeded