推送生产的人力信息到中间库

51 篇文章 2 订阅
25 篇文章 4 订阅
这是一个用于分析SAP HR系统中离职人员信息的ABAP报告程序。程序从多个表中提取数据,包括人员编号、姓名、生日、年龄、工作岗位、部门等详细信息,并进行统计分析,如工龄、年龄段、离职日期等。同时,提供了筛选条件,允许用户按部门和统计期间进行定制化查询。程序最后将数据上传到外部数据库。
摘要由CSDN通过智能技术生成
*&---------------------------------------------------------------------*
*& REPORT  ZDBCO_HR_PERNR2DB209
*&
*&---------------------------------------------------------------------*
*& AUTHOR GAVIN
*& DATE 20220307
*& FROM  生产 离职人员分析
*&---------------------------------------------------------------------*

REPORT ZDBCO_HR_PERNR2DB209.
TABLES:HRP1001,HRP1000,T517T,T500P,T503T,PA0001,PA0002,PA0008,PA9114,PA0022.

DATA:BEGIN OF W_ITAB OCCURS 0,
  PERNR LIKE PA0000-PERNR, "人员编号
  ENAME LIKE PA0001-ENAME, "姓名
  GBDAT LIKE PA0002-GBDAT,"生日
  AGE TYPE I,"年龄
  AGEGRP(25) TYPE C, "年龄段
  WERKS LIKE PA0001-WERKS,"人事范围
  WERKST LIKE T500P-NAME1,"人事范围描述
  PERSG LIKE PA0001-PERSG,"员工组
  PERSGT LIKE T501T-PTEXT,"员工组描述
  PERSK LIKE PA0001-PERSK,"员工子组
  PERSKT LIKE T503T-PTEXT,"员工子组描述
  PLANS LIKE P0001-PLANS,"职位
  PLANST LIKE T528T-PLSTX,"职位描述
  DEPT1 LIKE HRP1001-OBJID, "一级部门
  DEPT1T LIKE OBJEC-STEXT, "一级部门描述
  DEPT2 LIKE HRP1001-OBJID,
  DEPT2T LIKE OBJEC-STEXT,
  DEPT3 LIKE HRP1001-OBJID,
  DEPT3T LIKE OBJEC-STEXT,
  DEPT4 LIKE HRP1001-OBJID,
  DEPT4T LIKE OBJEC-STEXT,
  DEPT5 LIKE HRP1001-OBJID,
  DEPT5T LIKE OBJEC-STEXT,
  ZBETRG LIKE PA0014-BETRG,
  ZWABC TYPE C,      "岗位ABC
  TRFGR LIKE P0008-TRFGR,"职级
  ZRZDJ LIKE P9114-ZRZDJ,"任职等级
  ZGZDD LIKE P0002-ZGZDD,"工作地点
  ZGZDDT(100) TYPE C,"工作地点描述
  ZZZRQ LIKE P0001-BEGDA,"转正日期
  ZJRJT LIKE P0001-BEGDA,"加入集团
  ZJRGS LIKE P0001-BEGDA,"加入公司
  ZGLQS LIKE P0001-BEGDA,"工龄起算日期
  ZLZRQ LIKE  P0001-BEGDA,"离职日期
  ZLZBJ TYPE C,"离职日期
  ZYDYY LIKE  T530T-MGTXT,"异动原因
  WORKY TYPE I,"以月计数的工龄
  WORKYGR(60)  TYPE C,"以月计数的工龄分布
  ZGESC LIKE Q0002-GESC1,"性别
  GBORT LIKE P0002-GBORT,"籍贯
  SLART LIKE P0022-SLART,"学历
  SLTXT LIKE T517T-STEXT,"学历描述
END OF W_ITAB.

DATA:PERDAT LIKE SY-DATUM,
     PERDATE LIKE SY-DATUM.

SELECTION-SCREEN BEGIN OF BLOCK LBS WITH FRAME TITLE TEXT1.

SELECT-OPTIONS: S_DATE FOR HRP1001-BEGDA, "统计期间
S_OBJID FOR HRP1001-OBJID DEFAULT '50019326'.  "统计的部门 默认工厂管理部
*PARAMETERS:PLEVEL LIKE HRRHAS-TDEPTH DEFAULT 3 OBLIGATORY."3级深度
SELECTION-SCREEN END OF BLOCK LBS.

