很久没摸ECC了,最近看到很多新人在捯饬ALV。。。中国就喜欢量产垃圾。。。培训,上岗。。。没有行业道德。。。

闲话不多说,开始正事:

ALV很常见,在SAP非WEB的项目,没有不用的,它包含了报表和功能的特点,是最容易接受的交互界面。

ALV大体说明:一般一个报表或者一些小功能,会用到‘查询界面’‘数据处理’‘数据展示’‘人机交互’等。这是循序进渐的,也是两两相交的。

ALV程序结构说明:一般的都是有逻辑的顺序:‘数据定义’,‘定义屏幕’,‘数据查询和处理’,‘数据显示’,‘事件处理’等。

根据上面的结构有的人喜欢定义4个INCLUDE(这是参考DIALOG程序的),有的就是一个Report 到底。经常也有些人会讨论哪种怎么怎么样,其实,看开发的习惯,SAP的INCLUDE

和FORM是为了复用和代码结构化,分多个INCLUDE模块化程序,易于查找。而REPORT到底的(一般经验高的人会用),会在开头部分处理好整体的结构,然后每部分的逻辑在FORM里处理,这样的好处是逻辑清晰,易于查找问题。(这段是废话,可以忽略,意见不同可以评论^_^)

下面一个一个来:(逻辑,逻辑,逻辑,没逻辑的人,请转行)

数据定义:越简单的报表,越是需要用最复杂的东西来做。

1.熟悉使用TYPE定义结构,为什么要用TYPE定义结构?呵呵,这个问题不想讨论:如下:

TYPES:BEGIN OF TY_DETAIL,
OBJNR TYPE AUFK-OBJNR, "对象号
MATNR TYPE AFPO-MATNR, "产品编码
KTEXT TYPE AUFK-KTEXT, "产品描述
AUFNR TYPE AUFK-AUFNR, "工单编号
GAMNG TYPE AFKO-GAMNG, "工单产量
MATNX TYPE RESB-MATNR, "BOM物料编码
MAKTX TYPE MAKT-MAKTX, "bom物料描述
VORNR TYPE RESB-VORNR, "工序
LTXA1 TYPE AFVC-LTXA1, "工序短文本
KSTAR TYPE COVP-KSTAR, "成本要素
LTEXT TYPE CSKU-LTEXT, "成本要素
BDMNG TYPE RESB-BDMNG, "BOM计划数量
ENMNG TYPE RESB-ENMNG, "BOM实际数量
END OF TY_DETAIL,

不要觉得这样定义很麻烦又不能复用等等,去SE11建的结构,只有你自己会用,而且还会有相互影响的问题,直接用表(除非字段很少的表)都是浪费系统资源。

很多人都会说优化程序要怎么样怎么样,程序里TYPE定义结构,最小化内表字段 会很大程度上减少系统和电脑本身的负荷。

2.参考结构定义内表

参照上面定义的结构,定义需要的内表。(根据需要用到的内表,先定义结构,然后参考结构定义内表)

DATA:GT_DETAIL TYPE TABLE OF TY_DETAIL,
GT_DETAIX TYPE TABLE OF TY_DETAIL.

我喜欢用一个DATA加上冒号和逗号,把所有的数据定义全部放一起,因为SAP的代码美化是在同一个冒号引出的部分,每个都用DATA定义,代码美化完全没用。

有些人建议多使用局部变量,少用全局变量,这样也是一种减负的方法,但是这样程序里就会多出很多临时的变量,对于后期修改不利。而使用全局变量的,请注意不需要的时候清空变量,运行程序的一个百万数量级的内表和一个空内表,让你使用的时候感觉都会不一样的。

3.定义选择屏幕:

这部分看个人习惯和客户需求,有的会在屏幕上做设计,怎么排版什么的,我就不喜欢这样,就直接几个BOLCK,区分一下搜索方式,然后全部使用SELECT-OPTIONS

