SAP ABAP 问题整理

 本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。 

在做ECC项目的时候,碰到一个问题,Z程序使用message 'XXX' type 'E'或者'I'或者'S'都无法报错,总是报标准错误,类00, 消息号001的这个 No vendor specified

查阅之后发现,可能是ECC 版本升级时的一个BUG。该系统所有自开发的报错,必须用自定义的类去报错才可以。如: MESSAGE E000(ZSD).

下图从左至右版本由高到低,ECC,ECC,S4HANA,S4HANA 可以看出最左边的版本的消息与其他系统不一样,是有问题的

SAP ABAP 问题整理_第1张图片

 SAP 很多事务代码没有标准的BAPI ,如果需要批输入的时候可能需要用到BDC。在BDC使用的时候,两个点

第一个就是如何 将BDC的报错转换成标准的BAPI报错,

  DATA: LT_MESSAGE TYPE STANDARD TABLE OF  BDCMSGCOLL.
  DATA: LS_MESSAGE TYPE  BDCMSGCOLL.
  DATA: LT_RETURN  TYPE STANDARD TABLE OF BAPIRET2.
  DATA: LS_RETURN  TYPE BAPIRET2.

 CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
        TABLES
          IMT_BDCMSGCOLL = LT_MESSAGE
          EXT_RETURN     = LT_RETURN.

第二个就是BDC 如何设置窗口默认大小,防止随着用户的屏幕大小不一样而导致录屏出现问题

   DATA: GS_CTU_PARAMS TYPE CTU_PARAMS.
     GS_CTU_PARAMS-UPDMODE = 'S'.
      GS_CTU_PARAMS-DISMODE = 'N'.
      GS_CTU_PARAMS-DEFSIZE = 'X'."设置窗口非默认大小
      DATA: LV_MODE TYPE CHAR01.
      LV_MODE = 'N'.

      CALL TRANSACTION 'VI02' USING BDCDATA OPTIONS FROM GS_CTU_PARAMS MESSAGES INTO LT_MESSAGE..

创建物料主数据时,自定义增强字段,前台保存可以修改,但是在使用标准 BAPI_MATERIAL_SAVEDATA 写入没有修改成功, 

 You'll need to do some customizing to get this code running properly.
SPRO -> Logistics - General->Material Master->Field Selection->Assign Fields to Field Selection Groups
Click on "New Entries". Now you can fill the field "Field name" ( MARA-ZZIFLG) and, VERY IMPORTANT, fill the field "Maint.status" with 'ABCDEFGKLPQSVXZ' (with F1 on this you'll get a description what that means).
So, now you can save this data and go back to the preceding screen.
Now in the displayed list you should have your new field displayed, you now need to fill the field "Sel.Group" with a selection group number (choose the 111). Now save, and everithing should now run.

SAP ABAP 问题整理_第2张图片

SAP ABAP 问题整理_第3张图片

SAP ABAP 问题整理_第4张图片

顾问如上操作之后,bapi就可以成功写入了,前提是extension 里面都传入了值啊

你可能感兴趣的:(ABAP,sap)