INITIALIZATION.
  TEXT1 = '请输入条件'.

  CALL FUNCTION 'RSARCH_DATE_SHIFT'
    EXPORTING
      I_DATE             = SY-DATUM
      I_SHIFT            = -1
      I_SHIFT_UNIT       = 'MON'
      I_OPTION           = 'GT'
    IMPORTING
      E_DATE             = PERDAT
    EXCEPTIONS
      ILLEGAL_SHIFT_UNIT = 1
      OUT_OF_BOUNDS      = 2
      ILLEGAL_OPTION     = 3
      OTHERS             = 4.

  PERDAT+6(2) = '01'.

  CALL FUNCTION 'LAST_DAY_OF_MONTHS'
    EXPORTING
      DAY_IN            = PERDAT
    IMPORTING
      LAST_DAY_OF_MONTH = PERDATE
    EXCEPTIONS
      DAY_IN_NO_DATE    = 1
      OTHERS            = 2.

  S_DATE-LOW = PERDAT.S_DATE-HIGH = PERDATE.
  S_DATE-SIGN = 'I'.S_DATE-OPTION = 'BT'.
  APPEND  S_DATE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR  S_OBJID-LOW.
  PERFORM FRM_F4_HELPORGID.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR  S_OBJID-HIGH.
  PERFORM FRM_F4_HELPORGID.

START-OF-SELECTION.

  PERFORM GETDATA.

  PERFORM UPTO209.


*&---------------------------------------------------------------------*
*&      FORM  GETDATA
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
FORM GETDATA.
  DATA:LGZDD LIKE DD07T OCCURS 0 WITH HEADER LINE,"工作地点
  LT_0000 TYPE STANDARD TABLE OF PA0000,
  LW_0000 TYPE  PA0000.
  DATA:BEGIN OF LOCITAB OCCURS 0,
    OBJID LIKE HRP1000-OBJID,
    STEXT LIKE HRP1000-STEXT,
  END OF LOCITAB.
  DATA:LDATE LIKE SY-DATUM.
  DATA:LSTRUCT LIKE STRUC OCCURS 0 WITH HEADER LINE.
  DATA:LFSTRUCT LIKE STRUC OCCURS 0 WITH HEADER LINE.
  DATA:LOBJ LIKE  OBJEC OCCURS 0 WITH HEADER LINE .
  DATA:WOBJ LIKE OBJEC.
  DATA:CNTALL TYPE I.
  DATA:CNTOFF TYPE I.
  DATA:LP0000 LIKE PA0000 OCCURS 0 WITH HEADER LINE.

  SELECT * INTO TABLE LGZDD
    FROM DD07T
    WHERE DOMNAME = 'ZD_HRGZDD' AND DDLANGUAGE = 'ZH' AND AS4LOCAL = 'A'.

  SELECT OBJID STEXT
  FROM HRP1000
  INTO  TABLE LOCITAB
  WHERE OTYPE = 'O' AND PLVAR = '01' AND LANGU = SY-LANGU AND OBJID IN S_OBJID.

  LOOP AT   LOCITAB.
    CALL FUNCTION 'RH_STRUC_GET'
      EXPORTING
        ACT_OTYPE       = 'O'
        ACT_OBJID       = LOCITAB-OBJID
        ACT_WEGID       = 'O-O-P'
*       ACT_INT_FLAG    =
*       ACT_PLVAR       = ''
        ACT_BEGDA       = S_DATE-LOW
        ACT_ENDDA       = S_DATE-HIGH
        ACT_TFLAG       = 'X'
        ACT_VFLAG       = 'X'
        AUTHORITY_CHECK = 'X'
      TABLES
