做出工资明细表的查询屏幕

该段代码是用SAPABAP语言编写的,用于创建一个报表ZDZHT_LBX007_3。程序中定义了数据类型和变量,设置了参数和选择选项以过滤工资明细数据。用户可以选择更新或查看数据,更新时会检查输入并尝试修改数据库中的记录,而查看时则会根据用户选择显示工资明细信息。
摘要由CSDN通过智能技术生成

*&---------------------------------------------------------------------*
*& Report ZDZHT_LBX007_3
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZDZHT_LBX007_3
LINE-COUNT 10(2)                                 "行数
LINE-SIZE 72.                                    "页面尺寸
*&---------------------------------------------------------------------*
*& TYPES定義
*&---------------------------------------------------------------------*
TYPES:
  BEGIN OF TS_WA,
    W_COM1  TYPE ZDZHT_HZN_DEMO4-Z_COM,          "公司ID
    W_DEP1  TYPE ZDZHT_HZN_DEMO4-Z_DEP,          "部门ID
    W_NAME1 TYPE ZDZHT_HZN_DEMO4-Z_NAME,         "姓名
    W_DATE1 TYPE ZDZHT_HZN_DEMO4-Z_DATE,         "日期
    W_SAL1  TYPE ZDZHT_HZN_DEMO4-Z_SAL,          "薪资
    W_UNIT1 TYPE ZDZHT_HZN_DEMO4-Z_UNIT,         "货币代码
  END OF TS_WA.
*&---------------------------------------------------------------------*
*& DATA定義
*&---------------------------------------------------------------------*
DATA:
  HEADER(30),
  W_COM     TYPE ZHZN_E_COM,                     "公司ID
  W_DEP     TYPE ZHZN_E_DEP,                     "部门ID
  W_NAME    TYPE ZHZN_E_NAME3,                   "姓名
  W_DATE    TYPE ZHZN_E_DATE,                    "日期
  W_SAL(10) TYPE C,                              "薪资
  W_UNIT    TYPE ZHZN_E_UNIT2,                   "货币代码
  ST_ADD    TYPE TS_WA,
  I_ADD     TYPE STANDARD TABLE OF ZDZHT_HZN_DEMO4 WITH HEADER LINE,
  I_ADD2    TYPE TABLE OF TS_WA.
*&---------------------------------------------------------------------*
*& PARAMETERS/SELECT-OPTIONS
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1
  WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS RB_UP TYPE CHAR01
  RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND UC1.
SELECTION-SCREEN COMMENT 2(8) TEXT-003
  FOR FIELD  RB_UP.

SELECTION-SCREEN POSITION 14.

PARAMETERS RB_SHOW TYPE CHAR01
  RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 16(8) TEXT-004
FOR FIELD RB_SHOW.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2
  WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:
  S_COM FOR W_COM MODIF ID M1,
  S_DEP FOR W_DEP MODIF ID M1,
  S_NAME FOR W_NAME MODIF ID M1,
  S_DATE FOR W_DATE MODIF ID M1,
  S_SAL FOR W_SAL MODIF ID M2 ,
  S_UNIT FOR W_UNIT NO-EXTENSION NO INTERVALS MODIF ID M1.
SELECTION-SCREEN END OF BLOCK B2.
*&---------------------------------------------------------------------*
*& INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
HEADER = '工资明细表信息表示'.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN OUTPUT
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF RB_UP = 'X'.                                 "选择更新时隐藏以下字段
    SCREEN-ACTIVE = 1.
  IF SCREEN-NAME = 'S_COM-HIGH'
   OR SCREEN-NAME = '%_S_COM_%_APP_%-VALU_PUSH'
   OR SCREEN-NAME = 'S_DEP-HIGH'
   OR SCREEN-NAME = '%_S_DEP_%_APP_%-VALU_PUSH'
   OR SCREEN-NAME = 'S_NAME-HIGH'
   OR SCREEN-NAME = '%_S_NAME_%_APP_%-VALU_PUSH'
   OR SCREEN-NAME = 'S_DATE-HIGH'
   OR SCREEN-NAME = '%_S_DATE_%_APP_%-VALU_PUSH'
   OR SCREEN-NAME = 'S_SAL-HIGH'
   OR SCREEN-NAME = '%_S_SAL_%_APP_%-VALU_PUSH'.
  SCREEN-INPUT = 0.
  SCREEN-INVISIBLE = 1.
  ENDIF.
