In our previous blogs we created CFL enabled custom fields.

Refer blog: “How to prepare and enable your existing custom fields in tables EBAN and EKPO and show on GUI” before going through below for better understanding.

Here we will see – “How to enable BAPI to update the custom fields”.

BAPI to be enabled – ‘BAPI_PO_CREATE1’

Please note: Depending on your Business Context , you may also get option to enable usage of custom fields in BAPI on CFL app itself. However, this option was not available for Business Context: Procurement.

Let’s Begin –

Step 1. Create the append structure in the Extension structures: BAPI_TE_MEPOITEM and BAPI_TE_MEPOITEMX. The append structures hold the custom fields created in previous blog:  Refer below screenshots for clarity

 

Step 2. From here, we have 2 options, in our case we went ahead with option 1 , as there were challenges faced for contract update BAPI (can detail the challenges on request 😊):

Option 1: Create a dummy field in CI_EKKODB and CI_EKKODBX. Refer above screenshots. By this approach no code was needed, and functionality worked by populating the extensions structure during PO creation. Please be aware this may or may not work with further release, however Option 2 will work in all cases

Option 2 : BADI : ME_BAPI_PO_CUST implementation.

Method Implemented: EXTENSIONIN 

Code Snippet for reference:

  CONSTANTS : lc_ext  TYPE te_struc VALUE 'BAPI_TE_MEPOITEM',
              lc_extx TYPE te_struc VALUE 'BAPI_TE_MEPOITEMX'.

  DATA : ls_ext  TYPE bapi_te_mepoitem,
         ls_extx TYPE bapi_te_mepoitemx.

* get codepage handler
  DATA(lo_parex) = cl_mmpur_bapi_po=>get_codepage_handler( ).
*  perform conversion from container to structure
  IF poitem IS SUPPLIED AND poitem-ebelp IS NOT INITIAL.
    LOOP AT extensionin REFERENCE INTO DATA(lr_parex).
      CLEAR ls_ext.
      CHECK lr_parex->structure EQ lc_ext.
      TRY.
          lo_parex->cont_to_struc( EXPORTING cont  = lr_parex->*+30
                                             langu = sy-langu
                                   IMPORTING struc = ls_ext ).
          CHECK poitem-ebelp EQ ls_ext-po_item.
* Fill the custom fields :
          poitem-<fieldname> = ls_ext-<fieldname>.
               EXIT.
        CATCH cx_sy_conversion_codepage.
          CONTINUE.
        CATCH cx_parameter_invalid_range.
          CONTINUE.
      ENDTRY.
    ENDLOOP.
  ENDIF.

  IF poitemx IS SUPPLIED AND poitemx-ebelp_key IS NOT INITIAL.
    LOOP AT extensionin REFERENCE INTO lr_parex.
      CLEAR ls_extx.
      CHECK lr_parex->structure EQ lc_extx.
      TRY.
          lo_parex->cont_to_struc( EXPORTING cont  = lr_parex->*+30
                                             langu = sy-langu
                                   IMPORTING struc = ls_extx ).
          CHECK poitemx-ebelp_key EQ ls_extx-po_item.

* Fill the custom fields X flags :
          poitemx-<fieldname> = ls_extx-<fieldname>.
          EXIT.
        CATCH cx_sy_conversion_codepage.
          CONTINUE.
        CATCH cx_parameter_invalid_range.
          CONTINUE.
      ENDTRY.
    ENDLOOP.
  ENDIF.

 

 

Hope , it was helpful. Suggestions and questions are welcome !!

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x