Application Development 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: 

RFFOUS_T, exits ZXFORU2x, and the REGUT table

Former Member
0 Kudos

Our DME overview files are generated by a payment run F110 against open items.

I managed to find exit ZXFORU24 (101) to select from the REGUT table the keys from REGUH and fill the dtamusbh-bh3 field on the ACH with a concatenation of our company name and the reference number (REGUT-RENUM).

The issue we're seeing is that the REGUT table only seems to be updated *after* RFFOUS_T has completed.  So, in the first pass, from F110 for a payment run, my new SELECT from REGUT doesn't find the data it needs.  Only when RFFOUS_T is reprocessed is the record in REGUT, and therefore successfully selected.

I've read several SCN discussions about this, including one that highlights all the exits available:

<b>EXIT_RFFOEXIT_100</b> - Modification of file header records (DTAMUSFH)

<b>EXIT_RFFOEXIT_101</b> - Modification of batch header records (DTAMUSBH)

<b>EXIT_RFFOEXIT_102</b> - Modification of CCD detail records (DTAMUSCCD)

<b>EXIT_RFFOEXIT_103</b> - Modification of CTX detail records (DTAMUSCTX)

<b>EXIT_RFFOEXIT_104</b> - Modification of addenda records (DTAUMSADD)

<b>EXIT_RFFOEXIT_105</b> - Modification of batch control records (DTAMUSBC)

I'm not sure if my use of 101 / ZXFORU24 is the best place for my code, as it only seems to have access to the new row of the  REGUT table when RFFOUS_T is processed for the 2nd time.

Is there a better exit to put the SELECT to REGUT-RENUM into to get the value during the F110 payment run, or is this possible at all in the first pass?

Thanks

Jeremy H.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

I found a way to debug the FIRST pass of RFFOUS_T in a payment run.  I now know that (before REGUT gets populated, toward the end of the program)  the HLP_RENUM and HLP_RESULTAT fields in RFFOUS_T is where the reference number is contained.  HLP_RENUM is filled from a call to FEBKEY and  HLP_RESULTAT is calculated below from HLP_RENUM (basically concatenating it with a check digit) to create the final reference number that REGUT will get updated with.

CALL FUNCTION 'COMPUTE_CONTROL_NUMBER'

     EXPORTING

       i_refno  = hlp_renum

     IMPORTING

       e_result = hlp_resultat.

My problem remains the same, after all of this.  REGUT isn't updated until near the END of the first pass of the payment run F110 in RFFOUS_T.  The customer exits DON'T have access to HLP_RESULTAT because is not passed to the exits.  It can't be SELECTed from anywhere else that I know of.

Could I modify RFFOUS_T / include RFFORIU4  through an enhancement implementation to move HLP_RESULTAT to the ACH batch header field in the subrouting START_NEW_BATCH?  That seems like a way to accomplish it, but looking for advice here.

Please help!

Jeremy H.

5 REPLIES 5

Former Member
0 Kudos

Hi,

I need help determining where to gather the the reference number REGUT-RENUM on the first pass through the payment run (using transaction F110, creating an ACH payment medium.

My customer exit custom logic in EXIT_RFFOEXIT_101 (inlcude ZXFORU24) is getting hit in that first pass of the payment run, but the REGUT table is not populated until after the initial run, so the reference number is blank.

I tried system debugging as well, but I can seem to get the payment run F110 to stop in RFFOUS_T in the debugger in that first pass, so I can't tell which might be more appropriate EXITs for my select of REGUT.

Can anyone help determine if I can select from REGUT anywhere in the first pass of payment run/ACH medium of RFFOUS_T?

It is selected properly in EXIT_RFFOEXIT_101 (include ZXFORU24), if we **re-run** RFFOUS_T manually for the given payment run.

Thanks

Jeremy H.

0 Kudos

Just wanted to add that I've also read thread

 

...and while it is referencing RFFOUS_C, and not T, I assume that same debug process will allow me to debug the first pass, if "Print Immediately", and perhaps even "Create Payment Medium" are not checked/selected.

Former Member
0 Kudos

I found a way to debug the FIRST pass of RFFOUS_T in a payment run.  I now know that (before REGUT gets populated, toward the end of the program)  the HLP_RENUM and HLP_RESULTAT fields in RFFOUS_T is where the reference number is contained.  HLP_RENUM is filled from a call to FEBKEY and  HLP_RESULTAT is calculated below from HLP_RENUM (basically concatenating it with a check digit) to create the final reference number that REGUT will get updated with.

CALL FUNCTION 'COMPUTE_CONTROL_NUMBER'

     EXPORTING

       i_refno  = hlp_renum

     IMPORTING

       e_result = hlp_resultat.

My problem remains the same, after all of this.  REGUT isn't updated until near the END of the first pass of the payment run F110 in RFFOUS_T.  The customer exits DON'T have access to HLP_RESULTAT because is not passed to the exits.  It can't be SELECTed from anywhere else that I know of.

Could I modify RFFOUS_T / include RFFORIU4  through an enhancement implementation to move HLP_RESULTAT to the ACH batch header field in the subrouting START_NEW_BATCH?  That seems like a way to accomplish it, but looking for advice here.

Please help!

Jeremy H.

0 Kudos

Hi Jeremy,

Terrible code... and precisely because it's so terrible, I would not modify one bit of the SAP standard (global) data in there. Yes, I would use implicit enhancement(s) to either:

- simply add a Get_xxxxxx subroutine in RFFOUS_T, which could then be performed from user exit (provided all the data you need is available globally in RFFOUS_T); or


- create a singleton class (global, with simple set/get methods as well as a destroy_instance method) and call the setters at end of RFFOUS_T subroutines, when the data becomes available, and getters in user exit, followed by destroy_instance in user exit, when you have gotten the data.


cheers

Jānis



0 Kudos

Thanks very much for confirming all of my ramblings as I discovered how this process/program works.  I placed an enhancement in one of the implicit enhancement points in RFFOUS_T, and that worked well.  It has solved the problem.

Thanks!

Jeremy H.