PO Print


REPORT  ZPO_test LINE-SIZE 255.

TABLES : EKPO.
TABLES : EKET.
TABLES : EKKO.
TABLES : LFA1.
TABLES : KNVK.
TABLES : NAST.
TABLES:T006.

PARAMETER P_SMART TYPE TDSFNAME DEFAULT 'ZDEMO_POTEST2_STRUCTURE'.   "这个改了!!
DATA: ITPO TYPE TABLE OF ZDEMO_POTEST2_STRUCTURE INITIAL SIZE 0,
      WA_PO TYPE ZDEMO_POTEST2_STRUCTURE.
DATA: SEL2 TYPE I.
DATA:MONTH TYPE MONTH.
DATA:IT_247 LIKE T247.
DATA:MAT TYPE CHAR200.

DATA:mony TYPE p decimals 2.

DATA:mony2 TYPE CHAR200.
DATA:mony3 TYPE CHAR200.
DATA:baizhutou TYPE CHAR300.
DATA: it_tline LIKE tline OCCURS 0 WITH HEADER LINE,
      vl_name LIKE thead-tdname,
      v_tdid like STXH-TDID.
      DATA:T1 TYPE CHAR200.

SELECTION-SCREENBEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.

PARAMETERS:  PONO LIKE  EKPO-EBELN.  "采购订单号
SELECTION-SCREENEND OF BLOCK 1.

START-OF-SELECTION.
  PERFORM DATA_RETRIEVAL USING PONO.
  PERFORM PRINT_OUT USING P_SMART.

*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DATA_RETRIEVAL USING PONO.
  CLEAR SEL2.
*CLEAR FIELSD
* Start of Looping
  SELECT EKPO~EBELN EKPO~MATNR EKPO~TXZ01 EKPO~MENGE EKPO~NETPR EKPO~WERKS EKPO~MEINS EKPO~EBELP
         EKPO~BRTWR EKPO~PRDAT EKPO~WERKS EKPO~LOEKZ EKET~EINDT EKET~EBELP  ekpo~MWSKZ ekpo~bukrs
  FROM EKPO
  INNER JOIN EKET
  ON EKPO~EBELN = EKET~EBELN AND
     EKPO~EBELP = EKET~EBELP
* INNER JOIN EKKO ON EKPO~EBELN = EKKO~EBELN
* INNER JOIN LFA1 ON LFA1~LIFNR = EKKO~LIFNR
*  INNER JOIN T006 ON EKPO~MEINS = T006~MSEHI
*  INNER JOIN T006J ON T006J~ISOCODE = T006~ISOCODE
  INTO CORRESPONDING FIELDS OF WA_PO
    WHERE EKPO~EBELN = PONO AND
          EKPO~LOEKZ <> 'L'.           " DW20090122 已刪除的不選
* AND EKPO~LOEKZ <> 'L'.
* AND T006J~LANGU = 1.

  if sy-subrc = 0.
    sel2 = sel2 + 1.                   " DW20090122 行號加一
    wa_po-sel = sel2.
  endif.

  IF WA_PO-LIFNR IS NOT INITIAL.
    SELECT SINGLE NAMEV INTO WA_PO-NAMEV FROM KNVK WHERE LIFNR = WA_PO-LIFNR.
*        SELECT SINGLE VTEXT INTO WA_ZQT-VTEXT_EN FROM TVZBT WHERE ZTERM = WA_ZQT-ZTERM AND SPRAS = 'E'.
*  WERKS工厂代码
  ENDIF.

  if WA_PO-MEINS is not initial.
    SELECT SINGLE T006A~MSEHL INTO WA_PO-MSEHL
      from T006A
      WHERE  T006A~MSEHI = WA_PO-MEINS.
  endif.

*  IF WA_PO-MEINS IS NOT INITIAL.
*      SELECT SINGLE ISOTXT INTO WA_PO-ISOTXT FROM T006J WHERE ISOCODE = WA_PO-ISOCODE and LANGU = 'ZH'.
*  ENDIF.

  IF WA_PO-WERKS IS NOT INITIAL.
    SELECT SINGLE ORT01 STRAS   INTO CORRESPONDING FIELDS OF WA_PO FROM T001W WHERE WERKS = WA_PO-WERKS.
  ENDIF.
*
  IF WA_PO-EBELN IS NOT INITIAL.
    SELECT SINGLE LFA1~LIFNR WAERS NAME1 TELFX INTO CORRESPONDING FIELDS OF WA_PO
      FROM EKKO
      INNER JOIN LFA1 ON LFA1~LIFNR = EKKO~LIFNR
      WHERE EKKO~EBELN = WA_PO-EBELN.
  ENDIF.

