ABAP常用基础应用_01

1.Select条件判断某字段是否包含某字符like '%string%'
SELECT SINGLE change_name INTO lv_change_name FROM Ztable_01
WHERE ato_number = ls_materail-ato_number
AND ( change_name LIKE ‘%AAA%’ OR change_name LIKE ‘%BBB%’ ).
IF sy-subrc EQ 0 AND ( lv_change_name CS ‘AAA’ OR lv_change_name CS ‘BBB’ ).
lv_ato_number =‘记录包含AAA或者BBB’
EXIT.
ELSE.
lv_ato_number =‘记录不包含AAA或者BBB’
ENDIF.

2.判断内表行数DESCRIBE TABLE Ztable Lines LV_Len
DATA: LV_UPLOAD TYPE I,
LV_BUT000 TYPE I.
DESCRIBE TABLE GT_BANK_DATA LINES LV_UPLOAD.
DESCRIBE TABLE GT_BUT000 LINES LV_BUT000.
3.报表中离开处理,停留在当前屏幕,以S类型展示异常信息
IF LV_BUT000 <> LV_UPLOAD.
MESSAGE ‘Excel导入行数与系统存在的员工数不一致’ TYPE ‘S’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.

4.字符串长度按指定长度分隔到2个变量中
Data: LV_LEN TYPE I.
LV_LEN = STRLEN( <WA_BANK_DATA>-BANKN ).
IF LV_LEN > 18 .
CALL FUNCTION ‘TEXT_SPLIT’
EXPORTING
LENGTH = 18
TEXT = <WA_BANK_DATA>-BANKN

  •     AS_CHARACTER = 'X'
      IMPORTING
        LINE   = LS_BANKDETAILDATA-BANK_ACCT
        REST   = LS_BANKDETAILDATA-BANK_REF.
    
    ELSE.
    LS_BANKDETAILDATA-BANK_ACCT = <WA_BANK_DATA>-BANKN.
    ENDIF.
    5.定义工作区,插入一个结构定义
    TYPES:BEGIN OF ty_result,
    field_style TYPE lvc_t_styl,
    sel TYPE c,
    status(40) TYPE c,
    mess TYPE char128,
    ctrno_flg TYPE char1,
    error_flg TYPE char1.
    INCLUDE STRUCTURE ztsd0052 .
    TYPES END OF ty_result.

6.获取本地计算机名
在这里插入图片描述7.ABAP参照Select-Optons建立内部结构
DATA:LS_WADAT LIKE LINE OF S_WADAT.
LS_WADAT-SIGN = ‘I’.
LS_WADAT-OPTION = ‘BT’.
LS_WADAT-LOW = LV_DATE_FIRST.
LS_WADAT-HIGH = LV_DATE_LAST.
APPEND LS_WADAT TO S_WADAT.

8.在Sproxy中定义Range类型内表与RFC、程序不一样
TYPES: BEGIN OF TY_DATA2,
SIGN(1),
OPTION(2),
LOW TYPE MCHB-LGORT,
HIGH TYPE MCHB-LGORT,
END OF TY_DATA2.
DATA: LT_LGORT_RANGE TYPE TABLE OF TY_DATA2,
LS_LGORT_RANGE TYPE TY_DATA2.

TYPES: BEGIN OF TY_DATA3,
         SIGN(1),
         OPTION(2),
         LOW       TYPE MCHB-WERKS,
         HIGH      TYPE MCHB-WERKS,
       END OF TY_DATA3.
DATA: LT_WERKS_RANGE TYPE TABLE OF TY_DATA3,
      LS_WERKS_RANGE TYPE TY_DATA3.

LOOP AT INPUT-MT_SAP_MMIF003_GET_MATERIAL_BA-ITEM INTO DATA(WA_DATA).

  MOVE-CORRESPONDING WA_DATA TO LS_INPUT_DATA.
  APPEND LS_INPUT_DATA TO LT_INPUT_DATA.

  LS_LGORT_RANGE-SIGN = 'I'.
  LS_LGORT_RANGE-OPTION = 'EQ'.
  LS_LGORT_RANGE-LOW = LS_INPUT_DATA-LGORT.
  APPEND  LS_LGORT_RANGE TO  LT_LGORT_RANGE.

  LS_WERKS_RANGE-SIGN = 'I'.
  LS_WERKS_RANGE-OPTION = 'EQ'.
  LS_WERKS_RANGE-LOW = LS_INPUT_DATA-WERKS.
  APPEND  LS_WERKS_RANGE TO  LT_WERKS_RANGE.


