Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
Showing results for 
Search instead for 
Did you mean: 

Add New Or Custom Fields To Transaction COOIS Output



Foreword about the requirement:

The requirement is to add new fields or custom fields or new columns to the transaction COOIS ALV output. Hence, I have prepared a document to help resources who are looking for a step by step guidance on this. All the steps to implement the proposed solution are captured in the document; references have been taken from the notes mentioned below and the requirement is fulfilled. However, any such implementation should be thoroughly tested before moving to next systems, as it can help identify side-affects, which cannot be predicted before/after the implementation. Hence such side-affects may be identified in testing, further helping to better the solution as per your own requirements and needs.


You need to enhance / add / display additional fields or columns in the ALV OUTPUT of order information system which are not provided in the standard system in COOIS ALV output.

References / Related OSS Notes:

For preparing this document, references have been taken from the below notes.

Note #



COOIS: BADI order delay in IOHEADER


COOIS: Order delay Business Add-In in IOHEADER


Filling and displaying own fields in information system


COOIS/CO26/CO28: Change list of fields that can be displayed


This requirement can be achieved by implementing the BADI WORKORDER_INFOSYSTEM – Method – TABLES_MODIFY_LAY.

Detailed procedure for implementation:

Following is the step by step procedure for adding new fields for the COOIS transaction output:

1. Create a DDIC structure in SE11 with the name (any name) : ZCOOIS_QALS_DATA

2. Add the required fields in the structure (this structure will later be added as an append structure in IOHEADER_DELAY ). These fields are the new fields or new columns that will be displayed on the COOIS ALV output.

SAVE the structure. Input the name of a package, Transport Request number and ACTIVATE the structure.

3. Go to SE11, display the structure IOHEADER_DELAY:

Below is the screen print of the structure IOHEADER_DELAY before adding the fields (or before performing an append structure):

Click on Append Structure button

In the pop up, input the name of the structure that we created in step 1 & step 2 so that this structure can be appended to IOHEADER_DELAY.

4. Below is the screen print of the structure IOHEADER_DELAY after appending structure ZCCCIS_QALS_DATA which has the required fields:

Activate and close SE11.

5. Use transaction SE38 to execute the report RCNCT000.

Input “IOHEADER” in the field string name and “RCNHEAD” in the include name as shown below and click on Execute -

In the following pop up, click on the CONTINUE button:

6. In the following screen, click on the GENERATE Button:   

Following is the information message that shows up after “generating”:

7. Use transaction SE38 to execute the report RCOTX000 and enter IOHEADER as the field string name (afterwards, choose F8).

Input the name of the structure “IOHEADER” in the field string name Choose F8 to execute the report.

Below is the screen print of the report RCOTX000 output. You will be able to identify your fields in the below screen (fields per this requirement are not shown below though)

Click “SAVE” and you will be taken to back to the selection screen. You can now close the transaction SE38.

8. Go to transaction SE19 to create the implementation for the BADI WORKORDER_INFOSYSTEM. This is the appropriate BADI for the requirement to add new/customer fields to the COOIS output.

Input a name for the implementing WORKORDER_INFOSYSTEM. In this case, I created an implementation as ZENH_ADD_QALS_FIELDS.

Click Continue. On the following screen, input the implementation short text and click SAVE.

  • Input the name of the package and Transport Request.
  • ACTIVATE the implementation so that it gets called in the run time. This can also be done once the business logic is implemented / written. You can either activate now or even after writing your logic. How ever, if you activate before writing your logic, the implementation would trigger but there would be no logic in any method to execute )

9. Click on the interface tab. In the list of methods, the logic for the current requirement is to be implemented in the method TABLES_MODIFY_LAY.

10. Double click on the method name TABLES_MODIFY_LAY to go ahead and implement the business logic to populate data into the required fields.

11. For the current requirement, the logic is written to add data into the method interface parameter CT_IOHEADER. This internal table contains data that would be displayed as the output. Hence we implement our logic in this method.

The logic for the current requirement is as follows:

Also, below is the code for your help.

METHOD if_ex_workorder_infosystem~tables_modify_lay.

**-- Types Declarations

TYPES: BEGIN OF ty_qals,
TYPE qals-prueflos,
TYPE qals-aufnr,
TYPE qals-stat34,
TYPE qals-stat35,
TYPE qals-lmengezub,
TYPE qave-vcode,
END OF ty_qals,

BEGIN OF ty_qave,
TYPE qals-prueflos,
TYPE qals-aufnr,
TYPE qave-vcode,
END OF ty_qave.

**-- Internal table Declarations

**-- Work Area Declarations
TYPE ty_qals,
TYPE ty_qave.

**-- Field Symbol for the Importing parameter CT_IOHEADER
FIELD-SYMBOLS: <fs_ct_ioheader> TYPE ioheader.

IF ct_ioheader IS NOT INITIAL.
SELECT prueflos aufnr stat35 stat35 lmengezub
INTO TABLE lt_qals
FROM qals
FOR ALL ENTRIES IN ct_ioheader
WHERE aufnr = ct_ioheader-aufnr.
IF sy-subrc = 0.

SELECT qave~prueflos qals~aufnr qave~vcode
INTO TABLE lt_qave
FROM qave
JOIN qals AS qals
ON qals~prueflos = qave~prueflos
FOR ALL ENTRIES IN ct_ioheader
WHERE aufnr = ct_ioheader-aufnr.
IF sy-subrc = 0.

LOOP AT ct_ioheader ASSIGNING <fs_ct_ioheader>.

CLEAR: ls_qals.
READ TABLE lt_qals INTO ls_qals WITH KEY aufnr = <fs_ct_ioheader>-aufnr.
IF sy-subrc = 0.
-prueflos    = ls_qals-prueflos.
-zzstat34    = ls_qals-zzstat34.
-zzstat35    = ls_qals-zzstat35.
-zzlmengezub  = ls_qals-zzlmengezub.

CLEAR: ls_qave.
READ TABLE lt_qave INTO ls_qave WITH KEY prueflos = ls_qals-prueflos
= <fs_ct_ioheader>-aufnr.

IF sy-subrc = 0.
-zzvcode      = ls_qave-vcode.



After writing the logic, SAVE and ACTIVATE the method and the BADI implementation. Also, for your requirements, please debug and check if you are able to populate data as needed into the relevant fields.

12. Now, go to transaction COOIS, key in the input parameters as required(or as per your test case) and click EXECUTE.

Following are the new fields or columns that we have added to the COOIS ALV OUTPUT. Please note that, displaying the below fields or columns may also need a change in the layout settings to display the below columns. Hence, please make sure that these columns exist in the ALV output by changing the layout settings.

You have now completed the procedure to enhance / add new or custom fields to the transaction COOIS using the BADI WORKORDER_INFOSYSTEM.

Finally, I request you to share your opinions on the document so that it can be enhanced for helping our resources who are interested or who have a requirement to implement this solution.

Thank you so much for reading and I am happy to have helped, Great Day Ahead !!

My Best Regards,

Naga Chaitanya Challa

Labels in this area