<?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 How can I write unit test for table function&amp;AMDP? in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-can-i-write-unit-test-for-table-function-amdp/m-p/12246647#M1985737</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
  &lt;P&gt;In our project, we use table function&amp;amp;AMDP to add sequence numbers for our CDS view.&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;@ClientHandling.type: #CLIENT_DEPENDENT
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@VDM.private: true
@EndUserText.label: 'Add a Sequence Number for Each Group'


define table function P_AddSqncNumberTableFunction
  with parameters
    @Environment.systemField: #CLIENT
    P_SAPClient : vdm_v_sap_client
  returns
{
  mandt : vdm_v_sap_client;
  PaymentPlanUUID : abap.raw(16);
  PaymentRunDate : dats;
  PayingCompanyCode : abap.char(4);
  NumberOfTrendPeriod : abap.dec(9);
  TrendSequenceNumber : abap.int8;
}
implemented by method CL_FAP_PPS_ADD_SQNCNUMBER_AMDP=&amp;gt;ADD_SEQUENCSE_NUM_DATA;
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;PRE&gt;&lt;CODE&gt;CLASS cl_fap_pps_add_sqncnumber_amdp DEFINITION
  PUBLIC
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.

    CLASS-METHODS:
      ADD_SEQUENCSE_NUM_DATA FOR TABLE FUNCTION P_AddSqncNumberTableFunction.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS cl_fap_pps_add_sqncnumber_amdp IMPLEMENTATION.

  METHOD ADD_SEQUENCSE_NUM_DATA
    BY DATABASE FUNCTION
    FOR HDB
    LANGUAGE SQLSCRIPT
    USING P_PaymentProposalSimlnAggrgn.

    add_trendseqnum_results =
      SELECT DISTINCT
             :P_SAPClient          as mandt,
             PaymentPlanUUID       as PaymentPlanUUID,
             PaymentRunDate        as PaymentRunDate,
             PayingCompanyCode     as PayingCompanyCode,
             SumOfInvoices         as NumberOfTrendPeriod,
             ROW_NUMBER() OVER ( PARTITION BY PaymentPlanUUID,PayingCompanyCode ORDER BY PaymentRunDate ASC ) as TrendSequenceNumber
        FROM P_PaymentProposalSimlnAggrgn
        WHERE
            mandt = :P_SAPClient;

    RETURN
      SELECT mandt,
             PaymentPlanUUID,
             PaymentRunDate,
             PayingCompanyCode,
             NumberOfTrendPeriod,
             TrendSequenceNumber
        FROM :add_trendseqnum_results
        WHERE
            mandt = :P_SAPClient;

  ENDMETHOD.

ENDCLASS.
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;But When i try to write UT to cover these files, I didn't know how to do it?&lt;/P&gt;
  &lt;P&gt;CDS test double doesn't support table function.&lt;/P&gt;
  &lt;P&gt;I try to use Avalon like this: &lt;A href="https://jam4.sapjam.com/groups/FVnLs94RZ4o6QmvomBfaeL/documents/TWeKJNJWkiCa0QjBpaeuBP/slide_viewer"&gt;AMDP Test Framework AVALON.pptx&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;But I can't call the function in the AMDP like&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;CL_FAP_PPS_ADD_SQNCNUMBER_AMDP-&amp;gt;ADD_SEQUENCSE_NUM_DATA&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;Because CL_FAP_PPS_ADD_SQNCNUMBER_AMDP is the implementation of a table function.&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;The method "ADD_SEQUENCSE_NUM_DATA" is defined as an implementation of a CDS table function and cannot be called directly from ABAP programs.
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;I also try to write test case like &lt;A href="https://wiki.wdf.sap.corp/wiki/pages/viewpage.action?spaceKey=FXU&amp;amp;title=Notes+on+AVALON+based+testing"&gt;Notes on AVALON based testing&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;but it run into some error when i try to call function cl_avalon_cds_test_environment=&amp;gt;create&lt;/P&gt;
  &lt;P&gt;I also noticed Sandra Rossi's answer in &lt;A href="https://answers.sap.com/questions/12899211/how-to-test-cds-table-function.html" target="_blank"&gt;How to test cds table function?&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;But it seems that this solution only covers the table function and needs to create an additional CDS view.&lt;/P&gt;
  &lt;P&gt;what should I do to write unit test for table function &amp;amp; AMDP?&lt;/P&gt;
  &lt;P&gt;Thank you in advance&lt;/P&gt;
  &lt;P&gt;Best Regards&lt;/P&gt;
  &lt;P&gt;Yao, Pengfei&lt;/P&gt;</description>
    <pubDate>Fri, 17 Jul 2020 10:50:07 GMT</pubDate>
    <dc:creator>former_member621786</dc:creator>
    <dc:date>2020-07-17T10:50:07Z</dc:date>
    <item>
      <title>How can I write unit test for table function&amp;AMDP?</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-can-i-write-unit-test-for-table-function-amdp/m-p/12246647#M1985737</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
  &lt;P&gt;In our project, we use table function&amp;amp;AMDP to add sequence numbers for our CDS view.&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;@ClientHandling.type: #CLIENT_DEPENDENT
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@VDM.private: true
@EndUserText.label: 'Add a Sequence Number for Each Group'