ENDLOOP.
SORT LT_INPUT_DATA BY WERKS LGORT.
DELETE ADJACENT DUPLICATES FROM LT_INPUT_DATA COMPARING ALL FIELDS.

SORT LT_LGORT_RANGE.
DELETE ADJACENT DUPLICATES FROM LT_LGORT_RANGE COMPARING ALL FIELDS.

SORT LT_WERKS_RANGE.
DELETE ADJACENT DUPLICATES FROM LT_WERKS_RANGE COMPARING ALL FIELDS.


IF LT_WERKS_RANGE IS NOT INITIAL AND LT_LGORT_RANGE IS NOT INITIAL.  "   LT_INPUT_DATA.

  SELECT
    WERKS
    MATNR
    CINSM
    CLABS
    CSPEM
    LGORT
    CHARG
  FROM MCHB INTO CORRESPONDING FIELDS OF TABLE LT_DATA
  •    FOR ALL ENTRIES IN LT_INPUT_DATA
    WHERE WERKS IN  LT_WERKS_RANGE  "= LT_INPUT_DATA-WERKS
    AND LGORT IN LT_LGORT_RANGE.
    ENDIF
    

9.RFC使用Range内表定义,使用CORRESPONDING映射内表字段值到另外一个内表,获取物料库存例子。

FUNCTION zmm_send_stock .
*"----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*" REFERENCE(INPUT) TYPE ZMT_SAP_MMIF003_GET_MATERIAL_B
*" EXPORTING
*" REFERENCE(OUTPUT) TYPE ZMT_SAP_MMIF003_GET_MATERIAL_1
*"----------------------------------------------------------------------

TYPES:BEGIN OF lty_werks,
werks TYPE ekpo-werks,
END OF lty_werks.

TYPES:BEGIN OF lty_charg,
matnr TYPE mchb-matnr,
charg TYPE mchb-charg,
END OF lty_charg.

DATA:BEGIN OF ls_kchz,
werks TYPE mchb-werks,
matnr TYPE mchb-matnr,
charg TYPE mchb-charg,
lgort TYPE mchb-lgort,
clabs TYPE mchb-clabs, "非限制库存
cinsm TYPE mchb-cinsm, "质检库存
cspem TYPE mchb-cspem, "冻结库存
END OF ls_kchz.

DATA: lt_werks TYPE TABLE OF lty_werks,
lt_charg TYPE TABLE OF lty_charg,
lt_kchz LIKE TABLE OF ls_kchz.

DATA: lrt_werks TYPE RANGE OF mchb-werks.

lrt_werks[] = CORRESPONDING #( input-mt_sap_mmif003_get_material_ba-details[] MAPPING low = werks ).
SORT lrt_werks BY low.
DELETE ADJACENT DUPLICATES FROM lrt_werks COMPARING low.
MODIFY lrt_werks FROM VALUE #( sign = ‘I’
option = ‘EQ’ )
TRANSPORTING sign option WHERE sign = ‘’.
IF lrt_werks[] IS INITIAL.
output-mt_sap_mmif003_get_material_ba-code = ‘E’.
output-mt_sap_mmif003_get_material_ba-desc = ‘入参列表不能为空’.
RETURN.
ENDIF.
"汇总MCHB,MKOL,MSPR三个表的库存数据
SELECT
a~*
FROM zv_mm_kchz AS a
WHERE a~werks IN @lrt_werks
AND NOT EXISTS ( SELECT * FROM mdlg WHERE werks = a~werks AND lgort = a~lgort )
INTO CORRESPONDING FIELDS OF TABLE @lt_kchz.
MOVE-CORRESPONDING lt_kchz[] TO lt_charg[].
SORT lt_charg BY matnr charg.
DELETE ADJACENT DUPLICATES FROM lt_charg COMPARING matnr charg.
IF lt_charg[] IS NOT INITIAL.
SELECT
a~mblnr,
a~mjahr,
a~zeile,
a~matnr,
a~charg,
a~ebeln,
a~ebelp,
b~zzbeskz,
b~zzseller_group,
c~lifnr
FROM mseg AS a
INNER JOIN ekpo AS b
ON a~ebeln = b~ebeln AND a~ebelp = b~ebelp
INNER JOIN ekko AS c
ON a~ebeln = c~ebeln
FOR ALL ENTRIES IN @lt_charg
WHERE a~matnr = @lt_charg-matnr
AND a~charg = @lt_charg-charg
AND a~ebeln <> ‘’
AND a~lifnr > ‘0000009999’
AND a~bwart IN ( ‘101’ )
AND NOT ( b~zzbeskz = ‘’ AND b~zzseller_group = ‘’ AND c~lifnr = ‘’ )
INTO TABLE @DATA(lt_mseg_b).
IF sy-subrc EQ 0.
SORT lt_mseg_b BY matnr charg ebeln ebelp.
ENDIF.
ENDIF.
FREE:lt_charg.