*       RESULT_TAB      = LT_RESULT
        RESULT_OBJEC    = LOBJ
        RESULT_STRUC    = LSTRUCT
      EXCEPTIONS
        NO_PLVAR_FOUND  = 1
        NO_ENTRY_FOUND  = 2
        OTHERS          = 3.

    LFSTRUCT[] = LSTRUCT[].

    FIELD-SYMBOLS <FN> TYPE OBJEC.
    LOOP AT LSTRUCT.
      IF LSTRUCT-OTYPE = 'O'.
        IF LSTRUCT-LEVEL = 1.
          W_ITAB-DEPT1 = LSTRUCT-OBJID.
          READ TABLE LOBJ INDEX SY-TABIX ASSIGNING <FN>.
          W_ITAB-DEPT1T = <FN>-STEXT.
          CLEAR W_ITAB-DEPT2.CLEAR W_ITAB-DEPT3. CLEAR W_ITAB-DEPT4. CLEAR W_ITAB-DEPT5.
          CLEAR W_ITAB-DEPT2T.CLEAR W_ITAB-DEPT3T. CLEAR W_ITAB-DEPT4T. CLEAR W_ITAB-DEPT5T.
        ENDIF.
        IF LSTRUCT-LEVEL = 2.
          W_ITAB-DEPT2 = LSTRUCT-OBJID.
          READ TABLE LOBJ INDEX SY-TABIX ASSIGNING <FN>.
          W_ITAB-DEPT2T = <FN>-STEXT.
          CLEAR W_ITAB-DEPT3. CLEAR W_ITAB-DEPT4. CLEAR W_ITAB-DEPT5.
          CLEAR W_ITAB-DEPT3T. CLEAR W_ITAB-DEPT4T. CLEAR W_ITAB-DEPT5T.
        ENDIF.
        IF LSTRUCT-LEVEL = 3.
          W_ITAB-DEPT3 = LSTRUCT-OBJID.
          READ TABLE LOBJ INDEX SY-TABIX ASSIGNING <FN>.
          W_ITAB-DEPT3T = <FN>-STEXT.
          CLEAR W_ITAB-DEPT4. CLEAR W_ITAB-DEPT5.
          CLEAR W_ITAB-DEPT4T. CLEAR W_ITAB-DEPT5T.
        ENDIF.
        IF LSTRUCT-LEVEL = 4.
          W_ITAB-DEPT4 = LSTRUCT-OBJID.
          READ TABLE LOBJ INDEX SY-TABIX ASSIGNING <FN>.
          W_ITAB-DEPT4T = <FN>-STEXT.
          CLEAR W_ITAB-DEPT5.CLEAR W_ITAB-DEPT5T.
        ENDIF.
        IF LSTRUCT-LEVEL = 5.
          W_ITAB-DEPT5 = LSTRUCT-OBJID.
          READ TABLE LOBJ INDEX SY-TABIX ASSIGNING <FN>.
          W_ITAB-DEPT5T = <FN>-STEXT.
        ENDIF.
      ENDIF.
      IF LSTRUCT-OTYPE = 'P'.
        W_ITAB-PERNR = LSTRUCT-OBJID.
        APPEND W_ITAB.
      ENDIF.
    ENDLOOP.
  ENDLOOP.

  SORT W_ITAB BY PERNR.
*  去重复
  DELETE ADJACENT DUPLICATES FROM W_ITAB COMPARING PERNR.

  DATA:S_PERNR LIKE BAPI_ITOB_SEL_DESCRIPT OCCURS 0 WITH HEADER LINE.
  S_PERNR-SIGN = 'I'.S_PERNR-OPTION = 'EQ'.
  LOOP AT W_ITAB.
    S_PERNR-LOW = W_ITAB-PERNR.
    APPEND S_PERNR.
  ENDLOOP.

  SELECT * INTO TABLE LT_0000 FROM PA0000
    WHERE PERNR IN S_PERNR.

  FIELD-SYMBOLS <FS> LIKE W_ITAB.
  LOOP AT W_ITAB ASSIGNING <FS>.
                                                            "PA9001
    SELECT SINGLE PA0001~ENAME PA0001~WERKS T500P~NAME1 PA0001~PERSG T501T~PTEXT PA0001~PERSK T503T~PTEXT
         PA0001~PLANS
        INTO (<FS>-ENAME,<FS>-WERKS,<FS>-WERKST,<FS>-PERSG ,<FS>-PERSGT,<FS>-PERSK ,<FS>-PERSKT,<FS>-PLANS )
        FROM PA0001
        LEFT JOIN T500P ON PERSA = PA0001~WERKS AND MOLGA = 28
        LEFT JOIN T501T ON T501T~SPRSL = 1 AND T501T~PERSG = PA0001~PERSG
        LEFT JOIN T503T ON T503T~SPRSL = 1 AND T503T~PERSK = PA0001~PERSK
        WHERE PERNR = <FS>-PERNR AND BEGDA <= SY-DATUM  AND ENDDA >= SY-DATUM.
                                                            "PA0041
    SELECT  DAT01 DAT02  DAT03
      INTO (<FS>-ZJRJT,<FS>-ZJRGS,<FS>-ZGLQS )
      UP TO 1 ROWS
      FROM PA0041
      WHERE PERNR = <FS>-PERNR
      ORDER BY BEGDA DESCENDING.
      ENDSELECT.

    LOOP AT LT_0000 INTO LW_0000 WHERE PERNR = <FS>-PERNR."转正 没有找到 默认第一个日期 + 3个月
      IF LW_0000-MASSN  = 'Z3'.
        <FS>-ZZZRQ = LW_0000-BEGDA.
      ELSEIF LW_0000-MASSN = 'Z7' OR LW_0000-MASSN = 'Z8'.
        <FS>-ZLZRQ  = LW_0000-BEGDA."离职日期
        <FS>-ZLZBJ = 'X'.
        "20200911 ADD BY GAVIN FOR 邱婷婷 新增异动原因
        SELECT SINGLE MGTXT INTO <FS>-ZYDYY FROM T530T
        WHERE MASSN = LW_0000-MASSN AND MASSG  = LW_0000-MASSG AND SPRSL = 1.
      ENDIF.
    ENDLOOP.

    IF <FS>-ZZZRQ IS INITIAL.
      CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
        EXPORTING
          DATE      = <FS>-ZJRGS    "日期
          DAYS      = 0            "天数
          MONTHS    = 3             "月数
          SIGNUM    = '+'
          YEARS     = 0             "年数
        IMPORTING
          CALC_DATE = <FS>-ZZZRQ.   " (2016.01.11)
    ENDIF.

    "统计工龄
    IF <FS>-ZLZRQ IS INITIAL.
      CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
        EXPORTING
          BEGDA             = <FS>-ZGLQS
          ENDDA             = SY-DATUM
