• 选择屏幕部分应用


    *实现目标
    *1.按照选择屏幕的样式来实现。
    *2.库存地点和工厂必输
    *3.盘点日期设置初始值,要求设置的是选择范围,有上限和下限
    *4.给会计年度添加搜索帮助,搜索帮助的范围从1880年-2014年,使用屏幕事件AT SELECTION-SCREEN ON VALUE-REQUEST FOR 。
    *5.使用框按照屏幕样式将元素分别列在不同的框中
    *6.当‘选择排序方式’打勾了之后,显示两个单选按钮‘按库存凭证排序’和‘按物理排序’;否则不显示
    *7.在程序中定义内表,根据你在选择屏幕上维护的筛选条件,在数据库查找符合条件的数据放在内表中。
    *---------------------------------begin----------------------------------------------------------------
    TABLES:IKPF,ISEG.
    
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001."使用框按照屏幕样式将元素分别列在不同的框中
    PARAMETERS:P_WERKS TYPE IKPF-WERKS,
               P_LGORT TYPE IKPF-LGORT.
    SELECT-OPTIONS:S_GIDAT FOR IKPF-GIDAT.
    SELECT-OPTIONS:S_MATNR FOR ISEG-MATNR.
    SELECT-OPTIONS:S_IBLNR FOR IKPF-IBLNR.
    SELECT-OPTIONS:S_GJAHR FOR IKPF-GJAHR NO-EXTENSION.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002."使用框按照屏幕样式将元素分别列在不同的框中
    PARAMETERS:A TYPE CHAR1 AS CHECKBOX USER-COMMAND F DEFAULT 'X',
               B TYPE CHAR1 RADIOBUTTON GROUP G1 MODIF ID B1,
               C TYPE CHAR1 RADIOBUTTON GROUP G1 MODIF ID B1.
    SELECTION-SCREEN END OF BLOCK B2.
    
    AT SELECTION-SCREEN OUTPUT."当‘选择排序方式’打勾了之后,显示两个单选按钮‘按库存凭证排序’和‘按物理排序’;否则不显示
      LOOP AT SCREEN.
        IF A = 'X'.
          IF SCREEN-GROUP1 = 'B1'.
            SCREEN-ACTIVE = 1.
            MODIFY SCREEN.
          ENDIF.
        ELSE.
          IF SCREEN-GROUP1 = 'B1'.
            SCREEN-ACTIVE = 0.
            MODIFY SCREEN.
          ENDIF.
        ENDIF.
      ENDLOOP.
    
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_GJAHR-LOW."给会计年度添加搜索帮助,搜索帮助的范围从1880年-2014年
      PERFORM DATA_GET USING S_GJAHR-LOW.
    
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_GJAHR-HIGH."给会计年度添加搜索帮助,搜索帮助的范围从1880年-2014年
      PERFORM DATA_GET USING S_GJAHR-HIGH.
    
    START-OF-SELECTION."在程序中定义内表,根据你在选择屏幕上维护的筛选条件,在数据库查找符合条件的数据放在内表中。
      IF B = 'X'.
        PERFORM SORT_LABST.
      ENDIF.
      IF C = 'X'.
        PERFORM SORT_MATNR.
      ENDIF.
    
    FORM DATA_GET USING DATE1.
    
      DATA:DATE TYPE WORKFLDS-GKDAY.
      CALL FUNCTION 'F4_DATE'
        EXPORTING
          DATE_FOR_FIRST_MONTH         = SY-DATUM
        IMPORTING
          SELECT_DATE                  = DATE
        EXCEPTIONS
          CALENDAR_BUFFER_NOT_LOADABLE = 1
          DATE_AFTER_RANGE             = 2
          DATE_BEFORE_RANGE            = 3
          DATE_INVALID                 = 4
          FACTORY_CALENDAR_NOT_FOUND   = 5
          HOLIDAY_CALENDAR_NOT_FOUND   = 6
          PARAMETER_CONFLICT           = 7
          OTHERS                       = 8.
      IF SY-SUBRC <> 0.
    * Implement suitable error handling here
      ENDIF.
    
      IF SY-SUBRC = 0.
        DATE1 =  DATE.
      ENDIF.
    ENDFORM.
    *-------------------------------------------------由于盘点表没数据,换了库存表------------------------------------------
    FORM SORT_MATNR .
      SELECT MARD~MATNR, MAKTX,WERKS,LGORT,LABST INTO TABLE @DATA(LT_MATNR)  FROM MARD  INNER JOIN MAKT ON MARD~MATNR = MAKT~MATNR UP TO 10 ROWS.
      SORT LT_MATNR BY MATNR LABST.
    
      LOOP AT LT_MATNR INTO DATA(LS_MATNR).
        WRITE:/ LS_MATNR-MATNR,LS_MATNR-LABST.
      ENDLOOP.
    ENDFORM.
    
    FORM SORT_LABST .
      SELECT MARD~MATNR, MAKTX,WERKS,LGORT,LABST INTO TABLE @DATA(LT_MATNR1)  FROM MARD  INNER JOIN MAKT ON MARD~MATNR = MAKT~MATNR UP TO 10 ROWS.
      SORT LT_MATNR1 BY LABST MATNR.
    
      LOOP AT LT_MATNR1 INTO DATA(LS_MATNR1)  .
        WRITE:/ LS_MATNR1-LABST,LS_MATNR1-MATNR.
      ENDLOOP.
    ENDFORM.

  • 相关阅读:
    如何高效的学习技术
    面试连环炮系列(二十三): StringBuffer与StringBuild的区别
    面试连环炮系列(二十二):常用的设计模式有哪些
    算法天天练709:字符串转小写
    面试连环炮系列(二十一):你们的项目怎么使用kafka
    算法天天练771:查找字符串出现的次数
    初次进入职场如何工作与学习
    面试连环炮系列(二十):TCP的滑动窗口协议是什么
    算法天天练334:字符串翻转
    面试连环炮系列(十九):分布式锁的实现方案
  • 原文地址:https://www.cnblogs.com/BruceKing/p/11422968.html
Copyright © 2020-2023  润新知