指针2 - SAP指针使用实例

1、工作区内容分配到指针&读取分配后指针里字段内容

DATA: CS_VBKOK TYPE  VBKOK

ASSIGN cs_vbkok TO FIELD-SYMBOL(<cs_vbkok>).

CHECK <cs_vbkok> IS ASSIGNED.

ASSIGN COMPONENT 'FIELDNAME' OF STRUCTURE <cs_vbkok> TO FIELD-SYMBOL(<fd_h>).

CHECK <fd_h> IS ASSIGNED.

WRITE:/ <fd_h>.

UNASSIGN: <cs_vbkok>,<fd_h>.
DATA: BEGIN OF LINE,
         COL1 TYPE I VALUE 'AA',
         COL2 TYPE I VALUE 'BB',
         COL3 TYPE I VALUE 'CC',
      END OF LINE.

DATA COMP(5) VALUE 'COL3'.

FIELD-SYMBOLS: <F1>, <F2>, <F3>.

ASSIGN LINE TO <F1>.
ASSIGN COMP TO <F2>.

DO 3 TIMES.
   ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F1> TO <F3>.
   WRITE <F3>.
ENDDO.

ASSIGN COMPONENT <F2> OF STRUCTURE <F1> TO <F3>.
WRITE / <F3>.

输出如下:
AA         BB         CC
CC


2、单字段值分配到指针

data: lv_field(14).

concatenate 'IT_WOG-WOG0' l_ind into lv_field.

assign (lv_field) to field-symbols(<fd>).

check <fd> is assigned.

write:/ <fd>.

UNASSIGN <fd>.

3、读取内表数据到指针

DATA: CT_VBPOK TYPE  TT_VBPOK

READ TABLE ct_vbpok WITH KEY wms_rfpos = lv_posnr ASSIGNING FIELD-SYMBOL(<cs_vbpok>).

CHECK <cs_vbpok> IS ASSIGNED.

ASSIGN COMPONENT 'FIELDNAME' OF STRUCTURE <cs_vbpok> TO FIELD-SYMBOL(<fd_i>).

CHECK <fd_i> IS ASSIGNED.

WRITE:/ <fd_i>.

UNASSIGN: <cs_vbpok>,<fd_i>.

4、内表行项目内容修改(不需要MODIFY ... INDEX SY-TABIX)

  LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).
    "默认X销售需求,可选择Y试验,C零时插单
    <fs_out>-zjhlx = 'X'.

    READ TABLE gt_makt INTO DATA(ls_makt) WITH KEY matnr = <fs_out>-matnr.
    IF sy-subrc = 0.
      <fs_out>-maktx = ls_makt-maktx.
    ENDIF.

    READ TABLE gt_mkal INTO DATA(ls_mkal) WITH KEY matnr = <fs_out>-matnr
                                                   werks = <fs_out>-pwwrk
                                                   verid = <fs_out>-verid.
    IF sy-subrc = 0.
      <fs_out>-verid_desc = ls_mkal-text1.
    ENDIF.

    <fs_out>-zrets = p_zrets.

  ENDLOOP.

5、内表新增行项目

"新增行项目到内表GT_OUT.

LOOP AT lt_out INTO DATA(ls_out).
    APPEND INITIAL LINE TO gt_out ASSIGNING <fs_out>.
    CHECK <fs_out> IS ASSIGNED.

    MOVE-CORRESPONDING ls_out TO <fs_out>.

    "销售组织
    READ TABLE lt_tvkot INTO DATA(ls_tvkot) WITH KEY vkorg = <fs_out>-vkorg.
    IF sy-subrc = 0.
      <fs_out>-vkorg_desc = ls_tvkot-vtext.
    ENDIF.

    "部门
    READ TABLE lt_tspat INTO DATA(ls_tspat) WITH KEY spart = <fs_out>-spart.
    IF sy-subrc = 0.
      <fs_out>-spart_desc = ls_tspat-vtext.
    ENDIF.

    "审核状态
    IF <fs_out>-sdabw = 'X'.
      <fs_out>-sdabw_desc = gc_sdabw_1.
    ENDIF.

    UNASSIGN <fs_out>.

  ENDLOOP.

6、增强过程中,跨程序读取值

如:读取MM03 的销售组织数据1的 物料号、销售组织、分销渠道等信息。程序SAPLMGMM对应工作区RMMG1

    ASSIGN ('(SAPLMGMM)RMMG1') TO FIELD-SYMBOL(<fs_rmmg1>).
    CHECK <fs_rmmg1> IS ASSIGNED.

    ASSIGN COMPONENT 'MATNR' OF STRUCTURE <fs_rmmg1> TO FIELD-SYMBOL(<fd_matnr>).
    ASSIGN COMPONENT 'VKORG' OF STRUCTURE <fs_rmmg1> TO FIELD-SYMBOL(<fd_vkorg>).
    ASSIGN COMPONENT 'VTWEG' OF STRUCTURE <fs_rmmg1> TO FIELD-SYMBOL(<fd_vtweg>).

    CHECK <fd_matnr> IS ASSIGNED AND <fd_vkorg> IS ASSIGNED AND <fd_vtweg> IS ASSIGNED.

 

7、

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值