2016 Apr 20 10:23 AM
Hello All Experts,
We have scenario where we need to update certain custom fields in VBAP via BAPI Extensions. The number of fields are so large that is more 960 characters so it is running into a dump. Hence forth we are note able to add those fields in the extension structures.
We have avoided the solution of adding VALUE_PART5 and VALUE_PART6 in BAPI since it would require a lot of Regression.
Now we have came up with solution to add all these custom fields in a separate custom table with key fields as same as in VBAP table, all we need to ensure now is that we need to update the VBAP and the custom table Synchronously just like how VBAK and VBAP are updated.
We have decided to call this updation of the custom table in an update function module using V1.
We are using a BAPI to change and create quotations, The issue is we are not sure where can we add the logic of calling this update function inside this BAPI to achieve the requirement.
Please share some advice to achieve the same, also if there are any alternate solutions are there please suggest.
ABAP Switching, Enhancing, and Adapting Standard Programs
Regards,
Satish
2016 Apr 20 10:40 AM
to save text more than 255 characters , you should use long text (FM : SAVE_TEXT and READ_TEXT)
have a look at following liink .
2016 Apr 20 10:54 AM
You are even not required to add this in the BAPI, you can bypass it like
* Call standard BAPI
CALL FUNCTION 'BAPI_QUOTATION_CREATEFROMDATA2'
EXPORTING
salesdocumentin = salesdocumentin
quotation_header_in = quotation_header_in
quotation_header_inx = quotation_header_inx
" (...)
IMPORTING
salesdocument = salesdocument
TABLES
return = return
quotation_items_in = quotation_items_in
quotation_items_inx = quotation_items_inx. " ...
* Check validity
LOOP AT return INTO wa_message WHERE type = 'E' OR type = 'A'.
EXIT.
ENDIF.
* Success
IF sy-subrc NE 0.
wa_itab-vbeln = salesdocument.
MODIFY my_itab FROM wa_itab TRANSPORTING vbeln.
CALL FUNCTION 'Z_HR_BADI_TIME_UPDATE' IN UPDATE TASK
TABLES
my_itab = my_itab.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* Failure
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
" raise message error
ENDIF.
Regards,
Raymond
2016 Apr 21 9:53 AM
Thanks for the reply,
But then only inside the bapi my run time structures will be holding the values for the y fields, neither the BAPI extension nor the tables will hold those values at the point where you are asking to write the logic.
That is the exact reason i need to code inside the BAPI.
Regards,
Satish
2016 Apr 22 8:47 AM
As you cannot pass your data in BAPIPAREX structure, use Enhancement technique to add a new parameter (Function module, Enhance Interface) and call your FM IN UPDATE TASK in an implicit enhancement at end of the BAPI FM. Could/should you also adapt business object (SWO1) BUS2031?
Regards,
Raymond