CLASS zcl_amdp_gzn_ps DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: if_amdp_marker_hdb, if_oo_adt_classrun. TYPES: BEGIN OF ty_result, code TYPE char1, END OF ty_result, ty_result_tab TYPE STANDARD TABLE OF ty_result. METHODS: chk_inst_3k IMPORTING VALUE(iv_pid) TYPE z9pieces VALUE(iv_plant) TYPE werks_d EXPORTING VALUE(ev_result) TYPE char1. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_amdp_gzn_ps IMPLEMENTATION. METHOD if_oo_adt_classrun~main. DATA: lv_pid TYPE z9pieces VALUE 'G220530010100000006', lv_plant TYPE werks_d VALUE '7301', lv_result TYPE char1. TRY. me->chk_inst_3k( EXPORTING iv_pid = lv_pid iv_plant = lv_plant IMPORTING ev_result = lv_result ). out->write( lv_result ). CATCH cx_amdp_execution_error INTO DATA(lx_amdp). out->write( lx_amdp->get_longtext( ) ). ENDTRY. ENDMETHOD. METHOD chk_inst_3k BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING zppt9904 zppt9901. DECLARE v_badnum integer; DECLARE v_modlnr VARCHAR(12); DECLARE v_ksunit VARCHAR(3); D2K = SELECT * FROM ZPPT9904 AS PT WHERE PT.MANDT = SESSION_CONTEXT( 'CLIENT' ) AND PT.WERKS = :IV_PLANT AND PT.VORNR = '2000' AND PT.PIECID = :IV_PID; IF IS_EMPTY( :D2K ) then ev_result = '4'; RETURN; ELSE v_badnum = :D2K.BADNUM[1]; IF v_badnum > 0 then ev_result = '6'; return; else v_modlnr = :D2K.MODLNR[1]; end if; end if; MODC = SELECT KSUNIT FROM ZPPT9901 AS KS WHERE KS.WERKS = :IV_PLANT AND KS.MODLNR = :v_modlnr; if IS_EMPTY ( :MODC ) then ev_result = '3'; RETURN; else v_ksunit = :MODC.KSUNIT[1]; if v_ksunit <> 'PCS' THEN ev_result = '2'; RETURN; end if; end if; D3K = SELECT * FROM ZPPT9904 AS PT WHERE PT.MANDT = SESSION_CONTEXT( 'CLIENT' ) AND PT.WERKS = :IV_PLANT AND PT.VORNR = '3000' AND PT.PIECID = :IV_PID; if IS_EMPTY ( :D3K ) then ev_result = '1'; else ev_result = '5'; end if; ENDMETHOD. ENDCLASS.
Aug11
本篇文章已有0条评论