DATA: ls_out TYPE zdt_fp_mmif003_get_material_b3.
SORT lt_kchz BY werks matnr charg lgort.
LOOP AT lt_kchz INTO ls_kchz.
DATA(lv_tabix) = sy-tabix.
CLEAR:ls_out.
ls_out-werks = ls_kchz-werks.
ls_out-matnr = ls_kchz-matnr.
ls_out-menge = ls_kchz-clabs + ls_kchz-cinsm + ls_kchz-cspem.
IF ls_kchz-clabs + ls_kchz-cinsm + ls_kchz-cspem = 0.
DELETE lt_kchz INDEX lv_tabix.
CONTINUE.
ENDIF.
ls_out-cinsm = ls_kchz-cinsm.
ls_out-clabs = ls_kchz-clabs.
ls_out-cspem = ls_kchz-cspem.
ls_out-lgort = ls_kchz-lgort.
ls_out-charg = ls_kchz-charg.
READ TABLE lt_mseg_b INTO DATA(ls_mseg_b) WITH KEY matnr = ls_kchz-matnr
charg = ls_kchz-charg
BINARY SEARCH.
IF sy-subrc EQ 0.
DATA(lv_index) = sy-tabix.
lv_index = lv_index + 1.
READ TABLE lt_mseg_b INTO DATA(ls_a) INDEX lv_index.
IF sy-subrc EQ 0.
IF ls_a-matnr = ls_mseg_b-matnr AND ls_a-charg = ls_mseg_b-charg
AND ls_a-ebeln = ls_mseg_b-ebeln AND ls_a-ebelp = ls_mseg_b-ebelp.
"采购订单+行项目存在多个
ELSE.
"采购订单+行项目只存在一个
ls_out-zzbeskz = ls_mseg_b-zzbeskz.
ls_out-zzseller_group = ls_mseg_b-zzseller_group.
ls_out-lifnr = ls_mseg_b-lifnr.
ENDIF.
ELSE.
"采购订单+行项目只存在一个
ls_out-zzbeskz = ls_mseg_b-zzbeskz.
ls_out-zzseller_group = ls_mseg_b-zzseller_group.
ls_out-lifnr = ls_mseg_b-lifnr.
ENDIF.
CLEAR:lv_index.
ENDIF.
APPEND ls_out TO output-mt_sap_mmif003_get_material_ba-details.
CLEAR:ls_kchz.
ENDLOOP.
FREE:lt_mseg_b,lt_kchz.

IF output-mt_sap_mmif003_get_material_ba-details[] IS NOT INITIAL.
DATA(lv_lines) = lines( output-mt_sap_mmif003_get_material_ba-details[] ).
output-mt_sap_mmif003_get_material_ba-code = ‘S’.
output-mt_sap_mmif003_get_material_ba-desc = ‘获取数据成功!共计’ && lv_lines && ‘条’.
ELSE.
output-mt_sap_mmif003_get_material_ba-code = ‘E’.
output-mt_sap_mmif003_get_material_ba-desc = ‘无符合条件的数据’.
ENDIF.
ENDFUNCTION.

10.判断字符串是否全部是数值
DATA: LS_TEST TYPE STRING.
LS_TEST = ‘0010.1’.
IF CL_ABAP_MATCHER=>MATCHES(
PATTERN = ‘^(-?[1-9]\d*(.\d*[1-9])?)|(-?0.\d*[1-9])$’
TEXT = LS_TEST ) = ABAP_TRUE.

WRITE ‘数字’.
ELSE.

WRITE ‘非数字’.
ENDIF.


-? :负号
[1-9]\d* :整数部分(整数第一位不为0,后面的随意)
.\d*[1-9] :小数部分(小数点最后一位不为0,中间的随意)
0.\d*[1-9] :0.xxxx形式的小数