需要单值的就 NO INTERVALS NO-EXTENSION加上。因为程序最后解析SELECT的时候会把单值的RANGE转变成一个‘等于’值的查询,这和使用PARAMETERS是一样的。

SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-.
SELECT-OPTIONS:S_BUKRS FOR COVP-BUKRS DEFAULT ''.
SELECT-OPTIONS:S_GJAHR FOR COVP-GJAHR OBLIGATORY NO INTERVALS NO-EXTENSION DEFAULT SY-DATUM+().
SELECT-OPTIONS:S_PERIO FOR COVP-PERIO DEFAULT SY-DATUM+().
SELECT-OPTIONS:S_MATNR FOR COVP-MATNR.
SELECT-OPTIONS:S_AUFNR FOR AUFK-AUFNR.
SELECTION-SCREEN END OF BLOCK BLK01.

4.数据查询和数据处理:

针对特定的表或者表关联做查询。

AT SELECTION-SCREEN.
IF sy-ucomm = 'ONLI'.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_T001
FROM T001 WHERE BUKRS IN s_bukrs
AND KTOPL = ''
AND SPRAS = .
LOOP AT GT_T001 INTO Gs_T001.
AUTHORITY-CHECK OBJECT 'ZFI_BUKRS' ID 'BUKRS' FIELD Gs_T001-BUKRS.
IF SY-SUBRC <> .
MESSAGE '您没有分配公司代码' && Gs_T001-BUKRS && '权限,请检查' TYPE 'E'.
ENDIF .
ENDLOOP.
ENDIF. START-OF-SELECTION.
PERFORM PRM_GET_MAIN.
PERFORM PRM_PROCE_DATA.
PERFORM PRM_SET_FIELD.
PERFORM PRM_SHOW.

我这是一个REPORT到底的,对于后面修改或者运维来说,只需要看到这里就可以了,到这里整个程序的结构已经出来了。针对每个点的修改都可以直接找到了,这就是用REPORT到底的好处。权限检查这个对于那种变态公司来说是必须的,对于一般公司来说就可有可无了。

START-OF-SELECTION.里分成四个FORM,一个取数,一个处理数据,一个设置显示样式,一个调函数展示。

(SAP出了很多新的语法,我都不习惯,我觉得之前的这种就很好,每次出现问题,都可以DEBUG,很明确的找到问题)

留个范文吧^_^

