定义实现的类CLASS zcl_sc_sale_query DEFINITION PUBLIC FINAL CREATE PUBLIC.PUBLIC SECTION. INTERFACES if_rap_query_provider.PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_sc_sale_query IMPLEMENTATION. METHOD if_rap_query_provider~select. DATA: LS_DATA TYPE ZI_CONSIGN_SALE, LT_DATA TYPE TABLE OF ZI_CONSIGN_SALE. DATA: L_LENUM TYPE char20. DATA: L_ACTION TYPE FLAG, L_CONSIGN_DELETE TYPE FLAG. DATA(LT_REQ_ELEMENTS) IO_REQUEST-GET_REQUESTED_ELEMENTS( ). * BREAK YANGSEN. IF IO_REQUEST-IS_DATA_REQUESTED( ). DATA(LV_TOP) IO_REQUEST-GET_PAGING( )-GET_PAGE_SIZE( ). IF LV_TOP 0. LV_TOP 1. ENDIF. DATA(LV_SKIP) IO_REQUEST-GET_PAGING( )-GET_OFFSET( ). DATA(LT_SORT) IO_REQUEST-GET_SORT_ELEMENTS( ). DATA : LV_ORDERBY TYPE STRING. LOOP AT LT_SORT INTO DATA(LS_SORT). IF LS_SORT-DESCENDING ABAP_TRUE. LV_ORDERBY |{ LV_ORDERBY } { LS_SORT-ELEMENT_NAME } DESCENDING |. ELSE. LV_ORDERBY |{ LV_ORDERBY } { LS_SORT-ELEMENT_NAME } ASCENDING |. ENDIF. ENDLOOP. IF LV_ORDERBY IS INITIAL. LV_ORDERBY LLPOS . ENDIF. DATA(LV_CONDITIONS) IO_REQUEST-GET_FILTER( )-GET_AS_SQL_STRING( ). DATA(LV_SEARCH_STRING) IO_REQUEST-GET_SEARCH_EXPRESSION( ). L_LENUM CL_ABAP_DYN_PRGESCAPE_QUOTES( LV_SEARCH_STRING ).IF L_LENUM. l_LENUM LV_CONDITIONS.从查询 IF STRLEN(LV_CONDITIONS)5. IF LV_CONDITIONS(5)ZZZZZ.SPLIT LV_CONDITIONS AT%INTO DATA(V1)L_LENUM DATA(V2). ENDIF. ENDIF. ENDIF. LV_CONDITIONS.SELECT FROM ZR_RAP100_ATRAV002 FIELDS * WHERE(LV_CONDITIONS)* ORDER BY(LV_ORDERBY)INTO TABLE data(LT_DATA2)UP TO LV_TOP ROWS.OFFSET lv_skip. IF IO_REQUEST-IS_TOTAL_NUMB_OF_REC_REQUESTED( ). IO_RESPONSE-SET_TOTAL_NUMBER_OF_RECORDS( LINES( LT_DATA ) ). ENDIF. IO_RESPONSE-SET_DATA( LT_DATA ). DELETE LT_DATA WHERE NOT BUKRSP_BUKRS. ELSE. IO_RESPONSE-SET_TOTAL_NUMBER_OF_RECORDS(0). ENDIF. ENDMETHOD. ENDCLASS.定义root custom entityEndUserText.label:ZI_CONSIGN_SALEObjectModel.query.implementedBy:ABAP:ZCL_SC_SALE_QUERYSearch.searchable:trueMetadata.allowExtensions:trueUI.lineItem:[{criticality:ZTSC}]//行颜色标记 UI.headerInfo:{typeName:寄售信用,//列表报告中的应用程序标头 title:{value:LENUM, //- Reference to elementinelement list type:#STANDARD}, description:{label:物料编号, value:LENUM// Reference to elementinelement list}}define root custom entity ZI_CONSIGN_SALE{UI.facet:[{// label:,//结果id:HeaderResurt,type:#FIELDGROUP_REFERENCE ,//#FIELDGROUP_REFERENCE,purpose:#HEADER,targetQualifier:HeaderResurt, position:10},{// label:,//单据信息id:HeaderDj,type:#FIELDGROUP_REFERENCE ,//#FIELDGROUP_REFERENCE,purpose:#HEADER,targetQualifier:HeaderDj, position:20}]UI.lineItem:[{type:#FOR_ACTION, dataAction: ZDELETE_ALL, label: 删除, position: 10 },{type:#FOR_ACTION, dataAction: ZCREATE_LYD, label: 创建领用, position:20 }]key zid: abap.char(10);UI.identification:[{position:10, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:10}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:10}]key zidrow:abap.numc(5);ZLYDH:abap.char(10);//生成的领用单号 UI.identification:[{position:20}]//细节时显示在20 UI.lineItem:[{position:20}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:20}]STAT:abap.char(1);//删除标记 LLTYP:abap.char(4);Search.defaultSearchElement:trueUI.identification:[{position:15, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:15}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:15}]LENUM:char20;UI.identification:[{position:30, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:30}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:30}]WERKS:werks_d;UI.identification:[{position:40, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:40}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:40}]GR_TYPE:abap.char(4);UI.identification:[{position:50, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:50}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:50}]GR_DATE:abap.dats;UI.identification:[{position:60, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:60}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:60}]GR_MONTH:abap.numc(2);UI.identification:[{position:70, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:70}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:70}]MATNR:matnr;UI.identification:[{position:80, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:80}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:80}]CHARG:charg_d;ZTSC:int1;//状态颜色 Semantics.quantity.unitOfMeasure:unit_netUI.identification:[{position:90, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:90}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:90}]NET_WEIGHT:abap.dec(15,3);UI.identification:[{position:100, importance:#HIGH } ] //细节时显示在20UI.lineItem:[{position:100}]//列表时显示在第60 UI.fieldGroup:[{qualifier:HeaderDj,position:100}]UNIT_NET:abap.unit(3);}定义行业unmanaged implementationinclass zbp_i_consign_sale unique;//strict(2);//Uncomment this lineinorder toenablestrict mode2. The strict mode has two variants(strict(1), strict(2))and is prerequisite to be future proof regarding syntax and to be able to release your BO. define behaviorforZI_CONSIGN_SALEaliassales //late numbering lock master authorization master(instance)//etag masterfield_name{create(authorization:global);update;delete;field(readonly)zid, zidrow;action(features:instance)ZDELETE_ALL result[1]$self;action(features:instance)ZCREATE result[1]$self;}CLASS lhc_sales DEFINITION INHERITING FROM cl_abap_behavior_handler. PRIVATE SECTION. METHODS get_instance_features FOR INSTANCE FEATURES IMPORTING keys REQUEST requested_features FOR sales RESULT result. METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION IMPORTING keys REQUEST requested_authorizations FOR sales RESULT result. METHODS get_global_authorizations FOR GLOBAL AUTHORIZATION IMPORTING REQUEST requested_authorizations FOR sales RESULT result. METHODS create FOR MODIFY IMPORTING entities FOR CREATE sales. METHODS update FOR MODIFY IMPORTING entities FOR UPDATE sales. METHODS delete FOR MODIFY IMPORTING keys FOR DELETE sales. METHODS read FOR READ IMPORTING keys FOR READ sales RESULT result. METHODS lock FOR LOCK IMPORTING keys FOR LOCK sales. METHODS zcreate FOR MODIFY IMPORTING keys FOR ACTION sales~zcreate RESULT result. METHODS zdelete_all FOR MODIFY IMPORTING keys FOR ACTION sales~zdelete_all RESULT result. ENDCLASS. CLASS lhc_sales IMPLEMENTATION. METHOD get_instance_features. ENDMETHOD. METHOD get_instance_authorizations. ENDMETHOD. METHOD get_global_authorizations. ENDMETHOD. METHOD create. ENDMETHOD. METHOD update. ENDMETHOD. METHOD delete. DATA:LT_DATA TYPE TABLE OF ZR_RAP100_ATRAV002, LS_DATA TYPE ZR_RAP100_ATRAV002, LS_PARAM TYPE ZI_CONSIGN_SALE. LOOP AT KEYS INTO DATA(LS_KEYS) . DELETE FROM ZR_RAP100_ATRAV002 . ENDLOOP. ENDMETHOD. METHOD read. ENDMETHOD. METHOD lock. ENDMETHOD. METHOD zcreate. DATA: L_SUCC TYPE FLAG. LOOP AT KEYS INTO DATA(LS_KEYS) . * APPEND VALUE #( * zid LS_KEYS-zid * zidrow LS_KEYS-zidrow * %MSG NEW ZCL_MESSAGEWRAPPER( * TEXTID ZCL_MSGWRAPPERCREATE * SEVERITY IF_ABAP_BEHV_MESSAGESEVERITY-success ** MESSAGE_VARIABLE 111 * ) * %STATE_AREA state_area * ) * TO REPORTED-ZI_CONSIGN_SALE. * APPEND VALUE #( * LLSQD LS_KEYS-LLSQD * LLPOS LS_KEYS-LLPOS ) * TO MAPPED-ZI_CONSIGN_SALE. * L_SUCC X. ENDLOOP. READ ENTITIES OF ZI_CONSIGN_SALE IN LOCAL MODE ENTITY ZI_CONSIGN_SALE ALL FIELDS WITH CORRESPONDING #( KEYS ) RESULT DATA(LT_DATA). IF L_SUCC X. APPEND VALUE #( %TKY LS_KEYS-%TKY %MSG NEW ZCL_MESSAGEWRAPPER( TEXTID ZCL_MSGWRAPPERCREATE_SUCC SEVERITY IF_ABAP_BEHV_MESSAGESEVERITY-SUCCESS ATTR1 111 ) %STATE_AREA VALIDATE_CUSTOMER ) TO REPORTED-ZI_CONSIGN_SALE. DELETE FROM z301 WHERE id LS_KEYS-zid. ENDIF. ENDMETHOD. METHOD zdelete_all. DATA:LT_DATA TYPE TABLE OF ZR_RAP100_ATRAV002, LS_DATA TYPE ZR_RAP100_ATRAV002, LS_PARAM TYPE ZI_CONSIGN_SALE. LOOP AT KEYS INTO DATA(LS_KEYS) . delete from zzzz where si ls_keys-id CLEAR:LS_DATA. APPEND VALUE #( zid LS_KEYS-zid zidrow LS_KEYS-zidrow %MSG NEW ZCL_MESSAGEWRAPPER( TEXTID ZCL_MSGWRAPPERDELETE SEVERITY IF_ABAP_BEHV_MESSAGESEVERITY-error ATTR1 111 ) %STATE_AREA state_area ) TO REPORTED-ZI_CONSIGN_SALE. APPEND VALUE #( zid LS_KEYS-zid zidrow LS_KEYS-zidrow ) TO FAILED-ZI_CONSIGN_SALE. endloop. ENDMETHOD. ENDCLASS. CLASS lsc_ZI_CONSIGN_SALE DEFINITION INHERITING FROM cl_abap_behavior_saver. PROTECTED SECTION. METHODS finalize REDEFINITION. METHODS check_before_save REDEFINITION. METHODS save REDEFINITION. METHODS cleanup REDEFINITION. METHODS cleanup_finalize REDEFINITION. ENDCLASS. CLASS lsc_ZI_CONSIGN_SALE IMPLEMENTATION. METHOD finalize. ENDMETHOD. METHOD check_before_save. ENDMETHOD. METHOD save. ENDMETHOD. METHOD cleanup. ENDMETHOD. METHOD cleanup_finalize. ENDMETHOD. ENDCLASS.定义服务与绑定