Posts By Brandi Setzler

Display Custom Fields In The Header Area of FB60 and FV60

Some SAP clients need extra information added in to a standard SAP process. Here we’ll explore how to add custom fields in the header areas of t-codes FB60 and FV60. FB60 is for posting vendor invoices and FV60 is for parking vendor invoices. In this sample, we’ll be adding in two custom fields. From research, I found that BAdi BADI_FDCB_SUBBAS01 would work for the initial requirement. I decided to use BADI_FDCB_SUBBAS04 since some of the 01,02s are used by SAP. Go to t-code SE19 to create a BAdi implementation. It’s a classic BAdi rather than a new BAdi. Choose a name and click change. It will ask you to create it and give it the name of the BAdi, which we’d put BADI_FDCB_SUBBAS04. We get a screen that tells us the two methods that the BAdi has and the name of the implementing class. The methods should be double clicked and each filled in as follows: method IF_EX_BADI_FDCB_SUBBAS04~PUT_DATA_TO_SCREEN_OBJECT. * fill interface attributes from importing paramters me->if_ex_badi_fdcb_subbas04~invfo = im_invfo. endmethod. method IF_EX_BADI_FDCB_SUBBAS04~GET_DATA_FROM_SCREEN_OBJECT. * fill export parameters from interface attributes ex_invfo = me->if_ex_badi_fdcb_subbas04~invfo. endmethod. On the subscreens tab, we define a program and screen call based on screen 10 since it’s for Vendor Basic Data and we’re adding to vendor screens. We then must activate the BAdi implementation so that in the Runtime Behavior section, it says Implementation is called. Note: at this point, it will not work. You need to add your new fields to BKPF, VBKPF, and BSEG via append structures. For BKPF, you open the table in SE11. You then click the Append Structure… button at the top and the appends for BKPF will show up. You then click the piece of paper at the top to create. It will ask you to name your append structure. You fill out the short description, the z fields, give it an enhancement category, and activate. If everything works fine, it will say active. Do this for all three tables. At this point, it will still not be working. We still have to create our program and screen. Create a program via SE80 and create a custom screen for it. Create the screen however specified and then fill in the flow logic. Note: In PAI, you must put each field that you define after FIELD: You may wonder how INVFO has these fields, and that’s because it’s also enhanced when you add the append structure to BSEG. On the main program, you’ll fill out all the modules and create some data definitons: REPORT zf_vendor_invoice. ************************************************************************ * T A B L E S * ************************************************************************ TABLES invfo. ************************************************************************ * D A T A D E F I N I T I O N * ************************************************************************ DATA: o_bad TYPE REF TO if_ex_badi_fdcb_subbas04. *name of the badi reference *----------------------------------------------------------------------* ***INCLUDE LZF_VENDOR_INVOICEO01 . *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Module STATUS_9200 OUTPUT *&---------------------------------------------------------------------* * Create a subscreen object and get data from the screen *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. CALL METHOD cl_exithandler=>get_instance_for_subscreens CHANGING instance = o_bad EXCEPTIONS no_reference = 1 no_interface_reference = 2 no_exit_interface = 3 data_incons_in_exit_managem = 4 class_not_implement_interface = 5 OTHERS = 6. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * object created ? CHECK NOT o_bad IS INITIAL. * get data from main screen CALL METHOD o_bad->get_data_from_screen_object IMPORTING ex_invfo = invfo. ENDMODULE. " STATUS_9200 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9200 INPUT *&---------------------------------------------------------------------* * Put data into the screen *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. CHECK NOT o_bad IS INITIAL. * put data to main screen CALL METHOD o_bad->put_data_to_screen_object EXPORTING im_invfo = invfo. ENDMODULE. "user_command_9200 INPUT *&---------------------------------------------------------------------* *& Module RECEIVE_ACTUAL_DATA INPUT *&---------------------------------------------------------------------* * Get data from screen *----------------------------------------------------------------------* MODULE receive_actual_data INPUT. * object created ? CHECK NOT o_bad IS INITIAL. * get data from main screen CALL METHOD o_bad->get_data_from_screen_object IMPORTING ex_invfo = invfo. ENDMODULE. " RECEIVE_ACTUAL_DATA INPUT *&---------------------------------------------------------------------* *& Module CHECK_TCODE INPUT *&---------------------------------------------------------------------* * check the t-code – We want it to show up for FB60 and FV60, but * hide it for any other screen that hits this enhancement *----------------------------------------------------------------------* MODULE check_tcode OUTPUT. IF sy-tcode <> 'FB60' AND sy-tcode <> 'FV60' AND sy-tcode <> 'FB03'. LOOP AT SCREEN. IF screen-name = 'INVFO-ZZE_DAT' OR screen-name = 'INVFO-ZZE_LOC' OR screen-name = 'DATE' OR screen-name = 'LOCATION'. screen-active = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. ENDMODULE. " CHECK_TCODE INPUT   Once this is activated, you will see the screen fields(Event Date and Event Location): You can also look at any document created and see those fields held in BKPF or VBKPF. Adding custom fields to many SAP screens follow the same procedure. Knowing how to do this will help you add value to your customer and provide them the ability to have some custom information added in to a standard process.


In this blog we are going to take a look at SAP AIE. AIE consists of multiple local instances of the component SAP Aii. This component is then connected to a component called SAP OER to collect data centrally from across a company’s enterprise and business partners. It can be used to query, manage, and monitor a company’s processes centrally. Aii stands for Auto ID Infrastructure and OER stands for Object Event Repository and is used for serialization. Serialization can be defined as the process by which each product in the supply chain would be assigned a unique number. Serialization would enable one to identify the manufacturer, the kind of product, the integrity of the product, etc. from the unique number assigned to a product in a global supply chain scenario. There are many benefits by serializing your product: Your organization would able to take account of all the products that are being manufactured from your facility. One can easily manhandle the operations associated with it. It can help you to maintain your brand in the market. Drug counterfeiting and diversions are huge patient safety issues driving serialization globally. Organizations around the world have felt the need of serializing the product as a means to prevent counterfeiting and drug trafficking from happening in complex supply chain scenarios. RSI helped develop a serialization solution for a retail grocer that allowed them to trace their food, ensuring food safety. SAP OER is an EPCIS repository fully new and compliant with GS1/EPC global EPCIS Standards. It allows an EPCIS capturing application to insert EPCIS events in the repository to query SAP OER. Reports for business intelligence can then be produced. SAP OER also manages serial numbers and can distribute a unique serial number range to other applications. SAP OER is meant to be instantiated at the corporate level. On its side, SAP Aii is an EPCIS Events Capturing Application. It allows to management of low level material like printers, RFID devices, or hand held scanners in order to interpret the input of low level devices and converts it to EPCIS events. It also manages serial numbers, requests of serial number ranges to SAP OER, and can distribute a range to other applications. SAP Aii is meant to be the edge interface at the plant level. Many companies are implementing this system for their product traceability and serialization needs, especially since there are regulations for GS1 compliance. It has many aspects that can be beneficial to businesses; it’s also very customizable and works well with many lower level systems that plants have which make it a great solution.

Sign up for our blog updates!