*         I_KZ_INCL_BIS     = ' '
*         I_KZ_VOLLE_MONATE = 'X'
        IMPORTING
          D_MONTHS          = <FS>-WORKY.
    ELSE.
      CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
        EXPORTING
          BEGDA             = <FS>-ZGLQS
          ENDDA             = <FS>-ZLZRQ
*         I_KZ_INCL_BIS     = ' '
*         I_KZ_VOLLE_MONATE = 'X'
        IMPORTING
          D_MONTHS          = <FS>-WORKY.
    ENDIF.
    IF  <FS>-WORKY <= 3.
      <FS>-WORKYGR = '0~3个月'.
    ELSEIF  <FS>-WORKY <= 6.
      <FS>-WORKYGR = '3~6个月'.
    ELSEIF  <FS>-WORKY <= 12.
      <FS>-WORKYGR = '6~12个月'.
    ELSEIF  <FS>-WORKY <= 36.
      <FS>-WORKYGR = '1~3年'.
    ELSEIF  <FS>-WORKY <= 60.
      <FS>-WORKYGR = '3~5年'.
    ELSEIF  <FS>-WORKY <= 120.
      <FS>-WORKYGR = '5~10年'.
    ELSEIF  <FS>-WORKY <= 240.
      <FS>-WORKYGR = '10~20年'.
    ELSE.
      <FS>-WORKYGR = '20年以上'.
    ENDIF.
    "月记工龄
                                                            "PA0002
    SELECT SINGLE GBDAT GBORT ZGZDD GESCH
      INTO (<FS>-GBDAT,<FS>-GBORT,<FS>-ZGZDD,<FS>-ZGESC)
      FROM PA0002
      WHERE PERNR = <FS>-PERNR AND BEGDA <= SY-DATUM  AND ENDDA >= SY-DATUM.

    IF <FS>-ZGESC =  1.
      <FS>-ZGESC = '男'.
    ELSE .
      <FS>-ZGESC = '女'.
    ENDIF.

    LOOP AT LGZDD WHERE DOMVALUE_L = <FS>-ZGZDD.
      <FS>-ZGZDDT = LGZDD-DDTEXT.
    ENDLOOP.

    <FS>-AGE = SY-DATUM+0(4) - <FS>-GBDAT+0(4).
    IF <FS>-AGE >= 18 AND <FS>-AGE <= 25.
      <FS>-AGEGRP = '18~25'.
    ELSEIF <FS>-AGE >= 26 AND <FS>-AGE <= 35.
      <FS>-AGEGRP = '26~35'.
    ELSEIF <FS>-AGE >= 36 AND <FS>-AGE <= 45.
      <FS>-AGEGRP = '36~45'.
    ELSEIF <FS>-AGE >= 46 AND <FS>-AGE <= 59.
      <FS>-AGEGRP = '46~59'.
    ELSEIF <FS>-AGE >= 60.
      <FS>-AGEGRP = '60以上'.
    ENDIF.
                                                            "PA0022
    SELECT  PA0022~SLART STEXT
      INTO (<FS>-SLART,<FS>-SLTXT)
      UP TO 1 ROWS
      FROM PA0022
      JOIN T517T ON T517T~SLART = PA0022~SLART  AND  T517T~SPRSL = 1
      WHERE PERNR = <FS>-PERNR
      ORDER BY BEGDA DESCENDING.
    ENDSELECT.
    "岗位 ABC 0(含)-300算C     300(含)-600算B    600(含)以上算A
    " 以PA0014 4040 类型的值为准
    IF <FS>-ZLZRQ IS INITIAL.
      SELECT SINGLE BETRG INTO <FS>-ZBETRG
        FROM PA0014
        WHERE PERNR = <FS>-PERNR AND BEGDA <= SY-DATUM  AND ENDDA >= SY-DATUM AND SUBTY = '4040'..
    ELSE.
      SELECT BETRG INTO <FS>-ZBETRG
        UP TO 1 ROWS
      FROM PA0014
      WHERE PERNR = <FS>-PERNR AND SUBTY = '4040'
        ORDER BY BEGDA DESCENDING.
      ENDSELECT.
    ENDIF.
    IF <FS>-ZBETRG < 300.
      <FS>-ZWABC = 'C'.
    ELSEIF <FS>-ZBETRG < 600.
      <FS>-ZWABC = 'B'.
    ELSE.
      <FS>-ZWABC = 'A'.
    ENDIF.
                                                            "PA0008
    SELECT SINGLE TRFGR  INTO <FS>-TRFGR
      FROM PA0008
      WHERE PERNR = <FS>-PERNR AND BEGDA <= SY-DATUM  AND ENDDA >= SY-DATUM.

  ENDLOOP.
