SAP dialog实例

这篇博客详细介绍了如何在SAP中创建一个带有TabStrip的对话框,包括创建屏幕、定义子屏幕、设置表格控制以及程序实现。在子屏幕中,博主展示了如何绘制表格并进行数据操作。通过调用屏幕和处理用户输入,实现了在不同子屏幕间切换和表格数据的增删改查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先建一个“通常”屏幕0100,再建三个子屏幕

其中0100中选择工具条中的Table Control(with Wizard),绘制TAB11和通过向导abstrip创建SUB1

2.在子屏幕0101中绘制table  名称TAB1


3.程序的实现

REPORT ZTEST_Y010.
TABLESmsegekbeekkot024lfa1,makt.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

*&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'SUB1'
CONSTANTSBEGIN OF C_SUB1,
             TAB1 LIKE SY-UCOMM VALUE 'PUSH1',
             TAB2 LIKE SY-UCOMM VALUE 'PUSH2',
             TAB3 LIKE SY-UCOMM VALUE 'PUSH3',
           END OF C_SUB1.
*&SPWIZARD: DATA FOR TABSTRIP 'SUB1'
CONTROLS:  SUB1 TYPE TABSTRIP.
DATA:      BEGIN OF G_SUB1,
             SUBSCREEN   LIKE SY-DYNNR,
             PROG        LIKE SY-REPID VALUE 'ZTEST_Y010',
             PRESSED_TAB LIKE SY-UCOMM VALUE C_SUB1-TAB1,
           END OF G_SUB1.
DATA:      OK_CODE LIKE SY-UCOMM.
DATA Z_Y008A TYPE TABLE OF ZTET_Y008A WITH HEADER LINE.
DATA Z_Y008B TYPE TABLE OF ZTET_Y008B WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE b_title1 .
PARAMETERSp_bukrs LIKE ekko-bukrs OBLIGATORY DEFAULT 3500 "公司代码
SELECT-OPTIONSs_lifnr FOR mseg-lifnr MEMORY ID lif ,          "供应商编号
    s_ebeln FOR mseg-ebeln MEMORY ID bes ,          "采购订单
    s_matnr FOR mseg-matnr MEMORY ID mat .          "物料代码
SELECTION-SCREEN END OF BLOCK block1.


*增加内表数据
PERFORM GET_DATA.
*  SELECT
*   ebeln
*   mjahr
*   mblnr
*   zeile
*   bwart
*   lgort
*   meins
*   BUDAT_mkpf
*   FROM mseg
*   INTO CORRESPONDING FIELDS OF TABLE  Z_Y008A
*   WHERE EBELN = '3500007055'
*   and WERKS = '3500'"p_bukrs'
*   and bwart = '101'."排除不是101的行
*
* SELECT ekko~bukrs "工厂
*          ekko~ebeln "采购订单编号
*          ekko~ekorg "采购组织
*          ekko~ekgrp "采购组
*          ekko~lifnr "供应商帐户号
*          ekpo~ebelp  "采购订单行项目
*          ekpo~matnr  "采购订单行项目物料
*          ekbe~BUDAT    "过帐日期
*          ekbe~menge   "入库数量  ?在工作 不具有相应字段
*          ekbe~ernam    "创建者
*          eket~etenr  "计划行
*          eket~eindt  "交货日期
*          eket~slfdt  "相关交货日期
*          eket~wemng  "已交货数量
*          eket~banfn  "采购申请
*          FROM  ekko  "从表里读取数据
*         INNER JOIN ekpo ON ekpo~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
*         INNER JOIN ekbe ON ekbe~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
*         INNER JOIN eket ON eket~ebeln = ekko~ebeln "连接MARC表 ,连接条件是PO号相等
*          INTO CORRESPONDING FIELDS OF TABLE Z_Y008B  "将查询结果放到内表里
*    WHERE ekko~bukrs = '3500' " 条件是和查询条件里的值相等
*    AND   ekko~ebeln  = '3500007055'.
*
*  SORT Z_Y008B BY  banfn .
*  DELETE ADJACENT DUPLICATES FROM Z_Y008B COMPARING banfn.


CALL SCREEN 0100.
*&SPWIZARD: OUTPUT MODULE FOR TS 'SUB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: SETS ACTIVE TAB
MODULE SUB1_ACTIVE_TAB_SET OUTPUT.
  SUB1-ACTIVETAB G_SUB1-PRESSED_TAB.
  CASE G_SUB1-PRESSED_TAB.
    WHEN C_SUB1-TAB1.
      G_SUB1-SUBSCREEN '0101'.
    WHEN C_SUB1-TAB2.
      G_SUB1-SUBSCREEN '0102'.
   WHEN C_SUB1-TAB3.
      G_SUB1-SUBSCREEN '0103'.

    WHEN OTHERS.
*&SPWIZARD:      DO NOTHING
  ENDCASE.
ENDMODULE.

*&SPWIZARD: INPUT MODULE FOR TS 'SUB1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GETS ACTIVE TAB
MODULE SUB1_ACTIVE_TAB_GET INPUT.
  OK_CODE SY-UCOMM.
  CASE OK_CODE.
    WHEN C_SUB1-TAB1.
      G_SUB1-PRESSED_TAB C_SUB1-TAB1.
    WHEN C_SUB1-TAB2.
      G_SUB1-PRESSED_TAB C_SUB1-TAB2.
    WHEN C_SUB1-TAB3.
      G_SUB1-PRESSED_TAB C_SUB1-TAB3.
    WHEN OTHERS.
*&SPWIZARD:      DO NOTHING
  ENDCASE.
ENDMODULE.

***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'ZTET_Y008B'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
TABLES:   SPFLI.

*&SPWIZARD: TYPE FOR THE DATA OF TABLECONTROL 'ZTET_Y008B'
TYPESBEGIN OF T_ZTET_Y008B,
         MANDT LIKE SPFLI-MANDT,
         CARRID LIKE SPFLI-CARRID,
         CONNID LIKE SPFLI-CONNID,
         COUNTRYFR LIKE SPFLI-COUNTRYFR,
         CITYFROM LIKE SPFLI-CITYFROM,
         AIRPFROM LIKE SPFLI-AIRPFROM,
         CITYTO LIKE SPFLI-CITYTO,
         AIRPTO LIKE SPFLI-AIRPTO,
       END OF T_ZTET_Y008B.

*&SPWIZARD:&nbs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值