11.ABAP字符与ASCII码互转
方法一:
report Demotest.

  • 1.将字符转成ASCII code
    data : c value ‘A’.
    field-symbols : type x.
    data : rn type i.
    assign c to casting.
    move to rn.
    write rn.
    1. 将ASCII code转成字符
      data : i type i value 66.
      data : x type x.
      field-symbols : type c.
      move i to x.
      assign x to casting type c.
      move to c.
      write c.
      方法二:
      字符转ASCII
      URL_ASCII_CODE_GET
      特点,根据这个算法可以中文转ASCII
      互转
      HR_KR_STRING_TO_XSTRING (应该就是CHAR-》RAW或者BIN的二进制)
      HR_KR_XSTRING_TO_STRING
      SO_SOLITAB_TO_SOLIXTAB
      SO_SOLIXTAB_TO_SOLITAB
      互转
      REPORT SAPMZTS3.
      DATA: L_S TYPE STRING VALUE ‘a’.
      DATA: L_S1 TYPE XSTRING.
      DATA: lr_conv_ci TYPE REF TO CL_RPE_CONVERT .
      CREATE OBJECT LR_CONV_CI.
      L_S1 = ‘42’.
      CALL METHOD lr_conv_ci->XSTRING_TO_STRING
      EXPORTING
      INPUT = L_S1
      IMPORTING
      OUTPUT = L_S.
      WRITE L_S.
      CALL METHOD lr_conv_ci->STRING_TO_XSTRING
      EXPORTING
      INPUT = L_S
      IMPORTING
      OUTPUT = L_S1.
      WRITE L_S1.

示例:
REPORT z_barry_test_ascii.
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
CALL METHOD l_con->string_to_xstring
EXPORTING
input = ‘ABC’
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘4261727279’
IMPORTING
output = str.
WRITE / : xstr ,str.

字符转ASCII
URL_ASCII_CODE_GET

特点:根据这个算法可以中文转ASCII
DATA: char_cd(2) TYPE c.
CALL FUNCTION ‘URL_ASCII_CODE_GET’
EXPORTING
trans_char = ‘A’
IMPORTING
char_code = char_cd.
WRITE /: char_cd.

利用cl_rpe_convert字符与ASCII互转
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .

START-OF-SELECTION.

CREATE OBJECT l_con.

CALL METHOD l_con->string_to_xstring
EXPORTING
input = ‘ABC’
IMPORTING
output = xstr.

CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘426172727942’
IMPORTING
output = str.

WRITE / : xstr ,str.

特殊字符处理 利用类CL_ABAP_CHAR_UTILITIES在字符串中加入tab字符,回车换行符,换页符
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .

START-OF-SELECTION.

CREATE OBJECT l_con.
str = cl_abap_char_utilities=>cr_lf.

CALL METHOD l_con->string_to_xstring
EXPORTING
input = str
IMPORTING
output = xstr.

CALL METHOD l_con->xstring_to_string
EXPORTING
input = ‘4213’
IMPORTING
output = str.

WRITE / : xstr ,str.

12.去掉字符串左右两边空格
(1)方法一:CONDENSE LS_DETAILS-PURCHASE_QTY NO-GAPS.

(2)方法二:SHIFT LS_TEXT LEFT DELETING LEADING SPACE. 去掉左边字符串的
SPLIT LS_TEXT AT ‘’ INTO LS_STRING LS_STRING1. 以’'拆分字符串到变量

13.SWITCH 用法:
当LV_EXIST等于ABAP_TRUE(X)时,设置变量为U,否则为C
LS_DATA_TMP-CRUD_TYPE = SWITCH #( LV_EXIST WHEN ABAP_TRUE THEN ‘U’
ELSE ‘C’ ).

14.大小写转换:
translate l_interfaceid to upper case."字符小写转大写
TRANSLATE l_interfaceid TO LOWER CASE "字符大写转小写

REPORT ZEXAMPLE.
DATA: V_HEAD(10), V_TAIL(10).
PARAMETERS: P_STR(20),
P_DEM.
CALL FUNCTION ‘STRING_UPPER_LOWER_CASE’
EXPORTING
DELIMITER = P_DEM
STRING1 = P_STR
IMPORTING
STRING = P_STR
EXCEPTIONS
NOT_VALID = 1
TOO_LONG = 2
TOO_SMALL = 3
OTHERS = 4.
IF SY-SUBRC EQ 0.
WRITE:/ P_STR.
ELSE.
WRITE:/ ‘ERROR CONVERTING STRING’.
ENDIF.