*&---------------------------------------------------------------------*
*& Report ZFIR025
*&
*&---------------------------------------------------------------------*
*&
*&DESC :凭证明细表
*
*&AUTHOR: LY
*&
*&DATE:20160721
*&
*&
*&CHANGE LIST
*& C DEVK901712 2016.07.21 08:11:04 LIYUAN
*& C DEVK901869 2016.08.22 15:37:14 LIYUAN 增加本币金额
*&---------------------------------------------------------------------* REPORT ZFIR025. TABLES:BKPF,BSEG,SKAT. TYPES:BEGIN OF TY_SHOW,
MONAT TYPE BKPF-MONAT,
BUDAT TYPE BKPF-BUDAT,
BELNR TYPE BKPF-BELNR,
BUKRS TYPE BKPF-BUKRS,
BKTXT TYPE BKPF-BKTXT,
GJAHR TYPE BKPF-GJAHR,
BLART TYPE BKPF-BLART,
WAERS TYPE BKPF-WAERS,
USNAM TYPE BKPF-USNAM,
AWKEY TYPE BKPF-AWKEY,
HKONT TYPE BSEG-HKONT,
KUNNR TYPE BSEG-KUNNR,
LIFNR TYPE BSEG-LIFNR,
KOSTL TYPE BSEG-KOSTL,
FKBER TYPE BSEG-FKBER,
WRBTR TYPE BSEG-WRBTR,
WRBTRS TYPE BSEG-WRBTR,
WRBTRH TYPE BSEG-WRBTR,
SHKZG TYPE BSEG-SHKZG,
MATNR TYPE BSEG-MATNR,
MAKTX TYPE MAKT-MAKTX, "added by stw 20170822
XNEGP TYPE BSEG-XNEGP,
RSTGR TYPE BSEG-RSTGR, "原因代码
TXT40 TYPE T053S-TXT40, "原因代码文本
LTEXT TYPE CSKT-LTEXT, "成本中心文本
DMBTR TYPE BSEG-DMBTR,
DMBTRS TYPE BSEG-DMBTR,
DMBTRH TYPE BSEG-DMBTR,
TXT50 TYPE SKAT-TXT50,
GSBER TYPE BSEG-GSBER,
AUFNR type bseg-AUFNR, "add by yin
END OF TY_SHOW,
BEGIN OF TY_T053S,
RSTGR TYPE BSEG-RSTGR, "原因代码
BUKRS TYPE BSEG-BUKRS, "原因代码
TXT40 TYPE T053S-TXT40, "原因代码文本
END OF TY_T053S,
BEGIN OF TY_CSKT,
KOSTL TYPE BSEG-KOSTL, "原因代码
LTEXT TYPE CSKT-LTEXT, "原因代码文本
END OF TY_CSKT. DATA:GT_SHOW TYPE TABLE OF TY_SHOW,
GW_SHOW LIKE LINE OF GT_SHOW,
GT_T053 TYPE TABLE OF TY_T053S,
GW_T053 LIKE LINE OF GT_T053,
GT_CSKT TYPE TABLE OF TY_CSKT,
GW_CSKT LIKE LINE OF GT_CSKT. DATA:GT_FIELDCAT TYPE LVC_T_FCAT.
DATA GS_FIELDCAT LIKE LINE OF GT_FIELDCAT.
DATA LS_LAYOUT TYPE LVC_S_LAYO.
DATA:GT_T001 TYPE STANDARD TABLE OF T001,
GS_T001 TYPE T001. DEFINE APPEND_FIELDCAT .
CLEAR GS_FIELDCAT.
GS_FIELDCAT-FIELDNAME = &.
GS_FIELDCAT-SCRTEXT_L = &.
GS_FIELDCAT-OUTPUTLEN = &.
GS_FIELDCAT-NO_ZERO = &.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION. SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-.
SELECT-OPTIONS:S_BUKRS FOR BKPF-BUKRS DEFAULT ''.
SELECT-OPTIONS:S_GJAHR FOR BKPF-GJAHR DEFAULT SY-DATUM+().
SELECT-OPTIONS:S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+().
SELECT-OPTIONS:S_BELNR FOR BKPF-BELNR.
SELECT-OPTIONS:S_HKONT FOR BSEG-HKONT.
SELECT-OPTIONS:S_KUNNR FOR BSEG-KUNNR.
SELECT-OPTIONS:S_LIFNR FOR BSEG-LIFNR.
SELECT-OPTIONS:S_KOSTL FOR BSEG-KOSTL MATCHCODE OBJECT ZSKAT.
SELECT-OPTIONS:S_BLART FOR BKPF-BLART.
SELECT-OPTIONS:S_BUDAT FOR BKPF-BUDAT.
SELECT-OPTIONS:S_GSBER FOR BSEG-GSBER.
SELECTION-SCREEN END OF BLOCK BLK01.
AT SELECTION-SCREEN.
IF sy-ucomm = 'ONLI'.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE GT_T001
FROM T001 WHERE BUKRS IN s_bukrs
AND KTOPL = ''
AND SPRAS = .
LOOP AT GT_T001 INTO Gs_T001.
AUTHORITY-CHECK OBJECT 'ZFI_BUKRS' ID 'BUKRS' FIELD Gs_T001-BUKRS.
IF SY-SUBRC <> .
MESSAGE '您没有分配公司代码' && Gs_T001-BUKRS && '权限,请检查' TYPE 'E'.
ENDIF .
ENDLOOP.
ENDIF. START-OF-SELECTION.
PERFORM PRM_GET_DATA.
PERFORM PRM_PROCE_DATA.
PERFORM PRM_SET_FIELD.
PERFORM PRM_SHOW. *&---------------------------------------------------------------------*
*& Form PRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_DATA .
SELECT
BKPF~MONAT" TYPE BKPF-MONAT,
BKPF~BUDAT" TYPE BKPF-BUDAT,
BKPF~BELNR" TYPE BKPF-BELNR,
BKPF~BUKRS" TYPE BKPF-BUKRS,
BKPF~BKTXT" TYPE BKPF-BKTXT,
BKPF~GJAHR" TYPE BKPF-GJAHR,
BKPF~BLART" TYPE BKPF-BLART,
BKPF~WAERS" TYPE BKPF-WAERS,
BKPF~USNAM" TYPE BKPF-USNAM,
BKPF~AWKEY" TYPE BKPF-USNAM,
BSEG~HKONT" TYPE BSEG-HKONT,
BSEG~KOSTL" TYPE BSEG-HKONT,
BSEG~KUNNR" TYPE BSEG-HKONT,
BSEG~LIFNR" TYPE BSEG-HKONT,
BSEG~FKBER" TYPE BSEG-HKONT,
BSEG~WRBTR" TYPE BSEG-WRBTR,
BSEG~MATNR" TYPE BSEG-WRBTR,
BSEG~SHKZG" TYPE BSEG-WRBTR,
BSEG~XNEGP" TYPE BSEG-WRBTR,
BSEG~RSTGR" TYPE BSEG-RSTGR,
BSEG~DMBTR
SKAT~TXT50" TYPE SKAT-TXT50,
BSEG~GSBER
bseg~AUFNR "add by yin
INTO CORRESPONDING FIELDS OF TABLE GT_SHOW
FROM BKPF
INNER JOIN BSEG
ON BKPF~BUKRS = BSEG~BUKRS
AND BKPF~BELNR = BSEG~BELNR
AND BKPF~GJAHR = BSEG~GJAHR
INNER JOIN SKAT
ON BSEG~HKONT = SKAT~SAKNR
AND SKAT~SPRAS = ''
AND SKAT~KTOPL = ''
WHERE BKPF~BUKRS IN S_BUKRS
AND BKPF~GJAHR IN S_GJAHR
AND BKPF~MONAT IN S_MONAT
AND BKPF~BELNR IN S_BELNR
AND BSEG~HKONT IN S_HKONT
AND BSEG~KUNNR IN S_KUNNR
AND BSEG~LIFNR IN S_LIFNR
AND BSEG~KOSTL IN S_KOSTL
AND BSEG~GSBER IN S_GSBER
AND BKPF~BLART IN S_BLART
AND BKPF~BUDAT IN S_BUDAT. IF GT_SHOW[] IS INITIAL.
MESSAGE '无结果!' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ELSE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_T053
FROM T053S WHERE SPRAS = ''. SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_CSKT
FROM CSKT WHERE SPRAS = '' AND KOKRS = ''.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_PROCE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_PROCE_DATA .
DATA:GS_SHOW LIKE LINE OF GT_SHOW. * SORT GT_SHOW BY BUKRS GJAHR BELNR KUNNR DESCENDING LIFNR DESCENDING." HKONT DESCENDING. LOOP AT GT_SHOW INTO GW_SHOW.
* IF GW_SHOW-XNEGP = 'X'.
* GW_SHOW-DMBTR = GW_SHOW-DMBTR * -1.
* ENDIF.
IF GW_SHOW-HKONT = '' AND GW_SHOW-LIFNR IS INITIAL."应付暂估 带出供应商
SELECT SINGLE LIFNR INTO GW_SHOW-LIFNR FROM BSEG WHERE BUKRS = GW_SHOW-BUKRS AND BELNR = GW_SHOW-BELNR AND GJAHR = GW_SHOW-GJAHR AND LIFNR <> ''.
ENDIF. IF GW_SHOW-HKONT = '' AND GW_SHOW-KUNNR IS INITIAL."应付暂估 带出供应商
SELECT SINGLE KUNNR INTO GW_SHOW-KUNNR FROM BSEG WHERE BUKRS = GW_SHOW-BUKRS AND BELNR = GW_SHOW-BELNR AND GJAHR = GW_SHOW-GJAHR AND KUNNR <> ''.
ENDIF.
IF GW_SHOW-SHKZG = 'S'.
IF GW_SHOW-XNEGP = 'X'.
GW_SHOW-DMBTRH = GW_SHOW-DMBTR.
GW_SHOW-WRBTRH = GW_SHOW-WRBTR.
ELSE.
GW_SHOW-DMBTRS = GW_SHOW-DMBTR.
GW_SHOW-WRBTRS = GW_SHOW-WRBTR.
ENDIF.
* GW_SHOW-DMBTRS = GW_SHOW-DMBTR.
ELSEIF GW_SHOW-SHKZG = 'H'. IF GW_SHOW-XNEGP = 'X'.
GW_SHOW-DMBTRS = GW_SHOW-DMBTR * -.
GW_SHOW-WRBTRS = GW_SHOW-WRBTR * -.
ELSE.
GW_SHOW-DMBTRH = GW_SHOW-DMBTR * -.
GW_SHOW-WRBTRH = GW_SHOW-WRBTR * -.
ENDIF. GW_SHOW-DMBTR = GW_SHOW-DMBTR * -.
GW_SHOW-WRBTR = GW_SHOW-WRBTR * -.
* GW_SHOW-DMBTRH = GW_SHOW-DMBTR.
ENDIF. READ TABLE GT_T053 INTO GW_T053 WITH KEY BUKRS = GW_SHOW-BUKRS RSTGR = GW_SHOW-RSTGR.
IF SY-SUBRC = .
GW_SHOW-TXT40 = GW_T053-TXT40.
ENDIF. READ TABLE GT_CSKT INTO GW_CSKT WITH KEY KOSTL = GW_SHOW-KOSTL.
IF SY-SUBRC = .
GW_SHOW-LTEXT = GW_CSKT-LTEXT.
ENDIF. MODIFY GT_SHOW FROM GW_SHOW.
CLEAR:GW_SHOW.
ENDLOOP. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""added by stw 20170822
LOOP AT GT_SHOW INTO GW_SHOW.
IF GW_SHOW-MATNR IS NOT INITIAL.
SELECT SINGLE MAKTX INTO GW_SHOW-MAKTX FROM MAKT WHERE MATNR = GW_SHOW-MATNR AND SPRAS = ''. MODIFY GT_SHOW FROM GW_SHOW.
CLEAR:GW_SHOW.
ENDIF.
ENDLOOP.
""""""added by stw 20170822
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_SET_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_SET_FIELD .
REFRESH GT_FIELDCAT.
LS_LAYOUT-CWIDTH_OPT = 'X'. "优化列宽选项是否设置
LS_LAYOUT-ZEBRA = 'X'.
* ls_layout-box_fname = 'SEL'.
APPEND_FIELDCAT:'BUKRS' '公司代码' 'X',
'GJAHR' '会计年度' 'X',
'MONAT' '会计期间' 'X',
'BUDAT' '过账日期' '',
'BELNR' '凭证编号' 'X',
'AWKEY' '凭证参考' 'X',
'BKTXT' '摘要' '',
'HKONT' '科目代码' 'X',
'TXT50' '科目名称' '',
'KUNNR' '客户编号' '',
'LIFNR' '供应商编号' '',
'FKBER' '功能范围' '',
'GSBER' '业务范围' '',
'AUFNR' '内部订单' '',
'WAERS' '币别' '',
'KOSTL' '成本中心' 'X',
'LTEXT' '成本中心描述' '',
'MATNR' '物料编码' 'X',
'MAKTX' '物料描述' '',
'RSTGR' '原因代码' '',
'TXT40' '原因代码描述' '',
'WRBTR' '原币金额' '',
'WRBTRS' '原币借方金额' '',
'WRBTRH' '原币贷方金额' '',
'DMBTR' '本币金额' '',
'DMBTRS' '本币借方金额' '',
'DMBTRH' '本币贷方金额' '',
'USNAM' '过账人' ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_SHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_SHOW .
DATA:LV_TITLE TYPE LVC_TITLE. DESCRIBE TABLE GT_SHOW LINES LV_TITLE.
CONDENSE LV_TITLE NO-GAPS. CONCATENATE '结果共' LV_TITLE '条目!' INTO LV_TITLE. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PRM_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'PRM_USER_COMMAND'
IS_LAYOUT_LVC = LS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT[]
I_GRID_TITLE = LV_TITLE
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_SHOW
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
IF SY-SUBRC <> .
ENDIF.
ENDFORM.
FORM PRM_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZSTAT'.
ENDFORM.
FORM PRM_USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD. CHECK P_UCOMM = '&IC1'. READ TABLE GT_SHOW INTO GW_SHOW INDEX P_SELFIELD-TABINDEX.
IF SY-SUBRC = .
SET PARAMETER ID 'BLN' FIELD GW_SHOW-BELNR.
SET PARAMETER ID 'BUK' FIELD GW_SHOW-BUKRS.
SET PARAMETER ID 'GJR' FIELD GW_SHOW-GJAHR. CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDFORM.


