news 2026/6/10 21:06:00

ABAP备忘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABAP备忘

ABAP最新CODE指南 https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm

  1. alpha 转换

    "增加前导0 DATA: lv_matnr TYPE matnr VALUE '15000042'. lv_matnr = |{ lv_matnr ALPHA = IN }|. WRITE: lv_matnr. "示例结果:000000000015000042 "删除前导0 DATA: gs_matnr TYPE matnr VALUE '000000000015000042'. DATA(gs_out_matnr) = |{ gs_matnr ALPHA = OUT }|. WRITE:/ gs_out_matnr. "示例结果:15000042
  2. CONV转换和用户格式日期, VALUE内表快速填充

    TYPES t_date_tab TYPE TABLE OF string WITH EMPTY KEY. DATA(date_tab) = VALUE t_date_tab( ( | { CONV d( sy-datlo - 1 ) DATE = ENVIRONMENT } | ) ( | { sy-datlo DATE = ENVIRONMENT } | ) ( | { sy-datum DATE = ENVIRONMENT } | ) "如果不加DATE = ENVIRONMENT ,就直接是YYYYMMDD格式 ( | { CONV d( sy-datlo + 1 ) } | ) ).


  3. Range快速填充

    DATA itab TYPE RANGE OF i. itab = VALUE #( sign = 'I' option = 'BT' ( low = 1 high = 10 ) ( low = 21 high = 30 ) ( low = 41 high = 50 ) option = 'GE' ( low = 61 ) ). cl_demo_output=>DISPLAY( itab ).
    DATA lr_kunnr type range of kunnr. LOOP AT lt_kunnr INTO DATA(ls_kunnr). lr_kunnr = VALUE #( BASE lr_kunnr ( sign = 'I' option = 'EQ' low = ls_kunnr-kunnr ) ). ENDLOOP. cl_demo_output=>DISPLAY( itab ).
  4. VALUE in line声明

    CLASS c1 DEFINITION. PUBLIC SECTION. TYPES: BEGIN OF t_struct, col1 TYPE i, col2 TYPE i, END OF t_struct. CLASS-METHODS m1 IMPORTING p TYPE t_struct. ENDCLASS. CLASS c1 IMPLEMENTATION. METHOD m1. WRITE:'col1:' , p-col1,'col2:',p-col2. ENDMETHOD. ENDCLASS. START-OF-SELECTION. c1=>m1( VALUE #( col1 = 1 col2 = 2 ) ).
  5. 值操作

"操作值 * Variables: VALUE dtype|#( ) * Structures: VALUE dtype|#( comp1 = a1 comp2 = a2 … ) * Tables: VALUE dtype|#( ( … ) ( … ) … ) … TYPES:BEGIN OF ty_mara, matnr TYPE mara-matnr, matkl TYPE mara-matkl, END OF ty_mara. TYPES:BEGIN OF ty_makt, maktx TYPE makt-maktx, mara1 TYPE ty_mara, END OF ty_makt. "1 给变量赋值 DATA(lv_matnr) = 'AT001'. "2 给结构赋值 DATA(ls_makt1) = VALUE ty_makt( maktx = 'TEST MATERIAL' mara1-matnr = lv_matnr mara1-matkl = 'Z001'). "3 给内表赋值 "(1)标准的内表 TYPES: ty_t_makt TYPE STANDARD TABLE OF ty_makt WITH EMPTY KEY. DATA(lt_makt) = VALUE ty_t_makt( ( maktx = 'MATERIAL 1' mara1-matnr = 'AT001' mara1-matkl = 'Z001') ( maktx = 'MATERIAL 2' mara1-matnr = 'AT002' mara1-matkl = 'Z001') ( maktx = 'MATERIAL 3' mara1-matnr = 'AT003' mara1-matkl = 'Z001')
  1. BDC message处理

    CALL TRANSACTION 'MD02' USING gt_bdcdata OPTIONS FROM gs_ctu_params MESSAGES INTO gt_messtab. DELETE gt_messtab WHERE msgtyp <> 'E' AND msgtyp <> 'A'. IF gt_messtab[] IS NOT INITIAL. gs_out-run_type = 'E'. gs_out-run_result = TEXT-021. CLEAR lt_bapireturn[]. CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' TABLES imt_bdcmsgcoll = gt_messtab ext_return = lt_bapireturn. LOOP AT lt_bapireturn. CONCATENATE gs_out-run_result lt_bapireturn-message INTO gs_out-run_result SEPARATED BY space . ENDLOOP. ELSE. gs_out-run_type = 'S'. gs_out-run_result = TEXT-020. ENDIF.
  2. 并行处理
    参考
    同一SAP系统内部进行分组并行处理的语法格式:

    CALL FUNCTION rfm_name STARTING NEW TASK taskname DESTINATION IN GROUP g1 ... [EXPORTING p1 = a1 ... pn = an ...] [TABLES t1 = itab1 ... tn = itabn ...] [EXCEPTIONS exc1 = e1 ... [MESSAGE mess]... exc2 = e2 ... [MESSAGE mess]... RESOURCE_FAILURE = ... ... [OTHERS = n_others] ].

    并行处理是有前提条件的:

    • 逻辑独立的工作单元,也就是逻辑要独立,不能有关联关系
    • 要使用RFC函数
    • 被调用的RFC中不能再包含使用BACK的远程功能调用
    • 调用程序不能在异步调用之后生成新的内部会话,也就是不能在CALL FUNCTION STARTING NEW TASK语句后使用SUBMIT或是ACALL TRANSACTION语句
    • 不能通过 CALL FUNCTION STARTING NEW TASK DESTINATION IN GROUP 语句启动外部程序
    • 为了处理并行作业,SAP系统中的服务器至少要有3个对话工作过程 ,否则将触发RESOUCE_FAILURE异常。
  3. 分组处理

TYPES: BEGIN OF ts_data. INCLUDE TYPE ts_upload. TYPES: send_guid TYPE zesend_guid, xh TYPE ze_xh, sequence type ze_sequence, status TYPE ze_status2, qname TYPE trfcqnam, type type BAPI_MTYPE, MESSAGE type BAPI_MSG. TYPES END OF ts_data. DATA: gt_data_upload TYPE STANDARD TABLE OF ts_upload, gt_data TYPE STANDARD TABLE OF ts_data WITH HEADER LINE. DATA: lt_group LIKE TABLE OF gt_data. TYPES: BEGIN OF ty_type, zgbom_item TYPE ze_gbomposnr, ztype TYPE c, END OF ty_type. DATA: lt_type TYPE STANDARD TABLE OF ty_type WITH HEADER LINE, ls_type TYPE ty_type,
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 21:04:00

项目三简易计算器 任务3-5六位密码锁

任务描述&#xff1a;单片机连接8位共阳极数码管和4*4矩阵键盘&#xff0c; 编程完成一位密码校验&#xff0c;结果正确显示“HELLO”,结果错误显示“ERROR” 六位密码锁讲解/************************* 项目名称&#xff1a;项目三简易计算器 任务名称&am…

作者头像 李华
网站建设 2026/6/10 21:03:23

MetaMask Snaps未来展望:探索Snaps平台的10大创新可能性

MetaMask Snaps未来展望&#xff1a;探索Snaps平台的10大创新可能性 【免费下载链接】snaps Extend the functionality of MetaMask using Snaps 项目地址: https://gitcode.com/gh_mirrors/sn/snaps MetaMask Snaps是一个革命性的Web3扩展平台&#xff0c;它允许开发者…

作者头像 李华
网站建设 2026/6/10 21:00:30

yuzu模拟器:3步教会你在电脑玩Switch游戏的终极指南

yuzu模拟器&#xff1a;3步教会你在电脑玩Switch游戏的终极指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在电脑上畅玩任天堂Switch游戏吗&#xff1f;yuzu模拟器就是你需要的答案&#xff01;这个强大的开…

作者头像 李华