15.两个字符串连接,中间以空格为分隔符
DATA: LV_DATE_STR TYPE CHAR30,
LV_TIME_STR TYPE CHAR30,
LV_DATE_TIME TYPE CHAR80,
LV_SPACE TYPE CHAR1.
DATA: LV_DATE TYPE SY-DATUM,
LV_TIME TYPE SY-UZEIT.
LV_DATE = SY-DATUM.
LV_TIME = SY-UZEIT.

CONCATENATE LV_DATE(4) ‘/’ LV_DATE+4(2) ‘/’ LV_DATE+6(2) INTO LV_DATE_STR.

CONCATENATE LV_TIME(2) ‘:’ LV_DATE+2(2) ‘:’ LV_DATE+4(2) INTO LV_TIME_STR.

CONCATENATE LV_DATE_STR LV_TIME_STR INTO LV_DATE_TIME SEPARATED BY SPACE.

16.位数和长度:
LV_STR11 = ‘Test000001’.
LV_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( LV_STR11 ).
WRITE: / LV_STR11.
WRITE LV_LEN.
ILEN = STRLEN( LV_STR11 ).
17.替换字符串
REPLACE ALL OCCURRENCES OF ‘,’
IN lwa_doc_item-part_desc WITH ‘|’.

18.金额负号前置
DATA NUM TYPE P DECIMALS 2. "模拟金额类型
DATA NUM1(10) TYPE C. "定义字符串类型
NUM = ‘-15.25’. "赋值
NUM1 = NUM.
CALL FUNCTION ‘CLOI_PUT_SIGN_IN_FRONT’ "传入值必须要字符型
CHANGING
VALUE = NUM1.
WRITE: / ‘修改前:’,NUM.
WRITE: / ‘修改后:’,NUM1.
改变值必须要是字符型。在字符的转换上,P类型可以直接转C类型,直接赋值就行,不过C类型的长度需要把握好。

19.暴力修改表内容
(1). 一个在SE16里用debug的途径来进行修改
第一步,进入SE16,输入需要修改的表的名字
第二步,在选择屏里输入点选择项来找数据,找你需要修改的那行
第三步,在表的内容输出的界面,在command field里,就是用来输入tcode的那个地方,输入/H,回车,会看到下面有绿色提示,意思是debug on.
第四步,注意,这里需要选择的是LIST的表显示方式,才可以!找到需要修改的那一行,双击来显示,这个时候会进入代码,main program是“SAPLSETB”,source code of     是“LSETBF01”,在25行处.
第五步,在这个if前加个断点,然后把code的值改成‘EDIT’第六步,按F8运行,看到出来的结果是除了key field,其他的字段都可以被修改了,修改后按保存按钮

(2). 使用SE16N实现批量修改的问题?
  查询出数据,使用/H,进入调试界面,然后获取:GD-SAPEDIT&&GD-EDIT都修改成X
(3). ECC6.版本 se37–>TRINT_OBJECTS_CHECK_AND_INSERT ---->487行设定断点(IF ct_ko200 IS INITIAL)
在SE38中点修改,会跳到此断点处,将表ct_ko200中内容清空即可。
S4 Hana在295行打断点,清空VT_ko200数据
在SE38中点修改,会跳到此断点处,将表ct_ko200中内容清空即可。

20.弹出对话框显示信息
DATA: GT_RETURN TYPE STANDARD TABLE OF BAPIRET2.

"同一物料编码的数据如果重复出现,用后面的数据覆盖前面的。
READ TABLE gt_ztsd0044 TRANSPORTING NO FIELDS
  WITH KEY matnr = gs_ztsd0044-matnr.
IF sy-subrc = 0.
  CLEAR: lv_message.
  lv_message = |{ TEXT-t13 }|.
  REPLACE '&1' IN lv_message WITH gs_ztsd0044-matnr.
  PERFORM frm_get_message USING lv_message lv_tabix.
ELSE.
  APPEND gs_ztsd0044 TO gt_ztsd0044.
ENDIF. 

*处理返回信息
FORM frm_get_message USING uv_message TYPE char200
uv_tabix TYPE i.

APPEND VALUE bapiret2(
type = ‘E’
id = ‘SU’
number = ‘000’
message = uv_message
message_v1 = uv_message(50)
row = uv_tabix
field = ‘MATNR’
) TO gt_return.

ENDFORM.

IF gt_return[] IS NOT INITIAL.
CALL FUNCTION ‘SUSR_DISPLAY_LOG’
EXPORTING
display_in_popup = ‘X’
log_title = ‘错误消息’
TABLES
it_log_bapiret2 = gt_return.
ELSE.
"保存整理好的数据
PERFORM frm_save_data.
ENDIF.