* 选出税码
  if wa_po-MWSKZ is not initial.
    select single KBETR KONWA INTO CORRESPONDING FIELDS OF WA_PO
      from konp
      inner join a003 on a003~KNUMH = konp~KNUMH
      where a003~ALAND = 'CN' and a003~MWSKZ =  wa_po-MWSKZ.
   endif.

*计算总金额
   wa_po-je = ( 1 + wa_po-KBETR / 1000 ) * wa_po-BRTWR.

*将总额转为字符型
   WRITE wa_po-je TO wa_po-je_C.
   SHIFT wa_po-je_C LEFT DELETING LEADING SPACE.

*计算单价
   WA_PO-DJ = WA_PO-JE / WA_PO-MENGE.

    WRITE WA_PO-DJ TO WA_PO-DJ_C.
    SHIFT WA_PO-DJ_C LEFT DELETING LEADING SPACE.

    CONCATENATE  WA_PO-ORT01 WA_PO-STRAS INTO WA_PO-INCPLACE."将城市与地址合成一个

    WRITE WA_PO-MENGE TO WA_PO-MENGE_C.
    SHIFT WA_PO-MENGE_C LEFT DELETING LEADING SPACE.

    WRITE WA_PO-NETPR TO WA_PO-NETPR_C.
    SHIFT WA_PO-NETPR_C LEFT DELETING LEADING SPACE.

    WRITE WA_PO-BRTWR TO WA_PO-BRTWR_C.
    SHIFT WA_PO-BRTWR_C LEFT DELETING LEADING SPACE.
    mony =  WA_PO-JE + mony.

* Read Text
    PERFORM GET_TEXT USING 'F01' SY-LANGU 'EKKO' WA_PO-EBELN WA_PO-EBELP -1
      CHANGING WA_PO-BEIZHU.

    PERFORM GET_TEXT USING 'PRUE' SY-LANGU 'MATERIAL' WA_PO-MATNR SPACE -1 "将数据传入
      CHANGING WA_PO-BEIZHU2.
*带出备注头
*    PERFORM GET_TEXT USING 'F01' SY-LANGU 'EKKO' WA_PO-EBELN WA_PO-EBELP -1
*    CHANGING WA_PO-EBELN WA_PO-EBELP WA_PO-BEIZHU.
* MAT是将备注放在一行里

    IF WA_PO-BEIZHU2 IS  NOT INITIAL.
      CONCATENATE MAT WA_PO-BEIZHU2 INTO MAT SEPARATED  BY '、'.
    ENDIF.


  vl_name = WA_PO-EBELN.
  CLEAR V_TDID.
   SELECT SINGLE TDID FROM STXH
     INTO V_TDID
     WHERE TDOBJECT = 'EKKO'
       AND TDNAME = VL_NAME
       AND TDSPRAS = '1'.
       CALL FUNCTION 'READ_TEXT'
          EXPORTING
            client                        = sy-mandt
             id                           = V_TDID
            language                     = '1'
            name                        = vl_name  " PUCHASING ORDER
            object                        = 'EKKO' "'EKKO'
          TABLES
            lines                         = it_tline
         EXCEPTIONS
           id                            = 1
           language                      = 2
           name                          = 3
           not_found                     = 4
           object                        = 5
           reference_check               = 6
           wrong_access_to_archive       = 7
           OTHERS                        = 8
                  .
  CLEAR: T1.
    loop at it_tline.
      CONCATENATE T1 it_tline INTO T1.
    endloop.

* DW20090122  所有字段準備好才APPEND 到 Internal Table
  APPEND WA_PO TO ITPO.

  ENDSELECT.

   mony2 =  mony.
  SHIFT mony2 LEFT DELETING LEADING SPACE.
  mony3 = mony2.

*出现8行,序号出现到8.

  DATA: V_X TYPE I VALUE 1.
  DO 8 TIMES.
   READ TABLE ITPO INDEX V_X INTO WA_PO.
   IF SY-SUBRC <> 0"不等于0是不成功的意思,当读不成功时,则向下走加1.
     CLEAR WA_PO.
      WA_PO-SEL = V_X.
      APPEND WA_PO TO ITPO.
*    modify table itpo from wa_po.
    ENDIF.
    V_X = V_X + 1.
  ENDDO.

ENDFORM.                    "DATA_RETRIEVAL