ENDIF.
IF RB_SHOW = 'X' AND SCREEN-GROUP1 = 'M2'.      "选择表示时隐藏以下字段
   SCREEN-ACTIVE = 0.
ENDIF.
    MODIFY SCREEN.
ENDLOOP.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
IF RB_UP = 'X'.                                  "选择更新
   PERFORM P_UPDATA.
ELSEIF RB_SHOW = 'X'.                            "选择表示
   PERFORM P_VIEW.
ENDIF.
*&---------------------------------------------------------------------*
*& TOP-OF-PAGE
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
  WRITE:HEADER.
  SKIP.
*&---------------------------------------------------------------------*
*& END-OF-PAGE
*&---------------------------------------------------------------------*
END-OF-PAGE.
  ULINE.                                         "下划线
  WRITE:'end of page'.
*&---------------------------------------------------------------------*
*& AT LINE SELECTION
*&---------------------------------------------------------------------*
AT LINE-SELECTION.                               "点击选择
  MESSAGE: 'You clicked list' TYPE 'S'.
*&---------------------------------------------------------------------*
*& Form P_UPDATA
*&---------------------------------------------------------------------*
*& 更新或插入工资明细表
*&---------------------------------------------------------------------*
FORM P_UPDATA .

IF S_COM IS INITIAL.                             "公司ID为空
    MESSAGE'请输入公司ID' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.

CLEAR I_ADD.
  I_ADD-Z_COM  = S_COM-LOW.                      "公司ID
  I_ADD-Z_DEP  = S_DEP-LOW.                      "部门ID
  I_ADD-Z_NAME = S_NAME-LOW.                     "姓名
  I_ADD-Z_DATE = S_DATE-LOW.                     "日期
  I_ADD-Z_SAL  = S_SAL-LOW.                      "薪资
  I_ADD-Z_UNIT = S_UNIT-LOW.                     "货币代码
MODIFY ZDZHT_HZN_DEMO4 FROM I_ADD.
*判断异常
IF SY-SUBRC = 0.
   COMMIT WORK.
   MESSAGE '数据更新成功' TYPE 'S'.
 ELSE.
   ROLLBACK WORK.
   MESSAGE '数据更新失败' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form P_VIEW
*&---------------------------------------------------------------------*
*& 表示工资明细表
*&---------------------------------------------------------------------*
FORM P_VIEW .
CASE S_COM-LOW.
  WHEN ''.                                       "公司ID为空
SELECT A~Z_COM                                   "公司ID
       A~Z_DEP                                   "部门ID
       A~Z_NAME                                  "姓名
       A~Z_DATE                                  "日期
       A~Z_SAL                                   "薪资
       A~Z_UNIT                                  "货币代码
 INTO TABLE I_ADD2
 FROM ZDZHT_HZN_DEMO4 AS A.


LOOP AT I_ADD2 INTO ST_ADD.
  WRITE: / ST_ADD-W_COM1,                        "公司ID
         ST_ADD-W_DEP1,                          "部门ID
         ST_ADD-W_NAME1,                         "姓名
         ST_ADD-W_DATE1,                         "日期
         ST_ADD-W_UNIT1.                         "货币代码
ENDLOOP.

WHEN OTHERS.
SELECT SINGLE *
  FROM ZDZHT_HZN_DEMO4
  WHERE Z_COM = @S_COM-LOW
  INTO @DATA(ST_WA).

*判断异常
IF SY-SUBRC = 0.
  WRITE: / ST_WA-Z_COM,                          "公司ID
         ST_WA-Z_DEP,                            "部门ID
         ST_WA-Z_NAME,                           "姓名
         ST_WA-Z_DATE,                           "日期
         ST_WA-Z_UNIT.                           "货币代码
ELSE.
  MESSAGE '公司ID不存在' TYPE 'E' DISPLAY LIKE 'S'.
ENDIF.
ENDCASE.
ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值