ENDFORM.                    "GETDATA


*&---------------------------------------------------------------------*
*&      FORM  UPTO209
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
FORM UPTO209.
  DATA: LCX_ERROR TYPE REF TO CX_ROOT.
  DATA: ERR_TEXT TYPE C LENGTH 1000.
  DATA:P_DBNAME LIKE DBCON-CON_NAME.
  DATA:PYEAR(4) TYPE C.
  DATA:PMONTH(2) TYPE C.
  DATA:CNT TYPE I.
  PYEAR = S_DATE-LOW+0(4).
  PMONTH  = S_DATE-LOW+4(2).
  P_DBNAME =  'ORA_209MES'.

  PERFORM GETCON USING P_DBNAME.
  LOOP AT W_ITAB.
    TRY.
        EXEC SQL.
          DELETE FROM SAP_PPHR_INFO WHERE PERNR = :W_ITAB-PERNR
        ENDEXEC.
        IF W_ITAB-ZLZBJ <> 'X'.
          W_ITAB-ZLZRQ = '29991231'.
        ENDIF.
        EXEC SQL.
          INSERT INTO SAP_PPHR_INFO
          ( PERNR
          ,ENAME
          ,GBDAT
          ,AGE
          ,AGEGRP
          ,WERKS
          ,WERKST
          ,PERSG
          ,PERSGT
          ,PERSK
          ,PERSKT
          ,PLANS
          ,PLANST
          ,DEPT1
          ,DEPT1T
          ,DEPT2
          ,DEPT2T
          ,DEPT3
          ,DEPT3T
          ,DEPT4
          ,DEPT4T
          ,DEPT5
          ,DEPT5T
          ,ZWABC
          ,TRFGR
          ,ZRZDJ
          ,ZGZDD
          ,ZGZDDT
          ,ZZZRQ
          ,ZJRJT
          ,ZJRGS
          ,ZGLQS
          ,ZLZRQ
          ,ZLZYY
          ,WORKY
          ,WORKYGR
          ,ZGESC
          ,GBORT
          ,SLART
          ,SLTXT
          ,ERDAT
          ,ERNAM
          ,LZBJ)
          VALUES
          ( :W_ITAB-PERNR,
          :W_ITAB-ENAME,
          TO_DATE(:W_ITAB-GBDAT,'YYYYMMDD HH24:MI:SS'),
          :W_ITAB-AGE,
          :W_ITAB-AGEGRP,
          :W_ITAB-WERKS,
          :W_ITAB-WERKST,
          :W_ITAB-PERSG,
          :W_ITAB-PERSGT,
          :W_ITAB-PERSK,
          :W_ITAB-PERSKT,
          :W_ITAB-PLANS,
          :W_ITAB-PLANST,
          :W_ITAB-DEPT1,
          :W_ITAB-DEPT1T,
          :W_ITAB-DEPT2,
          :W_ITAB-DEPT2T,
          :W_ITAB-DEPT3,
          :W_ITAB-DEPT3T,
          :W_ITAB-DEPT4,
          :W_ITAB-DEPT4T,
          :W_ITAB-DEPT5,
          :W_ITAB-DEPT5T,
          :W_ITAB-ZWABC,
          :W_ITAB-TRFGR,
          :W_ITAB-ZRZDJ,
          :W_ITAB-ZGZDD,
          :W_ITAB-ZGZDDT,
          TO_DATE(:W_ITAB-ZZZRQ,'YYYYMMDD HH24:MI:SS'),
          TO_DATE(:W_ITAB-ZJRJT,'YYYYMMDD HH24:MI:SS'),
          TO_DATE(:W_ITAB-ZJRGS,'YYYYMMDD HH24:MI:SS'),
          TO_DATE(:W_ITAB-ZGLQS,'YYYYMMDD HH24:MI:SS'),
          TO_DATE(:W_ITAB-ZLZRQ,'YYYYMMDD HH24:MI:SS'),
          :W_ITAB-ZYDYY,
          :W_ITAB-WORKY,
          :W_ITAB-WORKYGR,
          :W_ITAB-ZGESC,
          :W_ITAB-GBORT,
          :W_ITAB-SLART,
          :W_ITAB-SLTXT,
          TO_DATE(:SY-DATUM,'YYYYMMDD HH24:MI:SS'),
          :SY-UNAME,
          :W_ITAB-ZLZBJ)
        ENDEXEC.
      CATCH CX_SY_OPEN_SQL_DB CX_SY_NATIVE_SQL_ERROR INTO LCX_ERROR.
        ERR_TEXT = LCX_ERROR->GET_TEXT( ). "得到错误信息
        WRITE:/ SY-VLINE, '上传数据到',P_DBNAME,'失败,原因:',ERR_TEXT , W_ITAB-PERNR,'数据有误', SY-VLINE.
    ENDTRY.
  ENDLOOP.

  PERFORM CLOSECON USING P_DBNAME.

  DESCRIBE TABLE W_ITAB LINES CNT.

  WRITE:/ SY-VLINE, '上传数据到',P_DBNAME,'数据:',CNT,'条',SY-VLINE.