*取行备注值
FORM GET_TEXT  USING    ID       LIKE  THEAD-TDID
                        LANGUAGE LIKE  THEAD-TDSPRAS
                        OBJECT   LIKE  THEAD-TDOBJECT
                        EBELN
                        EBELP
                        NO_OF_LINES TYPE I
               CHANGING P_ALL.

  DATA : ITEXT LIKE TLINE OCCURS 0 WITH HEADER LINE.
  DATA : TEXTNAME LIKE STXH-TDNAME.
  DATA : TEMPCNTR TYPE I.

  CLEAR: P_ALL.
  IF EBELP EQ '000000' OR EBELP EQ SPACE.
    TEXTNAME = EBELN.
  ELSE.
    CONCATENATE EBELN EBELP INTO TEXTNAME.
  ENDIF.

  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      ID                      = ID
      LANGUAGE                = SY-LANGU
      NAME                    = TEXTNAME
      OBJECT                  = OBJECT
    TABLES
      LINES                   = ITEXT
    EXCEPTIONS
      ID                      = 1
      LANGUAGE                = 2
      NAME                    = 3
      NOT_FOUND               = 4
      OBJECT                  = 5
      REFERENCE_CHECK         = 6
      WRONG_ACCESS_TO_ARCHIVE = 7
      OTHERS                  = 8.

  IF SY-SUBRC <> 0.
    CLEAR ITEXT.
    EXIT.
  ENDIF.

  DATA LT_TEXT TYPE TDTAB_C132.
  DATA WA_TEXT LIKE LINE OF LT_TEXT.
  CALL FUNCTION 'CONVERT_ITF_TO_ASCII'
    EXPORTING
      FORMATWIDTH       = 128
    IMPORTING
      C_DATATAB         = LT_TEXT
    TABLES
      ITF_LINES         = ITEXT
    EXCEPTIONS
      INVALID_TABLETYPE = 1
      OTHERS            = 2.

  LOOP AT LT_TEXT INTO WA_TEXT.
    IF WA_TEXT IS NOT INITIAL.
      CONCATENATE P_ALL WA_TEXT INTO P_ALL.
    ENDIF.
*    TEMPCNTR = TEMPCNTR + 1.
*    CONCATENATE P_ALL WA_TEXT INTO P_ALL SEPARATED BY SPACE.
  ENDLOOP.
  SHIFT P_ALL LEFT DELETING LEADING SPACE.
ENDFORM.                    " GET_TEXT

*以上是取行备注值


FORM PRINT_OUT USING FRM_NAME TYPE C.
  DATA: LF_FM_NAME            TYPE RS38L_FNAM,
        CONTROL               TYPE SSFCTRLOP,
        LF_FORMNAME           TYPE TDSFNAME.

  LF_FORMNAME = P_SMART.

   LF_FM_NAME = ''.

* 根據Smart Form 名稱, 找出对应的 function Module name
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      FORMNAME           = FRM_NAME
    IMPORTING
      FM_NAME            = LF_FM_NAME
    EXCEPTIONS
      NO_FORM            = 1
      NO_FUNCTION_MODULE = 2
      OTHERS             = 3.
* 错误处理
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    EXIT.
  ENDIF.

* 设定预览參数
  CONTROL-NO_DIALOG = 'X'.
  CONTROL-PREVIEW   = 'X'.
  CONTROL-NO_OPEN   = 'X'.
  CONTROL-NO_CLOSE  = 'X'.

* 预览开始
  CALL FUNCTION 'SSF_OPEN'
    EXPORTING
      CONTROL_PARAMETERS = CONTROL
    EXCEPTIONS
      FORMATTING_ERROR   = 1
      INTERNAL_ERROR     = 2
      SEND_ERROR         = 3
      USER_CANCELED      = 4
      OTHERS             = 5.

* 错误处理
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    EXIT.
  ENDIF.

  READ TABLE ITPO INTO WA_PO WITH KEY EBELN = PONO."-LOW ."修改了.
* 呼叫Smart Form 产生的 Function Module
  CALL FUNCTION LF_FM_NAME
       EXPORTING
         CONTROL_PARAMETERS   = CONTROL
         MAT = MAT
         T1 = T1
         mony3 = mony3
         WA_PO              = WA_PO    "将ZDEMO_H改为ZQQ
*         x1 = X1
*         NAME1 = X2

       TABLES
         ITPO          = ITPO  "改为ZLFTABLE
         EXCEPTIONS
         FORMATTING_ERROR     = 1
         INTERNAL_ERROR       = 2
         SEND_ERROR           = 3
         USER_CANCELED        = 4
         OTHERS               = 5.

*  错误处理
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

* 显示预览
  CALL FUNCTION 'SSF_CLOSE'
    EXCEPTIONS
      FORMATTING_ERROR = 1
      INTERNAL_ERROR   = 2
      SEND_ERROR       = 3
      OTHERS           = 4.

* 错误处理
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    " print_out

*loop at ITPO.
*以下是用于与单据联接的



*---------------------------------------------------------------------*
*       FORM ENTRY
*---------------------------------------------------------------------*
FORM ENTRY USING RETURN_CODE US_SCREEN.

  PERFORM DATA_RETRIEVAL USING NAST-OBJKY.
  PERFORM PRINT_OUT USING 'ZDEMO_POTEST2_STRUCTURE'.

ENDFORM.                    "ENTRY
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SAP剑客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值