Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * Funciton declaration
- FORM behandel_data USING wa TYPE zud_2_pcs
- CHANGING mysubrc LIKE sy-subrc.
- * Variable declarations
- DATA: ls_qals TYPE qals.
- DATA: l_matnr TYPE matnr,
- l_charg TYPE charg_d,
- l_prueflos TYPE qplos,
- l_reason TYPE p25_prtxt,
- l_wkvst TYPE zkvalstat,
- l_subrc LIKE sy-subrc.
- DATA: l_item_read_wa TYPE rcoopc_itemalias_read,
- l_item_read_tab TYPE rcoopc_itemalias_read_tab,
- l_item_write_wa TYPE rcoopc_itemalias_write,
- l_item_write_tab TYPE rcoopc_itemalias_write_tab.
- DATA: l_msg TYPE bal_s_msg.
- * Pointer variables
- FIELD-SYMBOLS: <value> TYPE ANY,
- <read_wa> TYPE rcoopc_itemalias_read,
- <write_wa> TYPE rcoopc_itemalias_write.
- mysubrc = 0.
- * mysubrc = 0: Alt er gået godt og vi har skrevet kontrolparti og
- * kvalitetsstatus til de rigtige OPC-items.
- * mysubrc = 9: Batch eller materiale var ikke på tanken.
- * mysubrc = 1: Fejl ved læsning of skrivning til OPC-items
- * og 2
- * mysubrc = 3: Batch eller materiale var ikke på tanken men vi er ikke
- * nået til timeout endnu,
- * eller vi kunne ikke læse kontrolparti på tanken efter
- * at den var skrevet
- CLEAR z002.
- IF wa-reason IS NOT INITIAL.
- IF wa-werks <> p_plant.
- IF wa-erdat > g_erdat OR
- ( wa-erdat = g_erdat AND
- wa-erzeit > g_erzeit ).
- mysubrc = 3.
- ELSE.
- mysubrc = 9.
- ENDIF.
- EXIT.
- ENDIF.
- SELECT SINGLE *
- FROM z002
- WHERE plant = p_plant AND
- zlagertank = wa-zzaofelt1.
- IF sy-subrc <> 0.
- mysubrc = 9.
- EXIT.
- ENDIF.
- ELSE.
- SELECT SINGLE *
- FROM z002
- WHERE plant = p_plant AND
- zlagertank = wa-zzaofelt1 AND
- ( ( zlagertank IN s_tank1 AND ztnkgrp IN s_grp1 ) OR
- ( zlagertank IN s_tank2 AND ztnkgrp IN s_grp2 ) ).
- IF sy-subrc <> 0.
- mysubrc = 9.
- EXIT.
- ENDIF.
- SELECT SINGLE *
- INTO ls_qals
- FROM qals
- WHERE prueflos = wa-prueflos AND
- werk = p_plant.
- IF sy-subrc <> 0.
- IF wa-erdat > g_erdat OR
- ( wa-erdat = g_erdat AND
- wa-erzeit > g_erzeit ).
- mysubrc = 3.
- ELSE.
- mysubrc = 9.
- ENDIF.
- EXIT.
- ENDIF.
- ENDIF.
- IF z002-zkvalstat_ia IS INITIAL.
- mysubrc = 9.
- EXIT.
- ENDIF.
- REFRESH l_item_read_tab.
- * Insert for reading matnr
- CLEAR l_item_read_wa.
- MOVE: z002-plant TO l_item_read_wa-plant,
- z002-zmatnr_ia TO l_item_read_wa-itemalias,
- ctopc_valtype_char TO l_item_read_wa-value_type.
- CREATE DATA l_item_read_wa-value TYPE string.
- APPEND l_item_read_wa TO l_item_read_tab.
- * Insert for reading charg
- IF NOT z002-zbatch_ia IS INITIAL.
- CLEAR l_item_read_wa.
- MOVE: z002-plant TO l_item_read_wa-plant,
- z002-zbatch_ia TO l_item_read_wa-itemalias,
- ctopc_valtype_char TO l_item_read_wa-value_type.
- CREATE DATA l_item_read_wa-value TYPE string.
- APPEND l_item_read_wa TO l_item_read_tab.
- ENDIF.
- * Insert for reading inspection lot
- IF NOT z002-zprueflos_ia IS INITIAL.
- CLEAR l_item_read_wa.
- MOVE: z002-plant TO l_item_read_wa-plant,
- z002-zprueflos_ia TO l_item_read_wa-itemalias,
- ctopc_valtype_char TO l_item_read_wa-value_type.
- CREATE DATA l_item_read_wa-value TYPE f.
- APPEND l_item_read_wa TO l_item_read_tab.
- ENDIF.
- IF NOT z002-zreason_ia IS INITIAL.
- CLEAR l_item_read_wa.
- MOVE: z002-plant TO l_item_read_wa-plant,
- z002-zreason_ia TO l_item_read_wa-itemalias,
- ctopc_valtype_char TO l_item_read_wa-value_type.
- CREATE DATA l_item_read_wa-value TYPE string.
- APPEND l_item_read_wa TO l_item_read_tab.
- ENDIF.
- * Read via OPC
- CALL METHOD cl_opc_item=>read_value_multi
- CHANGING
- items = l_item_read_tab.
- * Find matnr
- READ TABLE l_item_read_tab ASSIGNING <read_wa>
- WITH KEY plant = z002-plant
- itemalias = z002-zmatnr_ia.
- IF sy-subrc = 0.
- IF <read_wa>-msgty = 'S'.
- ASSIGN <read_wa>-value->* TO <value>.
- l_matnr = <value>.
- ELSE.
- CLEAR l_msg.
- MOVE-CORRESPONDING <read_wa> TO l_msg.
- IF <read_wa>-msgty = 'W'.
- MOVE probclass_low TO l_msg-probclass.
- ELSE.
- MOVE probclass_high TO l_msg-probclass.
- ENDIF.
- PERFORM log_msg_add_t USING l_msg
- wa-zzaofelt1.
- ENDIF.
- ENDIF.
- * Find charg
- READ TABLE l_item_read_tab ASSIGNING <read_wa>
- WITH KEY plant = z002-plant
- itemalias = z002-zbatch_ia.
- IF sy-subrc = 0.
- IF <read_wa>-msgty = 'S'.
- ASSIGN <read_wa>-value->* TO <value>.
- l_charg = <value>.
- ELSE.
- CLEAR l_msg.
- MOVE-CORRESPONDING <read_wa> TO l_msg.
- IF <read_wa>-msgty = 'W'.
- MOVE probclass_low TO l_msg-probclass.
- ELSE.
- MOVE probclass_high TO l_msg-probclass.
- ENDIF.
- PERFORM log_msg_add_t USING l_msg
- wa-zzaofelt1.
- ENDIF.
- ENDIF.
- * Find inspection lot
- READ TABLE l_item_read_tab ASSIGNING <read_wa>
- WITH KEY plant = z002-plant
- itemalias = z002-zprueflos_ia.
- IF sy-subrc = 0.
- IF <read_wa>-msgty = 'S'.
- ASSIGN <read_wa>-value->* TO <value>.
- l_prueflos = <value>.
- ELSE.
- CLEAR l_msg.
- MOVE-CORRESPONDING <read_wa> TO l_msg.
- IF <read_wa>-msgty = 'W'.
- MOVE probclass_low TO l_msg-probclass.
- ELSE.
- MOVE probclass_high TO l_msg-probclass.
- ENDIF.
- PERFORM log_msg_add_t USING l_msg
- wa-zzaofelt1.
- ENDIF.
- ENDIF.
- * Find reason
- READ TABLE l_item_read_tab ASSIGNING <read_wa>
- WITH KEY plant = z002-plant
- itemalias = z002-zreason_ia.
- IF sy-subrc = 0.
- IF <read_wa>-msgty = 'S'.
- ASSIGN <read_wa>-value->* TO <value>.
- l_reason = <value>.
- ELSE.
- CLEAR l_msg.
- MOVE-CORRESPONDING <read_wa> TO l_msg.
- IF <read_wa>-msgty = 'W'.
- MOVE probclass_low TO l_msg-probclass.
- ELSE.
- MOVE probclass_high TO l_msg-probclass.
- ENDIF.
- PERFORM log_msg_add_t USING l_msg
- wa-zzaofelt1.
- ENDIF.
- ENDIF.
- IF l_matnr = wa-matnr AND
- l_charg = wa-charg AND
- l_reason IS NOT INITIAL AND wa-reason IS INITIAL.
- PERFORM message_reason_exists USING wa.
- mysubrc = 9.
- EXIT.
- ELSEIF l_matnr = wa-matnr AND
- l_charg = wa-charg.
- * .. OK .. we continue and try to write UD and inspection lot
- ELSE.
- IF wa-reason IS NOT INITIAL.
- mysubrc = 9.
- EXIT.
- ENDIF.
- IF wa-erdat > g_erdat OR
- ( wa-erdat = g_erdat AND
- wa-erzeit > g_erzeit ).
- mysubrc = 3.
- ELSE.
- mysubrc = 9.
- ENDIF.
- EXIT.
- ENDIF.
- REFRESH l_item_write_tab.
- * Insert for writing UD
- CLEAR l_item_write_wa.
- MOVE: z002-plant TO l_item_write_wa-plant,
- z002-zkvalstat_ia TO l_item_write_wa-itemalias.
- CREATE DATA l_item_write_wa-value TYPE string.
- ASSIGN l_item_write_wa-value->* TO <value>.
- IF wa-vcode IS INITIAL.
- MOVE 0 TO <value>.
- ELSEIF wa-vcode(1) = 'Z'.
- MOVE wa-vcode+1(1) TO <value>.
- ELSE.
- MOVE wa-vcode(1) TO <value>.
- ENDIF.
- APPEND l_item_write_wa TO l_item_write_tab.
- * Insert for writing inspection lot
- IF NOT z002-zprueflos_ia IS INITIAL.
- CLEAR l_item_write_wa.
- MOVE: z002-plant TO l_item_write_wa-plant,
- z002-zprueflos_ia TO l_item_write_wa-itemalias.
- CREATE DATA l_item_write_wa-value TYPE string.
- ASSIGN l_item_write_wa-value->* TO <value>.
- MOVE wa-prueflos TO <value>.
- APPEND l_item_write_wa TO l_item_write_tab.
- ENDIF.
- * Insert for writing reason
- IF NOT z002-zreason_ia IS INITIAL.
- CLEAR l_item_write_wa.
- MOVE: z002-plant TO l_item_write_wa-plant,
- z002-zreason_ia TO l_item_write_wa-itemalias.
- CREATE DATA l_item_write_wa-value TYPE string.
- ASSIGN l_item_write_wa-value->* TO <value>.
- MOVE wa-reason TO <value>.
- APPEND l_item_write_wa TO l_item_write_tab.
- ENDIF.
- * Write via OPC
- CALL METHOD cl_opc_item=>write_value_multi
- CHANGING
- items = l_item_write_tab.
- LOOP AT l_item_write_tab ASSIGNING <write_wa>.
- IF <write_wa>-msgty = 'S'. CONTINUE. ENDIF.
- CLEAR l_msg.
- MOVE-CORRESPONDING <write_wa> TO l_msg.
- IF <write_wa>-msgty = 'W'.
- MOVE probclass_low TO l_msg-probclass.
- ELSE.
- MOVE probclass_high TO l_msg-probclass.
- ENDIF.
- PERFORM log_msg_add_t USING l_msg
- wa-zzaofelt1.
- IF <write_wa>-msgty <> 'W'.
- mysubrc = 3.
- ENDIF.
- ENDLOOP.
- CHECK mysubrc = 0.
- * If the inspection lot is new for the tank
- CHECK wa-prueflos <> l_prueflos.
- PERFORM check_already_writen USING wa
- CHANGING l_subrc.
- CHECK l_subrc = 0.
- PERFORM message_label_print USING wa.
- CALL FUNCTION 'Z_TNK_PRT_LABEL_NEWOIL'
- EXPORTING
- werks = p_plant
- tnk = wa-zzaofelt1
- prueflos = wa-prueflos
- matnr = wa-matnr
- charg = wa-charg.
- ENDFORM.
- * Function end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement