获取SAP表字段说明

*&---------------------------------------------------------------------
*& Report  ZGETTABLEFIELD                                              *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZGETTABLEFIELD                                              .
* Data declaration
TYPE-POOLS: SLIS.

* Global structure of list
TYPES:        BEGIN OF UD_STRUCT,
                     POSITION   LIKE DD03L-POSITION,
                     TABNAME    LIKE DD03L-TABNAME,
                     FIELDNAME  LIKE DD03L-FIELDNAME,
                     DATATYPE   LIKE DD03L-DATATYPE,
                     DDLENG     LIKE DD03L-LENG,
                     DECIMALS   LIKE DD03L-DECIMALS,
                     DDTEXT     LIKE DD03T-DDTEXT,
                     EDDTEXT    LIKE DD03T-DDTEXT,
                     DDDTEXT    LIKE DD03T-DDTEXT,
                END OF UD_STRUCT.

TABLES: DD03L.

DATA:   GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA:   GT_OUTTAB  TYPE UD_STRUCT OCCURS 0 WITH HEADER LINE.
DATA:   G_REPID LIKE SY-REPID.
data : begin of exclude occurs 5,
         fcode like sy-ucomm,
       end   of exclude.
DATA  p_ucomm LIKE sy-ucomm.

PARAMETER P_TNAME LIKE DD02l-TABNAME  DEFAULT 'VBAK'.

*======================================================================*
* Initialization fieldcatalog
*======================================================================*
INITIALIZATION.
  G_REPID = SY-REPID.
  PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].


*======================================================================*
* Ereignis : AT SELECTION-SCREEN OUTPUT (PBO-Zeitpunkt)                *
*======================================================================*
at selection-screen output.
  data exclude like rsexfcode occurs 0 with header line.
  if sy-dynnr = 1000.
    call function 'RS_SET_SELSCREEN_STATUS'
      EXPORTING
        p_status  = 'ZGETTBFD'
      TABLES
        p_exclude = exclude
      EXCEPTIONS
        others    = 1.
  endif.
  p_ucomm = SPACE.

*======================================================================*
* Ereignis : AT SELECTION-SCREEN (PAI-Zeitpunkt)                       *
*            letztes PAI-Ereignis                                      *
*======================================================================*
at selection-screen.
  p_ucomm = sy-ucomm.
  CASE p_ucomm.
    WHEN 'STBL'.
      SET PARAMETER ID 'DTB' FIELD P_TNAME.
*      PERFORM AUTHORITY_CHECK USING 'SE11' .
      CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
  ENDCASE.

*======================================================================*
* Data selection
*======================================================================*
START-OF-SELECTION.
  PERFORM SELECT_DATA TABLES GT_OUTTAB.
  perform function_exclude tables exclude.

*======================================================================*
* Display list
*======================================================================*
END-OF-SELECTION.
   CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM = G_REPID
            IT_FIELDCAT        = GT_FIELDCAT[]
       TABLES
            T_OUTTAB           = GT_OUTTAB.
*-----------------------------------------------------------------------
*    Forms
*-----------------------------------------------------------------------

* Initialization fieldcatalog

FORM FIELDCAT_INIT
      USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  DATA: POS TYPE I VALUE 1.

  clear ls_fieldcat.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'POSITION'.
  ls_fieldcat-ref_fieldname = 'POSITION'.
  LS_FIELDCAT-REF_TABNAME   = 'DD03L'.
  LS_FIELDCAT-KEY           = 'X'.
     APPEND LS_FIELDCAT TO  RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'TABNAME'.
  ls_fieldcat-ref_fieldname = 'TABNAME'.
  LS_FIELDCAT-REF_TABNAME   = 'DD03T'.
*  LS_FIELDCAT-KEY           = 'X'.
     APPEND LS_FIELDCAT TO  RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'FIELDNAME'.
  ls_fieldcat-ref_fieldname = 'FIELDNAME'.
  LS_FIELDCAT-REF_TABNAME   = 'DD03T'.
     APPEND LS_FIELDCAT TO RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'DATATYPE'.
  ls_fieldcat-ref_fieldname = 'DATATYPE'.
  LS_FIELDCAT-REF_TABNAME   =  'DD03T'.
     APPEND LS_FIELDCAT TO RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'DDLENG'.
  ls_fieldcat-ref_fieldname = 'LENG'.
  LS_FIELDCAT-REF_TABNAME   =  'DD03L'.
     APPEND LS_FIELDCAT TO RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'DECIMALS'.
  ls_fieldcat-ref_fieldname = 'DECIMALS'.
  LS_FIELDCAT-REF_TABNAME   =  'DD03L'.
     APPEND LS_FIELDCAT TO RT_FIELDCAT.
  clear ls_fieldcat.
  POS = POS + 1.
  LS_FIELDCAT-COL_POS       =  POS.
  LS_FIELDCAT-FIELDNAME     = 'DDTEXT'.
  ls_fieldcat-ref_fieldname = 'DDTEXT'.
  LS_FIELDCAT-REF_TABNAME   =  'DD03T'.