define table function P_AddSqncNumberTableFunction
  with parameters
    @Environment.systemField: #CLIENT
    P_SAPClient : vdm_v_sap_client
  returns
{
  mandt : vdm_v_sap_client;
  PaymentPlanUUID : abap.raw(16);
  PaymentRunDate : dats;
  PayingCompanyCode : abap.char(4);
  NumberOfTrendPeriod : abap.dec(9);
  TrendSequenceNumber : abap.int8;
}
implemented by method CL_FAP_PPS_ADD_SQNCNUMBER_AMDP=&amp;gt;ADD_SEQUENCSE_NUM_DATA;
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;PRE&gt;&lt;CODE&gt;CLASS cl_fap_pps_add_sqncnumber_amdp DEFINITION
  PUBLIC
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_amdp_marker_hdb.

    CLASS-METHODS:
      ADD_SEQUENCSE_NUM_DATA FOR TABLE FUNCTION P_AddSqncNumberTableFunction.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS cl_fap_pps_add_sqncnumber_amdp IMPLEMENTATION.

  METHOD ADD_SEQUENCSE_NUM_DATA
    BY DATABASE FUNCTION
    FOR HDB
    LANGUAGE SQLSCRIPT
    USING P_PaymentProposalSimlnAggrgn.

    add_trendseqnum_results =
      SELECT DISTINCT
             :P_SAPClient          as mandt,
             PaymentPlanUUID       as PaymentPlanUUID,
             PaymentRunDate        as PaymentRunDate,
             PayingCompanyCode     as PayingCompanyCode,
             SumOfInvoices         as NumberOfTrendPeriod,
             ROW_NUMBER() OVER ( PARTITION BY PaymentPlanUUID,PayingCompanyCode ORDER BY PaymentRunDate ASC ) as TrendSequenceNumber
        FROM P_PaymentProposalSimlnAggrgn
        WHERE
            mandt = :P_SAPClient;

    RETURN
      SELECT mandt,
             PaymentPlanUUID,
             PaymentRunDate,
             PayingCompanyCode,
             NumberOfTrendPeriod,
             TrendSequenceNumber
        FROM :add_trendseqnum_results
        WHERE
            mandt = :P_SAPClient;

  ENDMETHOD.

ENDCLASS.
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;But When i try to write UT to cover these files, I didn't know how to do it?&lt;/P&gt;
  &lt;P&gt;CDS test double doesn't support table function.&lt;/P&gt;
  &lt;P&gt;I try to use Avalon like this: &lt;A href="https://jam4.sapjam.com/groups/FVnLs94RZ4o6QmvomBfaeL/documents/TWeKJNJWkiCa0QjBpaeuBP/slide_viewer"&gt;AMDP Test Framework AVALON.pptx&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;But I can't call the function in the AMDP like&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;CL_FAP_PPS_ADD_SQNCNUMBER_AMDP-&amp;gt;ADD_SEQUENCSE_NUM_DATA&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;Because CL_FAP_PPS_ADD_SQNCNUMBER_AMDP is the implementation of a table function.&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;The method "ADD_SEQUENCSE_NUM_DATA" is defined as an implementation of a CDS table function and cannot be called directly from ABAP programs.
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;I also try to write test case like &lt;A href="https://wiki.wdf.sap.corp/wiki/pages/viewpage.action?spaceKey=FXU&amp;amp;title=Notes+on+AVALON+based+testing"&gt;Notes on AVALON based testing&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;but it run into some error when i try to call function cl_avalon_cds_test_environment=&amp;gt;create&lt;/P&gt;
  &lt;P&gt;I also noticed Sandra Rossi's answer in &lt;A href="https://answers.sap.com/questions/12899211/how-to-test-cds-table-function.html" target="_blank"&gt;How to test cds table function?&lt;/A&gt;&lt;/P&gt;
  &lt;P&gt;But it seems that this solution only covers the table function and needs to create an additional CDS view.&lt;/P&gt;
  &lt;P&gt;what should I do to write unit test for table function &amp;amp; AMDP?&lt;/P&gt;
  &lt;P&gt;Thank you in advance&lt;/P&gt;
  &lt;P&gt;Best Regards&lt;/P&gt;
  &lt;P&gt;Yao, Pengfei&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jul 2020 10:50:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-can-i-write-unit-test-for-table-function-amdp/m-p/12246647#M1985737</guid>
      <dc:creator>former_member621786</dc:creator>
      <dc:date>2020-07-17T10:50:07Z</dc:date>
    </item>
  </channel>
</rss>

