Campos configurables para COOIS
Add New Or Custom Fields To Transaction COOIS Output
USING BADI WORKORDER_INFOSYSTEM
METHOD – TABLES_MODIFY_LAY
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.
Symptom:
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 # Description
615206 COOIS: BADI order delay in IOHEADER
806375 COOIS: Order delay Business Add-In in IOHEADER
434123 Filling and displaying own fields in information system
363327 COOIS/CO26/CO28: Change list of fields that can be
displayed
How:
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,
prueflos TYPE qals-prueflos,
aufnr TYPE qals-aufnr,
zzstat34 TYPE qals-stat34,
zzstat35 TYPE qals-stat35,
zzlmengezub TYPE qals-lmengezub,
zzvcode TYPE qave-vcode,
END OF ty_qals,
BEGIN OF ty_qave,
prueflos TYPE qals-prueflos,
aufnr TYPE qals-aufnr,
vcode TYPE qave-vcode,
END OF ty_qave.
**-- Internal table Declarations
DATA: lt_qals TYPE STANDARD TABLE OF ty_qals,
lt_qave TYPE STANDARD TABLE OF ty_qave,
**-- Work Area Declarations
ls_qals TYPE ty_qals,
ls_qave 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
INNER JOIN qals AS qals
ON qals~prueflos = qave~prueflos
FOR ALL ENTRIES IN ct_ioheader
WHERE aufnr = ct_ioheader-aufnr.
IF sy-subrc = 0.
ENDIF.
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.
<fs_ct_ioheader>-prueflos = ls_qals-prueflos.
<fs_ct_ioheader>-zzstat34 = ls_qals-zzstat34.
<fs_ct_ioheader>-zzstat35 = ls_qals-zzstat35.
<fs_ct_ioheader>-zzlmengezub = ls_qals-zzlmengezub.
CLEAR: ls_qave.
READ TABLE lt_qave INTO ls_qave WITH KEY prueflos = ls_qals-prueflos
aufnr = <fs_ct_ioheader>-aufnr.
IF sy-subrc = 0.
<fs_ct_ioheader>-zzvcode = ls_qave-vcode.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDMETHOD.
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
SAP Managed Tags:
MAN Production Planning (PP)
(add)
badi
coois
custom
fields
new
tables modify lay
workorder infosystem
9 Comments
10-07-2015 1:14 PM
0 Kudos
Hello Chaitanya,
Thanx for sharing such a informative document.
I have a same requirement in which i have to pass Posting date of order confirmation
(CO11N/COHV) through the selection screen of COOIS.
How can we get that field in selection screen of COOIS ??
Regards,
Amit
former_member229034
Member
10-07-2015 2:20 PM
0 Kudos
Hi Amit,
Could you please elaborate on the requirement.
As per what I understand from the above:
You need to pass the Posting date of the order confirmation to COOIS selection screen and the
output data should get fetched accordingly.
Is the above correct ? If yes:
1. May I know if you have looked into the date fields that are provided at the bottom of the screen.
- Could you check if there are any other parameters on the existing selection screen, that can work as an alternate
parameters/fields that can be used to fetch the same intended data ?
2. Is posting date the only factor you think, that the data is not relevant to ?
3. Are you not able to pass the posting date on the existing selection screen ?
Then you will need to implement a BADI or an implicit enhancement that triggers/works even
before the data is fetched. Hence you would need to look for a BADI or enhancement for this.
Else, implement the BADI WORKORDER_INFOSYSTEM & put a break point in the
method TABLES_MODIFY_LAY (or the other methods as well, not sure if they trigger though) and run COOIS.
See if the data in the interface parameters can be handled in the method to solve your requirement.
- If
you think that all the detail you wanted is in the internal table CT_IOHEADER (and shows
on the output), but only that it is not based on the posting date, then try filtering that data in the
aforesaid method TABLES_MODIFY_LAY.
Also, please go through the SAP notes mentioed above and below link and see if these can hep.
COOIS Enhancement | SCN
http://scn.sap.com/thread/1793842
http://wiki.scn.sap.com/wiki/display/ERP6/COOIS+-+Adding+Profile+Parameter+to+Screen
https://scn.sap.com/thread/2092904
http://b2tio00e.benxbrain.com/en/sap/transaction/COISN-COOIS-modifiy-the-screen-select-
thread-1-1671...
Please reply back with any further questions.
Best Regards,
Naga Chaitanya
former_member229034
Member
10-07-2015 2:35 PM
0 Kudos
Dear Amit,
Here are couple of other links that might help your requirement.
COOIS: Additional Selection Screen
Requirement Date on seelction screen of COOIS not working for Lists-Compone
Do let me know if these help.
Añadir el nuevo campo en la
estructura.
Para saber dónde se debe ampliar la programación lo primero
que debemos detectar es dónde queremos ampliar dicha
información.
Estas estructuras las tenemos representadas en SAP en estos
objetos.
Lista Descripción Estructura
PPIOD000 Documentos de material IOMAMO
PPIOE000 Punto de evento IOOPMST
PPIOF000 Medios auxiliares de fabricación IOOPPRT
PPIOG000 Movimientos de mercancía automático IOGOMO
PPIOH000 Cabecera de órdenes de producción IOHEADER
PPIOI000 Posiciones IOITEM
PPIOK000 Capacidades IOOPCAP
PPIOM000 Componentes IOOPCOMP
PPIOO000 Operaciones IOOPER
PPIOP000 Listas de producción IOPRODLIST
PPIOQ000 Solicitudes de pedido IOOPPREQ
PPIOR000 Notificaciones IOCONF
PPIOW000 Movimientos de mercancías con error IOGMER
PPIOT000 Pedidos IOOPPORD
Cuando se haya decidido en que estructura debemos ampliar
la nueva información; escogeremos la estructura en la
transacción SE11.
Escogemos el componente CI_IO que hayamos decidido en el
apartado anterior.
Añadimos los campos que necesitamos mostrar en la lista de
la transacción COOIS.
Activamos las estructuras con los nuevos campos añadidos.
Implementación de BADI
Creamos
la implementación de la BADI – WORKORDER_INFOSYSTEM
Seleccionamos el método TABLES_MODIFY_LAY para
programar la implementación dentro de este nivel.
Una vez dentro del método podremos añadir la programación
necesaria para seleccionar la información necesaria.
Activamos la Badi y ya estamos en disposición de ver nuestro
nuevo campo en la transacción COOIS dentro de la lista que
habíamos seleccionado.
Esperamos que este artículo te haya servido para saber cómo
se pueden añadir nuevos campos a la transacción estándar de
SAP. Puedes dejarnos tus preguntas en la zona de comentarios
o ponerte en contacto con nuestro departamento de SAP
Logística.
te paso la logica para :
1. corregir la columna de version de produccion en la lista de Notificaciones para la
transaccion COOIS
2. Agregar coluna nueva llamada Timepo Ciclo en lista de Notificaciones para la
transaccion COOIS
Para el punto
3. 1.- corregir la columna de version de produccion en la lista de Notificaciones para la
transaccion COOIS
se hace lo siguiente:
Ingresar a tabla AFPO con PWERK= centro planificador 1411,1412 y extraer
para todas las ordenes el campo VERID = Version de produccion, MATNR= Material y
AUFNR= Orden Produccion
Para la columna de Version de produccion, el campo VERID = Version de produccion es
el valor que debe de tomarse en cuenta para toda las ordenes y visualizar en el reporte.
Para el punto
2.- Agregar coluna nueva llamada Timepo Ciclo en lista de Notificaciones para la
transaccion COOIS
se hace lo siguiente:
Con la informacion obtenida del punto 1 arriba indicado, ir a la tabla MKAL con
MATNR y VERID y extraer los campos PLNNR= Gpo Hoja de Ruta y PLNAL =
Contador gpo hoja de ruta
Con esta informacon ir a PLAS con los valores obtenidos anteriormente e ingresar PLAS-
PLNNR y PLAS-PLNAL y extraer PLNKN = Nodo
Con esta informacion ir a PLPO con los valores obtenidos anteriormente e ingresar
PLPO-PLNNR y PLPO-PLNKN y extraer el valor mayor que cero del campo VGW01=
tiempo ciclo y este es el valor que debe de tomarse en cuenta para toda las ordenes y
visualizar en el reporte.
Necesitamos de tu parte:
Confirmar si los indicadores del reporte existen en S/4. (para confirmar que es viable el desarrollo
del reporte).
Estimación del esfuerzo (tiempo) del análisis para la ubicación y/o cualquier esfuerzo para que
estén disponibles los indicadores para generar una CDSView (que es como SAC consume
información de S/4).
Configurar control de verificación al liberar orden