*  LS_FIELDCAT-NO_OUT        = 'X'.
     APPEND LS_FIELDCAT TO RT_FIELDCAT.
ENDFORM.   "fieldcat_init


* Data selection
FORM SELECT_DATA
  TABLES RT_OUTTAB LIKE GT_OUTTAB[].
  SELECT DD03L~POSITION   DD03L~TABNAME
         DD03L~FIELDNAME  DD03L~DATATYPE
         DD03L~LENG       DD03L~DECIMALS
         DD03T~DDTEXT
         DD04T~DDTEXT     DD01T~DDTEXT
         INTO (RT_OUTTAB-POSITION, RT_OUTTAB-TABNAME,
               RT_OUTTAB-FIELDNAME, RT_OUTTAB-DATATYPE,
               RT_OUTTAB-DDLENG, RT_OUTTAB-DECIMALS,
               RT_OUTTAB-DDTEXT,
               RT_OUTTAB-EDDTEXT,RT_OUTTAB-DDDTEXT)
         FROM DD03L LEFT JOIN DD03T
         ON DD03L~TABNAME = DD03T~TABNAME
            AND DD03L~FIELDNAME = DD03T~FIELDNAME
            AND DD03T~DDLANGUAGE = SY-LANGU
         LEFT JOIN DD04T
           ON DD03L~ROLLNAME = DD04T~ROLLNAME
            AND DD04T~DDLANGUAGE = SY-LANGU
         LEFT JOIN DD01T
           ON DD03L~DOMNAME = DD01T~DOMNAME
           AND DD01T~DDLANGUAGE = SY-LANGU
         WHERE DD03L~TABNAME =  P_TNAME
         ORDER BY DD03L~POSITION.
    IF RT_OUTTAB-DDTEXT = SPACE.
      IF RT_OUTTAB-EDDTEXT = SPACE.
         RT_OUTTAB-DDTEXT = RT_OUTTAB-DDDTEXT.
      ELSE.
         RT_OUTTAB-DDTEXT = RT_OUTTAB-EDDTEXT.
      ENDIF.
    ENDIF.
    APPEND RT_OUTTAB.
  ENDSELECT.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  FUNCTION_EXCLUDE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_EXCLUDE  text                                              *
*----------------------------------------------------------------------*
form function_exclude tables   p_exclude structure exclude.
*  data : rcode like sy-subrc.
* clear p_exclude.
* refresh p_exclude.
* exclude-fcode = 'EERW'.
* append exclude.
* exclude-fcode = 'EXIT'.
* append exclude.
endform.                               " FUNCTION_EXCLUDE

### SAP 采购过程中实现物料替换的最佳实践 在SAP系统中进行采购时,如果需要替换物料,则需遵循一系列严格的操作流程以确保数据的一致性和准确性。虽然提供的参考资料未直接涉及此过程[^1],基于专业知识和经验,以下是关于如何在SAP系统内执行物料替换的一些指导原则: #### 评估现有物料情况 在决定更换物料前,应先审查当前使用的物料状态及其历史记录。这可以通过事务码`MB5T`查看特定时间段内的收货移动类型统计;利用`MB5B`获取更详细的货物接收信息。 #### 创建并审批变更请求 对于任何重要的物料变动,建议发起正式的变更申请文档,在其中详细说明替代原因、新旧材料规格对比以及预期影响范围等重要事项。该文件通常由相关部门审核批准后才能继续后续工作流。 #### 更新主数据配置 一旦获得授权实施更改,下一步就是调整相关联的对象属性设置: - **物料主记录**:进入模块`MM02`修改目标条目下的基本信息段落; - **供应商信息**:通过`VL02N`编辑合作伙伴资料中的商品详情部分; - **采购合同/协议**:依据实际情况选用合适的工具(如`ME32L`)修订已存在的长期供应契约条款或新建一份临时性的补充协定书。 #### 测试环境验证 为了降低风险,在实际应用之前务必在一个隔离测试实例里充分检验新的参数设定是否合理有效,并确认整个供应链上下游环节均能正常运作无误。 #### 正式上线部署 最后一步是在生产环境中激活所做的改动。此时应当密切监控初期阶段的各项指标表现,及时响应可能出现的问题反馈直至稳定运行为止。 ```sql SELECT * FROM EKKO WHERE EBELN IN ('OldMaterialPO', 'NewMaterialPO'); ``` 上述SQL语句可用于比较两个不同物料对应的采购订单头表字段差异。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值