ENDFORM.                    "UPTO209

*&---------------------------------------------------------------------*
*&      FORM  GETCON
*&---------------------------------------------------------------------*
*       TEXT 调用外部数据库
*----------------------------------------------------------------------*
FORM GETCON USING P_DBNAME LIKE DBCON-CON_NAME.
  EXEC SQL.
    CONNECT TO :P_DBNAME
  ENDEXEC.
  IF SY-SUBRC NE 0.
    WRITE:/ '连接数据库失败'.
  ENDIF.
  EXEC SQL.
    SET CONNECTION :P_DBNAME
  ENDEXEC.
ENDFORM.                    "GETCON

*&---------------------------------------------------------------------*
*&      FORM  CLOSECON
*&---------------------------------------------------------------------*
*       TEXT  关闭外部数据库
*----------------------------------------------------------------------*
FORM CLOSECON USING P_DBNAME LIKE DBCON-CON_NAME.
  COMMIT CONNECTION (P_DBNAME).
  EXEC SQL.
    DISCONNECT :P_DBNAME
  ENDEXEC.
ENDFORM.                    "CLOSECON

*&---------------------------------------------------------------------*
*&      FORM  FRM_F4_HELPORGID
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
FORM FRM_F4_HELPORGID.
  DATA:BEGIN OF LOCITAB OCCURS 0,
    OBJID LIKE HRP1000-OBJID,
    STEXT LIKE HRP1000-STEXT,
  END OF LOCITAB.

  SELECT OBJID STEXT
  FROM HRP1000
  INTO  TABLE LOCITAB
  WHERE OTYPE = 'O' AND PLVAR = '01' AND LANGU = SY-LANGU.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'OBJID' "VALUE_ORG'  "‘CARRID’ “指定要返回屏幕参数的在内表中的FIELD
      VALUE_ORG       = 'S' "‘S’ “S代表STRUCTURE'
      DYNPPROG        = SY-REPID "“指定屏幕参数所在的程序名称
      DYNPNR          = SY-DYNNR "“指定参数所在的屏幕编号
      DYNPROFIELD     = 'S_OBJID'"‘AIRLINE’“指定屏幕参数的名称
    TABLES
      VALUE_TAB       = LOCITAB
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.
ENDFORM.                    "FRM_F4_HELPORGID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值