How to create a custom CSV payment method
Our finance department engaged with a local bank to accelerate vendor payments with a p-card program. Once set up on the bank’s website, they would just need a simple comma-separated text file (CSV) with some basic data like our vendor number, the vendor’s invoice number, the payment date, and the amount. This was the minimum requirement; there were several other optional fields, but for this pilot project, just these four were needed. Finance asked us to configure the new payment program and help them get a test file to the bank.
Up to this point, we had been using mainly paper checks. A few vendors were accepting ACH payments, but not many. Both of these payment methods relied on the classic payment programs (RFFOUS_T and RFFOUS_C.) As this would not be printing data to a form, nor would it be outputting a standard file format like ACH, we would have to come up with a custom DME solution.
- Configure a Data Medium Exchange format tree
- Configure a Payment Medium Format that calls the DME format tree
- Configure a variant in the standard program
- Associate the new payment method with some vendors
Create DME format tree
This was by far the easiest thing. Using transaction code DMEE, I created a flat file format. The DME Blog and SAP Help were surprisingly helpful in this (see links below.) Some of the key things to remember were the following:
- Remember your format tree name because your Payment Medium Format has to be named the same thing. This hung me up for the longest time.
- Set your field type to 1 and your segment delimiter to a comma to get a CSV output.
- Don’t forget to set the carriage return and line feed check boxes on the File Data tab. Whereas the comma was your field delimiter, the CR-LF will be your record delimiter.
- A segment is like a row.
- An element is the equivalent to a field. These elements are mapped to specific fields in the various payment structures (FPAYP, FPAYH, etc.)
- A technical node is similar to an element, but it does not get output into the file. In my case, I had to create a technical node for the currency code so SAP would configure my amounts correctly.
- Conversion functions are available for elements to format currencies, dates, and other strings of text in any way you might need. Need to get rid of leading zeroes in a cost center field? There’s a conversion function for that, and there’s even a handy wizard to walk you through getting the correct one in plain English.
Configuring the payment medium format
This was a challenge before I carefully read the DME blog. I cannot overstate how helpful this blog was. Since I was going into this effort without much formal training in configuring the payment program, this no-nonsense, plain-language blog was much more useful to me than SAP’s documentation, which I found cryptic at times. Some of the key lessons I learned were the following:
- Create New Entries rather than copying from an existing format if your format is non-standard. If you are tweaking an existing format, copying makes sense. My first attempt was a disaster because I copied an ACH format and wondered why my output looked like an ACH file.
- Your format name must be the same as your DME format tree name. This caused me no end of pain, too, when the payment program either produced nothing (without errors) or produced error messages that weren’t very helpful. When you name both things the same, everything just falls into place.
- Step through everything in FBZP so you don’t miss anything. Every button; every setting — check and recheck that you configured everything you needed to. If you miss a setting in FBZP, you won’t get the output you want. Trust me.
Configure a variant in the standard program
Once SAP sees that you are trying to pay using the Payment Medium Workbench and DME, it’s going to steer clear of the classic RFFOUS* programs and use SAPFPAYM instead. The variant you create will reference the payment medium format you configured in the previous step, tell the program to use DME to create the output, and specify a default directory and file name. This is just like setting up any other variant in SAP, but you have to take another step after this.
You must go to transaction OBPM4 and associate the variant with your payment medium format. You must or you will bang your head on your desk as much as I did, even though it doesn’t help get you your output file at all. Only configuring OBPM4 does that.
Associate the payment method with vendors and test
Here is where you engage your business users and start testing. Once you start using the new payment method (for instance putting it on the vendor master record,) then when you run F110, the DME magic happens.
I have written here in very general terms about the configuration steps required to configure a custom, non-standard payment method. I have tried to identify the painful lessons I learned trying to do it myself. There are many details and nuances I did not cover, but that the DME blog covers exhaustively. I look forward to your questions and comments below.
- SAP Help
- SAP – DME Blog
- Mark Chelfen‘s gracious assistance on Twitter and in this thread.
We have a requirement to split the CSV ACH file based on number of records, each file can have only 100 records, for next set of records more than 100, we need another file. Do you have a solution for this situation?