21.判断值是否在域元素规定值内,固定值存在:DOMNAME在DD07T
DATA: WA_DD07T TYPE TYP_DD07T,
IT_DD07T LIKE STANDARD TABLE OF WA_DD07T.

CLEAR: IT_DD07T.
SELECT DOMNAME
DOMVALUE_L
DDTEXT
FROM DD07T
INTO CORRESPONDING FIELDS OF TABLE IT_DD07T
WHERE DOMNAME EQ ‘ZRWLH’.
在这里插入图片描述在这里插入图片描述22.MOD在(100,1000)之间所有能被3整除的偶数
data : sum type i,
max type i value 100.
while max <= 1000.
max = max + 1.
data itmp type i.
itmp = sy-index * 3.
itmp = sy-index mod 2.
if itmp <> 0.
continue.
endif.
sum = sum + sy-index.
endwhile.
write: ‘sum=’, sum.

23.内表结构判断每个字段是否为空(针对行)
方法一:
DATA:REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR,
IDETAILS TYPE ABAP_COMPDESCR_TAB WITH HEADER LINE,
XDETAILS TYPE ABAP_COMPDESCR.
FIELD-SYMBOLS: <FS_VALUE> .
DATA: LV_ROWS TYPE N.

  • 判断各字段是否为空,为空时报错
    SORT GT_SELECT_DATA ASCENDING.
    LOOP AT GT_SELECT_DATA INTO GS_SELECT_DATA.
    LV_ROWS = SY-TABIX.
    REF_TABLE_DES ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( GS_SELECT_DATA ).
    IDETAILS[] = REF_TABLE_DES->COMPONENTS[].
    LOOP AT IDETAILS INTO XDETAILS WHERE NAME NE ‘TEXT_LINE2’ AND NAME NE ‘TASK_NUM’ AND NAME NE ‘SEL’ AND NAME NE ‘STATUS’ AND NAME NE ‘MESSAGE’ AND NAME NE ‘VBELN_SO’.
    ASSIGN COMPONENT XDETAILS-NAME OF STRUCTURE GS_SELECT_DATA TO <FS_VALUE>.
    IF <FS_VALUE> IS INITIAL OR <FS_VALUE> <= 0.
    CONCATENATE ‘记录行’
    LV_ROWS
    ‘->’
    GS_SELECT_DATA-PO_NUMBER
    ’ ’
    GS_SELECT_DATA-AUART
    ‘有字段为空’
    INTO LV_MESSAGE.
    EXIT.
    ENDIF.
    ENDLOOP.
    IF LV_MESSAGE IS NOT INITIAL.
    EXIT.
    ENDIF.
    ENDLOOP.
    IF LV_MESSAGE IS NOT INITIAL.
    MESSAGE LV_MESSAGE TYPE ‘S’ DISPLAY LIKE ‘E’.
    EXIT.
    ENDIF.
    CLEAR: LV_MESSAGE.
    方法二:
    LOOP AT GT_WEEKS ASSIGNING FIELD-SYMBOL(<WA_WEEKS>).
    IF <WA_WEEKS>-WKFLAG = ‘M’.
    LV_NUM2 = LV_NUM2 + 1.
    ENDIF.

    LV_NUM1 = LV_NUM1 + 1.

    IF <WA_WEEKS>-WKFLAG = ‘M’.
    LV_FIELD = ‘MONTH’ && LV_NUM2.
    ELSE.
    LV_FIELD = ‘MNG’ && LV_NUM1.
    ENDIF.
    LV_FILDENAME = LV_FIELD.
    "数量
    ASSIGN COMPONENT LV_FILDENAME OF STRUCTURE LS_ZSMM124 TO <DYN_FIELD>. "数量
    IF SY-SUBRC EQ 0.
    LV_MENGE = LV_MENGE + <DYN_FIELD>.
    ENDIF.

    ENDLOOP.
    IF LV_MENGE <= 0.
    CONTINUE.
    ENDIF.
    24.字符串大小写转换
    TRANSLATE:实现字符串转换,OVERLAY:参考字符串对空白字符进行填充.
    TRANSLATE c TO UPPER CASE.
    TRANSLATE c TO LOWER CASE.
    TRANSLATE c USING c1.

25.Concatenate连接字符串换行
CONCATENATE gt_data-resume lv_pa0001-begda ‘-’ lv_pa0001-endda ’ ’ l_str1 l_str2 l_str3 cl_abap_char_utilities=>cr_lf(1) INTO gt_data-resume.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值