Professional Documents
Culture Documents
Conversion Document 2
Conversion Document 2
Conversion Document 2
TYPE-POOLS: sabc.
INCLUDE ole2incl.
DATA: o_obj TYPE ole2_object.
START-OF-SELECTION.
PERFORM init.
PERFORM open_port USING p_port p_sett.
IF p_mode = 0.
PERFORM read_port
CHANGING input.
ENDIF.
IF p_mode = 1.
PERFORM write_port
USING p_mesg
CHANGING input.
ENDIF.
PERFORM final.
END-OF-SELECTION.
FORM init.
DATA:
wa_repid LIKE sy-repid.
wa_repid = sy-repid.
CALL FUNCTION 'AUTHORITY_CHECK_OLE'
EXPORTING
program = wa_repid
activity = sabc_act_call
application = 'MSCOMMLIB.MSCOMM.1'
EXCEPTIONS
no_authority = 1
activity_unknown = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT o_obj 'MSCOMMLib.MSComm.1'.
IF sy-subrc <> 0.
RAISE no_create_object.
ENDIF.
ENDFORM. " Init
"-------------------------------------------------------------------------------"
FORM open_port USING p_port p_sett.
SET PROPERTY OF o_obj 'CommPort' = p_port. "commport.
SET PROPERTY OF o_obj 'Settings' = p_sett. " settings.
SET PROPERTY OF o_obj 'InputLen' = 0.
SET PROPERTY OF o_obj 'PortOpen' = 1.
ENDFORM. "open_port
"-------------------------------------------------------------------------------"
FORM read_port
CHANGING input.
DATA:
wa_buffer TYPE i.
DO 10 TIMES.
GET PROPERTY OF o_obj 'InBufferCount' = wa_buffer.
IF wa_buffer > 0.
GET PROPERTY OF o_obj 'Input' = input.
EXIT.
ENDIF.
ENDDO.
ENDFORM. " read_port
"-------------------------------------------------------------------------------"
FORM write_port
USING p_mesg
CHANGING input.
DATA:
wa_buffer TYPE i.
DATA : lv_number TYPE C LENGTH 75.
WAIT UP TO 1 SECONDS.
WAIT UP TO 2 SECONDS.
DO 10 TIMES.
GET PROPERTY OF o_obj 'InBufferCount' = wa_buffer.
IF wa_buffer > 0.
GET PROPERTY OF o_obj 'Input' = input.
EXIT.
ENDIF.
ENDDO.
ENDFORM. "write_port
"-------------------------------------------------------------------------------"
FORM final.
SET PROPERTY OF o_obj 'PortOpen' = 0.
FREE OBJECT o_obj.
ENDFORM. " final