ABAP基础一:ALV基础之ALV的整体结构的更多相关文章

  1. OO方式下,ALV TREE和ALV GRID的不同之处

    作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...

  2. MYSQL、PHP基础、面向对象基础简单复习总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  3. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  4. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  5. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  6. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

  7. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  8. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  9. [.net 面向对象编程基础] (8) 基础中的基础——修饰符

    [.net 面向对象编程基础] (8) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改 ...

  10. [.net 面向对象编程基础] (19) LINQ基础

    [.net 面向对象编程基础] (19)  LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...

随机推荐

  1. python之requests模块快速上手

    安装 pip3 install requests 使用 发送请求 import requests r = requests.get('http://www.baidu.com') 还可以如下方式发送不 ...

  2. C# xml数组的序列和反序列化

    先来看xml <?xml version="1.0"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSche ...

  3. 从零开始一起学习SLAM | 给点云加个滤网

    对VSLAM和三维重建感兴趣的在计算机视觉life"公众号菜单栏回复"三维视觉"进交流群. 小白:师兄,上次你讲了点云拼接后,我回去费了不少时间研究,终于得到了和你给的参 ...

  4. 关于mongodb基础的命令

    banji----数据库 class---集合 1.查看所在的数据库 db 2.查看所有的数据库 show dbs 3.创建数据库 use banji #查看所有的数据库show dbs,创建的数据库 ...

  5. Session, Token and SSO 有什么区别

    Session, Token and SSO 有什么区别 Basic Compareation Session-based Authentication In Session-based Authen ...

  6. sql server 按年月日分组

    sql server  按年月日分组 ----------------------------------------------- --author:yangjinwang --date:2017- ...

  7. Redis单机配置以及集群(sentinel、jediscluster)配置

    最近一直在使用Redis作为缓存数据库,在使用当中,刚开始没有注意配置问题. 1.纯粹的注入单机模式 <bean id="jedisPoolConfig" class=&qu ...

  8. java项目打包成可运行的jar,main方法带参数

    转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...

  9. bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requested: lxml.

    python3 bs4解析网页时报错: bs4.FeatureNotFound: Couldn’t find a tree builder with the features you requeste ...

  10. 【Spark-core学习之四】 Spark任务提交

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...