【实用】SAP修改记录表开发

来源:互联网 发布:陈道明 左小青 知乎 编辑:程序博客网 时间:2024/05/22 09:05

首先我们看一下运行效果图:


大部分都是CDHDR表的查询字段。


双击某一行可以查看具体的修改明细字段。


源代码:

REPORT Z_ALV_CDHDR_CDPOS.TYPE-POOLS SLIS.DATA : CDHDR TYPE CDHDR.SELECT-OPTIONS :        S_OBJCLS FOR CDHDR-OBJECTCLAS OBLIGATORY,        S_OBJTID FOR CDHDR-OBJECTID,        S_CHNGNR FOR CDHDR-CHANGENR,        S_USRNAM FOR CDHDR-USERNAME,        S_UDATE FOR CDHDR-UDATE,        S_TIME FOR CDHDR-UTIME,        S_TCODE FOR CDHDR-TCODE,        S_PLNCNR FOR CDHDR-PLANCHNGNR,        S_CHNGNO FOR CDHDR-ACT_CHNGNO,        S_WSPLND FOR CDHDR-WAS_PLANND,        S_CHNGID FOR CDHDR-CHANGE_IND.SELECTION-SCREEN SKIP.PARAMETERS P_MAX TYPE NUMC3 OBLIGATORY DEFAULT '200'.*---------------------------------------------------------------------*TYPES :BEGIN OF TY_S_CDHDR.        INCLUDE STRUCTURE CDHDR.TYPES : CHECKBOX,        END OF TY_S_CDHDR,        BEGIN OF TY_S_CDPOS.        INCLUDE STRUCTURE CDPOS.TYPES : CHECKBOX,END OF TY_S_CDPOS.*---------------------------------------------------------------------*DATA :* Layout for ALV  GS_LAYOUT TYPE SLIS_LAYOUT_ALV,* Change document header  T_CDHDR   TYPE TABLE OF TY_S_CDHDR.*---------------------------------------------------------------------*START-OF-SELECTION.* Read Change document header  SELECT * INTO TABLE T_CDHDR  UP TO P_MAX ROWS  FROM CDHDR  WHERE OBJECTCLAS IN S_OBJCLS  AND OBJECTID IN S_OBJTID  AND CHANGENR IN S_CHNGNR  AND USERNAME IN S_USRNAM  AND UDATE IN S_UDATE  AND UTIME IN S_TIME  AND TCODE IN S_TCODE  AND PLANCHNGNR IN S_PLNCNR  AND ACT_CHNGNO IN S_CHNGNO  AND WAS_PLANND IN S_WSPLND  AND CHANGE_IND IN S_CHNGID.  GS_LAYOUT-ZEBRA = 'X'.  GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.  GS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.* Display ALV  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    EXPORTING      I_CALLBACK_PROGRAM      = SY-CPROG      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'      I_STRUCTURE_NAME        = 'CDHDR'      IS_LAYOUT               = GS_LAYOUT    TABLES      T_OUTTAB                = T_CDHDR.*---------------------------------------------------------------------** FORM USER_COMMAND **---------------------------------------------------------------------*FORM USER_COMMAND USING U_UCOMM TYPE SYUCOMM      US_SELFIELD TYPE SLIS_SELFIELD.                       "#EC CALLED* Macro definition  DEFINE M_SORT.    ADD 1 TO ls_sort-spos.    ls_sort-fieldname = &1.    ls_sort-UP = 'X'.    APPEND ls_sort TO lt_sort.  END-OF-DEFINITION.  DATA :    LS_CDHDR TYPE TY_S_CDHDR,    LS_SORT  TYPE SLIS_SORTINFO_ALV,    LT_SORT  TYPE SLIS_T_SORTINFO_ALV,* Change document items    LT_CDPOS TYPE TABLE OF TY_S_CDPOS.  CASE U_UCOMM.    WHEN '&IC1'.      PERFORM CHECK_MARKED USING US_SELFIELD.* Read Change document items      LOOP AT T_CDHDR INTO LS_CDHDR WHERE CHECKBOX = 'X'.        SELECT * APPENDING TABLE LT_CDPOS        FROM CDPOS        WHERE OBJECTCLAS = LS_CDHDR-OBJECTCLAS        AND OBJECTID = LS_CDHDR-OBJECTID        AND CHANGENR = LS_CDHDR-CHANGENR.      ENDLOOP.      M_SORT 'CHANGENR'.* Display ALV      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'        EXPORTING          I_STRUCTURE_NAME = 'CDPOS'          IS_LAYOUT        = GS_LAYOUT          IT_SORT          = LT_SORT        TABLES          T_OUTTAB         = LT_CDPOS.  ENDCASE.ENDFORM. " USER_COMMAND*---------------------------------------------------------------------** Form CHECK_MARKED*---------------------------------------------------------------------** What has been marked in t_cdhdr*---------------------------------------------------------------------*FORM CHECK_MARKED USING US_SELFIELD TYPE SLIS_SELFIELD.  FIELD-SYMBOLS : <FS>    TYPE TY_S_CDHDR.  READ TABLE T_CDHDR TRANSPORTING NO FIELDS WITH KEY CHECKBOX = 'X'.  IF NOT SY-SUBRC IS INITIAL AND  NOT US_SELFIELD-TABINDEX IS INITIAL.    READ TABLE T_CDHDR INDEX US_SELFIELD-TABINDEX ASSIGNING <FS>.    <FS>-CHECKBOX = 'X'.  ENDIF.ENDFORM. " CHECK_MARKED


原创粉丝点击